Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .claude/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "dev",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "dev"],
"port": 3000
}
]
}
7 changes: 6 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -265,4 +265,9 @@ Node ids are scoped as `` `${name}\u0000${occurrence}` `` where occurrence
counts blocks mentioning that name, in document order. `node.name` stays the
raw name and is what gets rendered — ids are internal only. Changing this
scheme requires bumping `POSITIONS_VERSION` in `storage.ts`, since stored
drag positions are keyed by id.
drag positions are keyed by id.

### Diffs Playground
Ported from `~/Documents/diffs`. Compares texts visually by tokenizing, stemming (Porter2 via `wink-porter2-stemmer`), and grouping shared vocabulary into a central Shared Words column. Pure model architecture (`buildModel`) with frame-driven progressive reveal (`useProgressiveReveal`), highlight mode (`selectedStem`), animated arcs, and camera auto-pan tween (`TWEEN`). Storage versioning uses `STORAGE_KEY = 'diffs-state-v1'`.

Text in `StatLine` and `Legend` must set `baseline={TEXT_BASELINE}` (`'baseline'` → `dominant-baseline: alphabetic`). The original asked for `'top'`, which its older two.js emitted verbatim — an invalid CSS value browsers resolve to `auto`, i.e. alphabetic. The `y` offsets (`SIZE * 0.33` for the word, `SIZE * 0.25` for the tally) were tuned against that, so two.js's `middle` default renders the text ~5.6px low.
Loading
Loading