EHS-Studio Claude Sonnet 5.5 commited on
Commit
0bf5df9
·
1 Parent(s): c0475bd

v0.16.2: DSSL.lint css-loses skips dssl build output

Browse files

The built stylesheet's reset sits under the engine on purpose, so it is not a conflict. The site's docs page
went from 4,314 findings to none from its own CSS.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

GUIDE.md CHANGED
@@ -950,7 +950,7 @@ and listed, so the file you get always compiles.
950
  ```js
951
  import { DSSL } from '/dssl/index.js' // or just use window.DSSL after boot
952
 
953
- DSSL.version // "0.16.1": a string, not a function
954
  DSSL.compile(source) // { ok, errors, warnings, stats, doc }: parse and resolve, no DOM
955
  DSSL.apply(source, { name, scope, replace })
956
  await DSSL.load(['a.dssl', 'b.dssl'])
@@ -985,7 +985,7 @@ Three ways to get it:
985
 
986
  1. VSCodium: open the Extensions tab, search "DSSL" and install. It is on Open VSX:
987
  https://open-vsx.org/extension/ehs-studio/dssl-vscode
988
- 2. VS Code: download `dssl-vscode/dssl-vscode-0.16.1.vsix` from the repo files, then
989
  Extensions panel, `...`, Install from VSIX. (The Microsoft Marketplace listing is not published yet.)
990
  3. Build it yourself: `cd dssl-vscode && npx @vscode/vsce package --no-dependencies`.
991
 
 
950
  ```js
951
  import { DSSL } from '/dssl/index.js' // or just use window.DSSL after boot
952
 
953
+ DSSL.version // "0.16.2": a string, not a function
954
  DSSL.compile(source) // { ok, errors, warnings, stats, doc }: parse and resolve, no DOM
955
  DSSL.apply(source, { name, scope, replace })
956
  await DSSL.load(['a.dssl', 'b.dssl'])
 
985
 
986
  1. VSCodium: open the Extensions tab, search "DSSL" and install. It is on Open VSX:
987
  https://open-vsx.org/extension/ehs-studio/dssl-vscode
988
+ 2. VS Code: download `dssl-vscode/dssl-vscode-0.16.2.vsix` from the repo files, then
989
  Extensions panel, `...`, Install from VSIX. (The Microsoft Marketplace listing is not published yet.)
990
  3. Build it yourself: `cd dssl-vscode && npx @vscode/vsce package --no-dependencies`.
991
 
PARITY.md CHANGED
@@ -62,6 +62,10 @@ so the boundary is explicit, not folklore.
62
  - loud errors with did-you-mean, and a warnings channel for cascade-order footguns
63
  - `freeze()` / `unfreeze()`: a live engine that can be parked at zero cost
64
 
 
 
 
 
65
  ## v0.16.1
66
 
67
  `DSSL.lint`'s `css-loses` ignores a CSS rule whose value is the same as the inline value DSSL wrote (found on this site, which ships compiled CSS and runs the engine: 4,314 false findings on the docs page).
 
62
  - loud errors with did-you-mean, and a warnings channel for cascade-order footguns
63
  - `freeze()` / `unfreeze()`: a live engine that can be parked at zero cost
64
 
65
+ ## v0.16.2
66
+
67
+ `DSSL.lint`'s `css-loses` skips the output of `dssl build` (recognised by its `@layer tokens, base, components, utilities, pin` statement), because its reset is built to sit under the engine. The docs page of this site went from 4,314 false findings (0.16.0), to 111 (0.16.1), to none from its own CSS.
68
+
69
  ## v0.16.1
70
 
71
  `DSSL.lint`'s `css-loses` ignores a CSS rule whose value is the same as the inline value DSSL wrote (found on this site, which ships compiled CSS and runs the engine: 4,314 false findings on the docs page).
README.md CHANGED
@@ -68,7 +68,7 @@ Both drop a `dssl-engine/` folder next to you: the engine, a starter token set,
68
 
69
  Prefer to click: [dssl-engine.zip](https://dssl-sable.vercel.app/dssl-engine.zip) or [dssl-engine.tar.gz](https://dssl-sable.vercel.app/dssl-engine.tar.gz). Same package, straight from the browser.
70
 
71
- Writing your own .dssl? The official editor extension (`ehs-studio.dssl-vscode`) puts the real compiler in your editor: the squiggles are the same errors the browser console prints, completions come from your own token registry, and hovers explain the semantic vocabulary. One package for VS Code and VSCodium (same extension API). In VSCodium, search "DSSL" in the Extensions tab (it is on Open VSX: https://open-vsx.org/extension/ehs-studio/dssl-vscode). In VS Code, download `dssl-vscode/dssl-vscode-0.16.1.vsix` from the repo files, then Extensions panel -> ... -> Install from VSIX. See `dssl-vscode/PUBLISHING.md` for publishing.
72
 
73
  AI agents and machine reviewers: this repo ships `llms.txt` (dense, structured facts), `AGENTS.md` (how to work on the codebase) and `PARITY.md` (the honest feature matrix against CSS). The site serves the same `llms.txt` at https://dssl-sable.vercel.app/llms.txt
74
 
@@ -470,7 +470,7 @@ await DSSL.lint(root) // contrast against the real background,
470
  DSSL.play(el, 'boing', opts) // a one-shot motion from JS, as a promise
471
  DSSL.motion('full') // run every motion whatever the system asks for
472
  DSSL.auraZ(20) // where the aura canvas sits in the stack
473
- DSSL.version // "0.16.1", a string
474
  ```
475
 
476
  Auto-boot picks up every `link[rel="stylesheet/dssl"]` and `style[type="text/dssl"]`, applies them, and fires `dssl-ready` on `window`. `<html data-dssl-reset>` enables the small built-in reset.
@@ -546,7 +546,7 @@ const rep = DSSL.explain(document.querySelector('.doc-card'))
546
 
547
  The matcher also pre-filters every rule through a cheap class/tag/id gate extracted from the selector's rightmost compound, so a recompute skips obvious non-matches instead of asking the browser rule by rule. The gate only ever says no; anything it does not fully understand falls back to native matching.
548
 
549
- ## What works today (v0.16.1)
550
 
551
  - the full selector surface, including `:nth-child`, `:not`, `:is`, `:where`, `:has`
552
  - flexbox and grid with `row:` / `column:` / `grid:` / `stack:` / `center:` sugar, place words now own an axis (`between` is main-axis, `stretch` is cross-axis) and conflicts warn instead of silently overwriting
@@ -586,7 +586,7 @@ The matcher also pre-filters every rule through a cheap class/tag/id gate extrac
586
 
587
  ## Status
588
 
589
- v0.16.1, experimental, moving fast. The language grows whenever the site needs something it cannot express yet, so the site doubles as the test suite, and the docs examples are rendered and asserted in a real browser, so the guide cannot lie. Honest ledger: great for creative sites, prototypes, docs, playgrounds and internal tools; when a page must work without JavaScript, build the static subset with `dssl build` or pick another tool for that page. Freeze makes big static pages viable; live interaction is what the engine is for.
590
 
591
  ## License
592
 
 
68
 
69
  Prefer to click: [dssl-engine.zip](https://dssl-sable.vercel.app/dssl-engine.zip) or [dssl-engine.tar.gz](https://dssl-sable.vercel.app/dssl-engine.tar.gz). Same package, straight from the browser.
70
 
71
+ Writing your own .dssl? The official editor extension (`ehs-studio.dssl-vscode`) puts the real compiler in your editor: the squiggles are the same errors the browser console prints, completions come from your own token registry, and hovers explain the semantic vocabulary. One package for VS Code and VSCodium (same extension API). In VSCodium, search "DSSL" in the Extensions tab (it is on Open VSX: https://open-vsx.org/extension/ehs-studio/dssl-vscode). In VS Code, download `dssl-vscode/dssl-vscode-0.16.2.vsix` from the repo files, then Extensions panel -> ... -> Install from VSIX. See `dssl-vscode/PUBLISHING.md` for publishing.
72
 
73
  AI agents and machine reviewers: this repo ships `llms.txt` (dense, structured facts), `AGENTS.md` (how to work on the codebase) and `PARITY.md` (the honest feature matrix against CSS). The site serves the same `llms.txt` at https://dssl-sable.vercel.app/llms.txt
74
 
 
470
  DSSL.play(el, 'boing', opts) // a one-shot motion from JS, as a promise
471
  DSSL.motion('full') // run every motion whatever the system asks for
472
  DSSL.auraZ(20) // where the aura canvas sits in the stack
473
+ DSSL.version // "0.16.2", a string
474
  ```
475
 
476
  Auto-boot picks up every `link[rel="stylesheet/dssl"]` and `style[type="text/dssl"]`, applies them, and fires `dssl-ready` on `window`. `<html data-dssl-reset>` enables the small built-in reset.
 
546
 
547
  The matcher also pre-filters every rule through a cheap class/tag/id gate extracted from the selector's rightmost compound, so a recompute skips obvious non-matches instead of asking the browser rule by rule. The gate only ever says no; anything it does not fully understand falls back to native matching.
548
 
549
+ ## What works today (v0.16.2)
550
 
551
  - the full selector surface, including `:nth-child`, `:not`, `:is`, `:where`, `:has`
552
  - flexbox and grid with `row:` / `column:` / `grid:` / `stack:` / `center:` sugar, place words now own an axis (`between` is main-axis, `stretch` is cross-axis) and conflicts warn instead of silently overwriting
 
586
 
587
  ## Status
588
 
589
+ v0.16.2, experimental, moving fast. The language grows whenever the site needs something it cannot express yet, so the site doubles as the test suite, and the docs examples are rendered and asserted in a real browser, so the guide cannot lie. Honest ledger: great for creative sites, prototypes, docs, playgrounds and internal tools; when a page must work without JavaScript, build the static subset with `dssl build` or pick another tool for that page. Freeze makes big static pages viable; live interaction is what the engine is for.
590
 
591
  ## License
592
 
dssl-vscode/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
  # Changelog
2
 
 
 
 
 
3
  ## 0.16.1
4
 
5
  - Bundled engine 0.16.1: `DSSL.lint` no longer reports `css-loses` for a stylesheet that says the same thing as DSSL (a page that ships the compiled CSS and also runs the engine).
 
1
  # Changelog
2
 
3
+ ## 0.16.2
4
+
5
+ - Bundled engine 0.16.2: `DSSL.lint` also skips the output of `dssl build` (its reset sits under the engine on purpose).
6
+
7
  ## 0.16.1
8
 
9
  - Bundled engine 0.16.1: `DSSL.lint` no longer reports `css-loses` for a stylesheet that says the same thing as DSSL (a page that ships the compiled CSS and also runs the engine).
dssl-vscode/package.json CHANGED
@@ -2,7 +2,7 @@
2
  "name": "dssl-vscode",
3
  "displayName": "DSSL Language Support",
4
  "description": "The DSSL style language in your editor: syntax highlighting, real-compiler diagnostics (the same errors the browser console shows), completions from the live token registry and for textures, auras and sliders, hover docs, an interactive designer with sliders and live previews for aura, texture and range sliders, and a CSS to DSSL converter. Works in VS Code and VSCodium.",
5
- "version": "0.16.1",
6
  "publisher": "ehs-studio",
7
  "icon": "icon.png",
8
  "license": "MIT",
 
2
  "name": "dssl-vscode",
3
  "displayName": "DSSL Language Support",
4
  "description": "The DSSL style language in your editor: syntax highlighting, real-compiler diagnostics (the same errors the browser console shows), completions from the live token registry and for textures, auras and sliders, hover docs, an interactive designer with sliders and live previews for aura, texture and range sliders, and a CSS to DSSL converter. Works in VS Code and VSCodium.",
5
+ "version": "0.16.2",
6
  "publisher": "ehs-studio",
7
  "icon": "icon.png",
8
  "license": "MIT",
llms.txt CHANGED
@@ -5,7 +5,7 @@
5
  - Site (docs, playground, changelog, bench): https://dssl-sable.vercel.app
6
  - Repo + full docs in the README: https://huggingface.co/EHS-Studio/dssl
7
  - Install: `curl -fsSL https://dssl-sable.vercel.app/install.sh | sh` (or the zip: https://dssl-sable.vercel.app/dssl-engine.zip)
8
- - Version: 0.16.1 (engine), MIT license
9
  - Feature matrix vs CSS: see PARITY.md in the repo
10
  - For agents working ON the codebase: see AGENTS.md in the repo
11
 
@@ -64,8 +64,8 @@ DSSL.replay(sel) / DSSL.refresh([el]) / DSSL.errors() (a function) / DSSL.versio
64
  - Alpha on a named colour works: `white/12`, `currentColor/20`. It used to compile to `white/12px`.
65
  - The playground has a canvas.html tab, `?example=` links, lint warnings and an "as CSS" tab. The canvas keeps a short allow-list of tags and drops scripts, handlers, styles and ids.
66
 
67
- ## 0.16.1
68
- - `DSSL.lint`'s `css-loses` no longer reports a rule whose value is the same as what DSSL wrote inline (a page that ships `dssl build` output and also runs the engine says every rule twice).
69
 
70
  ## 0.16.0: round three
71
  - `yield: padding-top padding-bottom` hands properties back to plain CSS (the engine writes inline styles, which beat a stylesheet): the CSS wins with no `!important`. `yield: padding` covers the family, `yield: none` clears it. `DSSL.lint` reports `css-loses` when your CSS rule loses to DSSL, naming the fix. `dssl build` ignores `yield`.
@@ -132,4 +132,4 @@ Wait for the `dssl-ready` event on `window` before measuring layout: the engine
132
 
133
  ## Editor support
134
 
135
- The official extension (VS Code and VSCodium, same .vsix) bundles the real parser and resolver: diagnostics identical to the browser console, completions from the workspace token registry, hover docs for the semantic vocabulary. In VSCodium, search "DSSL" in the Extensions tab (it is on Open VSX: https://open-vsx.org/extension/ehs-studio/dssl-vscode). In VS Code, download `dssl-vscode/dssl-vscode-0.16.1.vsix` from the repo files, then Extensions panel -> ... -> Install from VSIX. Source lives in `dssl-vscode/` in the repo.
 
5
  - Site (docs, playground, changelog, bench): https://dssl-sable.vercel.app
6
  - Repo + full docs in the README: https://huggingface.co/EHS-Studio/dssl
7
  - Install: `curl -fsSL https://dssl-sable.vercel.app/install.sh | sh` (or the zip: https://dssl-sable.vercel.app/dssl-engine.zip)
8
+ - Version: 0.16.2 (engine), MIT license
9
  - Feature matrix vs CSS: see PARITY.md in the repo
10
  - For agents working ON the codebase: see AGENTS.md in the repo
11
 
 
64
  - Alpha on a named colour works: `white/12`, `currentColor/20`. It used to compile to `white/12px`.
65
  - The playground has a canvas.html tab, `?example=` links, lint warnings and an "as CSS" tab. The canvas keeps a short allow-list of tags and drops scripts, handlers, styles and ids.
66
 
67
+ ## 0.16.2
68
+ - `DSSL.lint`'s `css-loses` no longer judges the output of `dssl build` (its reset is built to sit under the engine), and ignores a rule whose value is the same as what DSSL wrote inline. On this site's docs page it reported 4,314 findings in 0.16.0; it now reports none from the site's own CSS.
69
 
70
  ## 0.16.0: round three
71
  - `yield: padding-top padding-bottom` hands properties back to plain CSS (the engine writes inline styles, which beat a stylesheet): the CSS wins with no `!important`. `yield: padding` covers the family, `yield: none` clears it. `DSSL.lint` reports `css-loses` when your CSS rule loses to DSSL, naming the fix. `dssl build` ignores `yield`.
 
132
 
133
  ## Editor support
134
 
135
+ The official extension (VS Code and VSCodium, same .vsix) bundles the real parser and resolver: diagnostics identical to the browser console, completions from the workspace token registry, hover docs for the semantic vocabulary. In VSCodium, search "DSSL" in the Extensions tab (it is on Open VSX: https://open-vsx.org/extension/ehs-studio/dssl-vscode). In VS Code, download `dssl-vscode/dssl-vscode-0.16.2.vsix` from the repo files, then Extensions panel -> ... -> Install from VSIX. Source lives in `dssl-vscode/` in the repo.
package.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "dssl",
3
- "version": "0.16.1",
4
  "private": true,
5
  "description": "The DSSL style language and the website that is written in it.",
6
  "scripts": {
 
1
  {
2
  "name": "dssl",
3
+ "version": "0.16.2",
4
  "private": true,
5
  "description": "The DSSL style language and the website that is written in it.",
6
  "scripts": {
public/dssl/dev.js CHANGED
@@ -237,7 +237,11 @@ function cssThatLoses(eng, scope) {
237
  try {
238
  const owner = sheet.ownerNode;
239
  if (owner && owner.getAttributeNames && owner.getAttributeNames().some((n) => n.startsWith('data-dssl'))) continue; // the engine's own sheets
240
- visit([...sheet.cssRules], sheet.href ? sheet.href.split('/').pop() : '<style>');
 
 
 
 
241
  } catch { /* a cross-origin sheet cannot be read */ }
242
  }
243
  return found;
 
237
  try {
238
  const owner = sheet.ownerNode;
239
  if (owner && owner.getAttributeNames && owner.getAttributeNames().some((n) => n.startsWith('data-dssl'))) continue; // the engine's own sheets
240
+ // the output of `dssl build` declares the DSSL layer order first (tokens, base, components, utilities, pin). It is DSSL's own CSS, built
241
+ // to sit UNDER the engine (its reset in particular), so it is not "your CSS" and is not judged here.
242
+ const rules = [...sheet.cssRules];
243
+ if (rules.some((r) => r.constructor && r.constructor.name === 'CSSLayerStatementRule' && [...(r.nameList || [])].includes('pin'))) continue;
244
+ visit(rules, sheet.href ? sheet.href.split('/').pop() : '<style>');
245
  } catch { /* a cross-origin sheet cannot be read */ }
246
  }
247
  return found;
public/dssl/index.js CHANGED
@@ -19,7 +19,7 @@ import { resolve, DEFAULT_TOKENS, EASINGS } from './resolver.js';
19
  import { toCSS as docToCSS } from './static.js';
20
  import { DsslEngine } from './engine.js';
21
 
22
- export const VERSION = '0.16.1';
23
 
24
  let counter = 0;
25
  const loadedUrls = new Set(); // every .dssl file fetched by load(), so DSSL.watch() knows what to follow
 
19
  import { toCSS as docToCSS } from './static.js';
20
  import { DsslEngine } from './engine.js';
21
 
22
+ export const VERSION = '0.16.2';
23
 
24
  let counter = 0;
25
  const loadedUrls = new Set(); // every .dssl file fetched by load(), so DSSL.watch() knows what to follow
public/llms.txt CHANGED
@@ -5,7 +5,7 @@
5
  - Site (docs, playground, changelog, bench): https://dssl-sable.vercel.app
6
  - Repo + full docs in the README: https://huggingface.co/EHS-Studio/dssl
7
  - Install: `curl -fsSL https://dssl-sable.vercel.app/install.sh | sh` (or the zip: https://dssl-sable.vercel.app/dssl-engine.zip)
8
- - Version: 0.16.1 (engine), MIT license
9
  - Feature matrix vs CSS: see PARITY.md in the repo
10
  - For agents working ON the codebase: see AGENTS.md in the repo
11
 
@@ -64,8 +64,8 @@ DSSL.replay(sel) / DSSL.refresh([el]) / DSSL.errors() (a function) / DSSL.versio
64
  - Alpha on a named colour works: `white/12`, `currentColor/20`. It used to compile to `white/12px`.
65
  - The playground has a canvas.html tab, `?example=` links, lint warnings and an "as CSS" tab. The canvas keeps a short allow-list of tags and drops scripts, handlers, styles and ids.
66
 
67
- ## 0.16.1
68
- - `DSSL.lint`'s `css-loses` no longer reports a rule whose value is the same as what DSSL wrote inline (a page that ships `dssl build` output and also runs the engine says every rule twice).
69
 
70
  ## 0.16.0: round three
71
  - `yield: padding-top padding-bottom` hands properties back to plain CSS (the engine writes inline styles, which beat a stylesheet): the CSS wins with no `!important`. `yield: padding` covers the family, `yield: none` clears it. `DSSL.lint` reports `css-loses` when your CSS rule loses to DSSL, naming the fix. `dssl build` ignores `yield`.
@@ -132,4 +132,4 @@ Wait for the `dssl-ready` event on `window` before measuring layout: the engine
132
 
133
  ## Editor support
134
 
135
- The official extension (VS Code and VSCodium, same .vsix) bundles the real parser and resolver: diagnostics identical to the browser console, completions from the workspace token registry, hover docs for the semantic vocabulary. In VSCodium, search "DSSL" in the Extensions tab (it is on Open VSX: https://open-vsx.org/extension/ehs-studio/dssl-vscode). In VS Code, download `dssl-vscode/dssl-vscode-0.16.1.vsix` from the repo files, then Extensions panel -> ... -> Install from VSIX. Source lives in `dssl-vscode/` in the repo.
 
5
  - Site (docs, playground, changelog, bench): https://dssl-sable.vercel.app
6
  - Repo + full docs in the README: https://huggingface.co/EHS-Studio/dssl
7
  - Install: `curl -fsSL https://dssl-sable.vercel.app/install.sh | sh` (or the zip: https://dssl-sable.vercel.app/dssl-engine.zip)
8
+ - Version: 0.16.2 (engine), MIT license
9
  - Feature matrix vs CSS: see PARITY.md in the repo
10
  - For agents working ON the codebase: see AGENTS.md in the repo
11
 
 
64
  - Alpha on a named colour works: `white/12`, `currentColor/20`. It used to compile to `white/12px`.
65
  - The playground has a canvas.html tab, `?example=` links, lint warnings and an "as CSS" tab. The canvas keeps a short allow-list of tags and drops scripts, handlers, styles and ids.
66
 
67
+ ## 0.16.2
68
+ - `DSSL.lint`'s `css-loses` no longer judges the output of `dssl build` (its reset is built to sit under the engine), and ignores a rule whose value is the same as what DSSL wrote inline. On this site's docs page it reported 4,314 findings in 0.16.0; it now reports none from the site's own CSS.
69
 
70
  ## 0.16.0: round three
71
  - `yield: padding-top padding-bottom` hands properties back to plain CSS (the engine writes inline styles, which beat a stylesheet): the CSS wins with no `!important`. `yield: padding` covers the family, `yield: none` clears it. `DSSL.lint` reports `css-loses` when your CSS rule loses to DSSL, naming the fix. `dssl build` ignores `yield`.
 
132
 
133
  ## Editor support
134
 
135
+ The official extension (VS Code and VSCodium, same .vsix) bundles the real parser and resolver: diagnostics identical to the browser console, completions from the workspace token registry, hover docs for the semantic vocabulary. In VSCodium, search "DSSL" in the Extensions tab (it is on Open VSX: https://open-vsx.org/extension/ehs-studio/dssl-vscode). In VS Code, download `dssl-vscode/dssl-vscode-0.16.2.vsix` from the repo files, then Extensions panel -> ... -> Install from VSIX. Source lives in `dssl-vscode/` in the repo.
public/showcase/wood/wood.css CHANGED
@@ -1,4 +1,4 @@
1
- /* generated by dssl build from tokens.dssl + static.dssl - the static subset of DSSL v0.16.1.
2
  @signal rules and engine-native properties (animate, aura, tilt, ...) stay in the runtime.
3
  Textures are baked in as background images when their colours are known at build time. */
4
  @import url("https://fonts.googleapis.com/css2?family=Fraunces:wght@500;700;800&family=Hanken+Grotesk:wght@400;500;700&display=swap");
 
1
+ /* generated by dssl build from tokens.dssl + static.dssl - the static subset of DSSL v0.16.2.
2
  @signal rules and engine-native properties (animate, aura, tilt, ...) stay in the runtime.
3
  Textures are baked in as background images when their colours are known at build time. */
4
  @import url("https://fonts.googleapis.com/css2?family=Fraunces:wght@500;700;800&family=Hanken+Grotesk:wght@400;500;700&display=swap");
scripts/test-v0160.mjs CHANGED
@@ -100,6 +100,13 @@ await withBrowser(async ({ open, errors }) => {
100
  const n = await p.evaluate(async () => (await DSSL.lint(document.body, { log: false })).filter((f) => f.kind === 'css-loses').length);
101
  ok('compiled CSS and the engine saying the same thing is not reported as css-loses', n === 0, String(n));
102
  }, { pages: { '/b': page('.dup { padding: 10; color: #123456 }', '<div class=dup></div>', '', built) } });
 
 
 
 
 
 
 
103
  }
104
 
105
  section('4. aura follows the real shape');
 
100
  const n = await p.evaluate(async () => (await DSSL.lint(document.body, { log: false })).filter((f) => f.kind === 'css-loses').length);
101
  ok('compiled CSS and the engine saying the same thing is not reported as css-loses', n === 0, String(n));
102
  }, { pages: { '/b': page('.dup { padding: 10; color: #123456 }', '<div class=dup></div>', '', built) } });
103
+ // and the built reset sits under everything on purpose: it must not be called a conflict either
104
+ const builtReset = (await import('../public/dssl/index.js')).toCSS('.dup { padding: 10; color: #123456 }', { file: 'a.dssl', reset: true }).css;
105
+ await withBrowser(async ({ open }) => {
106
+ const p = await open('/b2'); await ready(p); await p.waitForTimeout(250);
107
+ const n = await p.evaluate(async () => (await DSSL.lint(document.body, { log: false })).filter((f) => f.kind === 'css-loses').length);
108
+ ok('the reset layer of a built stylesheet is not called a conflict', n === 0, String(n));
109
+ }, { pages: { '/b2': page('p { margin: 7 }\n.dup { padding: 10; color: #123456 }', '<p class=dup>x</p><a href=#>a</a>', '', builtReset) } });
110
  }
111
 
112
  section('4. aura follows the real shape');
src/components/dssl/views/ChangelogView.tsx CHANGED
@@ -11,6 +11,14 @@ const ENTRIES: {
11
  code?: string;
12
  kind?: "spec" | "vote" | "add";
13
  }[] = [
 
 
 
 
 
 
 
 
14
  {
15
  version: "v0.16.1",
16
  date: "growth phase \u00b7 a small fix",
 
11
  code?: string;
12
  kind?: "spec" | "vote" | "add";
13
  }[] = [
14
+ {
15
+ version: "v0.16.2",
16
+ date: "growth phase \u00b7 a second small fix",
17
+ title: "css-loses leaves DSSL's own built CSS alone.",
18
+ why: "after the first fix this very site still showed 111 findings, all from the reset layer that dssl build writes to sit under the engine.",
19
+ kind: "add",
20
+ body: "DSSL.lint now recognises a stylesheet made by dssl build (it declares the DSSL layer order) and does not judge it. Your own CSS is still checked.",
21
+ },
22
  {
23
  version: "v0.16.1",
24
  date: "growth phase \u00b7 a small fix",