feat(todo): the app on halkyon_app, with its own icon
Todo's app is halkyon_app's instance and session gates with Todo's
frame ("Todo" under "Halkyon", its icon, its own sentences) and an
instance check accepting only `todo`; TodoDependencies on an instance,
an empty TodoPerson per person, nothing kept or synced yet. A person
sees an empty home and their account: whose it is on which instance,
switching account, signing out and deleting it (each asking first where
it deletes), and About with the source of what the instance runs and
the licence list. Texts in British English and German. App ID
app.halkyon.todo on every platform, GitHub's callback scheme registered
on Android, no web build.
Its icon is Lucide's list-checks (lucide-static 1.50.0) in the brand's
blues on white: tool/app_icons.py draws its strokes with Pillow and
writes every platform's launcher icon; Lucide's ISC notice joins the
licence list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-19 21:56:12 +02:00
{
"@@locale": "de",
"appTitle": "Halkyon Todo",
"launchProduct": "Todo",
"instanceFirstStartSubtitle": "Wähle die Instanz, auf der deine Aufgaben liegen sollen. Jede betreibt jemand; weitere kannst du später hinzufügen.",
"accountTitle": "Konto",
"accountDeleteMessage": "Dein Konto wird auf dem Server und auf all deinen Geräten gelöscht. Dies kann nicht rückgängig gemacht werden.",
feat(todo): the four tabs in Todo's frame, washed in strawberry, Settings from Browse
ADR 0033, step 1: go_router with a StatefulShellRoute and halkyon_ui's
NavigationFrame as Train's (D1), the tabs Today, Upcoming, Inbox and
Browse, each saying tasks come later (D2), every screen washing down in
strawberry (D3), and Settings over the tabs from Browse's cog, grouped in
cards: the operator's, the account, What's new and About Halkyon Todo,
the version below (D4). The account sheet and the empty home go.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 00:57:44 +01:00
"aboutTitle": "Über Halkyon Todo",
"shellTabToday": "Heute",
"shellTabUpcoming": "Demnächst",
"shellTabInbox": "Eingang",
2026-11-04 20:37:00 +01:00
"todayCount": "{count, plural, =1{1 Aufgabe} other{{count} Aufgaben}}",
feat(app): one Profile for every app, the person's own tab first, then each app's (ADR 0014)
The public profile was already one per person for every service of an
instance (the register, ADR 0016); its app side was Learn's alone. It
moves into halkyon_app: the model, the repository on the module's
endpoints, the form, the avatar drawn on the device and the sheet with
someone's profile. They take the Public prefix (PublicProfileRepository,
BasePublicProfileGateway), as Train's own ProfileRepository holds the
body's figures. AppDependencies gains profiles and files, the picker the
avatar is chosen with, which moves out of Learn too.
HalkyonProfile is every app's Profile screen: the person's own tab first,
the same in every app (the account and the ways they sign in, the app's
own cards, then the public profile), then the app's own tabs, folding into
the title. Learn adds its inbox and Statistics. Train adds Progress, Days
and, where nothing records, Plans, and so opens on the person's tab, no
longer on Progress. Todo, which has no Profile tab, opens it from a row at
the top of Browse, where Todoist keeps the account.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-02 09:44:38 +01:00
"browseProfile": "Profil",
"browseProfileHint": "Dein Konto, wie du dich anmeldest, und dein öffentliches Profil",
feat(todo): the four tabs in Todo's frame, washed in strawberry, Settings from Browse
ADR 0033, step 1: go_router with a StatefulShellRoute and halkyon_ui's
NavigationFrame as Train's (D1), the tabs Today, Upcoming, Inbox and
Browse, each saying tasks come later (D2), every screen washing down in
strawberry (D3), and Settings over the tabs from Browse's cog, grouped in
cards: the operator's, the account, What's new and About Halkyon Todo,
the version below (D4). The account sheet and the empty home go.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 00:57:44 +01:00
"shellTabBrowse": "Übersicht",
"settingsTitle": "Einstellungen",
feat(todo): Today, Upcoming, Inbox, projects, quick add and the task sheet (ADR 0033, D8, D9)
The tabs hold the person's tasks: Today what is overdue (Reschedule
moving it all to a day, times kept) and what is due today; Upcoming the
overdue ones and the next four weeks day by day; Inbox and each
project's screen from Browse the tasks above and in their sections, done
ones on asking; Browse the projects with their open counts and the
labels. A task's row shows its check in its priority's colour, its date
in the colour of how near it is, its deadline, its sub-tasks done and
its labels; quick add takes its title, date, priority, project, labels
and description and stays for the next; its sheet edits all of it, adds
sub-tasks and deletes it with them after asking. Colours are the
palette's, cerise for overdue and P1 against the strawberry wash.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 10:25:34 +01:00
"settingsVersion": "Version {version} (Build {build})",
"clear": "Entfernen",
"colorLabel": "Farbe",
"dateTitle": "Datum",
"dateNextWeek": "Nächste Woche",
"dateWeekend": "Dieses Wochenende",
"datePick": "Tag wählen",
"dateTime": "Uhrzeit",
"dateNone": "Kein Datum",
"dateNoneYet": "Kein Datum",
"dayToday": "Heute",
"dayTomorrow": "Morgen",
"dayYesterday": "Gestern",
"dayHeadingNamed": "{date} · {name}",
"deadlineOn": "Frist {day}",
"deadlineNone": "Keine Frist",
"keysMissing": "Dieses Gerät kann nichts speichern: Es hat die Schlüssel deines Kontos nicht. Melde dich mit deinem Passwort oder deiner Wiederherstellungsphrase an, um sie hinzuzufügen.",
"labelsTitle": "Labels",
"labelsNone": "Noch keine Labels.",
"labelsNoneSet": "Keine Labels",
"labelsCount": "{count, plural, =1{1 Label} other{{count} Labels}}",
"labelAdd": "Neues Label",
"labelEdit": "Label bearbeiten",
"labelDelete": "Label löschen",
"labelDeleteTitle": "Label löschen?",
"labelDeleteMessage": "„{name}“ wird von jeder Aufgabe entfernt, die es hat.",
"nameLabel": "Name",
"save": "Speichern",
"overdue": "Überfällig",
"reschedule": "Verschieben",
"priorityTitle": "Priorität",
"priority1": "Priorität 1",
"priority2": "Priorität 2",
"priority3": "Priorität 3",
"priority4": "Keine Priorität",
"projectsTitle": "Projekte",
"projectsNone": "Noch keine eigenen Projekte.",
feat(todo): a project's editor as Todoist's Add project, with sub-projects and favourites
Adding or editing a project was a dialog of a name and a colour. It is
now a screen of its own on a phone (a dialog where sheets are dialogs),
as Todoist's Add project: the name counted to 120, a description, the
colour, the parent project, a Favourite switch and the layout, Display's
pictures. All of it lives in the project's sealed payload, the schema
still 1, no server model or migration; the payload now keeps fields it
doesn't know, as a task's does.
A new project starts with the layout picked, and Display's Reset all
returns to that default rather than to List. Browse lists sub-projects
indented and folding under their parents, and the favourites in a group
above; a project is never offered as its own ancestor, and a parent's
deletion takes its sub-projects, naming them first, as Todoist's. ADR
0033, D28.
Whats-New: Add project and Edit project are a screen of their own, with a description, a parent project, Favourite and the layout.
Whats-New: Browse lists sub-projects under their parents and your favourite projects at the top.
Whats-New: Reset all in Display returns to the layout the project was made with.
Whats-New-De: „Projekt hinzufügen“ und „Projekt bearbeiten“ sind eine eigene Seite, mit Beschreibung, übergeordnetem Projekt, Favorit und Layout.
Whats-New-De: „Übersicht“ zeigt Unterprojekte unter ihren Projekten und deine Favoriten oben.
Whats-New-De: „Alles zurücksetzen“ in der Anzeige kehrt zum Layout zurück, mit dem das Projekt angelegt wurde.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-04 20:56:34 +01:00
"projectAdd": "Projekt hinzufügen",
feat(todo): Today, Upcoming, Inbox, projects, quick add and the task sheet (ADR 0033, D8, D9)
The tabs hold the person's tasks: Today what is overdue (Reschedule
moving it all to a day, times kept) and what is due today; Upcoming the
overdue ones and the next four weeks day by day; Inbox and each
project's screen from Browse the tasks above and in their sections, done
ones on asking; Browse the projects with their open counts and the
labels. A task's row shows its check in its priority's colour, its date
in the colour of how near it is, its deadline, its sub-tasks done and
its labels; quick add takes its title, date, priority, project, labels
and description and stays for the next; its sheet edits all of it, adds
sub-tasks and deletes it with them after asking. Colours are the
palette's, cerise for overdue and P1 against the strawberry wash.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 10:25:34 +01:00
"projectEdit": "Projekt bearbeiten",
"projectDelete": "Projekt löschen",
"projectDeleteTitle": "Projekt löschen?",
"projectDeleteMessage": "„{name}“ wird mit seinen Abschnitten und Aufgaben auf all deinen Geräten gelöscht.",
feat(todo): a project's editor as Todoist's Add project, with sub-projects and favourites
Adding or editing a project was a dialog of a name and a colour. It is
now a screen of its own on a phone (a dialog where sheets are dialogs),
as Todoist's Add project: the name counted to 120, a description, the
colour, the parent project, a Favourite switch and the layout, Display's
pictures. All of it lives in the project's sealed payload, the schema
still 1, no server model or migration; the payload now keeps fields it
doesn't know, as a task's does.
A new project starts with the layout picked, and Display's Reset all
returns to that default rather than to List. Browse lists sub-projects
indented and folding under their parents, and the favourites in a group
above; a project is never offered as its own ancestor, and a parent's
deletion takes its sub-projects, naming them first, as Todoist's. ADR
0033, D28.
Whats-New: Add project and Edit project are a screen of their own, with a description, a parent project, Favourite and the layout.
Whats-New: Browse lists sub-projects under their parents and your favourite projects at the top.
Whats-New: Reset all in Display returns to the layout the project was made with.
Whats-New-De: „Projekt hinzufügen“ und „Projekt bearbeiten“ sind eine eigene Seite, mit Beschreibung, übergeordnetem Projekt, Favorit und Layout.
Whats-New-De: „Übersicht“ zeigt Unterprojekte unter ihren Projekten und deine Favoriten oben.
Whats-New-De: „Alles zurücksetzen“ in der Anzeige kehrt zum Layout zurück, mit dem das Projekt angelegt wurde.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-04 20:56:34 +01:00
"projectParent": "Übergeordnetes Projekt",
"projectNoParent": "Kein übergeordnetes Projekt",
"projectFavorite": "Favorit",
"favoritesTitle": "Favoriten",
"projectSubProjectsHide": "Unterprojekte ausblenden",
"projectSubProjectsShow": "Unterprojekte einblenden",
"projectDeleteWithSubProjects": "„{name}“ wird mit seinen Unterprojekten {subProjects} und ihren Abschnitten und Aufgaben auf all deinen Geräten gelöscht.",
feat(todo): Today, Upcoming, Inbox, projects, quick add and the task sheet (ADR 0033, D8, D9)
The tabs hold the person's tasks: Today what is overdue (Reschedule
moving it all to a day, times kept) and what is due today; Upcoming the
overdue ones and the next four weeks day by day; Inbox and each
project's screen from Browse the tasks above and in their sections, done
ones on asking; Browse the projects with their open counts and the
labels. A task's row shows its check in its priority's colour, its date
in the colour of how near it is, its deadline, its sub-tasks done and
its labels; quick add takes its title, date, priority, project, labels
and description and stays for the next; its sheet edits all of it, adds
sub-tasks and deletes it with them after asking. Colours are the
palette's, cerise for overdue and P1 against the strawberry wash.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 10:25:34 +01:00
"projectEmptyTitle": "Hier ist nichts zu tun",
"projectEmptyHint": "Füge mit dem Plus eine Aufgabe hinzu.",
"projectGone": "Dieses Projekt wurde gelöscht.",
"projectMenu": "Mehr",
"projectPickTitle": "Projekt",
feat(todo): rows in rounded boxes, Today as Todoist's, lists pulled to sync, a project's own colour
From the developer's review of 3 Nov 2026 (ADR 0033, D19 to D21):
- Today's tab shows today's day in its calendar, Browse the menu's lines,
Display's button Lucide's square-menu.
- A task's row stands in a rounded box, the rows of a list a group rounded
at its ends; the box is the row's own surface, so a chosen row's colour no
longer shows under Upcoming's pinned week strip as the list scrolls. Its
project and section end the line of its date at the row's right edge.
- Today has at most two groups: what is overdue, folding under its heading,
and today's, headed "Tuesday, 3 Nov" ("Dienstag, 3. Nov."), without a
"· Today" after it; Upcoming's days take the same form.
- Upcoming's way back to today shows whenever another day is picked.
- Today, Upcoming, the Inbox and every project pulled down sync now, an
empty list too, as Learn's.
- A project's screen washes in its own colour, as a studyset's in Learn.
- "Add section" in place of "New section".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 21:39:28 +01:00
"sectionAdd": "Abschnitt hinzufügen",
feat(todo): Today, Upcoming, Inbox, projects, quick add and the task sheet (ADR 0033, D8, D9)
The tabs hold the person's tasks: Today what is overdue (Reschedule
moving it all to a day, times kept) and what is due today; Upcoming the
overdue ones and the next four weeks day by day; Inbox and each
project's screen from Browse the tasks above and in their sections, done
ones on asking; Browse the projects with their open counts and the
labels. A task's row shows its check in its priority's colour, its date
in the colour of how near it is, its deadline, its sub-tasks done and
its labels; quick add takes its title, date, priority, project, labels
and description and stays for the next; its sheet edits all of it, adds
sub-tasks and deletes it with them after asking. Colours are the
palette's, cerise for overdue and P1 against the strawberry wash.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 10:25:34 +01:00
"sectionEdit": "Abschnitt umbenennen",
"sectionDelete": "Abschnitt löschen",
"sectionDeleteTitle": "Abschnitt löschen?",
"sectionDeleteMessage": "„{name}“ wird mit seinen Aufgaben gelöscht.",
"sectionMenu": "Abschnitt",
"subTasks": "Unteraufgaben",
"subTasksDone": "Unteraufgaben {done}/{count}",
"subTaskAdd": "Unteraufgabe hinzufügen",
"taskTitle": "Aufgabe",
"taskAddTitle": "Aufgabe hinzufügen",
"taskAdd": "Hinzufügen",
"taskAddOn": "Aufgabe für {day} hinzufügen",
"taskTitleHint": "Was ist zu tun?",
"taskDescription": "Beschreibung",
"taskDescriptionHint": "Beschreibung",
"taskComplete": "Als erledigt markieren",
"taskReopen": "Als unerledigt markieren",
"taskCompleted": "Aufgabe erledigt",
"taskDelete": "Aufgabe löschen",
"taskDeleteTitle": "Aufgabe löschen?",
"taskDeleteMessage": "„{title}“ wird auf all deinen Geräten gelöscht.",
"taskDeleteWithSubTasks": "„{title}“ wird mit {count, plural, =1{seiner Unteraufgabe} other{seinen {count} Unteraufgaben}} auf all deinen Geräten gelöscht.",
"taskGone": "Diese Aufgabe wurde gelöscht.",
"todayEmptyTitle": "Heute ist nichts fällig",
"todayEmptyHint": "Aufgaben mit dem heutigen Datum und überfällige erscheinen hier.",
"lockedRows": "{count, plural, =1{1 Eintrag lässt sich auf diesem Gerät nicht öffnen.} other{{count} Einträge lassen sich auf diesem Gerät nicht öffnen.}}",
"inboxMissingTitle": "Noch kein Eingang",
feat(todo): recurring tasks, set through a picker (ADR 0033, D7)
A task's date may recur: every n days, weeks (on which weekdays),
months (on its day, or its nth or last weekday), years, from its date
or from when it is done, until a day or for n times. Done, it moves on
to the next day after both its date and today, its deadline as far, its
time kept, its done sub-tasks open again and when it was done kept in
its payload; undo writes all of it back. The date sheet offers the rules
that fit the task's day and a rule of the person's own; rows show a
recurring date with its own icon, the task sheet the rule in words.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 12:15:51 +01:00
"inboxMissingHint": "Dein Eingang kommt mit dem nächsten Abgleich, oder sobald dieses Gerät die Schlüssel deines Kontos hat.",
"repeatTitle": "Wiederholen",
"repeatNone": "Keine Wiederholung",
"repeatCustom": "Eigene Regel",
"repeatEveryDay": "{count, plural, =1{Jeden Tag} other{Alle {count} Tage}}",
"repeatEveryWeek": "{count, plural, =1{Jede Woche} other{Alle {count} Wochen}}",
"repeatEveryMonth": "{count, plural, =1{Jeden Monat} other{Alle {count} Monate}}",
"repeatEveryYear": "{count, plural, =1{Jedes Jahr} other{Alle {count} Jahre}}",
"repeatWeekdays": "Jeden Werktag",
"repeatOn": "{rule} am {on}",
"repeatMonthDay": "{day}.",
"repeatMonthWeek": "{nth, select, 1{ersten} 2{zweiten} 3{dritten} 4{vierten} other{letzten}} {weekday}",
"repeatFromCompletion": "{rule}, ab Erledigung",
"repeatUntil": "{rule}, bis {day}",
"repeatLeft": "{rule}, {count, plural, =0{nur noch diesmal} =1{noch einmal} other{noch {count}-mal}}",
"repeatEvery": "Alle",
"repeatUnitDays": "Tage",
"repeatUnitWeeks": "Wochen",
"repeatUnitMonths": "Monate",
"repeatUnitYears": "Jahre",
"repeatCountFromCompletion": "Ab Erledigung zählen",
"repeatCountFromCompletionHint": "Nicht ab ihrem Datum: später erledigt, kommt sie entsprechend später wieder.",
"repeatEnds": "Endet",
"repeatEndsNever": "Nie",
"repeatEndsOn": "An einem Tag",
feat(todo): reminders on the device, Upcoming's week strip, the task pane and search (ADR 0033, D2, D5, D8)
A task with a time takes reminders, minutes before it, in its sealed
payload; each device plans the coming ones whenever the tasks change and
schedules them with the system through flutter_local_notifications
(Android, iOS, macOS, Windows; on Linux the running app shows them), at
the minute where Android allows exact alarms. Notifying is asked for
when a task first gets a reminder; signing out or switching person
cancels them. Upcoming gets its week strip: the month opening
Material's calendar, the weeks before and after, a dot under each day
with tasks; a day picked scrolls the agenda to it, and scrolling moves
the strip along. From expanded windows on, a task opens in a pane
beside the list rather than in a dialog. Search, from every tab's app
bar, finds projects by name and tasks by every word typed, in their
title, description or labels, whatever the case and accents, on the
device alone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 12:16:19 +01:00
"repeatEndsAfter": "{count, plural, =1{Nach einem Mal} other{Nach {count} Malen}}",
"remindersTitle": "Erinnerungen",
"remindersNone": "Keine Erinnerungen",
"reminderAtTime": "Zur Uhrzeit",
"reminderMinutesBefore": "{count, plural, =1{1 Minute vorher} other{{count} Minuten vorher}}",
"reminderHoursBefore": "{count, plural, =1{1 Stunde vorher} other{{count} Stunden vorher}}",
"reminderDaysBefore": "{count, plural, =1{1 Tag vorher} other{{count} Tage vorher}}",
"reminderDue": "Fällig um {time}",
"remindersChannel": "Erinnerungen an Aufgaben",
"remindersNotAllowed": "Benachrichtigungen sind für Halkyon Todo aus: Erinnerungen erscheinen, sobald du sie in den Systemeinstellungen erlaubst.",
"remindersOnThisDevice": "Erinnerungen kommen auf jedem deiner Geräte, das deine Aufgaben öffnet.",
feat(todo): reminders at a time of their own planned and set in a task's sheet, durations in its date sheet
planReminders plans each reminder at a time of its own of an open task,
whatever its date, under an ID of its own; the notification says
"Reminder" for a task without a time. The task's sheet always has its
reminders' row: those before its time where it has one, those at a time
of their own each with its remove button and "Remind at a time" (a day,
then a time), the permission asked as a first one is chosen. The date
sheet sets a duration once there is a time (none, 15 minutes to 4
hours, as Todoist's), a time cleared taking it with it. Recorded as
ADR 0033, D18 (the developer's, 3 Nov 2026).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 13:56:19 +01:00
"reminderBody": "Erinnerung",
"remindersAtTimes": "Zu einer eigenen Uhrzeit",
"reminderAddTime": "Zu einer Uhrzeit erinnern",
"reminderRemove": "Erinnerung entfernen",
"durationTitle": "Dauer",
"durationNone": "Keine Dauer",
"durationHours": "{hours} Std.",
"durationMinutes": "{minutes} Min.",
"durationHoursMinutes": "{hours} Std. {minutes} Min.",
feat(todo): reminders on the device, Upcoming's week strip, the task pane and search (ADR 0033, D2, D5, D8)
A task with a time takes reminders, minutes before it, in its sealed
payload; each device plans the coming ones whenever the tasks change and
schedules them with the system through flutter_local_notifications
(Android, iOS, macOS, Windows; on Linux the running app shows them), at
the minute where Android allows exact alarms. Notifying is asked for
when a task first gets a reminder; signing out or switching person
cancels them. Upcoming gets its week strip: the month opening
Material's calendar, the weeks before and after, a dot under each day
with tasks; a day picked scrolls the agenda to it, and scrolling moves
the strip along. From expanded windows on, a task opens in a pane
beside the list rather than in a dialog. Search, from every tab's app
bar, finds projects by name and tasks by every word typed, in their
title, description or labels, whatever the case and accents, on the
device alone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 12:16:19 +01:00
"weekPrevious": "Vorige Woche",
"weekNext": "Folgende Woche",
"searchTitle": "Suchen",
"searchHint": "Aufgaben und Projekte suchen",
"searchEmpty": "Finde eine Aufgabe über die Wörter in ihrem Titel, ihrer Beschreibung oder ihren Labels. Die Suche läuft auf diesem Gerät: deine Instanz kann deine Aufgaben nicht lesen.",
"searchNone": "Nichts gefunden für „{query}“.",
"searchProjects": "Projekte",
feat(todo): dialogs on the desktop, the tabs reordered, a task's path and menu (ADR 0033, D11 to D14)
- halkyon_ui: showAdaptiveSheet shows a dialog on Linux, macOS and Windows
at every width (bottom sheets stay on phones and tablets below expanded
windows), so Learn and Train follow; SheetScaffold takes a heading in
the title's place and may leave out its close button.
- Todo: the tabs are Inbox, Today, Upcoming, Browse, Today still opening;
`serverpod start` launches the app on Linux, as it has no web build.
- A task's sheet shows where the task is (its project, an icon once tasks
are above it, and the tasks above it, each opening what it names) and a
⋮ menu in place of its close button: when it was added (its UUID v7),
Duplicate with its sub-tasks, hiding its done sub-tasks (synced in its
payload), Close in the pane, Delete after asking. The description's icon
stays by its first line.
- A row names its project and section at the end of its date's line; every
menu entry has its icon.
- Learn: a studyset's path starts at the Library tab's icon, named by its
tooltip.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 16:53:38 +01:00
"searchTasks": "Aufgaben",
"taskMore": "Optionen der Aufgabe",
"taskAddedOn": "Hinzugefügt am {when}",
"taskDuplicate": "Duplizieren",
"taskDuplicated": "Aufgabe dupliziert",
"subTasksHideDone": "Erledigte Unteraufgaben ausblenden",
"subTasksShowDone": "Erledigte Unteraufgaben zeigen",
"taskClose": "Schließen",
feat(todo): tasks chosen together, quick add reading what is typed (ADR 0033, D14, D15)
- A section's heading stays atop a project's list while its tasks
scroll beneath it (slivers, PinnedHeaderSliver).
- Upcoming's month unfolds in place beneath its strip, from its name
or its handle; a button beside the month goes back to today.
- Tasks are chosen together: a row swiped right or held, or Select
tasks in Today's, Upcoming's and a project's menu; a bar of date,
move, labels, priority and more (complete, duplicate, deadline,
delete) takes the navigation bar's place. A row swiped left asks
for its date.
- TaskRepository.move moves tasks with their sub-tasks.
- parseQuickAdd reads #project, @label (an unknown one made),
{deadline}, !!1 and p1 to p4, !30m, dates, times and recurrences
(tomorrow 9am, Mon 18:00, ev Tue 7pm, every 2 days, every weekday),
from a table of words per language: English, and German beside it.
- Each token is highlighted and shown on its chip; a tap keeps it as
text, and a chip picked takes it out of the title.
- Quick add shows its title alone at first, its chips once typing
starts, and the description and deadline behind its + (the
description also from the down arrow).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 16:53:59 +01:00
"taskPath": "Wo die Aufgabe liegt",
"weekToday": "Zurück zu heute",
"monthPrevious": "Voriger Monat",
"monthNext": "Folgender Monat",
"monthShow": "Ganzen Monat zeigen",
"monthHide": "Eine Woche zeigen",
"selectTasks": "Aufgaben auswählen",
"selectionCount": "{count, plural, =0{Aufgaben auswählen} =1{1 Aufgabe ausgewählt} other{{count} Aufgaben ausgewählt}}",
"selectionEnd": "Auswahl beenden",
"selectionDate": "Datum",
"selectionMove": "Verschieben nach",
"selectionLabels": "Labels",
"selectionPriority": "Priorität",
"selectionMore": "Mehr",
"selectionDelete": "{count, plural, =1{1 Aufgabe löschen} other{{count} Aufgaben löschen}}",
"selectionDeleteTitle": "Die Aufgaben löschen?",
"selectionDeleteMessage": "{count, plural, =1{1 Aufgabe wird mit ihren Unteraufgaben auf all deinen Geräten gelöscht.} other{{count} Aufgaben werden mit ihren Unteraufgaben auf all deinen Geräten gelöscht.}}",
"selectionDuplicate": "{count, plural, =1{1 Aufgabe duplizieren} other{{count} Aufgaben duplizieren}}",
"selectionComplete": "{count, plural, =1{1 Aufgabe erledigen} other{{count} Aufgaben erledigen}}",
"selectionDeadline": "Frist",
"tasksCompleted": "{count, plural, =1{Aufgabe erledigt} other{{count} Aufgaben erledigt}}",
"swipeSelect": "Auswählen",
"swipeDate": "Datum",
"tasksMenu": "Mehr",
"quickAddMore": "Mehr",
"quickAddTokenHint": "Tippe ein hervorgehobenes Wort an, um es als Text zu behalten.",
feat(todo): tasks dragged into place or under another, the add button dropped where the task goes (ADR 0033, D16)
- A project's row, held, is dragged before or after another, or a
little to the right to become its sub-task, or onto a section's
heading; its sub-tasks go with it, and Order changed offers Undo
(TaskRepository.place). The list scrolls at its edges.
- The add button is dragged onto a project's list to add the task
between two rows, onto a day in Upcoming for that day, onto Today
for today; dropped back on its place, an ×, it gives up.
- Holding a row now drags it; a swipe to the right selects it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 17:28:37 +01:00
"deadlineTitle": "Frist",
"orderChanged": "Reihenfolge geändert",
2026-11-01 17:58:06 +01:00
"addTaskCancel": "Hier ablegen zum Abbrechen",
feat(todo): each project's Display: completed tasks, grouping, sorting and filters, synced (ADR 0033, D17)
- A Display button beside a project's menu (the Inbox's too), a dot
on it while the project shows otherwise than at first, opens its
sheet: completed tasks, grouping (date, deadline, added date,
priority, label), sorting (name, date, deadline, added date,
priority), filters by date, deadline, priority and label, and
Reset all.
- The choices live in the project's sealed payload (ProjectView,
written only once set), so every device shows the project alike.
- Grouped, the groups stand in the sections' place under pinned
headings; rows are dragged only while sorted by hand by sections.
- Show done tasks moves from the menu into Display.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 18:41:12 +01:00
"taskMovedTo": "Verschoben auf {day}",
"display": "Anzeige",
"displayCompleted": "Erledigte Aufgaben",
"displaySort": "Sortieren",
"displayGrouping": "Gruppierung",
"displaySorting": "Sortierung",
"displayFilter": "Filter",
"displayDeadline": "Frist",
"displayLabel": "Label",
"displayReset": "Alles zurücksetzen",
"displayDone": "Fertig",
"displayAll": "Alle",
"displayAny": "Beliebig",
"groupingNone": "Keine",
"groupingDate": "Datum",
"groupingDeadline": "Frist",
"groupingAdded": "Hinzugefügt am",
"groupingPriority": "Priorität",
"groupingLabel": "Label",
"sortingManual": "Manuell",
"sortingName": "Name",
"sortingDate": "Datum",
"sortingDeadline": "Frist",
"sortingAdded": "Hinzugefügt am",
"sortingPriority": "Priorität",
"rangeToday": "Heute",
"rangeThisWeek": "Diese Woche",
"rangeNext7": "Nächste 7 Tage",
"rangeThisMonth": "Dieser Monat",
"rangeNext30": "Nächste 30 Tage",
"rangeNoDate": "Kein Datum",
"rangeNoDeadline": "Keine Frist",
"viewNothingTitle": "Nichts passt",
"viewNothingHint": "Die Filter dieser Ansicht lassen hier jede Aufgabe aus. Unter Anzeige änderst du sie.",
"displaySave": "Speichern",
"displayCancel": "Abbrechen",
2026-11-01 18:51:15 +01:00
"groupNoLabel": "Ohne Label",
"layoutTitle": "Layout",
"layoutList": "Liste",
"layoutBoard": "Board",
feat(todo): a project's Calendar, Upcoming's Display and its 3-day grid (ADR 0033, D17)
A project's Display gains the Calendar layout: Upcoming's week strip
and agenda, now shared as DayAgenda, over the project's tasks it keeps,
with No date beside the month and Future occurrences, each repeating
task also on the days it will come back (calendarOf on Repeat.next),
muted, neither ticked off nor dragged.
Upcoming gets a Display of its own, the same sheet over another target
(DisplayTarget): Agenda or 3-day, done tasks, future occurrences,
sorting, the filters by deadline, priority and label, and in the grid
Colouring by priority, label or project. It is kept in the person's
settings, one sealed row under an ID keyed by the account in the new
synced table todo_settings (migration settings: the table, its index
on spaceId and its foreign key to the space, cascading on delete).
The 3-day grid shows today and the two days after, stepped or swiped
three at a time: tasks without a time all day, timed ones as blocks as
long as they last, overlapping ones side by side (layOutDay). A long
press on a half hour adds a task there for half an hour; Overdue opens
the overdue tasks with Reschedule.
The board's separator builder names its BuildContext, as the root's
analyzer plugin asks (never_discard_build_context).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 20:01:00 +01:00
"boardNoSection": "(Kein Abschnitt)",
"layoutCalendar": "Kalender",
"displayOccurrences": "Künftige Wiederholungen",
"calendarNoDate": "Ohne Datum",
"calendarNoDateEmpty": "Jede Aufgabe hier hat ein Datum",
"calendarNoDateHint": "Aufgaben dieses Projekts ohne Datum stehen hier.",
"taskLater": "Eine spätere Wiederholung",
"sortingSmart": "Smart",
"layoutAgenda": "Agenda",
"layoutThreeDay": "3 Tage",
"displayColoring": "Farben",
"coloringProject": "Projekt",
"allDay": "Ganztägig",
"daysPrevious": "Frühere Tage",
2026-11-01 20:25:15 +01:00
"daysNext": "Spätere Tage",
"settingsTasks": "Aufgaben",
"weekStartTitle": "Woche beginnt am",
"weekStartLanguage": "Wie in der Sprache",
"resetSubTasksTitle": "Unteraufgaben zurücksetzen",
"resetSubTasksHint": "Wieder öffnen, wenn eine wiederkehrende Aufgabe erledigt ist",
"automaticReminderTitle": "Automatische Erinnerung",
"automaticReminderHint": "Für eine Aufgabe mit Uhrzeit, wenn sie keine eigene Erinnerung hat",
"automaticReminderNone": "Keine",
"snoozeTitle": "Schlummern für",
"snoozeMinutes": "{count, plural, =1{1 Minute} other{{count} Minuten}}",
2026-11-01 21:33:51 +01:00
"reminderSnooze": "{count} Min. schlummern",
feat(todo): rows in rounded boxes, Today as Todoist's, lists pulled to sync, a project's own colour
From the developer's review of 3 Nov 2026 (ADR 0033, D19 to D21):
- Today's tab shows today's day in its calendar, Browse the menu's lines,
Display's button Lucide's square-menu.
- A task's row stands in a rounded box, the rows of a list a group rounded
at its ends; the box is the row's own surface, so a chosen row's colour no
longer shows under Upcoming's pinned week strip as the list scrolls. Its
project and section end the line of its date at the row's right edge.
- Today has at most two groups: what is overdue, folding under its heading,
and today's, headed "Tuesday, 3 Nov" ("Dienstag, 3. Nov."), without a
"· Today" after it; Upcoming's days take the same form.
- Upcoming's way back to today shows whenever another day is picked.
- Today, Upcoming, the Inbox and every project pulled down sync now, an
empty list too, as Learn's.
- A project's screen washes in its own colour, as a studyset's in Learn.
- "Add section" in place of "New section".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 21:39:28 +01:00
"monthMore": "{count} weitere",
"dayHeadingPattern": "EEEE, d. MMM",
"overdueHide": "Überfälliges ausblenden",
"overdueShow": "Überfälliges einblenden"
feat(todo): the app on halkyon_app, with its own icon
Todo's app is halkyon_app's instance and session gates with Todo's
frame ("Todo" under "Halkyon", its icon, its own sentences) and an
instance check accepting only `todo`; TodoDependencies on an instance,
an empty TodoPerson per person, nothing kept or synced yet. A person
sees an empty home and their account: whose it is on which instance,
switching account, signing out and deleting it (each asking first where
it deletes), and About with the source of what the instance runs and
the licence list. Texts in British English and German. App ID
app.halkyon.todo on every platform, GitHub's callback scheme registered
on Android, no web build.
Its icon is Lucide's list-checks (lucide-static 1.50.0) in the brand's
blues on white: tool/app_icons.py draws its strokes with Pillow and
writes every platform's launcher icon; Lucide's ISC notice joins the
licence list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-19 21:56:12 +02:00
}