projectkeeper 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -0
- package/LICENSE +21 -0
- package/README.md +283 -2
- package/README.zh-CN.md +285 -0
- package/THIRD_PARTY_NOTICES.md +53 -0
- package/bin/pk.mjs +6 -0
- package/bin/postinstall.mjs +5 -0
- package/bin/strip-types.mjs +28 -0
- package/package.json +68 -4
- package/patches/README.md +111 -0
- package/patches/pi-ai-0.85.0.ts +122 -0
- package/patches/pi-ai-0.87.1.ts +122 -0
- package/scripts/apply-pi-streaming-patch.ts +86 -0
- package/skills/clerk/coverage/SKILL.md +35 -0
- package/skills/clerk/cross-check/SKILL.md +118 -0
- package/skills/clerk/deepen-dispatch/SKILL.md +69 -0
- package/skills/clerk/lane-follow-up/SKILL.md +94 -0
- package/skills/clerk/lane-plan/SKILL.md +107 -0
- package/skills/clerk/lane-slot/SKILL.md +113 -0
- package/skills/clerk/lane-topic/SKILL.md +116 -0
- package/skills/clerk/orientation/SKILL.md +160 -0
- package/skills/clerk/reconcile/SKILL.md +77 -0
- package/skills/clerk/skeleton-dispatch/SKILL.md +43 -0
- package/skills/clerk/spot-check/SKILL.md +52 -0
- package/skills/clerk/synthesis/SKILL.md +65 -0
- package/skills/table-follow-up/SKILL.md +42 -0
- package/src/cli.ts +319 -0
- package/src/codemap/README.md +13 -0
- package/src/codemap/engines.ts +102 -0
- package/src/codemap/facts.ts +504 -0
- package/src/context/agent-entry.ts +232 -0
- package/src/context/ask.ts +97 -0
- package/src/context/assemble.ts +1058 -0
- package/src/context/code-source.ts +103 -0
- package/src/context/k-briefs.ts +114 -0
- package/src/context/lineage.ts +100 -0
- package/src/context/object-brief.ts +300 -0
- package/src/context/owner-words.ts +191 -0
- package/src/context/pack-fixture.ts +342 -0
- package/src/context/project-rules.ts +160 -0
- package/src/intake/intake.ts +392 -0
- package/src/intake/material-rules.ts +166 -0
- package/src/intake/removal.ts +316 -0
- package/src/intake/skipped.ts +72 -0
- package/src/keeper/adjustment.ts +565 -0
- package/src/keeper/bounds/boundary.ts +509 -0
- package/src/keeper/bounds/command.ts +1665 -0
- package/src/keeper/bounds/paths.ts +164 -0
- package/src/keeper/bounds/reads.ts +718 -0
- package/src/keeper/bounds/shell-write-guard.ts +521 -0
- package/src/keeper/capabilities.ts +136 -0
- package/src/keeper/clerk-steps.ts +151 -0
- package/src/keeper/clerk-tools.ts +1424 -0
- package/src/keeper/conversation.ts +253 -0
- package/src/keeper/evidence.ts +662 -0
- package/src/keeper/fake-provider.ts +132 -0
- package/src/keeper/held.ts +15 -0
- package/src/keeper/history-tools.ts +163 -0
- package/src/keeper/jobs/answering.ts +53 -0
- package/src/keeper/key-check.ts +105 -0
- package/src/keeper/ledger-tools.ts +295 -0
- package/src/keeper/link-check.ts +185 -0
- package/src/keeper/merge.ts +260 -0
- package/src/keeper/note-origin.ts +56 -0
- package/src/keeper/numbers-check.ts +102 -0
- package/src/keeper/open-in-pi.ts +57 -0
- package/src/keeper/organize/absence.ts +266 -0
- package/src/keeper/organize/carried-on.ts +214 -0
- package/src/keeper/organize/clerk-coverage.ts +293 -0
- package/src/keeper/organize/clerk-prompts.ts +132 -0
- package/src/keeper/organize/clerk.ts +1395 -0
- package/src/keeper/organize/coverage-gate.ts +19 -0
- package/src/keeper/organize/coverage-tools.ts +765 -0
- package/src/keeper/organize/entries.ts +153 -0
- package/src/keeper/organize/entry-gate.ts +289 -0
- package/src/keeper/organize/fill-tools.ts +718 -0
- package/src/keeper/organize/follow-up.ts +280 -0
- package/src/keeper/organize/generation-check.ts +504 -0
- package/src/keeper/organize/graph.ts +230 -0
- package/src/keeper/organize/lane-tools.ts +289 -0
- package/src/keeper/organize/looked-tools.ts +54 -0
- package/src/keeper/organize/materials.ts +243 -0
- package/src/keeper/organize/owner-lines.ts +493 -0
- package/src/keeper/organize/place-tools.ts +216 -0
- package/src/keeper/organize/placement-inference.ts +1045 -0
- package/src/keeper/organize/placement-time.ts +320 -0
- package/src/keeper/organize/placing.ts +821 -0
- package/src/keeper/organize/positioning.ts +33 -0
- package/src/keeper/organize/readiness.ts +47 -0
- package/src/keeper/organize/reading.ts +401 -0
- package/src/keeper/organize/round-blocks.ts +65 -0
- package/src/keeper/organize/round-news.ts +164 -0
- package/src/keeper/organize/round-open.ts +586 -0
- package/src/keeper/organize/schedule-state.ts +39 -0
- package/src/keeper/organize/schedule.ts +137 -0
- package/src/keeper/organize/service.ts +409 -0
- package/src/keeper/organize/skills.ts +116 -0
- package/src/keeper/organize/slots.ts +85 -0
- package/src/keeper/organize/stage-gate.ts +175 -0
- package/src/keeper/organize/stage-tools.ts +471 -0
- package/src/keeper/organize/standing-notes.ts +141 -0
- package/src/keeper/organize/table-follow-up.ts +330 -0
- package/src/keeper/organize/takeover-clerk.ts +832 -0
- package/src/keeper/organize/takeover-state.ts +103 -0
- package/src/keeper/organize/takeover.ts +216 -0
- package/src/keeper/organize/update-pending.ts +535 -0
- package/src/keeper/organize/workbench-placement.ts +92 -0
- package/src/keeper/own-keys.ts +114 -0
- package/src/keeper/owner-text.ts +165 -0
- package/src/keeper/project-folder.ts +334 -0
- package/src/keeper/prompts.ts +101 -0
- package/src/keeper/references.ts +177 -0
- package/src/keeper/relook/compose.ts +120 -0
- package/src/keeper/relook/prompts.ts +36 -0
- package/src/keeper/roles.ts +259 -0
- package/src/keeper/round-tools.ts +227 -0
- package/src/keeper/route.ts +148 -0
- package/src/keeper/rules.ts +97 -0
- package/src/keeper/runtime.ts +1858 -0
- package/src/keeper/scope-tools.ts +194 -0
- package/src/keeper/sendback-text.ts +83 -0
- package/src/keeper/step-timing.ts +207 -0
- package/src/keeper/testing/clerk-script.ts +212 -0
- package/src/keeper/testing/streaming-arguments.ts +57 -0
- package/src/keeper/tools.ts +2340 -0
- package/src/keeper/utterance-tools.ts +64 -0
- package/src/keeper/verbatim.ts +397 -0
- package/src/ledger/adapters.ts +186 -0
- package/src/ledger/arrangements.ts +257 -0
- package/src/ledger/blame.ts +58 -0
- package/src/ledger/code-engine-child.ts +69 -0
- package/src/ledger/code-engine.ts +548 -0
- package/src/ledger/code.ts +607 -0
- package/src/ledger/docs.ts +294 -0
- package/src/ledger/git-read.ts +321 -0
- package/src/ledger/index.ts +1850 -0
- package/src/ledger/item-range.ts +16 -0
- package/src/ledger/lines.ts +328 -0
- package/src/ledger/numbering.ts +269 -0
- package/src/ledger/ranges.ts +74 -0
- package/src/ledger/rebuild-worker.ts +15 -0
- package/src/ledger/rebuild.ts +387 -0
- package/src/ledger/repo-scan.ts +181 -0
- package/src/ledger/schema.ts +450 -0
- package/src/ledger/sessions.ts +134 -0
- package/src/ledger/text-scan.ts +466 -0
- package/src/ledger/time.ts +185 -0
- package/src/ledger/ts-symbols.ts +180 -0
- package/src/ledger/views.ts +377 -0
- package/src/mcp/server.ts +127 -0
- package/src/mcp/tools.ts +187 -0
- package/src/model/ids.ts +23 -0
- package/src/model/k-types.ts +912 -0
- package/src/model/time.ts +85 -0
- package/src/model/types.ts +1382 -0
- package/src/model/views-k.ts +707 -0
- package/src/model/vocab.ts +269 -0
- package/src/process/analysis.ts +79 -0
- package/src/process/breakpoint-candidates.ts +383 -0
- package/src/process/breakpoints.ts +746 -0
- package/src/process/claim-check.ts +295 -0
- package/src/process/delivery-links.ts +52 -0
- package/src/process/facts.ts +487 -0
- package/src/process/generations.ts +138 -0
- package/src/process/index.ts +243 -0
- package/src/process/integration.ts +128 -0
- package/src/process/placement.ts +107 -0
- package/src/process/plan.ts +276 -0
- package/src/process/sendbacks.ts +244 -0
- package/src/process/text.ts +185 -0
- package/src/process/units.ts +543 -0
- package/src/process/unnumbered.ts +431 -0
- package/src/process/work.ts +884 -0
- package/src/scope/candidates.ts +86 -0
- package/src/scope/decisions.ts +229 -0
- package/src/scope/discover.ts +741 -0
- package/src/scope/ignore.ts +126 -0
- package/src/scope/ignored-place.ts +93 -0
- package/src/scope/skip.ts +161 -0
- package/src/scope/toolchain.ts +180 -0
- package/src/scope/worktree.ts +187 -0
- package/src/server/api.ts +549 -0
- package/src/server/app.ts +595 -0
- package/src/server/drafts-api.ts +170 -0
- package/src/server/folders-api.ts +243 -0
- package/src/server/graph-view.ts +639 -0
- package/src/server/http.ts +224 -0
- package/src/server/k-agent-api.ts +56 -0
- package/src/server/k-rounds-d99.ts +91 -0
- package/src/server/k-views.ts +405 -0
- package/src/server/keeper-page.ts +446 -0
- package/src/server/keys-api.ts +239 -0
- package/src/server/project-folder-api.ts +104 -0
- package/src/server/vendor.ts +14 -0
- package/src/server/workbench-content.ts +561 -0
- package/src/sources/anchor.ts +129 -0
- package/src/sources/files.ts +267 -0
- package/src/sources/gitobs.ts +41 -0
- package/src/sources/history.ts +231 -0
- package/src/sources/scan-worker.ts +10 -0
- package/src/sources/sessions/locate.ts +292 -0
- package/src/sources/sessions/read.ts +346 -0
- package/src/sources/sessions/scope.ts +42 -0
- package/src/sources/sessions/utterances.ts +223 -0
- package/src/sources/watch.ts +215 -0
- package/src/store/json-file.ts +50 -0
- package/src/store/paths.ts +39 -0
- package/src/store/project-store.ts +295 -0
- package/src/store/versions.ts +172 -0
- package/src/store/workspace.ts +216 -0
- package/src/table/check.ts +333 -0
- package/src/table/follow-up-tools.ts +30 -0
- package/src/table/follow-up.ts +344 -0
- package/src/table/import.ts +610 -0
- package/src/table/project-home.ts +61 -0
- package/src/table/sessions.ts +168 -0
- package/src/table/takeover.ts +483 -0
- package/src/util/git-check.ts +29 -0
- package/src/util/git.ts +411 -0
- package/src/util/own-ts.ts +15 -0
- package/src/util/paths.ts +225 -0
- package/template/FILLING-IN.md +148 -0
- package/template/examples/papertrail.json +747 -0
- package/template/projectkeeper.schema.json +1001 -0
- package/ui/app.js +1135 -0
- package/ui/failures.js +82 -0
- package/ui/flyout.js +120 -0
- package/ui/folder-chooser.js +264 -0
- package/ui/glossary.js +156 -0
- package/ui/graph-fit.js +157 -0
- package/ui/graph-material.js +61 -0
- package/ui/graph-palette.js +109 -0
- package/ui/graph-tools.js +62 -0
- package/ui/graph.js +1712 -0
- package/ui/index.html +31 -0
- package/ui/k/code-view.js +230 -0
- package/ui/k/draft-view.js +93 -0
- package/ui/k/k-views.css +224 -0
- package/ui/k/round-tree.js +450 -0
- package/ui/k/scope-k.js +159 -0
- package/ui/k-data.js +118 -0
- package/ui/k-fold.js +106 -0
- package/ui/k-process.css +302 -0
- package/ui/k-process.js +934 -0
- package/ui/keeper-activity.js +175 -0
- package/ui/keeper-view.js +801 -0
- package/ui/keeper.css +101 -0
- package/ui/key-order.js +62 -0
- package/ui/list-fold.js +67 -0
- package/ui/markdown.d.ts +21 -0
- package/ui/markdown.js +472 -0
- package/ui/placement.d.ts +92 -0
- package/ui/placement.js +445 -0
- package/ui/popover-place.d.ts +16 -0
- package/ui/popover-place.js +89 -0
- package/ui/popover.js +198 -0
- package/ui/project-folder.js +37 -0
- package/ui/shell-state.js +40 -0
- package/ui/strip-rows.js +171 -0
- package/ui/styles.css +492 -0
- package/ui/theme-pick.js +36 -0
- package/ui/theme.js +74 -0
- package/ui/themes/LICENSE.md +13 -0
- package/ui/themes/README.md +44 -0
- package/ui/themes/TOKENS.md +291 -0
- package/ui/themes/a1/board.css +1557 -0
- package/ui/themes/a1/pk.css +392 -0
- package/ui/themes/b1/board.css +1163 -0
- package/ui/themes/b1/pk.css +218 -0
- package/ui/themes/d2/board.css +518 -0
- package/ui/themes/d2/pk.css +243 -0
- package/ui/themes/guard.css +73 -0
- package/ui/themes/i1/board.css +776 -0
- package/ui/themes/i1/pk.css +223 -0
- package/ui/themes/manifest.json +13 -0
- package/ui/views.js +2796 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/* ───────────────────────────────────────────────────────────────────
|
|
2
|
+
* d2 · Warm Clay — ProjectKeeper's layer (Spec §6.16; CKC-09 AC-41; the UI line's V3)
|
|
3
|
+
*
|
|
4
|
+
* board.css beside this file is the owner's, frozen: not a byte of it changes. This file is loaded after it and gives
|
|
5
|
+
* every `--pk-*` token of ui/styles.css (the contract in ../TOKENS.md) a value the board already has — its tokens where
|
|
6
|
+
* they exist, its own literals where they do not — and then the parts the board never had (a segmented control, a
|
|
7
|
+
* conversation, a graph). No colour, shadow or radius that is not in board.css. It is the one light theme: board.css
|
|
8
|
+
* writes its colours light-dark() and pins `color-scheme: light` on :root, so the light values are in force here and
|
|
9
|
+
* the native controls (selects, checkboxes, scrollbars) follow.
|
|
10
|
+
*
|
|
11
|
+
* The master (WorkflowKeeper's D87): everything is made after d2's card — the full clay brick: a --surface face, a
|
|
12
|
+
* --line frame, the --r-card radius and --elev-card (a top light, a stepped side wall, a warm drop). The popover, the
|
|
13
|
+
* docked and floating Keeper, the dialog, a note card, the open row of the bottom strip and the graph tooltip are
|
|
14
|
+
* that card. Section heads and strip column heads are the board's column plaque (.rootHead: a raised shelf, --raise
|
|
15
|
+
* with --elev-raise). Controls are its raised tiles; the one that is on is solid clay pressed in (.dispTab.on). The
|
|
16
|
+
* radius ladder is the hierarchy: 18 panel > 14 well > 11 card > 8 tile > 5 micro; the four layers one reads are
|
|
17
|
+
* page (--bg) < sunken tray (--well) < card (--surface) < raised part (--raise).
|
|
18
|
+
*
|
|
19
|
+
* Two calls this light theme asked for (measured, and said in the report):
|
|
20
|
+
* - The terracotta --accent (#b46a46) reads at most 3.97:1 on the lightest face, so as a text colour it cannot reach
|
|
21
|
+
* 4.5 — the board itself uses it as words only that way (its tray titles). Where accent-coloured words carry
|
|
22
|
+
* meaning (active states, the amber decision tags) this layer writes them in the board's own deep clay #8a5a3d
|
|
23
|
+
* (the dark value of its --accent-line, 4.5–5.6:1 on the faces); the terracotta itself stays on edges and faces.
|
|
24
|
+
* - --amber (#9a6a10) reads 4.36 on the card, so it is only ever an edge, a fill or a mark, never body text.
|
|
25
|
+
* ─────────────────────────────────────────────────────────────────── */
|
|
26
|
+
|
|
27
|
+
:root {
|
|
28
|
+
/* ── Surfaces and lines: the paper ladder — page < sunken well < card < raised part; the bands are sunken trays ── */
|
|
29
|
+
--pk-ground: var(--bg);
|
|
30
|
+
--pk-rail: var(--well);
|
|
31
|
+
--pk-surface: var(--surface);
|
|
32
|
+
--pk-raised: var(--raise);
|
|
33
|
+
--pk-line: var(--line);
|
|
34
|
+
--pk-line-soft: var(--line-soft);
|
|
35
|
+
--pk-line-strong: var(--accent-line);
|
|
36
|
+
--pk-scrim: rgba(110,80,60,.33); /* the warm dim of the board's own press shadow */
|
|
37
|
+
|
|
38
|
+
/* ── Text, four steps: readings and titles, body, secondary, faint ──
|
|
39
|
+
The board's fg3/meta do not reach 4.5:1 on the well and the page, so the faint step is the board's deepened chip
|
|
40
|
+
ink --neutral-seg-fg (4.6 on the well, 6.0 on the page); muted and faint stand a size and a case apart instead
|
|
41
|
+
of a shade apart. */
|
|
42
|
+
--pk-text-strong: var(--fg);
|
|
43
|
+
--pk-text: var(--fg);
|
|
44
|
+
--pk-text-muted: var(--fg2);
|
|
45
|
+
--pk-text-faint: var(--neutral-seg-fg);
|
|
46
|
+
|
|
47
|
+
/* ── The signal: clay terracotta on edges and lit faces; the primary button presses deeper into the clay ── */
|
|
48
|
+
--pk-accent: var(--accent);
|
|
49
|
+
--pk-accent-bg: var(--amber-bg);
|
|
50
|
+
--pk-accent-hi: #8a5a3d;
|
|
51
|
+
--pk-on-accent: var(--raise);
|
|
52
|
+
--pk-accent-soft: var(--surface); /* a selected row lifts a paper face out of the tray */
|
|
53
|
+
--pk-flash: var(--amber-line);
|
|
54
|
+
--pk-star: var(--amber);
|
|
55
|
+
|
|
56
|
+
/* ── The other families ── */
|
|
57
|
+
--pk-green: var(--green); --pk-green-bg: var(--green-bg); --pk-green-ln: var(--green-line);
|
|
58
|
+
--pk-blue: var(--link); --pk-blue-bg: var(--blue-bg);
|
|
59
|
+
--pk-red: var(--red); --pk-red-bg: var(--red-bg); --pk-red-ln: var(--red);
|
|
60
|
+
--pk-purple: var(--plum); --pk-purple-bg: var(--plum-bg);
|
|
61
|
+
|
|
62
|
+
/* ── Selection: the segment that is on is solid clay with paper words, pressed in (the board's .dispTab.on) ── */
|
|
63
|
+
--pk-sel-bg: var(--neutral-seg);
|
|
64
|
+
--pk-control-on: var(--accent);
|
|
65
|
+
--pk-control-on-text: var(--raise);
|
|
66
|
+
--pk-control-on-shadow: var(--elev-press);
|
|
67
|
+
|
|
68
|
+
/* ── Fonts: the board's own (its body keeps the board's tabular numbers) ── */
|
|
69
|
+
--pk-font-body: 12.5px/1.55 "Segoe UI","Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;
|
|
70
|
+
--pk-font-ui: "Segoe UI","Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;
|
|
71
|
+
--pk-font-mono: ui-monospace, Consolas, monospace;
|
|
72
|
+
--pk-font-display: "Segoe UI","Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;
|
|
73
|
+
|
|
74
|
+
/* ── Radii: the ladder is the hierarchy — 18 panel > 14 well > 11 card > 8 tile > 5 micro; pills are 999 ── */
|
|
75
|
+
--pk-radius: var(--r-card);
|
|
76
|
+
--pk-radius-sm: var(--r-tile);
|
|
77
|
+
--pk-radius-xs: var(--r-micro);
|
|
78
|
+
--pk-radius-panel: var(--r-panel);
|
|
79
|
+
--pk-radius-pill: 999px;
|
|
80
|
+
|
|
81
|
+
/* ── Shadows ── */
|
|
82
|
+
--pk-shadow-float: var(--elev-card);
|
|
83
|
+
--pk-shadow-window: var(--elev-panel);
|
|
84
|
+
--pk-shadow-raised: var(--elev-raise);
|
|
85
|
+
|
|
86
|
+
/* ── The card (the master): the full clay brick — paper face, hairline frame, the card radius, the stepped
|
|
87
|
+
side wall and warm drop of --elev-card. The clay is matte: no texture, its light comes from the shadows. ── */
|
|
88
|
+
--pk-card-bg: var(--surface);
|
|
89
|
+
--pk-card-texture: none;
|
|
90
|
+
--pk-card-border: var(--line);
|
|
91
|
+
--pk-card-shadow: var(--elev-card);
|
|
92
|
+
--pk-card-radius: var(--r-card);
|
|
93
|
+
--pk-card-text: var(--fg);
|
|
94
|
+
--pk-card-line: var(--line-soft);
|
|
95
|
+
--pk-card-hover-border: var(--accent-line);
|
|
96
|
+
--pk-card-foot-bg: var(--well); /* the popover's foot: a sunken strip */
|
|
97
|
+
--pk-card-head-bg: var(--raise);
|
|
98
|
+
|
|
99
|
+
/* ── A section is a flat drawer lying on the page (the board's tray); its head is the column plaque — a raised
|
|
100
|
+
shelf on --raise with --elev-raise, like the board's .rootHead ── */
|
|
101
|
+
--pk-section-bg: var(--surface);
|
|
102
|
+
--pk-section-border: var(--line);
|
|
103
|
+
--pk-section-radius: var(--r-panel);
|
|
104
|
+
--pk-section-shadow: var(--elev-drawer);
|
|
105
|
+
--pk-head-bg: var(--raise);
|
|
106
|
+
--pk-head-texture: none;
|
|
107
|
+
--pk-head-border: var(--line);
|
|
108
|
+
--pk-head-shadow: var(--elev-raise);
|
|
109
|
+
--pk-head-text: var(--fg);
|
|
110
|
+
|
|
111
|
+
/* ── Controls: the raised tiles of the board's toolbar (raise, hairline, --elev-raise, the tile radius) ── */
|
|
112
|
+
--pk-control-bg: var(--raise);
|
|
113
|
+
--pk-control-texture: none;
|
|
114
|
+
--pk-control-border: var(--line);
|
|
115
|
+
--pk-control-shadow: var(--elev-raise);
|
|
116
|
+
--pk-control-radius: var(--r-tile);
|
|
117
|
+
--pk-control-hover-bg: var(--raise);
|
|
118
|
+
--pk-control-hover-border: var(--accent-line);
|
|
119
|
+
|
|
120
|
+
/* ── The sunken well: inputs, the composer, quoted sources, code — the board's groove ── */
|
|
121
|
+
--pk-well-bg: var(--well);
|
|
122
|
+
--pk-well-border: var(--line);
|
|
123
|
+
--pk-well-shadow: var(--elev-groove);
|
|
124
|
+
--pk-code-bg: var(--well);
|
|
125
|
+
|
|
126
|
+
/* ── The conversation: the owner's words on the amber-tinted face (WorkflowKeeper's D87) ── */
|
|
127
|
+
--pk-msg-user-bg: var(--amber-bg);
|
|
128
|
+
--pk-msg-user-border: var(--amber-line);
|
|
129
|
+
|
|
130
|
+
/* ── The graph (Spec §6.3; D53): the light values of theme-palette-numbers.md — Plan / Work item ΔE 49.8 normal,
|
|
131
|
+
30.5 protan, 23.8 deutan (factory floor 25.2 / 21.1), L* spread 2.5. The words on an object are the body
|
|
132
|
+
colours; a kind's colour stays on its border and top band. --amber reads 4.36 on the card: edge and band only.
|
|
133
|
+
Every value here is the board's own light literal, not its var(): the graph reads its palette with
|
|
134
|
+
getComputedStyle(:root).getPropertyValue (graph-palette.js), where a var() chain into the board's light-dark()
|
|
135
|
+
tokens comes back unresolved — so the light values are written out. The DOM parts still use the vars. ── */
|
|
136
|
+
--pk-graph-bg: #efe3d0;
|
|
137
|
+
--pk-graph-intent: #42719a;
|
|
138
|
+
--pk-graph-plan: #8f6288;
|
|
139
|
+
--pk-graph-work: #437a4c;
|
|
140
|
+
--pk-graph-reality: #9a6a10;
|
|
141
|
+
--pk-graph-node-bg: #fbf5ec;
|
|
142
|
+
--pk-graph-node-text: #2f241d;
|
|
143
|
+
--pk-graph-node-kind: #5f5045;
|
|
144
|
+
--pk-graph-node-muted: #5f5045;
|
|
145
|
+
--pk-graph-node-faint: #7c6a5a; /* 4.76 on the node face */
|
|
146
|
+
/* the card's material lent to the objects: the top light, the deepest step of the side wall 3px below, the warm drop */
|
|
147
|
+
--pk-graph-node-chamfer: rgba(255,255,255,.72);
|
|
148
|
+
--pk-graph-node-shade: none;
|
|
149
|
+
--pk-graph-node-brush: none;
|
|
150
|
+
--pk-graph-node-lip: #c4a575;
|
|
151
|
+
--pk-graph-node-shadow: rgba(127,92,70,.32);
|
|
152
|
+
/* the lines, quiet to loud on the paper: structure; other links and the dotted inferred; the focused path;
|
|
153
|
+
pointed at; selected (the deep clay, 4.6 on the ground) */
|
|
154
|
+
--pk-graph-edge: #8d7358;
|
|
155
|
+
--pk-graph-edge-other: #7c6a5a;
|
|
156
|
+
--pk-graph-edge-related: #5f5045;
|
|
157
|
+
--pk-graph-edge-lit: #2f241d;
|
|
158
|
+
--pk-graph-edge-selected: #8a5a3d;
|
|
159
|
+
--pk-graph-questioned: #9a6a10;
|
|
160
|
+
--pk-graph-label-bg: #fffaf1;
|
|
161
|
+
--pk-graph-chip-bg: #fffaf1;
|
|
162
|
+
--pk-graph-chip-border: #d8c3aa;
|
|
163
|
+
--pk-graph-selection: #2f241d; /* never one of the kinds */
|
|
164
|
+
--pk-graph-focus: #9a6a10;
|
|
165
|
+
--pk-graph-diff-added: #437a4c;
|
|
166
|
+
--pk-graph-diff-changed: #9a6a10;
|
|
167
|
+
--pk-graph-diff-removed: #b04a44;
|
|
168
|
+
--pk-graph-replaced: #c98a64;
|
|
169
|
+
--pk-graph-danger: #b04a44;
|
|
170
|
+
--pk-graph-group-bg: #fffaf1;
|
|
171
|
+
--pk-graph-group-border: #d8c3aa;
|
|
172
|
+
--pk-graph-group-back: #fbf5ec;
|
|
173
|
+
--pk-graph-group-back-border: #e9dbc7;
|
|
174
|
+
--pk-graph-group-chip: #dbc6a6;
|
|
175
|
+
/* the corner marks: attention in amber, the note in ink, pending in link blue */
|
|
176
|
+
--pk-graph-mark-star: #9a6a10;
|
|
177
|
+
--pk-graph-mark-flag: #9a6a10;
|
|
178
|
+
--pk-graph-mark-note: #2f241d;
|
|
179
|
+
--pk-graph-mark-ask: #9a6a10;
|
|
180
|
+
--pk-graph-mark-pending: #42719a;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/* ── The ground: the board's body, restated from the tokens so this file is the one source ── */
|
|
184
|
+
body { color: var(--pk-text); font: var(--pk-font-body); background: var(--pk-ground); }
|
|
185
|
+
input[type="checkbox"] { accent-color: var(--accent); }
|
|
186
|
+
|
|
187
|
+
/* ── Classes board.css and the workbench both use: the guard put the metrics back; the colours are set here ── */
|
|
188
|
+
.empty { color: var(--pk-text-muted); }
|
|
189
|
+
|
|
190
|
+
/* ── The top bar is the board's own page head: a paper shelf on the panel shadow ── */
|
|
191
|
+
.topbar { background: var(--surface); border-bottom-color: var(--line); box-shadow: var(--elev-panel); }
|
|
192
|
+
|
|
193
|
+
/* ── The legend band sits with the other sunken trays (the board's own .legend would leave it on the card face) ── */
|
|
194
|
+
.legend { background: var(--pk-rail); }
|
|
195
|
+
|
|
196
|
+
/* ── Tags: a plain tag is a classification, not a signal (the author's rule) — the board's one matte clay pill
|
|
197
|
+
(.kid/.org/.attKind): the well face, the deepened chip ink, the pill radius, no border. The decision tag
|
|
198
|
+
(.tag.amber) stays loud: the amber tint with a deep clay word; the other signal tints keep the board's pairs. ── */
|
|
199
|
+
.tag { background: var(--well); color: var(--neutral-seg-fg); border-radius: 999px; box-shadow: inset 0 1px 0 rgba(255,255,255,.5); }
|
|
200
|
+
.tag.amber { color: #8a5a3d; }
|
|
201
|
+
|
|
202
|
+
/* ── The process view's signal words (increment K, CKC-24) on the one light theme: on the sunken list face the
|
|
203
|
+
board's red/green words on their own tints read 4.0–4.2:1. The chips lift onto the paper face — as the segmented
|
|
204
|
+
plates lift out of their groove — keeping hue and mark; amber words take the deep clay, as everywhere (D46 ≥ 4.5).
|
|
205
|
+
The classes are the process view's own (k-process.css), wherever they stand: the work cell, the intent cell, the
|
|
206
|
+
generation bands, the popover's open items. ── */
|
|
207
|
+
:is(td.proc, .genrow, .kp-open) .tag.red { background: var(--raise); color: var(--red); box-shadow: 0 0 0 1px var(--red-line); }
|
|
208
|
+
:is(td.proc, .genrow, .kp-open) .tag.green { background: var(--raise); color: var(--green); box-shadow: 0 0 0 1px var(--green-line); }
|
|
209
|
+
:is(td.proc, .genrow, .kp-open) .tag.amber { background: var(--raise); }
|
|
210
|
+
.route { padding: 0 4px; border-radius: var(--r-micro); }
|
|
211
|
+
.route.closed { background: var(--raise); color: var(--green); box-shadow: 0 0 0 1px var(--green-line); }
|
|
212
|
+
.route.back { background: var(--raise); color: var(--red); box-shadow: 0 0 0 1px var(--red-line); }
|
|
213
|
+
.route.hand { background: var(--raise); color: var(--link); box-shadow: 0 0 0 1px var(--line); }
|
|
214
|
+
.flag { padding-left: 4px; }
|
|
215
|
+
.flag.back { background: var(--raise); color: var(--red); box-shadow: 0 0 0 1px var(--red-line); border-radius: var(--r-micro); }
|
|
216
|
+
.flag.up, .intent-flag, .text-btn.copy { color: #8a5a3d; }
|
|
217
|
+
.order .moved { color: #8a5a3d; }
|
|
218
|
+
|
|
219
|
+
/* ── The strip's marks: tiny grooved chips, like the board's legend swatches ── */
|
|
220
|
+
.mk { border-radius: var(--r-micro); box-shadow: var(--elev-groove); }
|
|
221
|
+
|
|
222
|
+
/* ── Segmented controls after the declaration tiles: a sunken groove holding raised label plates; the one that is
|
|
223
|
+
on is solid clay pressed in with paper words. Only paint changes: the tiles keep their size, the row its height. ── */
|
|
224
|
+
.segmented { background: var(--well); border-color: var(--line); border-radius: var(--r-card); box-shadow: var(--elev-well); }
|
|
225
|
+
.segmented button { background: var(--raise); color: var(--fg2); border-radius: var(--r-tile); box-shadow: inset 0 1px 0 rgba(255,255,255,.80), 0 0 0 1px var(--line); }
|
|
226
|
+
.segmented button:hover:not(:disabled) { color: var(--fg); }
|
|
227
|
+
.segmented button.active { background: var(--accent); color: var(--raise); box-shadow: var(--elev-press); }
|
|
228
|
+
|
|
229
|
+
/* ── The popover's foot: the sunken strip is grooved into the card ── */
|
|
230
|
+
.popover-foot { box-shadow: var(--elev-well); }
|
|
231
|
+
|
|
232
|
+
/* ── Accent-coloured words are written in the board's deep clay (4.5–5.6:1 on these faces); the terracotta itself
|
|
233
|
+
stays on edges, rings and faces. The selected view is a paper face lifted out of the tray with a clay spine. ── */
|
|
234
|
+
.btn.active, .read-mark.alert, .read-flag.alert, .outline-modes button.active, .mobile-nav button.active,
|
|
235
|
+
.dock-robot.on, .graph-float .btn.small.active, .text-btn.sel, .note-body h4 { color: #8a5a3d; }
|
|
236
|
+
.nav-item.active, .outline .ol-area.sel, .outline .ol-work.sel { color: #8a5a3d; }
|
|
237
|
+
.nav-item.active, .outline .ol-area.sel, .outline .ol-work.sel { background: var(--pk-accent-soft); box-shadow: inset 2px 0 0 var(--accent); }
|
|
238
|
+
|
|
239
|
+
/* ── Buttons: the word turns clay on hover, as the board's own buttons do ── */
|
|
240
|
+
.btn:hover:not(:disabled), .search-trigger:hover, .coverage-pill:hover { color: var(--accent); }
|
|
241
|
+
|
|
242
|
+
/* ── Scrollbars: thin, the clay line's tone ── */
|
|
243
|
+
main, .rail, .keeper-stream, .popover-body, .flyout, .strip .items, .dialog-body { scrollbar-color: var(--accent-line) transparent; }
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/* ───────────────────────────────────────────────────────────────────
|
|
2
|
+
* The theme guard — always the last stylesheet (Spec §6.16; after WorkflowKeeper's skin-guard.css).
|
|
3
|
+
*
|
|
4
|
+
* The four frozen board.css files were written for WorkflowKeeper's static Board page: one long document that scrolls
|
|
5
|
+
* as a whole, with a sticky `header`, a 14–18px `h1` and a `body` of its own. ProjectKeeper's shell is a grid whose
|
|
6
|
+
* main view scrolls by itself, and its markup has `header` elements inside every section and strip column. Loaded
|
|
7
|
+
* after styles.css, a theme's element-level rules would land on that markup and turn the shell into a long page.
|
|
8
|
+
*
|
|
9
|
+
* So this file restates the shell's LAYOUT invariants and puts back ProjectKeeper's own sizes where a theme's element
|
|
10
|
+
* or class rule hits them. It says no colour, no shadow, no font family: the look belongs to the theme (board.css and
|
|
11
|
+
* its pk.css), the skeleton to the workbench. What each theme leaks and what happens to it is tabled in TOKENS.md.
|
|
12
|
+
* ─────────────────────────────────────────────────────────────────── */
|
|
13
|
+
|
|
14
|
+
/* The shell: full height, the main view scrolls, the rest does not. */
|
|
15
|
+
html,body{height:100%}
|
|
16
|
+
body{margin:0}
|
|
17
|
+
/* The panels (D100): the top bar, the rail, the main panel and the drawer are grid areas; the main panel is a column
|
|
18
|
+
whose view scrolls inside it; filling the window lays it over the rest. */
|
|
19
|
+
.shell{display:grid;height:100dvh;min-height:480px}
|
|
20
|
+
.rail{flex-direction:column;min-height:0;overflow:auto}
|
|
21
|
+
.main-panel{display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden}
|
|
22
|
+
.drawer{display:flex;flex-direction:column}
|
|
23
|
+
body.maximised .main-panel{position:fixed}
|
|
24
|
+
.topbar{position:static;min-height:48px;height:auto;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}
|
|
25
|
+
.body{display:flex;flex-direction:column;min-height:0;min-width:0;flex:1;position:relative}
|
|
26
|
+
main{flex:1;min-height:0;overflow:auto;min-width:0;display:flex;flex-direction:column}
|
|
27
|
+
|
|
28
|
+
/* Board.css makes every `header` a sticky page head (z-index 30–40, its own padding and margins). ProjectKeeper's
|
|
29
|
+
headers are the heads of sections, strip columns and cards: in the flow, at the workbench's sizes. */
|
|
30
|
+
header{position:static;top:auto;z-index:auto;margin:0}
|
|
31
|
+
.section>header{padding:9px 12px}
|
|
32
|
+
.strip header{display:block;padding:6px 12px}
|
|
33
|
+
.keeper-head{padding:12px 14px}
|
|
34
|
+
.dialog-head{padding:14px 18px}
|
|
35
|
+
.popover-head{padding:10px 10px 8px 14px}
|
|
36
|
+
|
|
37
|
+
/* The heading scale is the workbench's (Spec §6.16: titles and labels set apart by size); a theme's `h1` is 14–18px. */
|
|
38
|
+
h1,h2,h3,h4{margin:0}
|
|
39
|
+
h1{font-size:22px;font-weight:600;letter-spacing:-.4px}
|
|
40
|
+
h2{font-size:16px;font-weight:600}
|
|
41
|
+
h3{font-size:13px;font-weight:600}
|
|
42
|
+
h4{font-size:12px;font-weight:600}
|
|
43
|
+
.dialog-head h2{font-size:15px}
|
|
44
|
+
.empty h2{font-size:17px}
|
|
45
|
+
.walk-step h3{font-size:14px}
|
|
46
|
+
.md h1{font-size:15px}.md h2{font-size:14px}.md h3{font-size:13px}
|
|
47
|
+
.md h1,.md h2,.md h3,.md h4,.md h5,.md h6{margin:10px 0 4px;font-weight:700;letter-spacing:0}
|
|
48
|
+
|
|
49
|
+
/* Class names both sides use. Board.css's `.legend` wraps and pads for a page, `.mk` is a 12–13px glyph, `.empty` a
|
|
50
|
+
padded page area, `.fold > summary` pulls itself 8px out of its box. Only the metrics come back; colours stay theirs. */
|
|
51
|
+
.legend{display:flex;flex-wrap:nowrap;align-items:center;gap:10px;white-space:nowrap;padding:6px 12px;border-bottom:0}
|
|
52
|
+
.mk{font-size:10.5px;line-height:1;width:16px;height:16px}
|
|
53
|
+
.empty{padding:44px 20px;text-align:center;max-width:64ch;margin:0 auto}
|
|
54
|
+
details.fold>summary{margin:0}
|
|
55
|
+
details.fold>summary::before{margin-right:0;font-size:10px}
|
|
56
|
+
.toolbar{margin-top:0;font-size:inherit}
|
|
57
|
+
|
|
58
|
+
/* Floating layers keep their positions: the docked and popped-out Keeper, the popover and its scrim, the control-row
|
|
59
|
+
flyouts, the graph tooltip, the pill and the dialog are never part of the document flow. */
|
|
60
|
+
.keeper-panel{position:fixed;overflow:hidden}
|
|
61
|
+
.keeper-panel.docked{top:calc(var(--pk-top) + var(--pk-gap));right:var(--pk-gap);bottom:var(--pk-gap);z-index:32}
|
|
62
|
+
body.maximised .keeper-panel.docked{top:var(--pk-gap)}
|
|
63
|
+
.keeper-panel.floating{z-index:45}
|
|
64
|
+
.keeper-panel:not(.open){display:none}
|
|
65
|
+
.popover{position:fixed;z-index:40}
|
|
66
|
+
.popover-scrim{position:fixed;inset:0;z-index:39}
|
|
67
|
+
.flyout{position:fixed;z-index:36}
|
|
68
|
+
.graph-tip{position:fixed;z-index:40}
|
|
69
|
+
.graph-float{position:absolute;z-index:5}
|
|
70
|
+
.keeper-dock{position:fixed;z-index:30}
|
|
71
|
+
#toast{position:fixed;z-index:20}
|
|
72
|
+
dialog{position:fixed;padding:0;margin:auto}
|
|
73
|
+
[hidden]{display:none!important}
|