You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
Brian Westphal
authored and
Brian Westphal
committed
Ground-truth Expected/Actual labels + named source list, lightbox zoom/pan, and ground-truth P3 design (GB-965, GB-963, GB-962)
Ground-truth UX polish (GB-965): the side-by-side comparison panes now read "Expected (A)" / "Actual (B)" instead of the generic Old/New in ground-truth mode, and the sidebar renders a flat list of named comparisons (manifest label with a basename fallback, plus a Spec/Reference/Baseline expectedKind badge, most-different-first) rather than an actual/ file tree. New pure helper src/ground-truth/presentation.ts (groundTruthSideLabels, groundTruthMetaByFileId, EXPECTED_KIND_LABELS) shared by the diff page and the /files route; the response carries an optional per-file groundTruth map that the client stores on reviewStore. Threaded sideLabels through ImageDiff and DiffView. Documented as FR-26.7 / FR-26.8.
Lightbox zoom/pan (GB-963): the shared lightbox now zooms (wheel / pinch / on-screen +- controls, up to 8x) and pans (drag a zoomed image, or wheel), so a reviewer can mark a precise region on a large artifact; note-artifact and attachment image previews get this for free since they share the component. Zoom/pan math lives in the pure, unit-tested src/client/lightboxZoom.ts; region fractions stay correct under any transform because they are read from the overlay's live post-transform bounding rect. Restructured the lightbox DOM to a clipping viewport around the transformed frame. Documented as FR-25.7. Image-file-diff lightbox adoption is filed as GB-966.
Ground-truth P3 design (GB-962, design only): documented sets / multi-step flows in doc 26 - a version:2 additive manifest with ordered sets/steps and per-step navigation, per-step plus max-aggregate perceptual scoring, a consumer-only capture contract (Glassbox runs no capturer and takes no domotion dependency) with proof-export guidance for projects, and external baseline rotation. Implementation is tracked in phased follow-ups GB-967 (loader/model), GB-968 (UI), GB-969 (guidance doc/skill), and GB-970 (optional promote helper).
Tests: new unit suites tests/unit/ground-truth/presentation.test.ts and tests/unit/client/lightboxZoom.test.ts; e2e assertions added in tests/e2e/ground-truth.test.ts (label + expectedKind badge, Expected/Actual pane captions) and tests/e2e/diff-viewing.test.ts (lightbox zoom controls). Full unit suite and the ground-truth + lightbox e2e tests pass; typecheck and lint clean.
|`svg-meta.ts`| Pure SVG metadata helpers for the "Rendered" view: `parseSvgDimensions` (base size from width/height/viewBox) and `svgUsesExternalFonts` (font-caveat banner trigger). No rendering. SVGs are rendered live in the browser (GB-932): the image route serves them as raw `image/svg+xml` and the diff shows them in a native `<img>`, so animated SVGs animate. The old `@resvg/resvg-wasm` rasterizer + worker thread were removed. |
@@ -703,7 +704,7 @@ two documents intentionally overlap.
703
704
| Change the DB schema |`src/db/schema.ts` (tables/indexes) + a migration in `src/db/connection.ts` (`addColumnIfMissing` pattern). Query code in `src/db/queries.ts` or `ai-queries.ts`. |
| Work on the image lightbox / note-artifact regions |`src/client/lightbox.tsx` (shared full-screen lightbox + region draw), `src/client/diff/noteArtifactRegions.tsx` (inline drag-to-draw on the thumbnail **or** click → lightbox; accumulates pending regions per note), `src/utils/artifactRegions.ts` (pure decode/group of `region_data` arrays), `src/components/reviewNoteRegionThumb.tsx` (the marked-region thumbnail(s) on a reply). Regions carried into the reply via `createAnnotation`'s `regions` array (→ `region_data` JSON array with `artifact` uris; single object still read for back-compat). Doc 25 / GB-953, GB-959. |
707
+
| Work on the image lightbox / note-artifact regions |`src/client/lightbox.tsx` (shared full-screen lightbox + zoom/pan + region draw; zoom/pan math in the pure `src/client/lightboxZoom.ts`, GB-963), `src/client/diff/noteArtifactRegions.tsx` (inline drag-to-draw on the thumbnail **or** click → lightbox; accumulates pending regions per note), `src/utils/artifactRegions.ts` (pure decode/group of `region_data` arrays), `src/components/reviewNoteRegionThumb.tsx` (the marked-region thumbnail(s) on a reply). Regions carried into the reply via `createAnnotation`'s `regions` array (→ `region_data` JSON array with `artifact` uris; single object still read for back-compat). Doc 25 / GB-953, GB-959. |
707
708
| Add a CLI option |`src/cli.ts``parseArgs()` switch; document in `docs/2-cli-and-server.md`. |
708
709
| Add an AI platform |`src/ai/models.ts` (platform enum + fallback models + env key; `KEYLESS_PLATFORMS` if no key needed), `src/ai/list-models.ts` (live-discovery fetch+map), `src/ai/client.ts` (HTTP/spawn dispatch), `src/ai/config.ts` (any per-platform config like a base URL), `src/ai/api-keys.ts` (key source mapping), `src/routes/ai-config.ts` + `src/api/ai.ts` (config/discovery/key-status wiring), `src/client/settings/experimentalTab.tsx` + `dialog.tsx` (picker + any platform-specific inputs). The `local` platform (doc 22) is the worked example of a keyless, base-URL-configured provider. Update `docs/7-ai-analysis.md`. |
709
710
| Update / discover AI models | Models are discovered live per provider in `src/ai/list-models.ts` (used by `GET /api/ai/models`); `src/ai/models.ts` holds the static fallback + `resolveModelId` old→new mapping. |
0 commit comments