From d288606827af86f76a3a5a3b5cea072d69b4b3da Mon Sep 17 00:00:00 2001 From: Kristian Wind Date: Mon, 17 Aug 2026 10:39:56 +0200 Subject: [PATCH] feat(web): open a task MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TaskRow has had an onedit prop that nothing passed. There was no way to see a task's description, sub-tasks, comments, files or reminders, all of which the API has supported from the start. A drawer rather than a page, so the list you came from stays behind it and ticking a sub-task off and closing lands you where you were rather than at the top of a re-fetched list. Mounted in the root layout and driven by an id in the store, so a task opens the same way from Today, a project, a label or a saved filter — and so an edit arriving over the socket reaches the drawer without a second source of truth to keep in step. Text fields save on blur. A PATCH per keystroke is forty requests for one sentence, and the last to arrive is not necessarily the last one sent. The navigation shortcuts are suppressed while it is open: with a task in front of you, "t" means the letter t. Co-Authored-By: Claude Opus 5 --- web/src/lib/components/TaskDetail.svelte | 765 +++++++++++++++++++++++ web/src/lib/components/TaskRow.svelte | 4 +- web/src/routes/+layout.svelte | 10 + 3 files changed, 778 insertions(+), 1 deletion(-) create mode 100644 web/src/lib/components/TaskDetail.svelte diff --git a/web/src/lib/components/TaskDetail.svelte b/web/src/lib/components/TaskDetail.svelte new file mode 100644 index 0000000..d929ce6 --- /dev/null +++ b/web/src/lib/components/TaskDetail.svelte @@ -0,0 +1,765 @@ + + + + + + + + + + diff --git a/web/src/lib/components/TaskRow.svelte b/web/src/lib/components/TaskRow.svelte index 7031fb3..4b71f3f 100644 --- a/web/src/lib/components/TaskRow.svelte +++ b/web/src/lib/components/TaskRow.svelte @@ -72,7 +72,9 @@ -