dorfteich/apps/web/src/editor/document-extensions.ts
Claude Fable 5 e164370691 #154: Aufgabenübersicht als Kern-Block (Seite + Unterseiten)
Neuer Block-Atom task_overview (Markdown-Fence dorfteich-tasks,
HTML-Placeholder). Shared extractTaskRows liest Task-Zeilen mit Text,
Mentions (#150) und Start-/Zieldaten (#152); TasksService sammelt zur
Lesezeit den Teilbaum (rekursiv via collectSubtreeIds, canAccessPage-
Filter je Quellseite) aus Basis-State + page_updates-Log — KEINE
abgeleitete Tabelle nötig (Teilbäume sind klein, kein Drift). Neuer
auth-Endpoint GET /read/:pond/:slug/tasks; die öffentliche Ansicht
expandiert den Placeholder serverseitig zur statischen Tabelle
(Instanz-Sprache). NodeView mit Live-Tabelle und Rückschreib-Checkboxen
(optimistisch, Override bis der debounced Collab-Persist nachzieht);
Einfügen über die Block-Auswahl (eingebauter Eintrag). Unit- + DB-Tests,
neuer CI-Pack tasks.spec (voller Loop inkl. Rückschreiben end-to-end),
User-Guide-Doku en+de.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155v2aT8AG1kZDQEZiCLBWC
2026-07-20 01:20:30 +02:00

67 lines
1.6 KiB
TypeScript

import type { AnyExtension } from '@tiptap/core';
import { MarkdownClipboard } from './markdown-clipboard';
import { Bold, CodeMark, Italic, LinkMark, Strikethrough } from './marks';
import { Image } from './nodes/image';
import { BulletList, ListItem, OrderedList, TaskList } from './nodes/lists';
import { PluginBlock } from './nodes/plugin-block';
import { Table, TableCell, TableHeader, TableRow } from './nodes/table';
import { TaskItem } from './nodes/task-item';
import { DateMarker } from './nodes/date-marker';
import { TaskOverview } from './nodes/task-overview';
import { TaskItemIds } from './task-item-ids';
import { Mention } from './nodes/mention';
import { Transclusion } from './nodes/transclusion';
import { Wikilink } from './nodes/wikilink';
import {
Blockquote,
CodeBlock,
Doc,
HardBreak,
Heading,
HorizontalRule,
Paragraph,
Section,
Text,
} from './nodes/text-basics';
/**
* The full node/mark set for `editorSchema` (packages/shared, issue #24),
* minus `Collaboration` — that extension needs a per-page `Y.Doc` and is
* added by the caller (`PageEditorPage`, issue #25).
*/
export const documentExtensions: AnyExtension[] = [
Doc,
Text,
Paragraph,
Heading,
Blockquote,
Section,
CodeBlock,
HorizontalRule,
BulletList,
OrderedList,
ListItem,
TaskList,
TaskItem,
HardBreak,
Image,
PluginBlock,
Wikilink,
Mention,
DateMarker,
TaskOverview,
TaskItemIds,
Transclusion,
Table,
TableRow,
TableCell,
TableHeader,
Bold,
Italic,
CodeMark,
Strikethrough,
LinkMark,
MarkdownClipboard,
];