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
|
|
|
|
import 'dart:async';
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
|
import 'package:flutter/widgets.dart';
|
|
|
|
|
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
|
|
|
|
|
import 'package:intl/intl.dart' as intl;
|
|
|
|
|
|
|
|
|
|
|
|
import 'app_localizations_de.dart';
|
|
|
|
|
|
import 'app_localizations_en.dart';
|
|
|
|
|
|
|
|
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
|
|
|
|
|
|
|
|
/// Callers can lookup localized strings with an instance of AppLocalizations
|
|
|
|
|
|
/// returned by `AppLocalizations.of(context)`.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Applications need to include `AppLocalizations.delegate()` in their app's
|
|
|
|
|
|
/// `localizationDelegates` list, and the locales they support in the app's
|
|
|
|
|
|
/// `supportedLocales` list. For example:
|
|
|
|
|
|
///
|
|
|
|
|
|
/// ```dart
|
|
|
|
|
|
/// import 'l10n/app_localizations.dart';
|
|
|
|
|
|
///
|
|
|
|
|
|
/// return MaterialApp(
|
|
|
|
|
|
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
|
|
|
|
|
|
/// supportedLocales: AppLocalizations.supportedLocales,
|
|
|
|
|
|
/// home: MyApplicationHome(),
|
|
|
|
|
|
/// );
|
|
|
|
|
|
/// ```
|
|
|
|
|
|
///
|
|
|
|
|
|
/// ## Update pubspec.yaml
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Please make sure to update your pubspec.yaml to include the following
|
|
|
|
|
|
/// packages:
|
|
|
|
|
|
///
|
|
|
|
|
|
/// ```yaml
|
|
|
|
|
|
/// dependencies:
|
|
|
|
|
|
/// # Internationalization support.
|
|
|
|
|
|
/// flutter_localizations:
|
|
|
|
|
|
/// sdk: flutter
|
|
|
|
|
|
/// intl: any # Use the pinned version from flutter_localizations
|
|
|
|
|
|
///
|
|
|
|
|
|
/// # Rest of dependencies
|
|
|
|
|
|
/// ```
|
|
|
|
|
|
///
|
|
|
|
|
|
/// ## iOS Applications
|
|
|
|
|
|
///
|
|
|
|
|
|
/// iOS applications define key application metadata, including supported
|
|
|
|
|
|
/// locales, in an Info.plist file that is built into the application bundle.
|
|
|
|
|
|
/// To configure the locales supported by your app, you’ll need to edit this
|
|
|
|
|
|
/// file.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
|
|
|
|
|
|
/// Then, in the Project Navigator, open the Info.plist file under the Runner
|
|
|
|
|
|
/// project’s Runner folder.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Next, select the Information Property List item, select Add Item from the
|
|
|
|
|
|
/// Editor menu, then select Localizations from the pop-up menu.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Select and expand the newly-created Localizations item then, for each
|
|
|
|
|
|
/// locale your application supports, add a new item and select the locale
|
|
|
|
|
|
/// you wish to add from the pop-up menu in the Value field. This list should
|
|
|
|
|
|
/// be consistent with the languages listed in the AppLocalizations.supportedLocales
|
|
|
|
|
|
/// property.
|
|
|
|
|
|
abstract class AppLocalizations {
|
|
|
|
|
|
AppLocalizations(String locale)
|
|
|
|
|
|
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
|
|
|
|
|
|
|
|
|
|
|
|
final String localeName;
|
|
|
|
|
|
|
|
|
|
|
|
static AppLocalizations of(BuildContext context) {
|
|
|
|
|
|
return Localizations.of<AppLocalizations>(context, AppLocalizations)!;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static const LocalizationsDelegate<AppLocalizations> delegate =
|
|
|
|
|
|
_AppLocalizationsDelegate();
|
|
|
|
|
|
|
|
|
|
|
|
/// A list of this localizations delegate along with the default localizations
|
|
|
|
|
|
/// delegates.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Returns a list of localizations delegates containing this delegate along with
|
|
|
|
|
|
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
|
|
|
|
|
|
/// and GlobalWidgetsLocalizations.delegate.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Additional delegates can be added by appending to this list in
|
|
|
|
|
|
/// MaterialApp. This list does not have to be used at all if a custom list
|
|
|
|
|
|
/// of delegates is preferred or required.
|
|
|
|
|
|
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
|
|
|
|
|
|
<LocalizationsDelegate<dynamic>>[
|
|
|
|
|
|
delegate,
|
|
|
|
|
|
GlobalMaterialLocalizations.delegate,
|
|
|
|
|
|
GlobalCupertinoLocalizations.delegate,
|
|
|
|
|
|
GlobalWidgetsLocalizations.delegate,
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
/// A list of this localizations delegate's supported locales.
|
|
|
|
|
|
static const List<Locale> supportedLocales = <Locale>[
|
|
|
|
|
|
Locale('de'),
|
|
|
|
|
|
Locale('en'),
|
|
|
|
|
|
Locale('en', 'GB'),
|
|
|
|
|
|
Locale('en', 'US'),
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
/// The app's name: the window's title, and where halkyon_app's texts name the app.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Halkyon Todo'**
|
|
|
|
|
|
String get appTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// The app's word in its wordmark, under "Halkyon".
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Todo'**
|
|
|
|
|
|
String get launchProduct;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @instanceFirstStartSubtitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Choose the instance to keep your tasks on. Someone runs each one; you can add others later.'**
|
|
|
|
|
|
String get instanceFirstStartSubtitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @accountTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Account'**
|
|
|
|
|
|
String get accountTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @accountDeleteMessage.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Your account is deleted on the server and on all your devices. This can\'t be undone.'**
|
|
|
|
|
|
String get accountDeleteMessage;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @aboutTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
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
|
|
|
|
/// **'About Halkyon Todo'**
|
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
|
|
|
|
String get aboutTitle;
|
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
|
|
|
|
|
|
|
|
|
|
/// No description provided for @shellTabToday.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Today'**
|
|
|
|
|
|
String get shellTabToday;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @shellTabUpcoming.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Upcoming'**
|
|
|
|
|
|
String get shellTabUpcoming;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @shellTabInbox.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Inbox'**
|
|
|
|
|
|
String get shellTabInbox;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @shellTabBrowse.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Browse'**
|
|
|
|
|
|
String get shellTabBrowse;
|
|
|
|
|
|
|
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
|
|
|
|
/// No description provided for @settingsTitle.
|
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
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
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
|
|
|
|
/// **'Settings'**
|
|
|
|
|
|
String get settingsTitle;
|
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
|
|
|
|
|
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
|
|
|
|
/// No description provided for @settingsVersion.
|
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
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
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
|
|
|
|
/// **'Version {version} (build {build})'**
|
|
|
|
|
|
String settingsVersion(String version, String build);
|
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
|
|
|
|
|
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
|
|
|
|
/// No description provided for @clear.
|
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
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
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
|
|
|
|
/// **'Clear'**
|
|
|
|
|
|
String get clear;
|
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
|
|
|
|
|
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
|
|
|
|
/// No description provided for @colorLabel.
|
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
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
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
|
|
|
|
/// **'Colour'**
|
|
|
|
|
|
String get colorLabel;
|
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
|
|
|
|
|
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
|
|
|
|
/// No description provided for @completedShow.
|
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
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
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
|
|
|
|
/// **'Show done tasks'**
|
|
|
|
|
|
String get completedShow;
|
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
|
|
|
|
|
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
|
|
|
|
/// No description provided for @completedHide.
|
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
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
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
|
|
|
|
/// **'Hide done tasks'**
|
|
|
|
|
|
String get completedHide;
|
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
|
|
|
|
|
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
|
|
|
|
/// No description provided for @dateTitle.
|
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
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
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
|
|
|
|
/// **'Date'**
|
|
|
|
|
|
String get dateTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @dateNextWeek.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Next week'**
|
|
|
|
|
|
String get dateNextWeek;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @dateWeekend.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'This weekend'**
|
|
|
|
|
|
String get dateWeekend;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @datePick.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Pick a day'**
|
|
|
|
|
|
String get datePick;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @dateTime.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Time'**
|
|
|
|
|
|
String get dateTime;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @dateNone.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'No date'**
|
|
|
|
|
|
String get dateNone;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @dateNoneYet.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'No date'**
|
|
|
|
|
|
String get dateNoneYet;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @dayToday.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Today'**
|
|
|
|
|
|
String get dayToday;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @dayTomorrow.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Tomorrow'**
|
|
|
|
|
|
String get dayTomorrow;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @dayYesterday.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Yesterday'**
|
|
|
|
|
|
String get dayYesterday;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @dayHeadingNamed.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{date} · {name}'**
|
|
|
|
|
|
String dayHeadingNamed(String date, String name);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @deadlineOn.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Deadline {day}'**
|
|
|
|
|
|
String deadlineOn(String day);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @deadlineNone.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'No deadline'**
|
|
|
|
|
|
String get deadlineNone;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @keysMissing.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'This device can\'t save: it doesn\'t hold your account\'s keys. Sign in with your password or recovery phrase to add them.'**
|
|
|
|
|
|
String get keysMissing;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @labelsTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Labels'**
|
|
|
|
|
|
String get labelsTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @labelsNone.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'No labels yet.'**
|
|
|
|
|
|
String get labelsNone;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @labelsNoneSet.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'No labels'**
|
|
|
|
|
|
String get labelsNoneSet;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @labelsCount.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{count, plural, =1{1 label} other{{count} labels}}'**
|
|
|
|
|
|
String labelsCount(int count);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @labelAdd.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'New label'**
|
|
|
|
|
|
String get labelAdd;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @labelEdit.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Edit label'**
|
|
|
|
|
|
String get labelEdit;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @labelDelete.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Delete label'**
|
|
|
|
|
|
String get labelDelete;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @labelDeleteTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Delete the label?'**
|
|
|
|
|
|
String get labelDeleteTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @labelDeleteMessage.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'\"{name}\" is taken off every task that has it.'**
|
|
|
|
|
|
String labelDeleteMessage(String name);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @nameLabel.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Name'**
|
|
|
|
|
|
String get nameLabel;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @save.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Save'**
|
|
|
|
|
|
String get save;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @overdue.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Overdue'**
|
|
|
|
|
|
String get overdue;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @reschedule.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Reschedule'**
|
|
|
|
|
|
String get reschedule;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @priorityTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Priority'**
|
|
|
|
|
|
String get priorityTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @priority1.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Priority 1'**
|
|
|
|
|
|
String get priority1;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @priority2.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Priority 2'**
|
|
|
|
|
|
String get priority2;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @priority3.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Priority 3'**
|
|
|
|
|
|
String get priority3;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @priority4.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'No priority'**
|
|
|
|
|
|
String get priority4;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectsTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Projects'**
|
|
|
|
|
|
String get projectsTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectsNone.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'No projects of your own yet.'**
|
|
|
|
|
|
String get projectsNone;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectAdd.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'New project'**
|
|
|
|
|
|
String get projectAdd;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectEdit.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Edit project'**
|
|
|
|
|
|
String get projectEdit;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectDelete.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Delete project'**
|
|
|
|
|
|
String get projectDelete;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectDeleteTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Delete the project?'**
|
|
|
|
|
|
String get projectDeleteTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectDeleteMessage.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'\"{name}\" is deleted with its sections and tasks, on all your devices.'**
|
|
|
|
|
|
String projectDeleteMessage(String name);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectEmptyTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Nothing to do here'**
|
|
|
|
|
|
String get projectEmptyTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectEmptyHint.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Add a task with the + button.'**
|
|
|
|
|
|
String get projectEmptyHint;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectGone.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'This project was deleted.'**
|
|
|
|
|
|
String get projectGone;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectMenu.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'More'**
|
|
|
|
|
|
String get projectMenu;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @projectPickTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Project'**
|
|
|
|
|
|
String get projectPickTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @sectionAdd.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'New section'**
|
|
|
|
|
|
String get sectionAdd;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @sectionEdit.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Rename section'**
|
|
|
|
|
|
String get sectionEdit;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @sectionDelete.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Delete section'**
|
|
|
|
|
|
String get sectionDelete;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @sectionDeleteTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Delete the section?'**
|
|
|
|
|
|
String get sectionDeleteTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @sectionDeleteMessage.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'\"{name}\" is deleted with its tasks.'**
|
|
|
|
|
|
String sectionDeleteMessage(String name);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @sectionMenu.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Section'**
|
|
|
|
|
|
String get sectionMenu;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @subTasks.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Sub-tasks'**
|
|
|
|
|
|
String get subTasks;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @subTasksDone.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Sub-tasks {done}/{count}'**
|
|
|
|
|
|
String subTasksDone(int done, int count);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @subTaskAdd.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Add sub-task'**
|
|
|
|
|
|
String get subTaskAdd;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Task'**
|
|
|
|
|
|
String get taskTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskAddTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Add task'**
|
|
|
|
|
|
String get taskAddTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskAdd.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Add'**
|
|
|
|
|
|
String get taskAdd;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskAddOn.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Add a task on {day}'**
|
|
|
|
|
|
String taskAddOn(String day);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskTitleHint.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'What\'s to be done?'**
|
|
|
|
|
|
String get taskTitleHint;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskDescription.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Description'**
|
|
|
|
|
|
String get taskDescription;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskDescriptionHint.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Description'**
|
|
|
|
|
|
String get taskDescriptionHint;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskComplete.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Mark as done'**
|
|
|
|
|
|
String get taskComplete;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskReopen.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Mark as not done'**
|
|
|
|
|
|
String get taskReopen;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskCompleted.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Task done'**
|
|
|
|
|
|
String get taskCompleted;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskDelete.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Delete task'**
|
|
|
|
|
|
String get taskDelete;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskDeleteTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Delete the task?'**
|
|
|
|
|
|
String get taskDeleteTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskDeleteMessage.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'\"{title}\" is deleted on all your devices.'**
|
|
|
|
|
|
String taskDeleteMessage(String title);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskDeleteWithSubTasks.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'\"{title}\" is deleted with its {count, plural, =1{sub-task} other{{count} sub-tasks}}, on all your devices.'**
|
|
|
|
|
|
String taskDeleteWithSubTasks(String title, int count);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @taskGone.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'This task was deleted.'**
|
|
|
|
|
|
String get taskGone;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @todayEmptyTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Nothing due today'**
|
|
|
|
|
|
String get todayEmptyTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @todayEmptyHint.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Tasks dated today, and those overdue, show here.'**
|
|
|
|
|
|
String get todayEmptyHint;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @lockedRows.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{count, plural, =1{1 item doesn\'t open on this device.} other{{count} items don\'t open on this device.}}'**
|
|
|
|
|
|
String lockedRows(int count);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @inboxMissingTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'No Inbox yet'**
|
|
|
|
|
|
String get inboxMissingTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @inboxMissingHint.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Your Inbox comes with the next sync, or once this device holds your account\'s keys.'**
|
|
|
|
|
|
String get inboxMissingHint;
|
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
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatTitle.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Repeat'**
|
|
|
|
|
|
String get repeatTitle;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatNone.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Doesn\'t repeat'**
|
|
|
|
|
|
String get repeatNone;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatCustom.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Custom'**
|
|
|
|
|
|
String get repeatCustom;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatEveryDay.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{count, plural, =1{Every day} other{Every {count} days}}'**
|
|
|
|
|
|
String repeatEveryDay(int count);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatEveryWeek.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{count, plural, =1{Every week} other{Every {count} weeks}}'**
|
|
|
|
|
|
String repeatEveryWeek(int count);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatEveryMonth.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{count, plural, =1{Every month} other{Every {count} months}}'**
|
|
|
|
|
|
String repeatEveryMonth(int count);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatEveryYear.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{count, plural, =1{Every year} other{Every {count} years}}'**
|
|
|
|
|
|
String repeatEveryYear(int count);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatWeekdays.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Every weekday'**
|
|
|
|
|
|
String get repeatWeekdays;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatOn.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{rule} on {on}'**
|
|
|
|
|
|
String repeatOn(String rule, String on);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatMonthDay.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'day {day}'**
|
|
|
|
|
|
String repeatMonthDay(int day);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatMonthWeek.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'the {nth, select, 1{first} 2{second} 3{third} 4{fourth} other{last}} {weekday}'**
|
|
|
|
|
|
String repeatMonthWeek(String nth, String weekday);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatFromCompletion.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{rule}, from when it\'s done'**
|
|
|
|
|
|
String repeatFromCompletion(String rule);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatUntil.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{rule}, until {day}'**
|
|
|
|
|
|
String repeatUntil(String rule, String day);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatLeft.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{rule}, {count, plural, =0{this time only} =1{once more} other{{count} more times}}'**
|
|
|
|
|
|
String repeatLeft(String rule, int count);
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatEvery.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Every'**
|
|
|
|
|
|
String get repeatEvery;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatUnitDays.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Days'**
|
|
|
|
|
|
String get repeatUnitDays;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatUnitWeeks.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Weeks'**
|
|
|
|
|
|
String get repeatUnitWeeks;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatUnitMonths.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Months'**
|
|
|
|
|
|
String get repeatUnitMonths;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatUnitYears.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Years'**
|
|
|
|
|
|
String get repeatUnitYears;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatCountFromCompletion.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Count from when it\'s done'**
|
|
|
|
|
|
String get repeatCountFromCompletion;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatCountFromCompletionHint.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Not from its date: done late, it comes again as long after.'**
|
|
|
|
|
|
String get repeatCountFromCompletionHint;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatEnds.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Ends'**
|
|
|
|
|
|
String get repeatEnds;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatEndsNever.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'Never'**
|
|
|
|
|
|
String get repeatEndsNever;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatEndsOn.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'On a day'**
|
|
|
|
|
|
String get repeatEndsOn;
|
|
|
|
|
|
|
|
|
|
|
|
/// No description provided for @repeatEndsAfter.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// In en, this message translates to:
|
|
|
|
|
|
/// **'{count, plural, =1{After once} other{After {count} times}}'**
|
|
|
|
|
|
String repeatEndsAfter(int count);
|
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
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class _AppLocalizationsDelegate
|
|
|
|
|
|
extends LocalizationsDelegate<AppLocalizations> {
|
|
|
|
|
|
const _AppLocalizationsDelegate();
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
Future<AppLocalizations> load(Locale locale) {
|
|
|
|
|
|
return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
bool isSupported(Locale locale) =>
|
|
|
|
|
|
<String>['de', 'en'].contains(locale.languageCode);
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
bool shouldReload(_AppLocalizationsDelegate old) => false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AppLocalizations lookupAppLocalizations(Locale locale) {
|
|
|
|
|
|
// Lookup logic when language+country codes are specified.
|
|
|
|
|
|
switch (locale.languageCode) {
|
|
|
|
|
|
case 'en':
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (locale.countryCode) {
|
|
|
|
|
|
case 'GB':
|
|
|
|
|
|
return AppLocalizationsEnGb();
|
|
|
|
|
|
case 'US':
|
|
|
|
|
|
return AppLocalizationsEnUs();
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Lookup logic when only language code is specified.
|
|
|
|
|
|
switch (locale.languageCode) {
|
|
|
|
|
|
case 'de':
|
|
|
|
|
|
return AppLocalizationsDe();
|
|
|
|
|
|
case 'en':
|
|
|
|
|
|
return AppLocalizationsEn();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
throw FlutterError(
|
|
|
|
|
|
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
|
|
|
|
|
|
'an issue with the localizations generation tool. Please file an issue '
|
|
|
|
|
|
'on GitHub with a reproducible sample app and the gen-l10n configuration '
|
|
|
|
|
|
'that was used.',
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|