diff --git a/CHANGELOG.md b/CHANGELOG.md index 34e19b759..ada39bf87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes are documented here. Format loosely follows [Keep a Changelo > Development identity: `v3.2.1-dev.1`. Not a stable release. ### Added +- **Read-only task checklists in the Semantic Passport.** Architecture, Workflow, Sequence, Dataflow and Lifecycle nodes may carry an optional `task_checklist` of up to 12 tasks, each `implemented`, `needs-review` or `pending` with optional criteria. Statuses are the author's claim: task sources are verified like node sources, which shows the cited lines exist at the pinned revision but not that a task is done, and an implemented task must cite one. The Passport shows one counted line that expands to the tasks; tasks remain outside canonical SVG and visual exports. - **Authored node explanations in the Semantic Passport.** Architecture, Workflow, Sequence, Dataflow and Lifecycle nodes may carry optional plain-text explanations up to1200 characters. Explain opens a viewport-bounded reading face with scrollable prose and a reachable Back action; Escape restores the Passport. Prose remains outside canonical SVG and visual exports, and existing diagram geometry is preserved. - **Cross-diagram navigation.** Nodes may list sibling `.html` targets via `drilldowns` or a one-entry `href` shorthand. One child uses a native SVG link and visible mark (click follows, Alt-click focuses). Several children keep click-to-focus, with Passport listing every target and Ctrl/double-click opening the first. Child pages can author `meta.parentHref` for header Back; the Viewer also accepts `?from=`. diff --git a/archify.zip b/archify.zip index 7dae2f715..21a98eb50 100644 Binary files a/archify.zip and b/archify.zip differ diff --git a/archify/SKILL.md b/archify/SKILL.md index 0175a177c..d28808a67 100644 --- a/archify/SKILL.md +++ b/archify/SKILL.md @@ -107,6 +107,8 @@ When reporting verification details, distinguish artifact checks, browser eviden Architecture, Workflow, Sequence, Dataflow and Lifecycle nodes may carry optional plain-text `explanation` (1–1200 characters). The focused Semantic Passport offers Explain; prose stays outside canonical SVG and visual exports. Omit the field when the existing label, sublabel and sources are sufficient. +The same nodes may carry an optional `task_checklist` (1–12 tasks with `title`, `status` and optional `criteria` and `sources`) when the user wants implementation progress on the diagram; the focused Semantic Passport lists it read-only, outside canonical SVG and visual exports. Mark a task `implemented` only when its cited code satisfies the criteria, `needs-review` for partial or unverified work, and `pending` otherwise. Implemented tasks cite at least one source and pending tasks none; task sources are verified like node sources (`meta.repository` and `--repo-root`). Unlike an Explainer task list of reader to-dos, it records the author's claim: verification only shows that each cited file and line exists at the pinned revision, not that the task is implemented. + Live motion is enabled by default for every rendered diagram; omit `meta.animation`. The Viewer’s Live/Still button controls playback. ### Cross-diagram navigation diff --git a/archify/assets/template.html b/archify/assets/template.html index ffa98b3dc..a49bff945 100644 --- a/archify/assets/template.html +++ b/archify/assets/template.html @@ -2078,6 +2078,55 @@ color: var(--text-faint); font-size: 0.5625rem; } + /* Authored task checklist: read-only, collapsed to one counted line. */ + .semantic-passport-task-checklist { + margin-top: 0.52rem; + padding-top: 0.48rem; + border-top: 1px solid color-mix(in srgb, var(--toolbar-border) 76%, transparent); + } + .semantic-passport-task-checklist > summary { cursor: pointer; } + .semantic-passport-task-checklist-count { + color: var(--text-muted); + font-size: 0.5625rem; + } + .semantic-passport-task-checklist-tasks { + display: grid; + gap: 0.32rem; + max-height: min(16rem, 40vh); + margin: 0.45rem 0 0; + padding: 0.15rem; + overflow: auto; + overscroll-behavior: contain; + scrollbar-width: thin; + scrollbar-color: var(--frontend-stroke) transparent; + list-style: none; + } + .semantic-passport-task-checklist-task { + display: grid; + grid-template-columns: 0.9rem minmax(0, 1fr); + gap: 0.12rem 0.3rem; + } + .semantic-passport-task-checklist-mark { + color: var(--text-faint); + font-size: 0.625rem; + font-weight: 800; + text-align: center; + } + .semantic-passport-task-checklist-task[data-status="implemented"] .semantic-passport-task-checklist-mark { color: var(--frontend-stroke); } + .semantic-passport-task-checklist-task[data-status="needs-review"] .semantic-passport-task-checklist-mark { color: var(--text-muted); } + .semantic-passport-task-checklist-task > strong { + color: var(--text-muted); + font-size: 0.6875rem; + overflow-wrap: anywhere; + } + .semantic-passport-task-checklist-task p, + .semantic-passport-task-checklist-task .semantic-passport-source { grid-column: 2; } + .semantic-passport-task-checklist-task p { + margin: 0; + color: var(--text-faint); + font-size: 0.5625rem; + overflow-wrap: anywhere; + } .semantic-passport-reach { display: grid; gap: 0.28rem; @@ -2086,7 +2135,8 @@ border-top: 1px solid color-mix(in srgb, var(--toolbar-border) 76%, transparent); } .semantic-passport-reach[hidden] { display: none; } - .semantic-passport-reach-label { + .semantic-passport-reach-label, + .semantic-passport-task-checklist-label { color: var(--text-faint); font-size: 0.5rem; font-weight: 800; @@ -2154,8 +2204,10 @@ scrollbar-width: thin; scrollbar-color: var(--frontend-stroke) transparent; } - .relationship-lens-list::-webkit-scrollbar { width: 4px; } - .relationship-lens-list::-webkit-scrollbar-thumb { + .relationship-lens-list::-webkit-scrollbar, + .semantic-passport-task-checklist-tasks::-webkit-scrollbar { width: 4px; } + .relationship-lens-list::-webkit-scrollbar-thumb, + .semantic-passport-task-checklist-tasks::-webkit-scrollbar-thumb { border-radius: 999px; background: color-mix(in srgb, var(--frontend-stroke) 68%, transparent); } @@ -2657,8 +2709,9 @@ as are dark themes and presets that already pass. Zero counts stay faint on purpose, so they are excluded from the darker rule. Route-target finders keep their --security-stroke status color, so they are excluded - too. */ + too. Task checklist done marks are the same kind of text. */ html[data-theme="light"] .semantic-passport-meta [data-passport="kind"], + html[data-theme="light"] .semantic-passport-task-checklist-task[data-status="implemented"] .semantic-passport-task-checklist-mark, html[data-theme="light"] .node-finder:not([data-context="route-target"]) .node-finder-result em:not([data-zero]) { color: var(--reader-accent, var(--frontend-stroke)); } @@ -5405,6 +5458,7 @@

[PROJECT NAME] Architecture

+ @@ -5642,6 +5696,10 @@

[PROJECT NAME] Architecture

{{i18n:viewer.passport.drilldowns.hint}} +