feat(meditate): the app: Today, Explore, Profile, the sitting and its bells
halkyon_meditate_flutter on halkyon_app and halkyon_ui (ADR 0038): the
first start, sign-in and account as every Halkyon app's, a bar below
medium windows and a rail with the icon from medium on, fern washes,
Settings in cards (Sync, the operator's, Sitting, Practice, the
account, What's new, About, the version), English and German.
- Today: a greeting by the hour, Sit now at 5, 10, 20 minutes and the
timer's own length, the practice of the day, the week with the days
in a row, favourites, recently sat (D9).
- Explore: six practices of Halkyon's own, written for the app, found
by a search without case or accents, by goal and by kind; each page
with how it goes, its lengths, its heart and Start (D4, D10).
- The sitting, over the tabs: its time from the clock, a ring counting
down, the cue of the moment, Pause and End, the bells at the start,
between and at the end, the screen kept on; ended early, kept from a
minute on where the person says so (D5, D6).
- Profile: every Halkyon app's, then the person's practice: minutes,
sittings, days, the week and every sitting kept, to delete (D8).
- Settings and sittings sealed with the person's key and synced (D7).
The bells are synthesised by apps/meditate/tool/bells.py, the icon is
Lucide's sprout from cobalt through pacific into fern
(tool/app_icons.py). Releases and the deploy are a later step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 09:25:30 +01:00
{
"@@locale": "en",
"appTitle": "Halkyon Meditate",
"@appTitle": {
"description": "The app's name: the window's title, and where halkyon_app's texts name the app."
},
"launchProduct": "Meditate",
"@launchProduct": {
"description": "The app's word in its wordmark, under \"Halkyon\"."
},
"instanceFirstStartSubtitle": "Choose the instance to keep your practice on. Someone runs each one; you can add others later.",
"accountTitle": "Account",
feat(meditate): the dream journal, a fourth tab, Today's morning card
ADR 0038, D14. A dream (`Dream`) holds the night it belongs to (the
morning's date, today's by default), an optional title, its text, the
marks lucid, nightmare and recurring, a clarity of 1 to 5, the mood on
waking and free labels, and when it was written; a row each in `dream`,
sealed for its row with the person's key as the sittings
(`DreamRepository` on `SealedRows`, `SyncDreamGateway`), followed by
`JournalCubit` for every screen.
- The Journal, between Explore and Profile: dreams by month, the
newest first, searched over title, text and labels as Explore
searches, filtered by marks, `+` above the bar; empty, it says that
entries are sealed on the device before they sync.
- A dream's screen over the tabs: a new one with its text first and
focused, the rest folded below; a kept one to read, with Edit and
Delete (asked first); leaving one written but not saved asks first.
- Today, from 4 to 12 o'clock while last night has no dream, a gentle
card leading to a new one; Settings' Journal card switches it off
(`dreamPrompt` in the sealed settings, schema 1 kept).
- Profile's Practice: this month's dreams and the lucid ones, once the
journal holds one.
- English and German texts; What's new 0.1.0 names the journal; the
account's deletion says it takes the dreams too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 14:19:10 +01:00
"accountDeleteMessage": "Your account is deleted on the server and on all your devices, with every sitting and dream kept. This can't be undone.",
feat(meditate): the app: Today, Explore, Profile, the sitting and its bells
halkyon_meditate_flutter on halkyon_app and halkyon_ui (ADR 0038): the
first start, sign-in and account as every Halkyon app's, a bar below
medium windows and a rail with the icon from medium on, fern washes,
Settings in cards (Sync, the operator's, Sitting, Practice, the
account, What's new, About, the version), English and German.
- Today: a greeting by the hour, Sit now at 5, 10, 20 minutes and the
timer's own length, the practice of the day, the week with the days
in a row, favourites, recently sat (D9).
- Explore: six practices of Halkyon's own, written for the app, found
by a search without case or accents, by goal and by kind; each page
with how it goes, its lengths, its heart and Start (D4, D10).
- The sitting, over the tabs: its time from the clock, a ring counting
down, the cue of the moment, Pause and End, the bells at the start,
between and at the end, the screen kept on; ended early, kept from a
minute on where the person says so (D5, D6).
- Profile: every Halkyon app's, then the person's practice: minutes,
sittings, days, the week and every sitting kept, to delete (D8).
- Settings and sittings sealed with the person's key and synced (D7).
The bells are synthesised by apps/meditate/tool/bells.py, the icon is
Lucide's sprout from cobalt through pacific into fern
(tool/app_icons.py). Releases and the deploy are a later step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 09:25:30 +01:00
"aboutTitle": "About Halkyon Meditate",
"settingsTitle": "Settings",
"settingsVersion": "Version {version} (build {build})",
"@settingsVersion": {
"placeholders": {
"version": {
"type": "String"
},
"build": {
"type": "String"
}
}
},
"keysMissing": "This device can't save: it doesn't hold your account's keys. Sign in with your password or recovery phrase to add them.",
"shellTabToday": "Today",
"shellTabExplore": "Explore",
"shellTabProfile": "Profile",
"greetingMorning": "Good morning",
"greetingAfternoon": "Good afternoon",
"greetingEvening": "Good evening",
"greetingNight": "A quiet night",
"minutesUnit": "min",
"@minutesUnit": {
"description": "Minutes, after a number typed or stepped."
},
"minutes": "{minutes} min",
"@minutes": {
"description": "A length in minutes, short, on chips and rows.",
"placeholders": {
"minutes": {
"type": "int"
}
}
},
"todaySitNow": "Sit now",
"todaySitNowHint": "A silent sitting with bells, as long as you choose.",
"todayPracticeOfDay": "Practice of the day",
"todayThisWeek": "This week",
"streakDays": "{count, plural, =0{No days in a row yet} =1{1 day in a row} other{{count} days in a row}}",
"@streakDays": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"favouritesTitle": "Favourites",
"favouritesNone": "No favourites yet. Mark a practice with its heart in Explore.",
"recentTitle": "Recently sat",
"recentNone": "Nothing sat yet.",
"silentTimer": "Silent timer",
"sittingRow": "{date} · {minutes} min",
"@sittingRow": {
"description": "A sitting kept: when it began and how long it was sat.",
"placeholders": {
"date": {
"type": "String"
},
"minutes": {
"type": "int"
}
}
},
"exploreSearch": "Search practices",
"exploreGoals": "What brings you here?",
"exploreAll": "All",
"exploreNoMatch": "No practice matches.",
"goalCalm": "Calm down",
"goalSleep": "Sleep",
"goalFocus": "Focus",
"goalBegin": "Begin",
"kindBreathing": "Breathing",
"kindBody": "Body",
"kindAwareness": "Awareness",
"kindKindness": "Kindness",
"kindSleep": "Sleep",
"kindPause": "Pause",
"practiceStart": "Start",
"practiceLength": "Length",
"practiceHowItGoes": "How it goes",
"practiceFavourite": "Add to favourites",
"practiceUnfavourite": "Remove from favourites",
"practiceGone": "This practice isn't in this version of the app.",
"practiceBreathCountingTitle": "Counting breaths",
"practiceBreathCountingSummary": "Count each out-breath from one to ten, then begin again.",
"practiceBreathCountingCue1": "Sit comfortably. Let the breath come and go by itself.",
"practiceBreathCountingCue2": "With each out-breath, count: one, two, and on up to ten.",
"practiceBreathCountingCue3": "Lost count? Notice it kindly and begin again at one.",
"practiceBreathCountingCue4": "Let the counting go. Rest with the breath as it is.",
"practiceThreeMinutePauseTitle": "Three-minute pause",
"practiceThreeMinutePauseSummary": "A short stop in the day: notice, gather, widen.",
"practiceThreeMinutePauseCue1": "What is here right now? Thoughts, feelings, sensations.",
"practiceThreeMinutePauseCue2": "Gather your attention on the breath, low in the belly.",
"practiceThreeMinutePauseCue3": "Widen it to the whole body, and to the room around you.",
"practiceBodyScanTitle": "Body scan",
"practiceBodyScanSummary": "Move your attention slowly through the body, from the feet up.",
"practiceBodyScanCue1": "Lie or sit comfortably. Feel where the body meets the ground.",
"practiceBodyScanCue2": "Bring your attention to your feet and legs. Just notice.",
"practiceBodyScanCue3": "Move up through the belly, the back and the chest.",
"practiceBodyScanCue4": "Notice the hands, the arms, the shoulders and the neck.",
"practiceBodyScanCue5": "The face and the head. Then feel the whole body at once.",
"practiceOpenAwarenessTitle": "Open awareness",
"practiceOpenAwarenessSummary": "Rest your attention on nothing in particular, and let whatever comes pass.",
"practiceOpenAwarenessCue1": "Begin with a few breaths, settling in.",
"practiceOpenAwarenessCue2": "Let the breath go. Notice sounds as they come and go.",
"practiceOpenAwarenessCue3": "Thoughts may come too. See them arrive, and leave.",
"practiceOpenAwarenessCue4": "Simply be aware, with nothing to do.",
"practiceLovingKindnessTitle": "Kind wishes",
"practiceLovingKindnessSummary": "Wish yourself and others well, one circle after the other.",
"practiceLovingKindnessCue1": "Think of yourself: may I be safe, may I be at ease.",
"practiceLovingKindnessCue2": "Think of someone dear to you: may you be safe, may you be at ease.",
"practiceLovingKindnessCue3": "Think of someone you hardly know, and wish them the same.",
"practiceLovingKindnessCue4": "Let the wishes spread to everyone, everywhere.",
"practiceSettlingForSleepTitle": "Settling for sleep",
"practiceSettlingForSleepSummary": "Slow the breath and let the day go before you sleep.",
"practiceSettlingForSleepCue1": "Lie down. Let the bed carry your weight.",
"practiceSettlingForSleepCue2": "Breathe out a little longer than you breathe in.",
"practiceSettlingForSleepCue3": "Let the day's thoughts drift past like clouds.",
"practiceSettlingForSleepCue4": "Nothing more to do. Let sleep come when it comes.",
"timerCue": "Sit in silence. The bell tells you when it is over.",
"sittingPause": "Pause",
"sittingResume": "Resume",
"sittingEnd": "End",
"sittingPaused": "Paused",
"sittingDoneTitle": "Well sat",
"sittingDoneMessage": "{minutes, plural, =1{1 minute sat.} other{{minutes} minutes sat.}}",
"@sittingDoneMessage": {
"placeholders": {
"minutes": {
"type": "int"
}
}
},
"sittingDone": "Done",
"sittingEndTitle": "End the sitting?",
"sittingEndMessage": "{minutes, plural, =1{1 minute sat so far. Keep it among your sittings?} other{{minutes} minutes sat so far. Keep them among your sittings?}}",
"@sittingEndMessage": {
"placeholders": {
"minutes": {
"type": "int"
}
}
},
"sittingKeep": "Keep",
"sittingDiscard": "Discard",
"sittingSitOn": "Sit on",
"profileTabPractice": "Practice",
"figuresMinutes": "Minutes",
"figuresSittings": "Sittings",
"figuresDays": "Days",
"historyTitle": "Your sittings",
"sittingDelete": "Delete",
"sittingDeleteTitle": "Delete this sitting?",
"sittingDeleteMessage": "It goes from your figures on all your devices.",
"settingsSitting": "Sitting",
"bellTitle": "Bell",
"bellBowl": "Singing bowl",
"bellSmallBell": "Small bell",
"bellWoodBlock": "Wooden block",
"startBellTitle": "Bell at the start",
"intervalTitle": "Bells between",
"intervalNone": "None",
"intervalEvery": "Every {minutes} min",
"@intervalEvery": {
"placeholders": {
"minutes": {
"type": "int"
}
}
},
"keepScreenOnTitle": "Keep the screen on",
"keepScreenOnHint": "While a sitting runs",
"timerLengthTitle": "Silent timer's length",
"settingsPractice": "Practice",
"showStreakTitle": "Show the days in a row",
feat(meditate): the dream journal, a fourth tab, Today's morning card
ADR 0038, D14. A dream (`Dream`) holds the night it belongs to (the
morning's date, today's by default), an optional title, its text, the
marks lucid, nightmare and recurring, a clarity of 1 to 5, the mood on
waking and free labels, and when it was written; a row each in `dream`,
sealed for its row with the person's key as the sittings
(`DreamRepository` on `SealedRows`, `SyncDreamGateway`), followed by
`JournalCubit` for every screen.
- The Journal, between Explore and Profile: dreams by month, the
newest first, searched over title, text and labels as Explore
searches, filtered by marks, `+` above the bar; empty, it says that
entries are sealed on the device before they sync.
- A dream's screen over the tabs: a new one with its text first and
focused, the rest folded below; a kept one to read, with Edit and
Delete (asked first); leaving one written but not saved asks first.
- Today, from 4 to 12 o'clock while last night has no dream, a gentle
card leading to a new one; Settings' Journal card switches it off
(`dreamPrompt` in the sealed settings, schema 1 kept).
- Profile's Practice: this month's dreams and the lucid ones, once the
journal holds one.
- English and German texts; What's new 0.1.0 names the journal; the
account's deletion says it takes the dreams too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 14:19:10 +01:00
"showStreakHint": "On Today and in your Profile",
"shellTabJournal": "Journal",
"journalSearch": "Search dreams",
"journalEmptyTitle": "Your dream journal",
"journalEmpty": "Write down a dream as soon as you wake, before it fades. Every entry is sealed on this device before it syncs: nobody else can read it, not even the instance.",
"journalNoMatch": "No dream matches.",
"journalAdd": "Write down a dream",
"journalFiguresTitle": "Dream journal",
"figuresDreamsThisMonth": "This month",
"figuresLucid": "Lucid",
"markLucid": "Lucid",
"markNightmare": "Nightmare",
"markRecurring": "Recurring",
"moodGlad": "Glad",
"moodCalm": "Calm",
"moodPuzzled": "Puzzled",
"moodSad": "Sad",
"moodUneasy": "Uneasy",
"dreamNew": "New dream",
"dreamLastNight": "Last night",
"dreamNight": "Night before {date}",
"@dreamNight": {
"description": "The night a dream belongs to, named by the morning after it.",
"placeholders": {
"date": {
"type": "String"
}
}
},
"dreamTextHint": "What did you dream?",
"dreamTitleLabel": "Title (optional)",
"dreamMore": "Night, title, marks and more",
"dreamNightLabel": "Night",
"dreamMarksLabel": "Marks",
"dreamClarityLabel": "Clarity",
"dreamClarityHint": "How clearly you remember it, 1 to 5",
"dreamClarityValue": "Clarity {clarity}/5",
"@dreamClarityValue": {
"placeholders": {
"clarity": {
"type": "int"
}
}
},
"dreamMoodLabel": "Mood on waking",
"dreamLabelsLabel": "Labels",
"dreamLabelsHint": "People, places, themes",
"dreamLabelAdd": "Add label",
"dreamSave": "Save",
"dreamEdit": "Edit",
"dreamDelete": "Delete",
"dreamDeleteTitle": "Delete this dream?",
"dreamDeleteMessage": "It goes from your journal on all your devices.",
"dreamDiscardTitle": "Discard this dream?",
"dreamDiscardMessage": "What you wrote isn't saved.",
"dreamDiscard": "Discard",
"dreamWritten": "Written {date}",
"@dreamWritten": {
"placeholders": {
"date": {
"type": "String"
}
}
},
"todayDreamPrompt": "Write down last night's dream",
"todayDreamPromptHint": "Before it fades. Sealed on this device.",
"settingsJournal": "Journal",
"dreamPromptTitle": "Ask for last night's dream",
2026-11-03 14:47:35 +01:00
"dreamPromptHint": "On Today, from 4 to 12 o'clock, until you write one",
"dreamDictate": "Dictate",
"dreamStopDictating": "Stop dictating",
"dreamListening": "Listening…",
"dreamSpeechUnavailable": "This device can't listen now. Does the app have the microphone's permission?",
"todayDreamSpeak": "Speak it"
feat(meditate): the app: Today, Explore, Profile, the sitting and its bells
halkyon_meditate_flutter on halkyon_app and halkyon_ui (ADR 0038): the
first start, sign-in and account as every Halkyon app's, a bar below
medium windows and a rail with the icon from medium on, fern washes,
Settings in cards (Sync, the operator's, Sitting, Practice, the
account, What's new, About, the version), English and German.
- Today: a greeting by the hour, Sit now at 5, 10, 20 minutes and the
timer's own length, the practice of the day, the week with the days
in a row, favourites, recently sat (D9).
- Explore: six practices of Halkyon's own, written for the app, found
by a search without case or accents, by goal and by kind; each page
with how it goes, its lengths, its heart and Start (D4, D10).
- The sitting, over the tabs: its time from the clock, a ring counting
down, the cue of the moment, Pause and End, the bells at the start,
between and at the end, the screen kept on; ended early, kept from a
minute on where the person says so (D5, D6).
- Profile: every Halkyon app's, then the person's practice: minutes,
sittings, days, the week and every sitting kept, to delete (D8).
- Settings and sittings sealed with the person's key and synced (D7).
The bells are synthesised by apps/meditate/tool/bells.py, the icon is
Lucide's sprout from cobalt through pacific into fern
(tool/app_icons.py). Releases and the deploy are a later step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 09:25:30 +01:00
}