Uh oh!
There was an error while loading. Please reload this page.
refactor(plugin-gantt): drop the deprecated width from the drawer default, state the navConfig comment once - #6305
Merged
os-support-ai merged 2 commits intoAug 25, 2026
Conversation
The comment block above `navConfig` carried a verbatim repeat of its own last two lines, so the text ran on into a fragment: "…providing its own `navigation` config (e.g., page mode). detail panel inline (no full-page navigation). Schema can override by providing its own `navigation` config (e.g., page mode)." The first three lines already state the sentence completely and in the right order; the two removed lines were a byte-for-byte duplicate of the two before them. Comment-only, no behaviour change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011SfZeFWrhGLHmfq61xbz4q
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
…efault
The renderer default was `{ mode: 'drawer', width: 'min(960px, 60vw)' }`.
`width` is `@deprecated [#2578 -> size]` in the spec that owns the shape, and
`resolveOverlayWidth` gives an explicit `width` priority OVER `size` — so
while the default spelled it, a gantt declaring no `navigation` could never be
reached by the size buckets, and the deprecated branch stayed load-bearing on
the path most gantts take.
The default is now `{ mode: 'drawer' }`. `resolveOverlayWidth` returns
`undefined` and RecordDetailDrawer's own `width` default supplies the
identical `min(960px, 60vw)`, so the resolved overlay width is unchanged on
every viewport — measured, not assumed.
Deliberately not converged on `size: 'lg'`: that bucket is `min(92vw, 960px)`,
which matches the current default only at viewport >= 1600px and is up to 53%
wider below it (+11% at 1440px, +25% at 1280px). That is a real layout change
across three renderers and stays with the maintainer.
Nothing pinned this width before — a repo-wide search returned only producers,
zero assertions, and the full 402-test gantt suite stayed green when the value
was changed. ObjectGantt.navWidthDefault.test.tsx now pins both halves: that
the gantt injects no width of its own, and that the real drawer still resolves
to the same value.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011SfZeFWrhGLHmfq61xbz4qwidth from the drawer default, state the navConfig comment onceContributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
os-support-ai
marked this pull request as ready for review
August 25, 2026 12:39
Uh oh!
There was an error while loading. Please reload this page.
os-support-ai
deleted the
claude/issue-6259-gantt-navconfig-size-bucket
branch
August 25, 2026 13:06
This was referenced Aug 26, 2026
os-support-ai pushed a commit
that referenced
this pull request
Aug 26, 2026
…dth as a renderer default `min(960px, 60vw)` was a house default duplicated across the record-navigation drawers of three renderers. #6305 converged ObjectGantt only; kanban and calendar still carried the old shape at two sites each — the `navConfig` default and a render-site `?? 'min(960px, 60vw)'` fallback, the second of which would have kept the old width alive had only the first been taken. `width` is `@deprecated [#2578 -> size]` and `resolveOverlayWidth` gives an explicit `width` priority OVER `size`, so spelling it kept the deprecated branch load-bearing on the path most boards and calendars take (no declared `navigation`) and made the size buckets unreachable there. Omitting both leaves `resolveOverlayWidth` returning `undefined`, which is what RecordDetailDrawer's own `width` default is for; that default is the identical `min(960px, 60vw)`, so this is a zero-pixel change on every viewport. Not converged on `size: 'lg'`: that bucket is `min(92vw, 960px)`, up to 53% wider below a 1600px viewport. That move is a real behaviour change and stays open for a human ruling. Pinned by ObjectKanban.navWidthDefault.test.tsx and ObjectCalendar.navWidthDefault.test.tsx, both halves each, because the equivalence now depends on the drawer's own default too. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011SfZeFWrhGLHmfq61xbz4q
This was referenced Aug 26, 2026
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 freeto 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.
Fixes#6258
Fixes#6259
Two-card family dispatch on four consecutive lines of
packages/plugin-gantt/src/ObjectGantt.tsx. One commit per member. Baseorigin/main@090927f4f; all evidence below atae7898efb.#6258 — the comment (commit
21cfe3142)The block above
navConfigrepeated its own last two lines verbatim, so the text ran on into a fragment. On090927f4fit was five lines,:1147-:1151::1147-:1149already state the sentence completely and in order;:1150-:1151were a byte-for-byte repeat of:1148-:1149. Removed:1150-:1151.Judge — the sentence appears exactly once, in full, in order: PASS.
Ablation — re-inserting the duplicate pair (proved on disk: each line's count 1→2, blob
82ede38→22d30b9) turns that judge red (VERDICT=FAIL, exit 1) while the gantt suite stays green. The suite is not the judge for this leg; the explicit check is.#6259 — the deprecated
widthin the drawer default (commitae7898efb)widthis@deprecated [#2578 → size]in the spec that owns the shape, andresolveOverlayWidthgives an explicitwidthpriority oversize— so while the default spelled it, a gantt declaring nonavigationcould never be reached by the size buckets, and the deprecated branch stayed load-bearing on the path most gantts take.Dropping
widthwithout addingsizeremoves that branch at a measured zero-pixel change:resolveOverlayWidthreturnsundefined, andRecordDetailDrawer's ownwidthdefault supplies the byte-identicalmin(960px, 60vw).Why not
size: 'lg'The bucket is not equivalent. Measured on the real render path (gantt with no
navigation, drawer opened, asserting the resolved width — not aclassName, not "it renders"):size: 'lg'The shared 960px cap is real but reached at different viewports: 1600px for
min(960px, 60vw)vs 1043.5px forlg'smin(92vw, 960px). Below the cap the two take different proportions of the viewport — 60% vs 92%; on a phone the drawer would stop being a side panel. That is a real layout change across three renderers and is not made here — it stays with the maintainer on #6259 / #6303.The pin (new)
Nothing pinned this width before: a repo-wide search for
min(960px, 60vw)returned only producers, zero assertions, and the full 402-test gantt suite stayed identically green when the value was changed. Since the resolved width now comes fromRecordDetailDrawer's default, a later move of that default would propagate here invisibly — soObjectGantt.navWidthDefault.test.tsxpins both halves, which fail for different reasons:min(960px, 60vw)Ablation, both directions, each proved on disk (injected text and removed text grepped separately):
RecordDetailDrawer's own default (min(960px, 60vw)→min(800px, 50vw), blobda15724→323f315) → half 2 red, half 1 green.navConfig(blobae81c5c→e34659f) → half 1 red, half 2 green — the resolved string is identical, so half 2 cannot see it, which is precisely why half 1 exists.Restored under
trap ... EXIT INT TERMwith absolute paths;git diff HEAD --statempty and both blob hashes back to their HEAD values afterwards.plugin-calendar,plugin-kanban,RecordDetailDrawerand their render-site?? 'min(960px, 60vw)'fallbacks are deliberately untouched — that is #6303's surface, and #6303 is blocked behind the bucket decision.Verification at
ae7898efbpnpm exec vitest run packages/plugin-gantt→ 48 files / 404 tests passed (was 47/402; +1 file, +2 tests = the new pin)turbo run type-check --filter=@object-ui/plugin-gantt --force→ exit 0, 14/14 tasks (cache bypass, force executing— not a cached green). The package'stype-checkistsc --noEmit && tsc -p tsconfig.test.json, so the new test file is type-checked too.check-changeset-presence→ ✅ "Every one of them has an EMPTY frontmatter — declared as releasing nothing"check-changeset-no-major→ ✅ "No changeset declares amajorbump."check-changeset-fixed→ ✅ "All workspace packages are in the changeset fixed group."check-control-bytes→ ✅ "OK (scanned 5197 tracked text file(s))"check-vi-mock-specifiers→ ✅ OK ·check-shell-escape-residue→ ✅ OKpnpm lintexceeds the container's foreground cap (exit 124, still inapp-shell). Declared narrowing with its three proofs: ① CI'spnpm lintisturbo run lint, each package runningeslint ., and this PR touches exactly one package; ②eslint packages/plugin-gantt --format json→ 78 files, 0 errors (270 warnings; the 6 added by the new test areno-explicit-any, matching the neighbouring gantt tests); ③eslint.config.jsconfigures no type-aware linting, so no rule's verdict on an untouched file can depend on this diff. CI runs the full farm regardless.Generated by Claude Code