Neuigkeiten
Aktuelle Version: 2.1.0
Jede Änderung, die live geht, bekommt hier einen Eintrag – neueste Version oben. Die oberste Versionsnummer ist die Version der App (Anzeige unten auf jeder Seite, Details unter /neuigkeiten).
Nummern: Major bei Umbauten, die Bedienung oder API grundlegend ändern, Minor bei neuen Funktionen, Patch bei Korrekturen und Betriebsdetails. In Klammern die Aufgabe auf make.inleo.net.
2.1.0 – 2026-10-18
Geändert
- Alle Emojis in der Oberfläche sind durch einheitliche Linien-Symbole ersetzt (Lucide, ISC-Lizenz, lokal in
lib/icons/– kein Nachladen von außen): Menü, Überschriften, Aufgabenzeilen, Übersicht, Einstellungen, Administration, Reiter, Kopfzeile. - Der Design-Umschalter zeigt Sonne, Mond oder „System“-Symbol statt Emoji.
- Symbole sind grau und werden beim Darüberfahren dunkler; Auswahlfelder und Optionsknöpfe folgen der Petrol-Farbe.
- Die Prioritäts-Auswahl zeigt nur noch den Text (Hoch/Mittel/Niedrig), weil Auswahllisten keine Symbole darstellen können.
- Unverändert: Kalender-Abo (ICS) und Exporte enthalten weiter ihre Textzeichen.
2.0.0 – 2026-10-18
OwnDo 2.0: neuer Name, neues Aussehen. Fasst 1.13.0 (Name, Logo, API-Schlüssel-Präfix owndo_), 1.14.0 (Schalter) und dieses Design zusammen.
Geändert
- Neues Farbkonzept nach OwnDo-Styleguide: Koralle steht nur noch für „hier passiert etwas“ (Schalter, Hauptbutton, schmaler Balken am aktiven Menüpunkt), Petrol für alles Klickbare (Links, Tags, Fokusrahmen, Filter), der Rest ist Grau/Weiß – hell und dunkel.
- Aktiver Menüpunkt: graue Fläche mit Koralle-Balken statt voller Koralle-Fläche. Kopfzeilen-Links in Textfarbe, beim Darüberfahren Petrol. Tags mit Petrol auf getöntem Grund und kleinerem Radius.
- Priorität „Hoch“/„Mittel“: Fähnchen in Bernstein, Text grau (vorher Rot/Orange); Rot und Koralle lagen zu nah beieinander.
- Hauptbuttons bleiben Koralle, die Schrift darauf ist dunkel (Weiß hätte zu wenig Kontrast).
- Selbst gehostete Schriften: Inter für Text, Inter Display für Überschriften, JetBrains Mono für Code und die Versionsnummer (SIL OFL,
public/fonts/; Inter Display auf Latein verkleinert, 39 KB statt 619 KB). - Versionsanzeige unten jetzt als
v2.0.0in Mono. Statusleistenfarbe im dunklen Design #1C1C1E. - Der Schalter-Zustand bleibt wie in 1.14.0 (an/Koralle = offen, aus/grau = erledigt) – bewusste Abweichung von der Design-Liste.
1.14.0 – 2026-10-18
Neu
- Der Abhak-Knopf ist jetzt ein Schalter wie im OwnDo-Logo: An (Knopf rechts in Koralle) heißt, die Aufgabe ist aktiv, also noch offen; aus (Knopf links, ganz grau) heißt erledigt. Zum Erledigen schaltet man den Schalter aus, das Gleiten zeigt es. Gilt für Aufgaben, Checklistenpunkte und die Übersicht. Statt eines Häkchens also der Schalter als Bedienelement. Wer „Bewegung reduzieren“ eingestellt hat, sieht keine Bewegung
Verbessert
- Die Schalter sind für Screenreader echte Schalter (
role="switch"; „Offen – als erledigt markieren“ bzw. „Erledigt – wieder öffnen“, jeweils mit dem Aufgabentitel) und haben eine größere Trefferfläche für den Finger. Ein zweiter Klick, während der Knopf noch gleitet, wird ignoriert - Die Priorität färbt den Knopf nicht mehr (die Marke kennt nur einen Akzent); sie steht weiter als Etikett an der Aufgabe („⚑ Hoch“, „⚑ Mittel“, „⚑ Niedrig“)
- In der Übersicht steht bei erledigten Aufgaben „erledigt 14:32 Uhr“ statt „✔ 14:32 Uhr“
1.13.0 – 2026-10-18
Neu
- Die App heißt jetzt OwnDo („~/ host it. do it“): Logo in der Kopfzeile (je nach Design die helle oder dunkle Fassung), Logo mit Slogan auf der Anmelde- und Registrierungsseite, neues Favicon, neue App-Symbole und neuer Name für die installierte App, Seitentitel, E-Mail-Absender, Kalender-Abo und API. Das Haken-Symbol als Markenzeichen entfällt. Der Styleguide liegt unter
docs/brand/
Betrieb
- Neue API-Schlüssel beginnen mit
owndo_; Schlüssel mittodo_funktionieren weiter - Neue Exportdateien tragen das Format
owndo-exportund den Dateinamenowndo-export-….json/csv; Dateien im alten Formattodo-app-exportlassen sich weiter einlesen (wichtig für den Umzug auf eine neue Instanz) - Vorlage
.env.example: Datenbankname und -benutzerowndostatttodo. Eine bestehende.envbleibt unberührt - Kalender-Abos tragen den Namen „OwnDo – Benutzer“; die Kennungen der Termine beginnen mit
owndo- - Der Name des Compose-Projekts (und damit der Volumes und Container) kommt vom Ordnernamen auf dem Server; er ist nicht festgelegt. Auf einer bestehenden Instanz nicht den Ordner umbenennen, sonst entsteht eine leere Datenbank
tools/make_icons.pyentfällt, die Symbole kommen aus dem Markenpaket
1.12.1 – 2026-10-18
Behoben
- Testmail: Wenn der Mailserver mit unlesbaren Zeichen antwortete (typisch bei falscher Verschlüsselung für den Port, z. B.
tlsan Port 465 odersslan Port 587), erschien eine PHP-Meldung („iconv(): Detected an incomplete multibyte character“) über der Seite, danach schlug auch die Weiterleitung fehl. Jetzt wird die Serverantwort lesbar gemacht (ungültige Zeichen werden zu „?“) und die Meldung erscheint normal (#36)
Sicherheit
- PHP zeigt Fehler nicht mehr auf der Seite an, sondern schreibt sie ins Log (
docker compose logs web). Angezeigte Meldungen verraten Dateipfade und zerstören Weiterleitungen. Außerdem sendet der Server keinenX-Powered-By-Kopf mit der PHP-Version mehr, und Fehlerberichte enthalten keine Funktionsargumente (damit keine Passwörter im Log landen)
Betrieb
- Neue Datei
zz-produktion.iniim Image. Für die Entwicklung kann man die Anzeige perdev.iniwieder einschalten (Anleitung indocker-compose.override.example.yml). Fehler suchen auf dem Server:docker compose logs web
1.12.0 – 2026-10-18
Neu
- E-Mail-Versand über einen SMTP-Server (Grundlage für „Passwort vergessen“ und Benachrichtigungen per Mail). Eingerichtet wird er in der
.envauf dem Server (SMTP_HOST,SMTP_FROM, meist auchSMTP_USER,SMTP_PASS,SMTP_PORT,SMTP_SECURE); ohneSMTP_HOSTläuft die App wie bisher ganz ohne Mails. Unter *Administration → E-Mail* sieht man die Einstellung (das Passwort nie) und kann eine Testmail senden (#36)
Sicherheit
- Das Zertifikat des Mailservers wird immer geprüft; ein ungültiges wird abgelehnt statt stillschweigend angenommen. Zugangsdaten stehen nur in der
.env, nie in der Datenbank oder im Git. Fehlermeldungen des Servers werden nur Admins angezeigt und vorher bereinigt (#36)
Betrieb
- PHPMailer 7.1.1 (LGPL-2.1) liegt unverändert unter
lib/vendor/phpmailer/(Herkunft inVERSION) (#36) - Nach Änderungen an den
SMTP_-Werten in der.env:docker compose up -d(der Container liest sie beim Start) (#36)
1.11.0 – 2026-10-17
Neu
- API-Dokumentation: Unter *Einstellungen → API* führt „📖 API-Dokumentation“ zu einer Seite mit allen Endpunkten (Swagger UI), Beispielen und Fehlercodes. Mit „Authorize“ trägt man einen API-Schlüssel ein und kann die Aufrufe direkt ausprobieren – das sind echte Anfragen; der Schlüssel wird nicht gespeichert. Die Seite ist nur für angemeldete Benutzer erreichbar (#25)
- Die API hat jetzt eine maschinenlesbare Beschreibung (OpenAPI 3.0):
GET /api/openapi.jsonmit gültigem API-Schlüssel, zum Beispiel für Client-Generatoren; angemeldete Benutzer können sie auf der Dokumentationsseite herunterladen (#25)
Betrieb
- Swagger UI 5.33.1 (Apache-2.0) liegt lokal unter
vendor/swagger-ui/, es wird nichts von fremden Servern geladen (#25) tools/check_openapi.pygleicht die Spezifikation mit den Routen im Code ab,tools/check_api_contract.pyprüft Anfragen und Antworten der laufenden API gegen das Schema (#25)
1.10.0 – 2026-10-17
Neu
- Als App installierbar: Die Seite hat jetzt Name, Symbol (weißer Haken auf Blau) und Statusleistenfarbe und lässt sich in Chrome auf Android über „App installieren“ auf den Startbildschirm legen; sie läuft dann ohne Adressleiste im eigenen Fenster. Beim langen Druck auf das Symbol stehen „Posteingang“ und „Kalender“ bereit (#43)
- Teilen an ToDo: In der installierten App erscheint ToDo in der Teilen-Auswahl anderer Apps (Browser, Notizen …). Der geteilte Titel, Text und Link füllen ein Formular vor; nach der Bestätigung entsteht die Aufgabe im Posteingang oder in einem gewählten Projekt. Ein Aufruf allein legt nichts an (#43)
- Wer nicht angemeldet ist, landet nach der Anmeldung wieder bei der gewünschten Seite statt auf der Startseite (#43)
Betrieb
- Minimaler Service Worker (
/sw.js): reicht alles ans Netz durch und speichert nichts zwischen (#43) - Die Symbole liegen in
app-icons/(der Pfad/icons/ist in Apache reserviert);tools/make_icons.pyerzeugt sie neu (#43)
1.9.0 – 2026-10-17
Sicherheit
- Bremse gegen Durchprobieren von Passwörtern: Nach 5 Fehlversuchen je Benutzername (bzw. 20 je IP-Adresse) in 15 Minuten muss man warten – 15 Sekunden, dann immer doppelt so lang, höchstens 15 Minuten. Keine Dauersperre. Während der Wartezeit wird das Passwort gar nicht erst geprüft. Gilt auch für „aktuelles Passwort“ beim Passwort ändern. Unbekannte Benutzernamen werden genauso gebremst
- Die Anmeldung braucht für unbekannte und bekannte Benutzernamen gleich lang, sodass sich nicht an der Antwortzeit erkennen lässt, welche Konten es gibt
- Neue Passwörter: 12 bis 64 Zeichen, keine häufigen Passwörter (auch nicht mit angehängten Ziffern, Wiederholungen oder Tastaturfolgen), nicht den Benutzernamen enthaltend. Kein Zwang zu Sonderzeichen; empfohlen werden mehrere zufällige Wörter hintereinander. Bestehende Passwörter bleiben gültig, die Regeln gelten beim Setzen eines neuen
- Das vom Admin erzeugte Übergangspasswort muss nach der Anmeldung geändert werden; bis dahin ist nur die Einstellungsseite erreichbar. Das neue Passwort muss sich vom bisherigen unterscheiden
Betrieb
- Migration 010 (Tabelle
login_attempts, Einträge werden nach einem Tag gelöscht) und 011 (must_change_passwordanusers) - Die Besucher-Adresse für die Bremse kommt hinter einem Proxy aus dem letzten Eintrag von
X-Forwarded-For. Ob dort die richtige Adresse ankommt, nach dem Ausrollen prüfen:SELECT ip FROM login_attemptsnach einem Fehlversuch – steht dort die Adresse des Proxys statt der des Besuchers, bremst die IP-Grenze alle gemeinsam
1.8.0 – 2026-10-17
Neu
- Eingabeformular im Modus „Einfach“ oder „Erweitert“ (*Einstellungen → Konto → Eingabeformular*). Erweitert zeigt alle Felder wie bisher; im Einfach-Modus bestimmst du selbst, welche Felder erscheinen (Datum, Uhrzeit, Priorität, Wiederholung, Zuweisen an, Tags, Notizen – der Titel ist immer da). Voreinstellung für alle: Erweitert; Einfach beginnt ohne Datum, Uhrzeit, Wiederholung und Zuweisung
- Ausgeblendete Felder verlieren nie Daten: Beim Bearbeiten werden Felder, die bei der Aufgabe gefüllt sind, trotzdem gezeigt, und was das Formular nicht schickt, bleibt unverändert
Betrieb
- Migration 009: Spalten
form_modeundform_fieldsanusers
1.7.0 – 2026-10-17
Neu
- Von anderen geänderte Aufgaben leuchten kurz auf: Die Zeile blinkt zweimal orange und glüht dann in wenigen Sekunden aus. Gilt für neue und inhaltlich geänderte Aufgaben (abgehakt, umbenannt, zugewiesen …), wenn sich die Liste von selbst aktualisiert; die eigenen Änderungen blinken nicht. Bei „Bewegung reduzieren“ im System gibt es nur ein sanftes Ausblenden ohne Blinken
1.6.0 – 2026-10-17
Neu
- Projekte lassen sich sortieren: Auf der Seite *Projekte* unter „↕ Reihenfolge ändern“ am Griff ⠿ ziehen. Die Reihenfolge gilt je Benutzer für die Seitenleiste und die Projektseite; neue Projekte kommen unten dazu, der Posteingang bleibt oben (#27)
Betrieb
- Migration 008: Spalte
sort_orderanproject_members(#27)
1.5.0 – 2026-10-17
Neu
- Export: Unter *Einstellungen → Daten* alle Aufgaben aus den eigenen Projekten (auch geteilte und der Posteingang) als JSON (vollständige Sicherung) oder CSV (für Excel/Calc, Semikolon, UTF-8) herunterladen; mit Tags, Checklisten, Fälligkeit mit Uhrzeit, Wiederholung, Priorität und Zuweisung. Ohne interne Nummern, damit die Datei auch auf einem anderen System einlesbar ist. Ein einzelnes Projekt lässt sich direkt auf seiner Seite (oben rechts „⬇ Export“) herunterladen (#28)
- Import: dieselbe Seite liest JSON oder CSV wieder ein, zuerst mit Vorschau, gespeichert wird erst nach Bestätigung – alles oder nichts. Projekte aus der Datei werden immer neu angelegt (keine Doppelten in bestehenden Projekten). Für Aufgaben ohne Projekt (CSV ohne Projektspalte, Posteingang) wählst du ein bestehendes oder neues Projekt. Zuweisungen bleiben nur bei Mitgliedern des Zielprojekts. Einfache CSV-Dateien mit „Titel“-Spalte gehen auch, deutsche Daten wie 31.12.2026 werden verstanden (#28)
1.4.1 – 2026-10-17
Betrieb
- Der Code steckt jetzt im Docker-Image statt per Bind-Mount im Container: Was läuft, ist der zuletzt gebaute Stand, ein
git pullallein ändert nichts mehr am laufenden System. Update auf dem Server:git pull, danndocker compose up -d --build --remove-orphans. Für die Entwicklung gibt es den Bind-Mount als Vorlage indocker-compose.override.example.yml. Die Daten (Datenbank-Volume) bleiben unberührt.
1.4.0 – 2026-10-17
Neu
- Browserbenachrichtigungen: Der Browser meldet sich, wenn andere in deinen Projekten Aufgaben anlegen, abhaken, wieder öffnen oder zuweisen – auch per API. Einschalten unter *Einstellungen → Konto*, gilt je Browser. Die Meldung kommt nur, wenn das Fenster nicht im Vordergrund ist, und nur solange die Seite in einem Tab geöffnet ist (kein Push bei geschlossenem Browser) (#42)
Betrieb
- Neue Tabelle
events(Migration 007) als Ereignisprotokoll; Einträge werden nach 7 Tagen entfernt (#42)
1.3.1 – 2026-10-17
Verbessert
- Aufgeklappte Details klappen wieder zu, wenn man außerhalb der Aufgabe klickt; ein Klick auf eine andere Aufgabe schließt die bisherige und öffnet die neue (#31)
1.3.0 – 2026-10-17
Verbessert
- Ein Klick auf den Titel einer Aufgabe klappt die Details auf statt sofort das Bearbeiten-Formular: Notizen in gut lesbarer Schrift, Checkliste, wann und von wem angelegt bzw. erledigt. Bearbeiten über den Knopf „✎ Bearbeiten“ (oder wie bisher ✎ rechts); „Abbrechen“ führt zurück zu den Details (#31)
- Die Aufgabenliste aktualisiert sich von selbst, wenn andere etwas ändern (Abfrage alle 5 Sekunden, nur bei sichtbarem Tab). Ohne Meldung; wer gerade tippt oder eine Aufgabe bearbeitet, behält Eingabe und Cursor, alle anderen Zeilen werden trotzdem aktualisiert (#30)
API
- Projekte anlegen (
POST /api/projects), umbenennen (PATCH) und löschen (DELETE /api/projects/{id}) – mit denselben Rechten wie in der Oberfläche; der Posteingang bleibt geschützt (#29) - Projektangaben enthalten jetzt die eigene Rolle (
my_role) (#29)
Betrieb
- phpMyAdmin entfernt – wird nicht gebraucht. Für direkten Datenbankzugriff steht der Befehl im README. Beim Ausrollen einmal
docker compose up -d --build --remove-orphans.
1.2.1 – 2026-10-17
Verbessert
- Die Zuweisungs-Spalte erscheint nur noch, wenn im Projekt mindestens eine Aufgabe zugewiesen ist – ohne Zuweisungen bleibt die Liste schlicht (#33)
1.2.0 – 2026-10-17
Verbessert
- Zuweisungen auf einen Blick: In geteilten Projekten hat jede Aufgabe rechts eine feste Spalte mit großem, farbigem Namenskürzel und Namen; eigene Aufgaben als „Ich“ mit Ring und blauem Rand links, nicht zugewiesene als gestrichelter Kreis „offen“ (#33)
- Auf der Übersicht stehen Zuweisungen als Kürzel mit Namen (#33)
- Rollen sind klar zu sehen: Mitgliederliste mit Rolle als Schild, „Deine Rolle“ mit Erklärung, was sie darf, und beschriftete Aktionen („Zum Verwalter machen“, „Besitz übergeben“, „Entfernen“) statt Symbolen (#26)
- Projektseite zeigt oben die Mitglieder und die eigene Rolle; ein Klick führt zur Mitgliederverwaltung (#26)
1.1.0 – 2026-10-17
Betrieb
- Alle Dienste starten nach einem Server-Neustart von selbst (
restart: unless-stopped) (#17) - Healthcheck für den web-Container über
/health.php, prüft PHP und Datenbank (#18) - phpMyAdmin startet nur noch auf Wunsch (
--profile tools) und ist nur lokal erreichbar (#9) - Rechnerspezifisches wie ein festes Docker-Subnetz kommt in
docker-compose.override.ymlstatt indocker-compose.yml, damitgit pullnicht mehr mit lokalen Änderungen kollidiert (#21)
Neu
- Versionsanzeige unten auf jeder Seite und Änderungsprotokoll unter
/neuigkeiten
1.0.0 – 2026-10-15
Erster Stand: Posteingang, Projekte mit Rollen, Aufgaben mit Fälligkeit, Wiederholungen, Checklisten, Tags, Drag & Drop, Suche, Kalender mit ICS-Abo, Einladungen, Administration, REST-API, Dark Mode.