fix(luna): the Explorer rail is added to the window, not taken out of the document - #313
Merged
Merged
Conversation
… the document
/garage/encoding declared 720px of prose and rendered 516px of it. The task
pane is a 186px grid track plus a 14px gap inside the window's max-width, so
every page Explorer chrome reached quietly meant something different by the
number its author picked.
Each page now declares its measure once as `--axp-maxw` and consumes it, and
one rule in luna.css grows a paned window by exactly one rail plus one gap.
The worker pages needed nothing: lunaPage has emitted `:root{--axp-maxw}` since
it was written. The 23 static pages and lwe-base.css swap `max-width: 720px`
for `--axp-maxw: 720px; max-width: var(--axp-maxw)`, so no number is written
twice and none can drift. The 186/14 literals are tokenised for the same
reason, since the track and the compensation have to agree.
This DELETES a special case rather than adding one.
`.np-window.np-folder:has(>.axp-tasks){max-width:760px}` was a hand-computed
560+200 for the /writing folder; writing.js declares 560 as the variable now
and the generic rule lands on the same 760.
Measured against the built tree at a 1280 viewport: /garage/encoding 720 -> 920
with its prose column back from 516 to 716, /lwe/dac 640 -> 840, /lens and
/photos 980 -> 1180, /writing unchanged at 760. Homepage untouched (no .window,
no pane). Mobile stacking below 760px is unchanged, since the window is
width:100% there and the cap never applies.
One cost, and it lands on the widest pages only: at 1280 the 1180 windows sit
over the desktop icons, clearing them again above ~1340. /access already did
this at 1440. Capping with min(..., 100vw - 190px) would keep an icon column
but fights maximize, so it is left alone.
build clean, 206/206 contract tests, routes:check 122/0, perf-budget green.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
Wire-size diff vs merge base
Brotli q11, the quality the edge serves. Every number here is deterministic: Client assetsTotal Brotli: 60.92 KiB → 60.97 KiB (+0.05 KiB, +0.1%) across 12 files, 2 changed.
PagesTotal Brotli: 471.25 KiB → 471.52 KiB (+0.27 KiB, +0.1%) across 46 files, 42 changed. No single file moved by 0.13 KiB or more. Plus 42 files under the 0.13 KiB floor, net +0.27 KiB — usually content-hash churn in Worker bundle268.66 KiB → 268.68 KiB gzip (+0.02 KiB, +0.0%) Largest module deltas (raw bytes in bundle):
Dictionary deltas (
|
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
aadhar-sh | ee4b26d | Aug 10 2026, 07:57 PM |
oddharsh
added a commit
that referenced
this pull request
Aug 10, 2026
#313 was CSS-only and failed `github-advanced-security` with the artifact's whole signature: title null, empty summary, one annotation, CodeQL green. Two things it added beyond the tally. The annotation sat at `.github:213`, the SAME line as #307 on a diff sharing no content with it, so the line number is a fingerprint of the harness rather than a location — do not go looking for what lives there. And `gh pr checks` did not list the failing check AT ALL: seven rows, every one pass or skipping, while `/commits/<sha>/check-runs` reported that same check as failure on the same head commit. Reproduced twice minutes apart, so it is not a timing gap. That matters because the convenient command reports the PR green while the notification says a check failed, which reads exactly like a stale alert and is not one. The `check-runs` call the note already recommends is the source of truth for this check. Co-authored-by: Aadharsh Pannirselvam <19518661+oddharsh@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
oddharsh
added a commit
that referenced
this pull request
Aug 16, 2026
…verse (#416) This gotcha claimed twice that the Copilot check fails on every diff, and one of those claims went in a few hours ago as the general lesson. It is wrong. The run always fires; whether it REQUESTS A MODEL depends on the diff. The job prints a file exclusion list on every run, covering js, json, mjs, ts, py, rs, yaml, yml, html, xml, go, java, c/cpp, rb and more. `.md`, `.sh` and `.css` are NOT on it. So a docs diff survives the filter and gets a `claude-opus-4.6` request, while a pure JavaScript diff is filtered to nothing and the run exits clean. Both paths print `Sessions disabled: not supported for code scanning yet`, which this session initially read as the discriminator and is not; the discriminating line is `Creating copilot-sdk session with model`, which only the failing path reaches. Correlates 12 of 12: the five runs of 2026-08-15 (#399 jpg/json and #402 js/mjs passed; #398, #400 and #401 all carried md and failed), plus all seven earlier failures checked backwards. #313 is the "CSS-only" diff this gotcha already singles out, and css is not on the list either. #351's note here called its entire diff a `${{ }}` move in workflow files; it touched md and mjs too, and the md is what drew the request. The prose-only argument is unchanged in conclusion and inverted in mechanism: a docs PR reddens this because markdown is one of the few things the detector still looks at, rather than because the agent choked on prose. The entitlement root cause is untouched. Records the method failure too, since it is the transferable part. Nine entries were built by pattern-matching outcomes across PRs without once reading which files each diff touched, and "fails on everything" was an artifact of that sample. One uncollected column explained the whole shape. Co-authored-by: Aadharsh Pannirselvam <19518661+oddharsh@users.noreply.github.com>
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.
/garage/encodingdeclared 720px of prose and rendered 516px of it. The task pane is a 186px grid track plus a 14px gap living inside the window'smax-width, so every page Explorer chrome reached quietly meant something different by the number its author picked.The mechanism
Each page declares its measure once as
--axp-maxwand consumes it, and one rule inluna.cssgrows a paned window by exactly one rail plus one gap:The worker pages needed nothing, because
lunaPagehas emitted:root{--axp-maxw:${width}px}since it was written. The 23 static pages andlwe-base.cssswapmax-width: 720pxfor--axp-maxw: 720px; max-width: var(--axp-maxw), so no number is written twice and none can drift — which is why this needs no build tripwire. The 186/14 literals are tokenised for the same reason: the track and the compensation have to agree, and a paned window whose two numbers disagree is off by exactly the amount nobody notices.Specificity carries it without touching cascade order:
.window:has(>.axp-tasks)is 0,2,0 against each page's own.windowat 0,1,0, so it wins wherever the page's style sits relative toluna.css.It deletes a special case
.np-window.np-folder:has(>.axp-tasks){max-width:760px}was a hand-computed 560+200 for the/writingfolder, with a comment explaining the arithmetic.writing.jsdeclares 560 as the variable now and the generic rule lands on the same 760.Measured, against the built tree at a 1280 viewport
/garage/encoding/lwe/dac/lens,/photos/writingHomepage is untouched (it has no
.windowand takes no pane). Mobile stacking below 760px is unchanged, since the window iswidth:100%there and the cap never applies.One cost, on the widest pages only
At 1280 the 1180-wide windows sit over the desktop icons, clearing them again above ~1340.
/accessalready did this at 1440. Capping withmin(…, 100vw - 190px)would hold an icon column open but fights maximize, so it is deliberately left alone.Checks
pnpm run buildclean · 206/206 contract tests ·pnpm run routes:check122 routes, 0 hard failures ·perf-budgethard checks green.🤖 Generated with Claude Code