MuseHub v0.2.0-nightly.4
v0.2.0-nightly.4 ⚠ Pre-release
0
Downloads
0
Assets
0
Formats
Pre-release
Channel
📋
Release Notes
MuseHub v0.2.0-nightly.4
Fourth nightly build, version-synced with muse. The headline is a real
fix to the two-column scroll bug nightly.3 shipped — that fix worked for
the one page it was built against, but broke on every other page with
different chrome above the grid. Tonight replaces the whole approach with
a structurally sound pattern instead of patching the formula a third time.
What changed
- Two-column layout rebuilt as a viewport-locked flex shell, across all
9 pages that actually use it (issues list/detail, proposal detail,
explore, MCP docs, muse dev docs, blame, repo home; blob's panel
confirmed already correct and left alone). Nightly.3's fix used
max-height: calc(100dvh - var(--sticky-offset) - ...)per column —--sticky-offsetwas a static guess that only accounted for the navbar- repo-tabs bar, so any page with more chrome above its grid (a
toolbar, filter bar, hero) got a wrong height and either overlapped the
footer or made content unreachable. Replaced with the same pattern
Gmail/Slack/VS Code use: the body becomes a
height: 100dvhflex column, every fixed-height sibling above the scrollable region isflex-shrink: 0, and the two-column grid isflex: 1; min-height: 0— the browser computes "whatever's left" automatically, no calc(), no per-page offset to get wrong. Found and fixed two generic flex/grid gotchas along the way (align-items: stretchvsstarton the grid;flex-shrink: 0needed on a.card-style child with its ownoverflow: hidden) and one zoom-specific bug (zoominflates an element's own rendered box ~25% beyond its layout box, sobody { height: 100dvh }zoomed 1.25x was silently clipping the last ~20% of every app-shell page regardless of how far any column scrolled internally — fixed with a--zoom-factorcustom property compensating the shell's height). Verified page-by-page with headless Chromium driving realmouse.wheel()events, not just DOMscrollToor reading CSS — both prior "should work" theories turned out wrong or incomplete without that (musehub#139).
- repo-tabs bar, so any page with more chrome above its grid (a
toolbar, filter bar, hero) got a wrong height and either overlapped the
footer or made content unreachable. Replaced with the same pattern
Gmail/Slack/VS Code use: the body becomes a
- Footer no longer overlaps two-column page content — the specific regression that prompted tonight's rebuild; now structurally impossible rather than patched (part of musehub#139).
- Dead CSS cleanup: deleted
.layout-two-col/.layout-sidebar(confirmed zero templates ever used them) and its now-pointless test file. Left.graph-layout/.dag-*in place with a TODO instead of deleting — likely scaffolded ahead of the code-domain symbol-graph visualization, not actually dead. aaronreneassigned musehub#129 (rich social preview cards — noog:imagetoday) with a master work-queue tracker (musehub#138) for future hand-offs, plus the before/after Facebook-preview screenshots attached directly to the issue.
Follow-ups filed, not blocking this nightly
- musehub#136 — investigate removing
body { zoom: 1.25 }in favor ofrem-based scaling; blocked on a spacing-token refactor. - musehub#137 — heading anchors (deep-link) for issue and proposal bodies, matching the existing README/mist behavior.
- musehub#140 — duplicate issue numbers under concurrent creation (a real race condition, self-inflicted while generating test data for #139) cause a 500 on read/close for the affected numbers.
- musehub#141/#142/#143 — CRUD/delete parity audit: issues and
proposals have no delete concept at all today (only
state), issue comments' soft-delete is the one entity that's fully wired end-to-end, and proposal comments have theis_deletedcolumn but nothing uses it. Parent ticket (#141) covers a framework-wide soft+hard delete idiom; #142/#143 are the first two entities to bring up to that standard. - musehub#128 — release pruning's PEP 440-aware sort (phases 1–2,
already live) is working correctly, but phase 3's live re-verification
tonight found a different bug underneath it: a global "keep 3 newest
by precedence" prune still deletes the current nightly whenever older
rcbuilds exist in the same bucket, since adevbuild is always lower PEP 440 precedence than anyrcof the same base version. Needs per-channel retention, not global.
How the version number got picked
Every commit's sem_ver_bump is computed structurally from an AST-level
diff of changed public symbols, not typed by hand — see
docs/versioning.md. This nightly's structural changes classify as MINOR.
📦
Download Packages
0 available
Source
Full snapshot archive
Not included in this release
Metadata
JSON: release metadata
Not included in this release
📥
Assets
0
No additional assets attached to this release.