You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 0fb6f97
Browse filesBrowse the repository at this point in the historyBrowse files
fix(lint)!: withdraw absolute-colspan-discouraged — its premise was measured false and its recommendation measured worse than the thing it warned about (#17671)
* fix(lint): withdraw absolute-colspan-discouraged — its premise was measured false and its recommendation measured worse (#17328)
The rule fired on every authored `colSpan`, `colSpan: 1` included, and asserted
that a fixed span "only aligns at one width". Browser measurement at all three
surface widths the message names shows the renderer clamps the span to the
section's column count: overflow is 0px in every configuration, including
`colSpan: 4` in a 3-column section. The hint's recommended alternative,
`span: 'full'`, compiles to the same class as `colSpan: 4` and renders
pixel-identical to authoring nothing at the modal width.
With no authored colSpan shape left that misbehaves there was nothing to
re-ground, so the rule is withdrawn rather than narrowed. `colSpan` itself is
untouched and still parses.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
* chore(changeset): record the withdrawal of absolute-colspan-discouraged (#17328)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
---------
Co-authored-by: claude <noreply@anthropic.com>
fix(lint)!: `absolute-colspan-discouraged` is withdrawn — its premise was measured false in a browser, and the alternative it recommended measured worse than the thing it warned about (#17328)
6
+
7
+
<!-- adr-0087: not-required (no-migration-prescription) nothing an author writes moves: `FormField.colSpan` is untouched in `packages/spec`, still parses, and every stored form view keeps its shape and its rendering. The only surface that moves is one exported TypeScript rule-id constant in `@objectstack/lint` plus the advisory finding it named — neither has a metadata representation, so `objectstack migrate meta` has nothing to reach and the ledger serves nobody affected. -->
8
+
9
+
**BREAKING** — `@objectstack/lint` no longer exports `FORM_COLSPAN_ABSOLUTE`, and
10
+
`validateFormLayout` no longer emits the `absolute-colspan-discouraged` finding. A
11
+
TypeScript consumer that imported that constant (to suppress the rule, or to route it)
12
+
stops compiling on the import, and the compiler names the site — a more precise channel
13
+
than any release note. Authored metadata is untouched: `FormField.colSpan` is unchanged
14
+
and still valid.
15
+
16
+
The rule fired on **every** authored `colSpan`, `colSpan: 1` included, and asserted a
17
+
rendering consequence: the form's column count is derived per surface (mobile 1 / modal 2
18
+
/ page 3-4), so a fixed span "only aligns at one width". Measured in Chromium on a real
19
+
authored 3-column section at all three of the widths that sentence names (390 / 720 /
20
+
1700), that misalignment does not happen. The renderer emits one container-query-scoped
21
+
span class clamped to the section's declared column count, so the cell starts at a real
22
+
column boundary at every width and rendered overflow is 0px in every configuration —
23
+
including `colSpan: 4` in a 3-column section, the case that would overflow if the clamp
24
+
did not work. The clamp is precisely why the claim was false, and the rule's own file
25
+
already recorded the clamp a few lines above the claim.
26
+
27
+
The hint was the sharper defect. It steered authors to `span: 'full'`, which compiles to
28
+
the same class as `colSpan: 4` (`@2xl:col-span-3`) and measures byte-identically: the rule
29
+
warned about one spelling and recommended the other, and they are the same thing. At the
30
+
modal width `span: 'full'` renders pixel-identical to authoring nothing at all, so an
31
+
author who complied was left worse off than one who ignored it.
32
+
33
+
With no authored `colSpan` shape left that misbehaves there was nothing to re-ground, so
34
+
the rule is withdrawn rather than narrowed: `colSpan: 1` emits no class at all, a
35
+
`colSpan` within the column count renders exactly as authored, and one above it clamps.
36
+
Every test that pinned the rule's wording or its firing set was re-judged in place with
37
+
the reason recorded, never deleted, and each re-judged pin is paired with a live finding
38
+
on the same fixture so that a walk which stopped reaching the site could not pass as a
0 commit comments