feat(todo): a project linked to a calendar shows its events beside the tasks (ADR 0033, D39)

A project's editor takes a calendar's address (https:// or webcal://,
refused otherwise), and its events show read-only, marked in the
project's colour: in Today's list and Upcoming's agenda above each day's
tasks, as blocks in the hour grids (Today's Calendar, Upcoming's 3-day)
sharing the lanes with timed tasks and all-day ones under All day, in
the project's Calendar (its agenda and month, its own events alone), and
in saved filters of days. A tap shows what an event is: when, where,
and whose calendar. The grid's lane layout is generic for it
(`layOutItems`); a task's row's box is shared (`rowBox`).

Whats-New: Link a calendar to a project in its settings: its events show beside your tasks in Today, Upcoming and the project.
Whats-New-De: Verknüpfe einen Kalender in den Einstellungen eines Projekts: Seine Termine erscheinen neben deinen Aufgaben in Heute, Demnächst und im Projekt.

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 12:37:18 +01:00
commit 85a022af98
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -2529,6 +2529,36 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'{count, plural, =1{1 completed task deleted} other{{count} completed tasks deleted}}'**
String tasksCompletedDeleted(int count);
/// The project's editor: the calendar linked to it, whose events show beside its tasks (ADR 0033, D39).
///
/// In en, this message translates to:
/// **'Linked calendar'**
String get projectCalendarTitle;
/// The project's editor: the field for the calendar's feed address (ADR 0033, D39).
///
/// In en, this message translates to:
/// **'Calendar address (iCal)'**
String get projectCalendarAddress;
/// The project's editor, below the calendar's address (ADR 0033, D39).
///
/// In en, this message translates to:
/// **'Its events show beside this project\'s tasks, read-only. Each of your devices fetches it itself.'**
String get projectCalendarHelp;
/// The project's editor: an address no feed can be fetched from (ADR 0033, D39).
///
/// In en, this message translates to:
/// **'An address starting with https:// or webcal://'**
String get projectCalendarInvalid;
/// An event's details: which project's calendar it comes from (ADR 0033, D39).
///
/// In en, this message translates to:
/// **'From {project}\'s calendar'**
String eventFromCalendar(String project);
}
class _AppLocalizationsDelegate