feat(todo): comments on a task (ADR 0033, D36)

Plain text with links, written, edited and deleted in the task's sheet,
counted on its row. They are sealed in `task_comment`, the task they belong
to with them, and go with their task.

Whats-New: Comments: write on a task, edit or delete what you wrote, and open its links.
Whats-New-De: Kommentare: Schreibe zu einer Aufgabe, bearbeite oder lösche es und öffne Links darin.

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-06 19:53:28 +01:00
commit 016b74ff74
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 20953 additions and 6 deletions

View file

@ -55,6 +55,15 @@
"filterMatches": "{count, plural, =1{1 Aufgabe passt} other{{count} Aufgaben passen}}",
"filterNotRead": "Nicht verstanden bei „{near}“",
"filterNotReadEnd": "Die Abfrage endet zu früh",
"commentsTitle": "Kommentare",
"commentAdd": "Kommentar schreiben",
"commentSend": "Kommentar senden",
"commentMenu": "Kommentarmenü",
"commentEdit": "Kommentar bearbeiten",
"commentCopy": "Text kopieren",
"commentDelete": "Kommentar löschen",
"commentDeleteTitle": "Kommentar löschen?",
"commentEdited": "{when}, bearbeitet",
"labelsTitle": "Labels",
"labelsNone": "Noch keine Labels.",
"labelsNoneSet": "Keine Labels",

View file

@ -115,6 +115,23 @@
"@filterNotReadEnd": {
"description": "The filter editor when its query stops before it is complete."
},
"commentsTitle": "Comments",
"commentAdd": "Add a comment",
"commentSend": "Send comment",
"commentMenu": "Comment menu",
"commentEdit": "Edit comment",
"commentCopy": "Copy text",
"commentDelete": "Delete comment",
"commentDeleteTitle": "Delete the comment?",
"commentEdited": "{when}, edited",
"@commentEdited": {
"description": "When a comment was written, once it was changed.",
"placeholders": {
"when": {
"type": "String"
}
}
},
"labelsTitle": "Labels",
"labelsNone": "No labels yet.",
"labelsNoneSet": "No labels",

View file

@ -430,6 +430,60 @@ abstract class AppLocalizations {
/// **'This query ends too soon'**
String get filterNotReadEnd;
/// No description provided for @commentsTitle.
///
/// In en, this message translates to:
/// **'Comments'**
String get commentsTitle;
/// No description provided for @commentAdd.
///
/// In en, this message translates to:
/// **'Add a comment'**
String get commentAdd;
/// No description provided for @commentSend.
///
/// In en, this message translates to:
/// **'Send comment'**
String get commentSend;
/// No description provided for @commentMenu.
///
/// In en, this message translates to:
/// **'Comment menu'**
String get commentMenu;
/// No description provided for @commentEdit.
///
/// In en, this message translates to:
/// **'Edit comment'**
String get commentEdit;
/// No description provided for @commentCopy.
///
/// In en, this message translates to:
/// **'Copy text'**
String get commentCopy;
/// No description provided for @commentDelete.
///
/// In en, this message translates to:
/// **'Delete comment'**
String get commentDelete;
/// No description provided for @commentDeleteTitle.
///
/// In en, this message translates to:
/// **'Delete the comment?'**
String get commentDeleteTitle;
/// When a comment was written, once it was changed.
///
/// In en, this message translates to:
/// **'{when}, edited'**
String commentEdited(String when);
/// No description provided for @labelsTitle.
///
/// In en, this message translates to:

View file

@ -203,6 +203,35 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get filterNotReadEnd => 'Die Abfrage endet zu früh';
@override
String get commentsTitle => 'Kommentare';
@override
String get commentAdd => 'Kommentar schreiben';
@override
String get commentSend => 'Kommentar senden';
@override
String get commentMenu => 'Kommentarmenü';
@override
String get commentEdit => 'Kommentar bearbeiten';
@override
String get commentCopy => 'Text kopieren';
@override
String get commentDelete => 'Kommentar löschen';
@override
String get commentDeleteTitle => 'Kommentar löschen?';
@override
String commentEdited(String when) {
return '$when, bearbeitet';
}
@override
String get labelsTitle => 'Labels';

View file

@ -203,6 +203,35 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get filterNotReadEnd => 'This query ends too soon';
@override
String get commentsTitle => 'Comments';
@override
String get commentAdd => 'Add a comment';
@override
String get commentSend => 'Send comment';
@override
String get commentMenu => 'Comment menu';
@override
String get commentEdit => 'Edit comment';
@override
String get commentCopy => 'Copy text';
@override
String get commentDelete => 'Delete comment';
@override
String get commentDeleteTitle => 'Delete the comment?';
@override
String commentEdited(String when) {
return '$when, edited';
}
@override
String get labelsTitle => 'Labels';