feat: file interior in reading order + code holograms - #10
Draft
bryan-uipath wants to merge 2 commits into
Draft
bryan-uipath wants to merge 2 commits into
bryan-uipath wants to merge 2 commits into
Conversation
bryan-uipath
force-pushed
the
feat/scale-true-drill
branch
from
September 4, 2026 22:57
b84ed9f to
93162cb
Compare
bryan-uipath
force-pushed
the
feat/file-spine
branch
3 times, most recently
from
September 4, 2026 23:20
7824227 to
cd0c547
Compare
Inside a file the modules fill the file's own footprint in source order (rows left→right, top→bottom, area ∝ lines, heights linear in lines); classes/interfaces/enums are stacks of member slabs. Kind is the paint in here regardless of mode. Hovering a module stands its source up beside it as a screen-aligned hologram card; selecting pins it. Source via CityHost.getSource, header-only without a host. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…s files lineUnit normalised over file.modules, which is empty for a file whose one module fileScope stubs in — a 400-line note became a 240-unit needle; it now seeds on the file's own loc. tallest() still measured buildings with buildingHeight, so camera clearance and hover boxes were short inside a file: folded into city.ts's tallestBuilding, which already had the formula. The hologram anchor was baked before startTransition set stageHome, leaving the card displaced after a rebuild — it is re-derived each frame — and moduleRecOf now only accepts a record from the current city. Plus a constant-folded gutter, two un-exported helpers, DoubleSide and a duplicate dispose dropped, and the card fetches only the lines it shows. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
bryan-uipath
force-pushed
the
feat/file-spine
branch
from
September 7, 2026 20:11
cd0c547 to
545b5d1
Compare
bryan-uipath
force-pushed
the
feat/scale-true-drill
branch
from
September 7, 2026 20:11
0244cf0 to
2467be5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #9 (which is stacked on #8).
The old file isolate was a treemap of module boxes: two big components swallowed the plate, the rest were nubs, and the default Recent overlay painted all of it one green. This PR redesigns the interior.
max(60, √modules·11)) and lays its modules out like text on a page: rows left → right, top → bottom in source order (flowLayout), each module as wide as its line count, rows justified to the plate and as deep as their share, so area stays ∝ lines. Shares are floored at a quarter of the average so a one-lineconststill gets a hoverable plot; a light trailing row folds into the previous one.lineUnit: the longest module ≈ 0.4 of the plate's side, capped at 60), read off the file's scope layout so an isolated module keeps its height.Plot.y0/Plot.height; members get no plate of their own).area · height = lines · reading order = source order.hologram.ts): hovering a module stands its source up beside it as a screen-aligned card —kind name+ line span header, first 14 lines with gutter, comments dimmed, scanlines, cyan frame, drawn over the city and scaled with distance. Selecting pins it; hover borrows the slot. Source viaCityHost.getSource(cached per span); header-only without a host (static export). Replaces the name pill for modules inside a file.The mini-treemap for a real file's plots at folder scope (v1 data) is unchanged; only synthetic scopes get the new layout.
Verification:
npm run typecheck; drilled intoviewer/src/city.ts(52/52 modules placed) andviewer/src/labels.ts(member stacks), hover + select show and pin the card, no console errors.🤖 Generated with Claude Code