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
25 changes: 25 additions & 0 deletions .changeset/drawer-bucket-pointer-ruling.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
---
---

Comment text only, zero-pixel: the record-drawer `size: 'lg'` bucket question is
recorded as ruled, and the three in-code pointers stop naming closed cards as its
open home.

`ObjectKanban`, `ObjectCalendar` and `ObjectGantt` each carried a comment saying
the bucket question "stays open" on objectui#6303 / objectui#6259. Both cards had
closed, so the pointer chain terminated on closed cards and the question it
pointed at was tracked nowhere. It has since been ruled: objectui#6584,
2026-08-27 — the record-navigation drawer stays on the CSS literal, with no
convergence on the `size: 'lg'` bucket, because that bucket (`min(92vw, 960px)`)
is up to 53% wider below a 1600px viewport and there was no demand for the
change.

The three comments now cite objectui#6584 and state the ruling and its date. The
measurement prose they carry (`min(92vw, 960px)` vs `min(960px, 60vw)`) is kept
verbatim — it is still true and it is the reason the ruling went the way it did.
`RecordDetailDrawer`'s `width` docblock, the single code home of the literal that
all three renderers fall through to, gains the same note so the record lives at
the line a future editor would actually change.

No published behaviour changes: no default, `width` expression, `size` prop or
runtime value is touched.
9 changes: 7 additions & 2 deletions packages/plugin-calendar/src/ObjectCalendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -478,8 +478,13 @@ export const ObjectCalendar: React.FC<ObjectCalendarComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 9 additions & 0 deletions packages/plugin-detail/src/RecordDetailDrawer.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -77,6 +77,15 @@ export interface RecordDetailDrawerProps {
* `min(960px, 60vw)` which fills ~60% of typical desktop viewports
* (the prior `max-w-2xl` cap felt cramped on wide screens).
*
* That default is the single code home of the literal repo-wide: the
* gantt, kanban and calendar renderers deliberately spell no width and
* let `undefined` fall through to here. Converging it on the `size: 'lg'`
* bucket (`min(92vw, 960px)` — up to 53% wider below a 1600px viewport)
* was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
* literal; no bucket convergence. The question is CLOSED, not open. A
* future move to the bucket is a fresh ruling, with visual-regression
* evidence across all four surfaces in one stroke.
*
* Note: when `resizable` is true (the default), this is only used
* as the initial width — the user's drag-resized width takes over
* and is persisted to localStorage keyed by `objectName`.
Expand Down
10 changes: 8 additions & 2 deletions packages/plugin-gantt/src/ObjectGantt.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -1322,8 +1322,14 @@ export const ObjectGantt: React.FC<ObjectGanttProps> = ({
// Deliberately NOT converged on `size: 'lg'`: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >=
// 1600px and is up to 53% wider below it. Whether the renderers should move
// to the bucket is open (#6259), and spans kanban/calendar/RecordDetailDrawer
// as one decision (#6303).
// to the bucket was asked here (#6259) and then carried across
// kanban/calendar/RecordDetailDrawer as one decision (#6303); both of those
// cards closed on their `width` half, and the bucket half was RULED AGAINST
// on its own card: objectui#6584, 2026-08-27 — stays on the CSS literal; no
// bucket convergence. All four surfaces keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling, with
// visual-regression evidence across all four surfaces in one stroke.
const navConfig = schema.navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 7 additions & 2 deletions packages/plugin-kanban/src/ObjectKanban.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -708,8 +708,13 @@ export const ObjectKanban: React.FC<ObjectKanbanComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
// When this kanban is embedded in an ObjectView, the parent provides
// `onRowClick`/`onCardClick` and owns the unified record-detail overlay.
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
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
25 changes: 25 additions & 0 deletions .changeset/drawer-bucket-pointer-ruling.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
---
---

Comment text only, zero-pixel: the record-drawer `size: 'lg'` bucket question is
recorded as ruled, and the three in-code pointers stop naming closed cards as its
open home.

`ObjectKanban`, `ObjectCalendar` and `ObjectGantt` each carried a comment saying
the bucket question "stays open" on objectui#6303 / objectui#6259. Both cards had
closed, so the pointer chain terminated on closed cards and the question it
pointed at was tracked nowhere. It has since been ruled: objectui#6584,
2026-08-27 — the record-navigation drawer stays on the CSS literal, with no
convergence on the `size: 'lg'` bucket, because that bucket (`min(92vw, 960px)`)
is up to 53% wider below a 1600px viewport and there was no demand for the
change.

The three comments now cite objectui#6584 and state the ruling and its date. The
measurement prose they carry (`min(92vw, 960px)` vs `min(960px, 60vw)`) is kept
verbatim — it is still true and it is the reason the ruling went the way it did.
`RecordDetailDrawer`'s `width` docblock, the single code home of the literal that
all three renderers fall through to, gains the same note so the record lives at
the line a future editor would actually change.

No published behaviour changes: no default, `width` expression, `size` prop or
runtime value is touched.
9 changes: 7 additions & 2 deletions packages/plugin-calendar/src/ObjectCalendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -478,8 +478,13 @@ export const ObjectCalendar: React.FC<ObjectCalendarComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 9 additions & 0 deletions packages/plugin-detail/src/RecordDetailDrawer.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -77,6 +77,15 @@ export interface RecordDetailDrawerProps {
* `min(960px, 60vw)` which fills ~60% of typical desktop viewports
* (the prior `max-w-2xl` cap felt cramped on wide screens).
*
* That default is the single code home of the literal repo-wide: the
* gantt, kanban and calendar renderers deliberately spell no width and
* let `undefined` fall through to here. Converging it on the `size: 'lg'`
* bucket (`min(92vw, 960px)` — up to 53% wider below a 1600px viewport)
* was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
* literal; no bucket convergence. The question is CLOSED, not open. A
* future move to the bucket is a fresh ruling, with visual-regression
* evidence across all four surfaces in one stroke.
*
* Note: when `resizable` is true (the default), this is only used
* as the initial width — the user's drag-resized width takes over
* and is persisted to localStorage keyed by `objectName`.
Expand Down
10 changes: 8 additions & 2 deletions packages/plugin-gantt/src/ObjectGantt.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -1322,8 +1322,14 @@ export const ObjectGantt: React.FC<ObjectGanttProps> = ({
// Deliberately NOT converged on `size: 'lg'`: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >=
// 1600px and is up to 53% wider below it. Whether the renderers should move
// to the bucket is open (#6259), and spans kanban/calendar/RecordDetailDrawer
// as one decision (#6303).
// to the bucket was asked here (#6259) and then carried across
// kanban/calendar/RecordDetailDrawer as one decision (#6303); both of those
// cards closed on their `width` half, and the bucket half was RULED AGAINST
// on its own card: objectui#6584, 2026-08-27 — stays on the CSS literal; no
// bucket convergence. All four surfaces keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling, with
// visual-regression evidence across all four surfaces in one stroke.
const navConfig = schema.navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 7 additions & 2 deletions packages/plugin-kanban/src/ObjectKanban.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -708,8 +708,13 @@ export const ObjectKanban: React.FC<ObjectKanbanComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
// When this kanban is embedded in an ObjectView, the parent provides
// `onRowClick`/`onCardClick` and owns the unified record-detail overlay.
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
25 changes: 25 additions & 0 deletions .changeset/drawer-bucket-pointer-ruling.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
---
---

Comment text only, zero-pixel: the record-drawer `size: 'lg'` bucket question is
recorded as ruled, and the three in-code pointers stop naming closed cards as its
open home.

`ObjectKanban`, `ObjectCalendar` and `ObjectGantt` each carried a comment saying
the bucket question "stays open" on objectui#6303 / objectui#6259. Both cards had
closed, so the pointer chain terminated on closed cards and the question it
pointed at was tracked nowhere. It has since been ruled: objectui#6584,
2026-08-27 — the record-navigation drawer stays on the CSS literal, with no
convergence on the `size: 'lg'` bucket, because that bucket (`min(92vw, 960px)`)
is up to 53% wider below a 1600px viewport and there was no demand for the
change.

The three comments now cite objectui#6584 and state the ruling and its date. The
measurement prose they carry (`min(92vw, 960px)` vs `min(960px, 60vw)`) is kept
verbatim — it is still true and it is the reason the ruling went the way it did.
`RecordDetailDrawer`'s `width` docblock, the single code home of the literal that
all three renderers fall through to, gains the same note so the record lives at
the line a future editor would actually change.

No published behaviour changes: no default, `width` expression, `size` prop or
runtime value is touched.
9 changes: 7 additions & 2 deletions packages/plugin-calendar/src/ObjectCalendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -478,8 +478,13 @@ export const ObjectCalendar: React.FC<ObjectCalendarComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 9 additions & 0 deletions packages/plugin-detail/src/RecordDetailDrawer.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -77,6 +77,15 @@ export interface RecordDetailDrawerProps {
* `min(960px, 60vw)` which fills ~60% of typical desktop viewports
* (the prior `max-w-2xl` cap felt cramped on wide screens).
*
* That default is the single code home of the literal repo-wide: the
* gantt, kanban and calendar renderers deliberately spell no width and
* let `undefined` fall through to here. Converging it on the `size: 'lg'`
* bucket (`min(92vw, 960px)` — up to 53% wider below a 1600px viewport)
* was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
* literal; no bucket convergence. The question is CLOSED, not open. A
* future move to the bucket is a fresh ruling, with visual-regression
* evidence across all four surfaces in one stroke.
*
* Note: when `resizable` is true (the default), this is only used
* as the initial width — the user's drag-resized width takes over
* and is persisted to localStorage keyed by `objectName`.
Expand Down
10 changes: 8 additions & 2 deletions packages/plugin-gantt/src/ObjectGantt.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -1322,8 +1322,14 @@ export const ObjectGantt: React.FC<ObjectGanttProps> = ({
// Deliberately NOT converged on `size: 'lg'`: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >=
// 1600px and is up to 53% wider below it. Whether the renderers should move
// to the bucket is open (#6259), and spans kanban/calendar/RecordDetailDrawer
// as one decision (#6303).
// to the bucket was asked here (#6259) and then carried across
// kanban/calendar/RecordDetailDrawer as one decision (#6303); both of those
// cards closed on their `width` half, and the bucket half was RULED AGAINST
// on its own card: objectui#6584, 2026-08-27 — stays on the CSS literal; no
// bucket convergence. All four surfaces keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling, with
// visual-regression evidence across all four surfaces in one stroke.
const navConfig = schema.navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 7 additions & 2 deletions packages/plugin-kanban/src/ObjectKanban.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -708,8 +708,13 @@ export const ObjectKanban: React.FC<ObjectKanbanComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
// When this kanban is embedded in an ObjectView, the parent provides
// `onRowClick`/`onCardClick` and owns the unified record-detail overlay.
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
25 changes: 25 additions & 0 deletions .changeset/drawer-bucket-pointer-ruling.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
---
---

Comment text only, zero-pixel: the record-drawer `size: 'lg'` bucket question is
recorded as ruled, and the three in-code pointers stop naming closed cards as its
open home.

`ObjectKanban`, `ObjectCalendar` and `ObjectGantt` each carried a comment saying
the bucket question "stays open" on objectui#6303 / objectui#6259. Both cards had
closed, so the pointer chain terminated on closed cards and the question it
pointed at was tracked nowhere. It has since been ruled: objectui#6584,
2026-08-27 — the record-navigation drawer stays on the CSS literal, with no
convergence on the `size: 'lg'` bucket, because that bucket (`min(92vw, 960px)`)
is up to 53% wider below a 1600px viewport and there was no demand for the
change.

The three comments now cite objectui#6584 and state the ruling and its date. The
measurement prose they carry (`min(92vw, 960px)` vs `min(960px, 60vw)`) is kept
verbatim — it is still true and it is the reason the ruling went the way it did.
`RecordDetailDrawer`'s `width` docblock, the single code home of the literal that
all three renderers fall through to, gains the same note so the record lives at
the line a future editor would actually change.

No published behaviour changes: no default, `width` expression, `size` prop or
runtime value is touched.
9 changes: 7 additions & 2 deletions packages/plugin-calendar/src/ObjectCalendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -478,8 +478,13 @@ export const ObjectCalendar: React.FC<ObjectCalendarComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 9 additions & 0 deletions packages/plugin-detail/src/RecordDetailDrawer.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -77,6 +77,15 @@ export interface RecordDetailDrawerProps {
* `min(960px, 60vw)` which fills ~60% of typical desktop viewports
* (the prior `max-w-2xl` cap felt cramped on wide screens).
*
* That default is the single code home of the literal repo-wide: the
* gantt, kanban and calendar renderers deliberately spell no width and
* let `undefined` fall through to here. Converging it on the `size: 'lg'`
* bucket (`min(92vw, 960px)` — up to 53% wider below a 1600px viewport)
* was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
* literal; no bucket convergence. The question is CLOSED, not open. A
* future move to the bucket is a fresh ruling, with visual-regression
* evidence across all four surfaces in one stroke.
*
* Note: when `resizable` is true (the default), this is only used
* as the initial width — the user's drag-resized width takes over
* and is persisted to localStorage keyed by `objectName`.
Expand Down
10 changes: 8 additions & 2 deletions packages/plugin-gantt/src/ObjectGantt.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -1322,8 +1322,14 @@ export const ObjectGantt: React.FC<ObjectGanttProps> = ({
// Deliberately NOT converged on `size: 'lg'`: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >=
// 1600px and is up to 53% wider below it. Whether the renderers should move
// to the bucket is open (#6259), and spans kanban/calendar/RecordDetailDrawer
// as one decision (#6303).
// to the bucket was asked here (#6259) and then carried across
// kanban/calendar/RecordDetailDrawer as one decision (#6303); both of those
// cards closed on their `width` half, and the bucket half was RULED AGAINST
// on its own card: objectui#6584, 2026-08-27 — stays on the CSS literal; no
// bucket convergence. All four surfaces keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling, with
// visual-regression evidence across all four surfaces in one stroke.
const navConfig = schema.navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 7 additions & 2 deletions packages/plugin-kanban/src/ObjectKanban.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -708,8 +708,13 @@ export const ObjectKanban: React.FC<ObjectKanbanComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
// When this kanban is embedded in an ObjectView, the parent provides
// `onRowClick`/`onCardClick` and owns the unified record-detail overlay.
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
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
25 changes: 25 additions & 0 deletions .changeset/drawer-bucket-pointer-ruling.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
---
---

Comment text only, zero-pixel: the record-drawer `size: 'lg'` bucket question is
recorded as ruled, and the three in-code pointers stop naming closed cards as its
open home.

`ObjectKanban`, `ObjectCalendar` and `ObjectGantt` each carried a comment saying
the bucket question "stays open" on objectui#6303 / objectui#6259. Both cards had
closed, so the pointer chain terminated on closed cards and the question it
pointed at was tracked nowhere. It has since been ruled: objectui#6584,
2026-08-27 — the record-navigation drawer stays on the CSS literal, with no
convergence on the `size: 'lg'` bucket, because that bucket (`min(92vw, 960px)`)
is up to 53% wider below a 1600px viewport and there was no demand for the
change.

The three comments now cite objectui#6584 and state the ruling and its date. The
measurement prose they carry (`min(92vw, 960px)` vs `min(960px, 60vw)`) is kept
verbatim — it is still true and it is the reason the ruling went the way it did.
`RecordDetailDrawer`'s `width` docblock, the single code home of the literal that
all three renderers fall through to, gains the same note so the record lives at
the line a future editor would actually change.

No published behaviour changes: no default, `width` expression, `size` prop or
runtime value is touched.
9 changes: 7 additions & 2 deletions packages/plugin-calendar/src/ObjectCalendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -478,8 +478,13 @@ export const ObjectCalendar: React.FC<ObjectCalendarComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 9 additions & 0 deletions packages/plugin-detail/src/RecordDetailDrawer.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -77,6 +77,15 @@ export interface RecordDetailDrawerProps {
* `min(960px, 60vw)` which fills ~60% of typical desktop viewports
* (the prior `max-w-2xl` cap felt cramped on wide screens).
*
* That default is the single code home of the literal repo-wide: the
* gantt, kanban and calendar renderers deliberately spell no width and
* let `undefined` fall through to here. Converging it on the `size: 'lg'`
* bucket (`min(92vw, 960px)` — up to 53% wider below a 1600px viewport)
* was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
* literal; no bucket convergence. The question is CLOSED, not open. A
* future move to the bucket is a fresh ruling, with visual-regression
* evidence across all four surfaces in one stroke.
*
* Note: when `resizable` is true (the default), this is only used
* as the initial width — the user's drag-resized width takes over
* and is persisted to localStorage keyed by `objectName`.
Expand Down
10 changes: 8 additions & 2 deletions packages/plugin-gantt/src/ObjectGantt.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -1322,8 +1322,14 @@ export const ObjectGantt: React.FC<ObjectGanttProps> = ({
// Deliberately NOT converged on `size: 'lg'`: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >=
// 1600px and is up to 53% wider below it. Whether the renderers should move
// to the bucket is open (#6259), and spans kanban/calendar/RecordDetailDrawer
// as one decision (#6303).
// to the bucket was asked here (#6259) and then carried across
// kanban/calendar/RecordDetailDrawer as one decision (#6303); both of those
// cards closed on their `width` half, and the bucket half was RULED AGAINST
// on its own card: objectui#6584, 2026-08-27 — stays on the CSS literal; no
// bucket convergence. All four surfaces keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling, with
// visual-regression evidence across all four surfaces in one stroke.
const navConfig = schema.navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 7 additions & 2 deletions packages/plugin-kanban/src/ObjectKanban.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -708,8 +708,13 @@ export const ObjectKanban: React.FC<ObjectKanbanComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
// When this kanban is embedded in an ObjectView, the parent provides
// `onRowClick`/`onCardClick` and owns the unified record-detail overlay.
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
25 changes: 25 additions & 0 deletions .changeset/drawer-bucket-pointer-ruling.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
---
---

Comment text only, zero-pixel: the record-drawer `size: 'lg'` bucket question is
recorded as ruled, and the three in-code pointers stop naming closed cards as its
open home.

`ObjectKanban`, `ObjectCalendar` and `ObjectGantt` each carried a comment saying
the bucket question "stays open" on objectui#6303 / objectui#6259. Both cards had
closed, so the pointer chain terminated on closed cards and the question it
pointed at was tracked nowhere. It has since been ruled: objectui#6584,
2026-08-27 — the record-navigation drawer stays on the CSS literal, with no
convergence on the `size: 'lg'` bucket, because that bucket (`min(92vw, 960px)`)
is up to 53% wider below a 1600px viewport and there was no demand for the
change.

The three comments now cite objectui#6584 and state the ruling and its date. The
measurement prose they carry (`min(92vw, 960px)` vs `min(960px, 60vw)`) is kept
verbatim — it is still true and it is the reason the ruling went the way it did.
`RecordDetailDrawer`'s `width` docblock, the single code home of the literal that
all three renderers fall through to, gains the same note so the record lives at
the line a future editor would actually change.

No published behaviour changes: no default, `width` expression, `size` prop or
runtime value is touched.
9 changes: 7 additions & 2 deletions packages/plugin-calendar/src/ObjectCalendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -478,8 +478,13 @@ export const ObjectCalendar: React.FC<ObjectCalendarComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 9 additions & 0 deletions packages/plugin-detail/src/RecordDetailDrawer.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -77,6 +77,15 @@ export interface RecordDetailDrawerProps {
* `min(960px, 60vw)` which fills ~60% of typical desktop viewports
* (the prior `max-w-2xl` cap felt cramped on wide screens).
*
* That default is the single code home of the literal repo-wide: the
* gantt, kanban and calendar renderers deliberately spell no width and
* let `undefined` fall through to here. Converging it on the `size: 'lg'`
* bucket (`min(92vw, 960px)` — up to 53% wider below a 1600px viewport)
* was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
* literal; no bucket convergence. The question is CLOSED, not open. A
* future move to the bucket is a fresh ruling, with visual-regression
* evidence across all four surfaces in one stroke.
*
* Note: when `resizable` is true (the default), this is only used
* as the initial width — the user's drag-resized width takes over
* and is persisted to localStorage keyed by `objectName`.
Expand Down
10 changes: 8 additions & 2 deletions packages/plugin-gantt/src/ObjectGantt.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -1322,8 +1322,14 @@ export const ObjectGantt: React.FC<ObjectGanttProps> = ({
// Deliberately NOT converged on `size: 'lg'`: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >=
// 1600px and is up to 53% wider below it. Whether the renderers should move
// to the bucket is open (#6259), and spans kanban/calendar/RecordDetailDrawer
// as one decision (#6303).
// to the bucket was asked here (#6259) and then carried across
// kanban/calendar/RecordDetailDrawer as one decision (#6303); both of those
// cards closed on their `width` half, and the bucket half was RULED AGAINST
// on its own card: objectui#6584, 2026-08-27 — stays on the CSS literal; no
// bucket convergence. All four surfaces keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling, with
// visual-regression evidence across all four surfaces in one stroke.
const navConfig = schema.navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 7 additions & 2 deletions packages/plugin-kanban/src/ObjectKanban.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -708,8 +708,13 @@ export const ObjectKanban: React.FC<ObjectKanbanComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
// When this kanban is embedded in an ObjectView, the parent provides
// `onRowClick`/`onCardClick` and owns the unified record-detail overlay.
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
25 changes: 25 additions & 0 deletions .changeset/drawer-bucket-pointer-ruling.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
---
---

Comment text only, zero-pixel: the record-drawer `size: 'lg'` bucket question is
recorded as ruled, and the three in-code pointers stop naming closed cards as its
open home.

`ObjectKanban`, `ObjectCalendar` and `ObjectGantt` each carried a comment saying
the bucket question "stays open" on objectui#6303 / objectui#6259. Both cards had
closed, so the pointer chain terminated on closed cards and the question it
pointed at was tracked nowhere. It has since been ruled: objectui#6584,
2026-08-27 — the record-navigation drawer stays on the CSS literal, with no
convergence on the `size: 'lg'` bucket, because that bucket (`min(92vw, 960px)`)
is up to 53% wider below a 1600px viewport and there was no demand for the
change.

The three comments now cite objectui#6584 and state the ruling and its date. The
measurement prose they carry (`min(92vw, 960px)` vs `min(960px, 60vw)`) is kept
verbatim — it is still true and it is the reason the ruling went the way it did.
`RecordDetailDrawer`'s `width` docblock, the single code home of the literal that
all three renderers fall through to, gains the same note so the record lives at
the line a future editor would actually change.

No published behaviour changes: no default, `width` expression, `size` prop or
runtime value is touched.
9 changes: 7 additions & 2 deletions packages/plugin-calendar/src/ObjectCalendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -478,8 +478,13 @@ export const ObjectCalendar: React.FC<ObjectCalendarComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 9 additions & 0 deletions packages/plugin-detail/src/RecordDetailDrawer.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -77,6 +77,15 @@ export interface RecordDetailDrawerProps {
* `min(960px, 60vw)` which fills ~60% of typical desktop viewports
* (the prior `max-w-2xl` cap felt cramped on wide screens).
*
* That default is the single code home of the literal repo-wide: the
* gantt, kanban and calendar renderers deliberately spell no width and
* let `undefined` fall through to here. Converging it on the `size: 'lg'`
* bucket (`min(92vw, 960px)` — up to 53% wider below a 1600px viewport)
* was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
* literal; no bucket convergence. The question is CLOSED, not open. A
* future move to the bucket is a fresh ruling, with visual-regression
* evidence across all four surfaces in one stroke.
*
* Note: when `resizable` is true (the default), this is only used
* as the initial width — the user's drag-resized width takes over
* and is persisted to localStorage keyed by `objectName`.
Expand Down
10 changes: 8 additions & 2 deletions packages/plugin-gantt/src/ObjectGantt.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -1322,8 +1322,14 @@ export const ObjectGantt: React.FC<ObjectGanttProps> = ({
// Deliberately NOT converged on `size: 'lg'`: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >=
// 1600px and is up to 53% wider below it. Whether the renderers should move
// to the bucket is open (#6259), and spans kanban/calendar/RecordDetailDrawer
// as one decision (#6303).
// to the bucket was asked here (#6259) and then carried across
// kanban/calendar/RecordDetailDrawer as one decision (#6303); both of those
// cards closed on their `width` half, and the bucket half was RULED AGAINST
// on its own card: objectui#6584, 2026-08-27 — stays on the CSS literal; no
// bucket convergence. All four surfaces keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling, with
// visual-regression evidence across all four surfaces in one stroke.
const navConfig = schema.navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 7 additions & 2 deletions packages/plugin-kanban/src/ObjectKanban.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -708,8 +708,13 @@ export const ObjectKanban: React.FC<ObjectKanbanComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
// When this kanban is embedded in an ObjectView, the parent provides
// `onRowClick`/`onCardClick` and owns the unified record-detail overlay.
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
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
25 changes: 25 additions & 0 deletions .changeset/drawer-bucket-pointer-ruling.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
---
---

Comment text only, zero-pixel: the record-drawer `size: 'lg'` bucket question is
recorded as ruled, and the three in-code pointers stop naming closed cards as its
open home.

`ObjectKanban`, `ObjectCalendar` and `ObjectGantt` each carried a comment saying
the bucket question "stays open" on objectui#6303 / objectui#6259. Both cards had
closed, so the pointer chain terminated on closed cards and the question it
pointed at was tracked nowhere. It has since been ruled: objectui#6584,
2026-08-27 — the record-navigation drawer stays on the CSS literal, with no
convergence on the `size: 'lg'` bucket, because that bucket (`min(92vw, 960px)`)
is up to 53% wider below a 1600px viewport and there was no demand for the
change.

The three comments now cite objectui#6584 and state the ruling and its date. The
measurement prose they carry (`min(92vw, 960px)` vs `min(960px, 60vw)`) is kept
verbatim — it is still true and it is the reason the ruling went the way it did.
`RecordDetailDrawer`'s `width` docblock, the single code home of the literal that
all three renderers fall through to, gains the same note so the record lives at
the line a future editor would actually change.

No published behaviour changes: no default, `width` expression, `size` prop or
runtime value is touched.
9 changes: 7 additions & 2 deletions packages/plugin-calendar/src/ObjectCalendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -478,8 +478,13 @@ export const ObjectCalendar: React.FC<ObjectCalendarComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 9 additions & 0 deletions packages/plugin-detail/src/RecordDetailDrawer.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -77,6 +77,15 @@ export interface RecordDetailDrawerProps {
* `min(960px, 60vw)` which fills ~60% of typical desktop viewports
* (the prior `max-w-2xl` cap felt cramped on wide screens).
*
* That default is the single code home of the literal repo-wide: the
* gantt, kanban and calendar renderers deliberately spell no width and
* let `undefined` fall through to here. Converging it on the `size: 'lg'`
* bucket (`min(92vw, 960px)` — up to 53% wider below a 1600px viewport)
* was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
* literal; no bucket convergence. The question is CLOSED, not open. A
* future move to the bucket is a fresh ruling, with visual-regression
* evidence across all four surfaces in one stroke.
*
* Note: when `resizable` is true (the default), this is only used
* as the initial width — the user's drag-resized width takes over
* and is persisted to localStorage keyed by `objectName`.
Expand Down
10 changes: 8 additions & 2 deletions packages/plugin-gantt/src/ObjectGantt.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -1322,8 +1322,14 @@ export const ObjectGantt: React.FC<ObjectGanttProps> = ({
// Deliberately NOT converged on `size: 'lg'`: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >=
// 1600px and is up to 53% wider below it. Whether the renderers should move
// to the bucket is open (#6259), and spans kanban/calendar/RecordDetailDrawer
// as one decision (#6303).
// to the bucket was asked here (#6259) and then carried across
// kanban/calendar/RecordDetailDrawer as one decision (#6303); both of those
// cards closed on their `width` half, and the bucket half was RULED AGAINST
// on its own card: objectui#6584, 2026-08-27 — stays on the CSS literal; no
// bucket convergence. All four surfaces keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling, with
// visual-regression evidence across all four surfaces in one stroke.
const navConfig = schema.navigation ?? { mode: 'drawer' };
const navIsOverlay = navConfig.mode === 'drawer' || navConfig.mode === 'modal' || navConfig.mode === 'split' || navConfig.mode === 'popover';
const navigation = useNavigationOverlay({
Expand Down
9 changes: 7 additions & 2 deletions packages/plugin-kanban/src/ObjectKanban.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -708,8 +708,13 @@ export const ObjectKanban: React.FC<ObjectKanbanComponentProps> = ({
//
// Deliberately NOT converged on `size: 'lg'` either: that bucket is
// `min(92vw, 960px)`, which agrees with the above only at viewport >= 1600px
// and is up to 53% wider below it. That move is a real behaviour change and
// stays open on #6303 for a human ruling.
// and is up to 53% wider below it. That move is a real behaviour change, and
// it was RULED AGAINST: objectui#6584, 2026-08-27 — stays on the CSS
// literal; no bucket convergence. All four surfaces (gantt, kanban,
// calendar, RecordDetailDrawer) keep today's pixels. The question is
// CLOSED, not open — do not re-open it as a cleanup. If bucket-vocabulary
// unification ever becomes a product direction that is a fresh ruling,
// with visual-regression evidence across all four surfaces in one stroke.
const navConfig = (schema as any).navigation ?? { mode: 'drawer' };
// When this kanban is embedded in an ObjectView, the parent provides
// `onRowClick`/`onCardClick` and owns the unified record-detail overlay.
Expand Down
Loading