Commit ·
0bf5df9
1
Parent(s): c0475bd
v0.16.2: DSSL.lint css-loses skips dssl build output
Browse filesThe 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 +2 -2
- PARITY.md +4 -0
- README.md +4 -4
- dssl-vscode/CHANGELOG.md +4 -0
- dssl-vscode/package.json +1 -1
- llms.txt +4 -4
- package.json +1 -1
- public/dssl/dev.js +5 -1
- public/dssl/index.js +1 -1
- public/llms.txt +4 -4
- public/showcase/wood/wood.css +1 -1
- scripts/test-v0160.mjs +7 -0
- src/components/dssl/views/ChangelogView.tsx +8 -0
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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 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.
|
| 68 |
-
- `DSSL.lint`'s `css-loses` no longer
|
| 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.
|
|
|
|
| 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.
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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.
|
| 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.
|
| 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.
|
| 68 |
-
- `DSSL.lint`'s `css-loses` no longer
|
| 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.
|
|
|
|
| 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.
|
| 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",
|