feat: the rail opens into a sidebar with labels from expanded windows on

Decided by the developer on 9 and 10 Nov 2026: phones keep the bar,
medium windows (600 to 840 dp) the rail alone, and from 840 dp a toggle
at the rail's foot opens it into a sidebar 256 dp wide, as Proton
Drive's: the app named beside its icon, each tab its label beside its
icon, the icons where the rail had them, so nothing moves under the
pointer. Its labels come in one after another, top to bottom, all at once
where animations are off. Open or closed is kept per device, in
halkyon_app's Look (look.json, `sidebar`), which Learn keeps in its
DeviceSettings (`sidebarOpen`), as it does the appearance and language.

NavigationFrame takes sidebarOpen and onSidebarChanged (no toggle without
it), and sidebarSections, what the app lists below the tabs, which Todo's
favourites and projects will be. The closed rail keeps Flutter's widget,
its toggle pinned at the foot (trailingAtBottom); the open one is the
frame's own, as the staggered labels need. Learn, Todo, Train and
Meditate keep the choice.

Whats-New: In wide windows, the button at the foot of the side rail opens it into a sidebar with names, and it stays open.
Whats-New-De: In breiten Fenstern öffnet der Knopf unten an der Seitenleiste sie mit Namen, und sie bleibt offen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-10 16:44:08 +01:00
commit 3f441cbc98
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 766 additions and 31 deletions

View file

@ -17,5 +17,7 @@
"copy": "Kopieren",
"paletteColorName": "{name, select, carrot{Karotte} cerise{Kirschrot} cobalt{Kobalt} copper{Kupfer} enzian{Enzian} fern{Farn} forest{Wald} ocean{Ozean} olive{Olive} pacific{Pazifik} pickle{Essiggurke} pine{Kiefer} pink{Rosa} plum{Pflaume} purple{Lila} reef{Riff} sahara{Sahara} slateblue{Schieferblau} soil{Erde} strawberry{Erdbeere} other{{name}}}",
"colorPickerLabel": "Farbe: {color}",
"explain": "Was ist das?"
"explain": "Was ist das?",
"openSidebar": "Seitenleiste öffnen",
"closeSidebar": "Seitenleiste schließen"
}

View file

@ -41,5 +41,13 @@
"explain": "What's this?",
"@explain": {
"description": "Tooltip of the question mark that opens a text explaining a section or setting (HelpButton)."
},
"openSidebar": "Open sidebar",
"@openSidebar": {
"description": "Tooltip of the toggle at the foot of the rail opening it into a sidebar with labels."
},
"closeSidebar": "Close sidebar",
"@closeSidebar": {
"description": "Tooltip of the toggle at the foot of the sidebar closing it into the rail."
}
}

View file

@ -210,6 +210,18 @@ abstract class HalkyonUiLocalizations {
/// In en, this message translates to:
/// **'What\'s this?'**
String get explain;
/// Tooltip of the toggle at the foot of the rail opening it into a sidebar with labels.
///
/// In en, this message translates to:
/// **'Open sidebar'**
String get openSidebar;
/// Tooltip of the toggle at the foot of the sidebar closing it into the rail.
///
/// In en, this message translates to:
/// **'Close sidebar'**
String get closeSidebar;
}
class _HalkyonUiLocalizationsDelegate

View file

@ -93,4 +93,10 @@ class HalkyonUiLocalizationsDe extends HalkyonUiLocalizations {
@override
String get explain => 'Was ist das?';
@override
String get openSidebar => 'Seitenleiste öffnen';
@override
String get closeSidebar => 'Seitenleiste schließen';
}

View file

@ -93,6 +93,12 @@ class HalkyonUiLocalizationsEn extends HalkyonUiLocalizations {
@override
String get explain => 'What\'s this?';
@override
String get openSidebar => 'Open sidebar';
@override
String get closeSidebar => 'Close sidebar';
}
/// The translations for English, as used in the United Kingdom (`en_GB`).