thurview 0.19.0 → 0.20.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.
@@ -6,9 +6,8 @@ import { join, dirname } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { buildFileDiff } from "../diff.js";
8
8
  import { highlightLines, languageFor } from "../highlight.js";
9
- import { changedFiles, log, showFile, git } from "../git.js";
9
+ import { changedFiles, log, showFile } from "../git.js";
10
10
  import { symbolIndex } from "../symbols.js";
11
- import { registerTheme } from "../highlight.js";
12
11
  import { listReviews, readReview, writeReview, readThreads, readJson, reviewDir, revisionDir, deleteReview, writeJson, serverStateFile, } from "../store.js";
13
12
  import { queue } from "../queue.js";
14
13
  import { createThread, replyThread, setThreadStatus, submitReview, deleteThread, } from "../threads.js";
@@ -52,16 +51,40 @@ async function findReview(idOrPrefix) {
52
51
  return all[0];
53
52
  throw new HttpError(404, all.length ? "ambiguous review id" : "review not found");
54
53
  }
55
- export async function revisionData(id, n) {
54
+ /**
55
+ * A sealed peek carries its excerpt highlighted inline, in the palette of the
56
+ * thurview that sealed it. Highlight it again from the pinned commit so every
57
+ * revision, however old, reads in the reader's palette.
58
+ */
59
+ async function rehighlightPeeks(document, worktree, pins) {
60
+ const anchors = document?.anchors;
61
+ for (const a of Object.values(anchors ?? {})) {
62
+ const peek = a.peek;
63
+ if (!peek)
64
+ continue;
65
+ const commit = peek.graph === "base" ? pins.base : pins.head;
66
+ const text = await showFile(worktree, commit, peek.file);
67
+ if (text === null) {
68
+ // the commit is gone: keep the text, drop a colour picked for another ground
69
+ peek.lines = peek.lines.map((l) => l.replace(/color:#[0-9a-f]{3,8};?/gi, ""));
70
+ continue;
71
+ }
72
+ const all = await highlightLines(text, peek.lang, `${commit}:${peek.file}`);
73
+ peek.lines = all.slice(peek.from - 1, peek.to);
74
+ }
75
+ }
76
+ export async function revisionData(review, n) {
77
+ const id = review.id;
56
78
  const dir = revisionDir(id, n);
57
- const [document, map, changes, coverage, meta, theme] = await Promise.all([
79
+ const [document, map, changes, coverage, meta] = await Promise.all([
58
80
  readJson(join(dir, "document.json")),
59
81
  readJson(join(dir, "map.json")),
60
82
  readJson(join(dir, "changes.json")),
61
83
  readJson(join(dir, "coverage.json")),
62
84
  readJson(join(dir, "meta.json")),
63
- readJson(join(dir, "theme.json")),
64
85
  ]);
86
+ const sealedPins = meta?.pins ?? review.pins;
87
+ await rehighlightPeeks(document, review.worktree, sealedPins);
65
88
  return {
66
89
  // A revision is read back exactly as it was sealed, so one from before a
67
90
  // field existed simply lacks it. The browser is written for a field that is
@@ -74,17 +97,9 @@ export async function revisionData(id, n) {
74
97
  changes: changes ?? [],
75
98
  coverage,
76
99
  meta,
77
- theme: theme ? { name: theme.name, source: theme.source, css: theme.css } : null,
78
100
  };
79
101
  }
80
- /** Highlighter theme name for a review's presented revision (default skin when none). */
81
- export async function themeFor(id, revision) {
82
- if (!revision)
83
- return undefined;
84
- const t = await readJson(join(revisionDir(id, revision), "theme.json"));
85
- return t ? registerTheme(t.shiki) : undefined;
86
- }
87
- /** One changed file's diff between the review's pins, highlighted in its theme. */
102
+ /** One changed file's diff between the review's pins, highlighted. */
88
103
  export async function fileDiff(review, path) {
89
104
  const changes = await changedFiles(review.worktree, review.pins.base, review.pins.head);
90
105
  const entry = changes.find((c) => c.path === path);
@@ -97,7 +112,7 @@ export async function fileDiff(review, path) {
97
112
  ? Promise.resolve(null)
98
113
  : showFile(review.worktree, review.pins.head, path),
99
114
  ]);
100
- return buildFileDiff(path, oldText, newText, { old: `${review.pins.base}:${oldPath}`, new: `${review.pins.head}:${path}` }, entry?.oldPath, await themeFor(review.id, review.revision));
115
+ return buildFileDiff(path, oldText, newText, { old: `${review.pins.base}:${oldPath}`, new: `${review.pins.head}:${path}` }, entry?.oldPath);
101
116
  }
102
117
  /** Every highlighted line of one file at a pinned commit, or null when it is not there. */
103
118
  export async function fileLines(review, path, graph) {
@@ -106,21 +121,9 @@ export async function fileLines(review, path, graph) {
106
121
  if (text === null)
107
122
  return null;
108
123
  const lang = languageFor(path);
109
- const lines = await highlightLines(text, lang, `${commit}:${path}`, await themeFor(review.id, review.revision));
124
+ const lines = await highlightLines(text, lang, `${commit}:${path}`);
110
125
  return { path, graph, lang, total: lines.length, lines };
111
126
  }
112
- export const BLOB_TYPES = {
113
- woff2: "font/woff2",
114
- woff: "font/woff",
115
- ttf: "font/ttf",
116
- otf: "font/otf",
117
- svg: "image/svg+xml",
118
- png: "image/png",
119
- jpg: "image/jpeg",
120
- jpeg: "image/jpeg",
121
- webp: "image/webp",
122
- css: "text/css",
123
- };
124
127
  export function tailscaleAddresses() {
125
128
  const out = [];
126
129
  for (const [name, addrs] of Object.entries(networkInterfaces())) {
@@ -184,7 +187,7 @@ export async function startServer(opts = {}) {
184
187
  }
185
188
  const n = Number(url.searchParams.get("revision") ?? review.revision);
186
189
  const data = review.revision
187
- ? await revisionData(id, n)
190
+ ? await revisionData(review, n)
188
191
  : { document: null, map: null, changes: [], coverage: null, meta: null };
189
192
  const threads = await readThreads(id);
190
193
  return {
@@ -306,24 +309,6 @@ export async function startServer(opts = {}) {
306
309
  res.on("close", () => clearInterval(ping));
307
310
  return;
308
311
  }
309
- if (parts[1] === "reviews" && parts[3] === "blob" && parts[2]) {
310
- // raw file at the head commit, for theme fonts and images the reviewed project ships
311
- const review = await findReview(parts[2]);
312
- const path = url.searchParams.get("path") ?? "";
313
- const ext = path.split(".").pop()?.toLowerCase() ?? "";
314
- const type = BLOB_TYPES[ext];
315
- if (!path || !type)
316
- throw new HttpError(400, "path must name a font, image or css file");
317
- const text = await git(review.worktree, ["show", `${review.pins.head}:${path}`], {
318
- encoding: "buffer",
319
- });
320
- res.writeHead(200, {
321
- "content-type": type,
322
- "cache-control": "public, max-age=31536000, immutable",
323
- });
324
- res.end(text);
325
- return;
326
- }
327
312
  const body = await api(req, url);
328
313
  send(res, 200, body);
329
314
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
package/dist/ui/app.css CHANGED
@@ -1,5 +1,9 @@
1
- /* thurview default skin: neutral dark, one calm blue accent, quiet chrome.
2
- Bars, buttons and panels stay out of the way; body copy and code carry the page. */
1
+ /* thurview's theme: neutral, one calm blue accent, quiet chrome, in two
2
+ palettes - light below, dark under :root[data-theme="dark"]. index.html's
3
+ boot script sets data-theme from the reader's pick in the menu, or from the
4
+ OS until they make one. Every text and code colour holds WCAG AA on every
5
+ ground in both (test/theme.test.ts). Bars, buttons and panels stay out of
6
+ the way; body copy and code carry the page. */
3
7
 
4
8
  @font-face {
5
9
  font-family: Inter;
@@ -17,6 +21,46 @@
17
21
  }
18
22
 
19
23
  :root {
24
+ color-scheme: light;
25
+ --bg: #ffffff;
26
+ --bg2: #f6f7f9;
27
+ --bg3: #eceef2;
28
+ --bg-code: #f6f8fa;
29
+ --fg: #1f2328;
30
+ --fg2: #4b5563;
31
+ --muted: #5f6773;
32
+ --line: #d5dae1;
33
+ --line2: #e4e7ec;
34
+ --accent: #1d4ed8;
35
+ --link: var(--accent);
36
+ --ok: #16723a;
37
+ --warn: #a14a07;
38
+ --del: #b42318;
39
+ /* text on a filled accent, ok or del ground */
40
+ --on-fill: #ffffff;
41
+ --add-bg: rgb(22 114 58 / 0.09);
42
+ --del-bg: rgb(180 35 24 / 0.08);
43
+ --sel: rgb(161 74 7 / 0.12);
44
+ --accent-bg: rgb(29 78 216 / 0.08);
45
+ --shadow: 0 1px 2px rgb(16 24 40 / 0.06);
46
+ --shadow-lg: 0 12px 32px rgb(16 24 40 / 0.14);
47
+ --code-fg: #1f2328;
48
+ --code-keyword: #a40e26;
49
+ --code-string: #0a3069;
50
+ --code-function: #6639ba;
51
+ --code-type: #953800;
52
+ --code-variable: #0550ae;
53
+ --code-number: #0550ae;
54
+ --code-comment: #5f6773;
55
+ --code-punctuation: #57606a;
56
+ --code-tag: #116329;
57
+ --font-display: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
58
+ --font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;
59
+ --font-body: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
60
+ --transition: 150ms ease;
61
+ --radius: 6px;
62
+ }
63
+ :root[data-theme="dark"] {
20
64
  color-scheme: dark;
21
65
  --bg: #0f1114;
22
66
  --bg2: #161920;
@@ -24,28 +68,30 @@
24
68
  --bg-code: #0b0d10;
25
69
  --fg: #e6e8eb;
26
70
  --fg2: #a9afb8;
27
- --muted: #737a85;
71
+ --muted: #8a919c;
28
72
  --line: #272c35;
29
73
  --line2: #1e232b;
30
74
  --accent: #6ea8fe;
31
- --link: var(--accent);
32
75
  --ok: #4cc38a;
33
76
  --warn: #e5b454;
34
77
  --del: #f06a6a;
78
+ --on-fill: #0b1220;
35
79
  --add-bg: rgb(76 195 138 / 0.1);
36
80
  --del-bg: rgb(240 106 106 / 0.12);
37
81
  --sel: rgb(229 180 84 / 0.14);
38
82
  --accent-bg: rgb(110 168 254 / 0.14);
39
83
  --shadow: 0 1px 2px rgb(0 0 0 / 0.3);
40
84
  --shadow-lg: 0 12px 32px rgb(0 0 0 / 0.45);
41
- /* text glow on the brand, headings and the active tab; none unless a theme opts in */
42
- --glow: none;
43
- --font-display: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
44
- --font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;
45
- --font-body: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
46
- --transition: 150ms ease;
47
- --radius: 6px;
48
- --heading-transform: none;
85
+ --code-fg: #e6e8eb;
86
+ --code-keyword: #ff7b72;
87
+ --code-string: #a5d6ff;
88
+ --code-function: #d2a8ff;
89
+ --code-type: #ffa657;
90
+ --code-variable: #79c0ff;
91
+ --code-number: #79c0ff;
92
+ --code-comment: #8b949e;
93
+ --code-punctuation: #8b949e;
94
+ --code-tag: #7ee787;
49
95
  }
50
96
  * {
51
97
  box-sizing: border-box;
@@ -71,7 +117,7 @@ a:hover {
71
117
  text-decoration: underline;
72
118
  }
73
119
  ::selection {
74
- background: rgb(110 168 254 / 0.3);
120
+ background: color-mix(in srgb, var(--accent) 22%, transparent);
75
121
  }
76
122
 
77
123
  button {
@@ -97,7 +143,7 @@ button:hover {
97
143
  }
98
144
  button.primary {
99
145
  background: var(--accent);
100
- color: #0b1220;
146
+ color: var(--on-fill);
101
147
  border-color: var(--accent);
102
148
  }
103
149
  button.primary:hover {
@@ -105,7 +151,7 @@ button.primary:hover {
105
151
  }
106
152
  button.ok {
107
153
  background: var(--ok);
108
- color: #06140d;
154
+ color: var(--on-fill);
109
155
  border-color: var(--ok);
110
156
  }
111
157
  button.ok:hover {
@@ -263,9 +309,7 @@ kbd {
263
309
  font-family: var(--font-display);
264
310
  font-size: 15px;
265
311
  font-weight: 600;
266
- text-transform: var(--heading-transform);
267
312
  color: var(--accent);
268
- text-shadow: var(--glow);
269
313
  letter-spacing: -0.01em;
270
314
  white-space: nowrap;
271
315
  flex: none;
@@ -303,7 +347,6 @@ kbd {
303
347
  .tabs button.active {
304
348
  color: var(--accent);
305
349
  background: var(--accent-bg);
306
- text-shadow: var(--glow);
307
350
  }
308
351
  .topbar .spacer {
309
352
  flex: 1;
@@ -411,10 +454,8 @@ kbd {
411
454
  .doc h1 {
412
455
  font-family: var(--font-display);
413
456
  font-weight: 600;
414
- text-transform: var(--heading-transform);
415
457
  letter-spacing: -0.02em;
416
458
  color: var(--fg);
417
- text-shadow: var(--glow);
418
459
  font-size: clamp(1.4rem, 2.4vw, 1.8rem);
419
460
  line-height: 1.3;
420
461
  margin: 0 0 14px;
@@ -422,10 +463,8 @@ kbd {
422
463
  .doc h2 {
423
464
  font-family: var(--font-display);
424
465
  font-weight: 600;
425
- text-transform: var(--heading-transform);
426
466
  letter-spacing: -0.01em;
427
467
  color: var(--fg);
428
- text-shadow: var(--glow);
429
468
  font-size: 1.2rem;
430
469
  line-height: 1.4;
431
470
  margin: 36px 0 10px;
@@ -493,7 +532,7 @@ kbd {
493
532
  }
494
533
  .block-actions button.count {
495
534
  background: var(--accent);
496
- color: #0b1220;
535
+ color: var(--on-fill);
497
536
  border-color: var(--accent);
498
537
  font-size: 11px;
499
538
  }
@@ -683,7 +722,7 @@ kbd {
683
722
  text-align: center;
684
723
  font-size: 12px;
685
724
  font-weight: 700;
686
- color: #0b1220;
725
+ color: var(--on-fill);
687
726
  background: var(--accent);
688
727
  border-radius: 3px;
689
728
  }
@@ -982,7 +1021,7 @@ kbd {
982
1021
  }
983
1022
  .map-node:hover {
984
1023
  border-color: var(--accent);
985
- box-shadow: 0 4px 14px rgb(0 0 0 / 0.3);
1024
+ box-shadow: var(--shadow-lg);
986
1025
  }
987
1026
  .map-node.selected {
988
1027
  outline: 2px solid var(--accent);
@@ -1419,7 +1458,7 @@ kbd {
1419
1458
  .overlay {
1420
1459
  position: fixed;
1421
1460
  inset: 0;
1422
- background: rgb(0 0 0 / 0.55);
1461
+ background: rgb(16 24 40 / 0.4);
1423
1462
  z-index: 50;
1424
1463
  display: flex;
1425
1464
  align-items: center;
@@ -1439,7 +1478,6 @@ kbd {
1439
1478
  font-family: var(--font-display);
1440
1479
  font-weight: 600;
1441
1480
  font-size: 1.05rem;
1442
- text-transform: var(--heading-transform);
1443
1481
  color: var(--fg);
1444
1482
  }
1445
1483
  .dialog .row {
@@ -1490,9 +1528,7 @@ kbd {
1490
1528
  font-weight: 600;
1491
1529
  font-size: 1.35rem;
1492
1530
  letter-spacing: -0.02em;
1493
- text-transform: var(--heading-transform);
1494
1531
  color: var(--fg);
1495
- text-shadow: var(--glow);
1496
1532
  }
1497
1533
  .home h3 {
1498
1534
  font-family: var(--font-display);
@@ -1593,7 +1629,6 @@ kbd {
1593
1629
  .ifd-head .t {
1594
1630
  font-family: var(--font-display);
1595
1631
  font-weight: 600;
1596
- text-transform: var(--heading-transform);
1597
1632
  color: var(--fg);
1598
1633
  }
1599
1634
  .ifd-head .spacer {
package/dist/ui/app.js CHANGED
@@ -2984,15 +2984,6 @@
2984
2984
  });
2985
2985
  app.append(topbar, banner, h("div", { class: "main" }, center, resizer, side));
2986
2986
  }
2987
- function applyTheme() {
2988
- let style = document.getElementById("review-theme");
2989
- if (!style) {
2990
- style = document.createElement("style");
2991
- style.id = "review-theme";
2992
- document.head.appendChild(style);
2993
- }
2994
- style.textContent = state.data?.theme?.css ?? "";
2995
- }
2996
2987
  function renderTopbar() {
2997
2988
  clear(topbar);
2998
2989
  const d = state.data;
@@ -3075,6 +3066,19 @@
3075
3066
  ]);
3076
3067
  append(topbar, [identity, actions]);
3077
3068
  }
3069
+ var THEME_PICKS = ["system", "light", "dark"];
3070
+ var themeLabel = () => `Theme: ${document.documentElement.dataset["themePick"] ?? "system"}`;
3071
+ function pickTheme(item) {
3072
+ const now = document.documentElement.dataset["themePick"] ?? "system";
3073
+ const next = THEME_PICKS[(THEME_PICKS.indexOf(now) + 1) % THEME_PICKS.length];
3074
+ try {
3075
+ localStorage.setItem("thurview.theme", next);
3076
+ } catch {
3077
+ }
3078
+ window.thurviewTheme?.(next);
3079
+ const label = [...item.querySelectorAll(".item")].find((e) => e.textContent?.startsWith("Theme"));
3080
+ if (label) label.textContent = themeLabel();
3081
+ }
3078
3082
  function moreMenu(e) {
3079
3083
  const r = state.data.review;
3080
3084
  const box = h(
@@ -3114,7 +3118,7 @@
3114
3118
  h(
3115
3119
  "button",
3116
3120
  {
3117
- style: { background: "var(--del)", color: "#fff" },
3121
+ style: { background: "var(--del)", color: "var(--on-fill)" },
3118
3122
  onclick: async () => {
3119
3123
  await api.remove(state.id);
3120
3124
  location.href = "/";
@@ -3129,15 +3133,11 @@
3129
3133
  },
3130
3134
  "Delete review"
3131
3135
  ),
3136
+ h("div", { class: "item", onclick: () => pickTheme(box) }, themeLabel()),
3132
3137
  h(
3133
3138
  "div",
3134
3139
  { class: "item muted" },
3135
3140
  kind() === "review" ? `base ${r.pins.base.slice(0, 12)} \xB7 head ${r.pins.head.slice(0, 12)}` : `commit ${r.pins.head.slice(0, 12)}`
3136
- ),
3137
- h(
3138
- "div",
3139
- { class: "item muted" },
3140
- `theme: ${state.data.theme?.name ?? "default"}${state.data.theme?.source ? ` (${state.data.theme.source})` : ""}`
3141
3141
  )
3142
3142
  );
3143
3143
  Promise.resolve().then(() => (init_dom(), dom_exports)).then(({ popover: popover2 }) => popover2(box, { x: e.pageX - 200, y: e.pageY + 10 }));
@@ -3282,7 +3282,6 @@
3282
3282
  document.title = `${state.data.review.title} \xB7 thurview`;
3283
3283
  if (state.params.get("side") === "threads") state.side = { kind: "threads" };
3284
3284
  on("data", () => {
3285
- applyTheme();
3286
3285
  renderTopbar();
3287
3286
  renderBanner();
3288
3287
  renderCenter();