Remove TODO.txt integration

This commit is contained in:
2026-07-23 17:38:13 +02:00
parent ddfd29ea0e
commit 49c6240416
10 changed files with 31 additions and 613 deletions
+5 -71
View File
@@ -466,9 +466,6 @@ body.edit-mode footer { max-width: none; }
.fab { position: fixed; bottom: var(--space-4); right: var(--space-4); z-index: 50; }
button.fab { display: none; }
.fab-rail { bottom: calc(var(--space-4) + 3rem + var(--space-2)); }
/* Todo FAB: third slot, above the tree and right-rail FABs. Only created when
todo.txt exists (todo-rail.js). */
.fab-todo { bottom: calc(var(--space-4) + 2 * (3rem + var(--space-2))); }
/* === Companion status === */
.companion-status { margin-left: auto; }
@@ -677,11 +674,6 @@ aside.sidebar:empty { display: none; }
padding: 0;
overflow: visible;
}
/* The todo widget fills the overlay: drop the rail divider and lift the
internal height cap so the whole file is editable on mobile. */
.overlay-body .todo-rail { border-bottom: none; padding-bottom: 0; }
.overlay-body .todo-rail .todo-rail-view,
.overlay-body .todo-rail .cm-editor { max-height: none; }
/* Right rail keeps its column spacing (TOC above widgets) inside the overlay;
the base .sidebar already sets flex-direction + gap. */
.overlay-body .sidebar { display: flex; }
@@ -733,9 +725,9 @@ aside.sidebar:empty { display: none; }
/* === Tree sidebar (persistent left navigation rail) ===
Reuses the .tree-row / .tree-children / .tree-name / .tree-chevron modules.
Desktop: a full-height flex column in the app-shell (composes with .col)
holding the todo widget pinned on top and the tree's own scroll region
below. Mobile: not laid out inline — its content is surfaced through the
Overlay via the stacked FABs (see responsive). */
holding the tree's own scroll region. Mobile: not laid out inline — its
content is surfaced through the Overlay via the stacked FABs (see
responsive). */
/* No right padding on the aside: the scrolling children below reach the
border-right so their scrollbars sit flush against the divider line (they
pad their own content off the scrollbar instead). */
@@ -746,9 +738,8 @@ aside.sidebar:empty { display: none; }
padding: var(--space-4) 0 var(--space-4) var(--space-4);
border-right: var(--border-dashed);
}
/* The tree's scroll region: only the tree overflows, the todo widget above
keeps its own internal scroll. Also the node the tree FAB moves into the
Overlay, so font sizing lives here rather than on the aside. */
/* The tree's scroll region: the tree overflows here. Also the node the tree FAB
moves into the Overlay, so font sizing lives here rather than on the aside. */
.tree-scroll {
flex: 1 1 auto;
min-height: 0;
@@ -760,63 +751,6 @@ aside.sidebar:empty { display: none; }
user-select: none;
}
/* === Todo rail (root todo.txt widget) ===
Pinned above the folder tree (todo-rail.js). Hidden via the [hidden]
attribute until GET /_todo confirms the file exists. A long file scrolls
internally rather than pushing the tree off screen; the height cap is
lifted inside the Overlay. */
.todo-rail {
flex-shrink: 0;
padding-bottom: var(--space-3);
border-bottom: var(--border-dashed);
}
.todo-rail-head {
font-size: var(--font-xs);
margin-bottom: var(--space-2);
padding-right: var(--space-2);
}
/* Compact action toolbar in the widget header. Buttons are the app's standard
bracketed .btn/.btn-tool; the row just holds them together and lets them wrap
in the narrow rail rather than overflow. */
.todo-toolbar { flex-wrap: wrap; }
/* Roomier tap targets when the widget is surfaced full-screen on mobile. */
.overlay-body .todo-toolbar .btn {
font-size: var(--font-sm);
padding: var(--space-1) var(--space-2);
}
.todo-unsaved { color: var(--primary-hover); font-size: var(--font-xs); }
/* The scrolling children run edge-to-edge (the aside has no right padding) so
their scrollbars are flush with the divider; padding-right keeps their text
clear of the scrollbar. */
.todo-rail-view {
font-family: "Iosevka Slab", monospace;
font-size: var(--font-xs);
line-height: 1.5;
white-space: pre-wrap;
word-break: break-word;
max-height: 40vh;
overflow-y: auto;
padding-right: var(--space-2);
cursor: text;
}
.todo-rail .cm-editor { max-height: 40vh; }
.todo-rail .cm-content { padding-right: var(--space-2); }
/* Hanging indent per task. Each todo (one logical line) starts flush-left and
its wrapped continuation lines are indented, so a new task is distinguishable
from a wrapped line even when it has no leading priority/date/x marker. The
indent is character-relative (ch) because it aligns to the monospace text,
not to the layout's spacing scale. */
.todo-rail .cm-line {
padding-left: 2ch;
text-indent: -2ch;
}
.todo-rail .todo-fallback {
width: 100%;
min-height: 10rem;
font-family: "Iosevka Slab", monospace;
font-size: var(--font-xs);
}
/* === Movie info box === */
.movie-info { margin: var(--space-3) 0; }
.movie-info::after { content: ""; display: block; clear: both; }