The filesystem is the database: GET reads the tree through the same module the index generator now imports, PATCH splices frontmatter (status, priority, due, order) and never touches a body byte, and every write regenerates TODO.md. Columns open/doing/blocked/done, native drag between them, selection and theme filter in the URL. Registry entry 'todos' (kind admin, 22 entries, docs:check green), isSuperAdmin double-gate on the router. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
13 lines
634 B
TypeScript
13 lines
634 B
TypeScript
import type { LayoutNode } from 'officerdev';
|
|
import { WorkspaceView } from 'officerdev';
|
|
import { useDashboardState } from 'state/useDashboardState';
|
|
import { defaultLayout } from './defaultLayout';
|
|
|
|
// /todos — the Kanban board over the repo's own `todo/` tree (one file per item, todo/README.md).
|
|
// Selection and the theme filter are `?selected=` / `?theme=`, read by the panel itself.
|
|
export const TodosScreen = () => {
|
|
const workspace = useDashboardState<LayoutNode>('screens/todos', defaultLayout);
|
|
|
|
return <WorkspaceView workspace={workspace} locked appTypes={{ allowed: ['todo-board'], fallback: 'todo-board' }} />;
|
|
};
|