@stacksjs/defaults 0.75.370 → 0.75.373

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -490,11 +490,28 @@ Port: 3002 (configured in `config/ports.ts` as `admin`)
490
490
  ### Render performance
491
491
 
492
492
  The dashboard dev action opts into STX's dependency-aware rendered HTML cache
493
- with `renderCache: true`, `renderCacheVary: 'source'`, and four prewarm workers.
493
+ with `renderCache: true`, `renderCacheVary: 'source'`, and no prewarming.
494
494
  This is correct because static dashboard routes render source-derived shells
495
- and load live records through `dashboardApi()` after hydration. Keep the
496
- project and framework `resources/functions` roots in `watchDirs` so a
497
- composable edit invalidates its client bundle.
495
+ and load live records through `dashboardApi()` after hydration. A page's first
496
+ visit costs its own render (about a second); later visits come from the cache.
497
+ Prewarming rendered every route on the serving thread, and pages took 3-28s
498
+ while it ran (stacksjs/stacks#2964), so it stays off.
499
+
500
+ `renderCachePersist: true` keeps those renders in `storage/framework/stx/render-cache/`,
501
+ so a restart serves pages already rendered instead of rendering them again
502
+ (stacksjs/stacks#3035). A kept page is used only while nothing it was rendered
503
+ from has changed: its templates, every watched file, the lockfiles, `.env`
504
+ files and stx config. Watched roots therefore matter twice. Keep in `watchDirs`:
505
+
506
+ - the project and framework `resources/functions` roots, so a composable edit
507
+ invalidates its client bundle;
508
+ - `config/` and `storage/framework/runtime/dashboard/`, which hold what the
509
+ layout builds the sidebar from (`config/dashboard.ts` and the models
510
+ manifest). Without them a restart after a config edit serves the old sidebar.
511
+
512
+ Anything else a dashboard server script reads at render time belongs in
513
+ `watchDirs` too. The models manifest is written only when its content changes,
514
+ so a restart alone does not discard the kept pages.
498
515
 
499
516
  Do not add request-specific server output to a source-cached static dashboard
500
517
  route. If a route must render cookies, identity, query-dependent data, or
@@ -11,7 +11,7 @@ Browser runtime bindings are documented separately in `stacks-auto-imports`.
11
11
  | Package | Task guidance | Source entry | Retained tests |
12
12
  |---|---|---|---|
13
13
  | `@stacksjs/action-runner` | [`stacks-actions`](../stacks-actions/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/action-runner/src/index.ts) | 1 |
14
- | `@stacksjs/actions` | [`stacks-actions`](../stacks-actions/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/index.ts) | 92 |
14
+ | `@stacksjs/actions` | [`stacks-actions`](../stacks-actions/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/index.ts) | 93 |
15
15
  | `@stacksjs/ai` | [`stacks-ai`](../stacks-ai/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/ai/src/index.ts) | 19 |
16
16
  | `@stacksjs/alias` | [`stacks-alias`](../stacks-alias/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/alias/src/index.ts) | 1 |
17
17
  | `@stacksjs/analytics` | [`stacks-analytics`](../stacks-analytics/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/analytics/src/index.ts) | 6 |
@@ -21,7 +21,7 @@ Browser runtime bindings are documented separately in `stacks-auto-imports`.
21
21
  | `@stacksjs/auth` | [`stacks-auth`](../stacks-auth/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/auth/src/index.ts) | 124 |
22
22
  | `@stacksjs/browser` | [`stacks-browser`](../stacks-browser/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/browser/src/index.ts) | 8 |
23
23
  | `@stacksjs/browser-extension` | [`stacks-browser-extension`](../stacks-browser-extension/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/browser-extension/src/index.ts) | 7 |
24
- | `@stacksjs/buddy` | [`stacks-buddy`](../stacks-buddy/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/buddy/src/index.ts) | 170 |
24
+ | `@stacksjs/buddy` | [`stacks-buddy`](../stacks-buddy/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/buddy/src/index.ts) | 171 |
25
25
  | `@stacksjs/build` | [`stacks-build`](../stacks-build/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/build/src/index.ts) | 4 |
26
26
  | `@stacksjs/cache` | [`stacks-cache`](../stacks-cache/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/cache/src/index.ts) | 14 |
27
27
  | `@stacksjs/calendar-api` | [`stacks-calendar`](../stacks-calendar/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/calendar-api/src/index.ts) | 2 |
@@ -75,7 +75,7 @@ Browser runtime bindings are documented separately in `stacks-auto-imports`.
75
75
  | `@stacksjs/realtime` | [`stacks-realtime`](../stacks-realtime/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/realtime/src/index.ts) | 12 |
76
76
  | `@stacksjs/registry` | [`stacks-registry`](../stacks-registry/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/registry/src/index.ts) | 1 |
77
77
  | `@stacksjs/repl` | [`stacks-repl`](../stacks-repl/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/repl/src/index.ts) | 2 |
78
- | `@stacksjs/router` | [`stacks-router`](../stacks-router/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/index.ts) | 97 |
78
+ | `@stacksjs/router` | [`stacks-router`](../stacks-router/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/index.ts) | 98 |
79
79
  | `@stacksjs/scheduler` | [`stacks-scheduler`](../stacks-scheduler/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/scheduler/src/index.ts) | 14 |
80
80
  | `@stacksjs/search-engine` | [`stacks-search-engine`](../stacks-search-engine/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/search-engine/src/index.ts) | 11 |
81
81
  | `@stacksjs/security` | [`stacks-security`](../stacks-security/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/security/src/index.ts) | 11 |
@@ -119,7 +119,7 @@ Declared runtime exports: `BlogAdminError`, `DEFAULT_IOS_DEPENDENCIES`, `DEFAULT
119
119
 
120
120
  Local source modules: [src/action.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/action.ts), [src/add.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/add.ts), [src/blog-admin.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/blog-admin.ts), [src/build/ios-toolchain.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/build/ios-toolchain.ts), [src/commit.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/commit.ts), [src/dev/index.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/dev/index.ts), [src/discover-packages.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/discover-packages.ts), [src/generate/index.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/generate/index.ts), [src/github-release.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/github-release.ts), [src/helpers/index.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/helpers/index.ts), [src/library/index.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/library/index.ts), [src/lint/lint.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/lint/lint.ts), [src/lint/stx-gate.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/lint/stx-gate.ts), [src/make-command.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/make-command.ts), [src/make-job.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/make-job.ts), [src/make-policy.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/make-policy.ts), [src/make-resource.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/make-resource.ts), [src/make.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/make.ts), [src/publication-preflight.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/publication-preflight.ts), [src/release-evidence.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/release-evidence.ts), [src/scaffold-crud.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/scaffold-crud.ts), [src/setup/index.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/setup/index.ts), [src/stacks.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/stacks.ts), [src/stx-source.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/stx-source.ts), [src/upgrade/package-project.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/upgrade/package-project.ts), [src/upgrade/route-actions.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/src/upgrade/route-actions.ts).
121
121
 
122
- Evidence directory: [92 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
122
+ Evidence directory: [93 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/actions/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
123
123
 
124
124
  ### @stacksjs/ai
125
125
 
@@ -217,7 +217,7 @@ Read the entrypoint and package export map for re-exported or type-only surfaces
217
217
 
218
218
  Local source modules: [src/commands/index.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/buddy/src/commands/index.ts).
219
219
 
220
- Evidence directory: [170 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/buddy/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
220
+ Evidence directory: [171 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/buddy/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
221
221
 
222
222
  ### @stacksjs/build
223
223
 
@@ -725,7 +725,7 @@ Declared runtime exports: `DASHBOARD_ROUTE_GROUPS`, `DEFAULT_ROUTE_BUNDLE_FEATUR
725
725
 
726
726
  Local source modules: [src/api-shape.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/api-shape.ts), [src/body.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/body.ts), [src/dashboard-access.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/dashboard-access.ts), [src/encrypted-session-store.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/encrypted-session-store.ts), [src/error-handler.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/error-handler.ts), [src/health.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/health.ts), [src/json.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/json.ts), [src/middleware.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/middleware.ts), [src/path-sanitize.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/path-sanitize.ts), [src/rate-limit.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/rate-limit.ts), [src/request-augmentation.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/request-augmentation.ts), [src/request-context.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/request-context.ts), [src/route-loader.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/route-loader.ts), [src/route-model-binding.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/route-model-binding.ts), [src/security-settings.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/security-settings.ts), [src/session-factory.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/session-factory.ts), [src/signed-url.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/signed-url.ts), [src/stacks-router.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/stacks-router.ts), [src/typed-router.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/src/typed-router.ts).
727
727
 
728
- Evidence directory: [97 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
728
+ Evidence directory: [98 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/router/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
729
729
 
730
730
  ### @stacksjs/scheduler
731
731
 
@@ -7,6 +7,7 @@
7
7
  "Bun runtime isolation for every child process",
8
8
  "Pinned, offline delivery; no update network requests",
9
9
  "Stacks launcher and publication guidance",
10
- "Legacy technical-diagrams entrypoint retained"
10
+ "Legacy technical-diagrams entrypoint retained",
11
+ "Canonical emitted class attributes for shared Pickier lint policy"
11
12
  ]
12
13
  }
@@ -5107,12 +5107,12 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5107
5107
  aria-keyshortcuts="S">
5108
5108
  <span class="preset-control-mark" aria-hidden="true"></span>
5109
5109
  <span id="preset-label">{{i18n:viewer.preset.style}}</span>
5110
- <span class="toolbar-icon toolbar-chevron" aria-hidden="true"></span>
5110
+ <span class="toolbar-chevron toolbar-icon" aria-hidden="true"></span>
5111
5111
  </button>
5112
5112
  <div class="preset-menu" id="preset-menu" role="menu" aria-label="{{i18n:viewer.preset.menu}}">
5113
5113
  <div class="preset-menu-heading" role="presentation"><span>{{i18n:viewer.preset.identity}}</span><span class="preset-menu-shortcut"><kbd>S</kbd>{{i18n:viewer.preset.cycles}}</span></div>
5114
5114
  <button class="preset-option" data-preset-value="classic" type="button" role="menuitemradio" aria-checked="false" tabindex="-1">
5115
- <span class="preset-option-swatch classic" aria-hidden="true"></span>
5115
+ <span class="classic preset-option-swatch" aria-hidden="true"></span>
5116
5116
  <span class="preset-option-copy"><strong>{{i18n:viewer.preset.classic}}</strong><small>{{i18n:viewer.preset.classic.hint}}</small></span>
5117
5117
  <span class="preset-option-check" aria-hidden="true"></span>
5118
5118
  </button>
@@ -5122,12 +5122,12 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5122
5122
  <span class="preset-option-check" aria-hidden="true"></span>
5123
5123
  </button>
5124
5124
  <button class="preset-option" data-preset-value="blueprint" type="button" role="menuitemradio" aria-checked="false" tabindex="-1">
5125
- <span class="preset-option-swatch blueprint" aria-hidden="true"></span>
5125
+ <span class="blueprint preset-option-swatch" aria-hidden="true"></span>
5126
5126
  <span class="preset-option-copy"><strong>{{i18n:viewer.preset.blueprint}}</strong><small>{{i18n:viewer.preset.blueprint.hint}}</small></span>
5127
5127
  <span class="preset-option-check" aria-hidden="true"></span>
5128
5128
  </button>
5129
5129
  <button class="preset-option" data-preset-value="editorial" type="button" role="menuitemradio" aria-checked="false" tabindex="-1">
5130
- <span class="preset-option-swatch editorial" aria-hidden="true"></span>
5130
+ <span class="editorial preset-option-swatch" aria-hidden="true"></span>
5131
5131
  <span class="preset-option-copy"><strong>{{i18n:viewer.preset.editorial}}</strong><small>{{i18n:viewer.preset.editorial.hint}}</small></span>
5132
5132
  <span class="preset-option-check" aria-hidden="true"></span>
5133
5133
  </button>
@@ -5155,7 +5155,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5155
5155
  aria-haspopup="menu"
5156
5156
  aria-expanded="false"
5157
5157
  aria-controls="export-menu">
5158
- {{i18n:viewer.export.button}} <span class="toolbar-icon toolbar-chevron" aria-hidden="true"></span>
5158
+ {{i18n:viewer.export.button}} <span class="toolbar-chevron toolbar-icon" aria-hidden="true"></span>
5159
5159
  </button>
5160
5160
  <div class="export-menu" id="export-menu" role="menu" aria-label="{{i18n:viewer.export.menu}}">
5161
5161
  <div class="export-menu-header" role="presentation">
@@ -5394,7 +5394,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5394
5394
  <p class="diagram-guide-feedback" id="diagram-guide-feedback" aria-live="polite"></p>
5395
5395
  <a class="diagram-guide-credit" href="https://github.com/tt-a1i/archify" target="_blank" rel="noopener noreferrer"><span>{{i18n:viewer.guide.credit}}</span><span class="diagram-guide-credit-link"><span class="diagram-guide-star" aria-hidden="true"></span>{{i18n:viewer.guide.star}} <span aria-hidden="true">&#8599;</span></span></a>
5396
5396
  </div>
5397
- <div class="node-finder no-print" id="node-finder" hidden role="dialog" aria-modal="false" aria-labelledby="node-finder-title">
5397
+ <div class="no-print node-finder" id="node-finder" hidden role="dialog" aria-modal="false" aria-labelledby="node-finder-title">
5398
5398
  <div class="node-finder-head">
5399
5399
  <strong id="node-finder-title">{{i18n:viewer.finder.title}}</strong>
5400
5400
  <button class="node-finder-close" id="node-finder-close" type="button" aria-label="{{i18n:viewer.finder.close}}">&#215;</button>
@@ -5408,7 +5408,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5408
5408
  <p class="node-finder-empty" id="node-finder-empty" hidden>{{i18n:viewer.finder.empty}}</p>
5409
5409
  <p class="node-finder-status" id="node-finder-status" aria-live="polite"></p>
5410
5410
  </div>
5411
- <div class="focus-chip relationship-lens no-print" id="focus-chip" hidden role="region" aria-labelledby="relationship-lens-title">
5411
+ <div class="focus-chip no-print relationship-lens" id="focus-chip" hidden role="region" aria-labelledby="relationship-lens-title">
5412
5412
  <div class="relationship-lens-head">
5413
5413
  <button class="relationship-lens-drag-handle" id="btn-focus-move" type="button" data-focus-drag-handle aria-label="{{i18n:viewer.passport.move}}" title="{{i18n:viewer.passport.move}}"></button>
5414
5414
  <div class="relationship-lens-copy">
@@ -5451,7 +5451,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5451
5451
  </div>
5452
5452
  <div class="relationship-lens-list" id="relationship-lens-list" aria-label="{{i18n:viewer.passport.relations.list}}"></div>
5453
5453
  </div>
5454
- <div class="route-probe no-print" id="route-probe" hidden role="region" aria-labelledby="route-probe-title" data-state="idle">
5454
+ <div class="no-print route-probe" id="route-probe" hidden role="region" aria-labelledby="route-probe-title" data-state="idle">
5455
5455
  <div class="route-probe-head">
5456
5456
  <span class="route-probe-copy">
5457
5457
  <span class="route-probe-eyebrow">{{i18n:viewer.route.eyebrow}}</span>
@@ -5477,7 +5477,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5477
5477
  </div>
5478
5478
  <small class="route-probe-status" id="route-probe-status" aria-live="polite">{{i18n:viewer.route.instructions}}</small>
5479
5479
  </div>
5480
- <div class="semantic-lens no-print" id="semantic-lens" hidden role="dialog" aria-modal="false" aria-labelledby="semantic-lens-title">
5480
+ <div class="no-print semantic-lens" id="semantic-lens" hidden role="dialog" aria-modal="false" aria-labelledby="semantic-lens-title">
5481
5481
  <div class="semantic-lens-head">
5482
5482
  <span>
5483
5483
  <span class="semantic-lens-eyebrow">{{i18n:viewer.lens.eyebrow}}</span>
@@ -5493,7 +5493,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5493
5493
  <button id="semantic-lens-clear" type="button" aria-label="{{i18n:viewer.lens.clear}}">{{i18n:viewer.common.clear}}</button>
5494
5494
  </div>
5495
5495
  </div>
5496
- <div class="overview-map no-print" id="overview-map" hidden role="region" aria-labelledby="overview-map-title">
5496
+ <div class="no-print overview-map" id="overview-map" hidden role="region" aria-labelledby="overview-map-title">
5497
5497
  <div class="overview-map-head">
5498
5498
  <span class="overview-map-live" aria-hidden="true"></span>
5499
5499
  <span class="overview-map-copy">
@@ -5506,8 +5506,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5506
5506
  <div class="overview-map-surface" id="overview-map-surface" tabindex="0" role="group" aria-label="{{i18n:viewer.radar.surface}}"></div>
5507
5507
  <div class="overview-map-hint" aria-hidden="true"><span>{{i18n:viewer.radar.click}}</span><span>{{i18n:viewer.radar.drag}}</span></div>
5508
5508
  </div>
5509
- <p class="overview-map-feedback no-print" id="overview-map-feedback" role="status" aria-live="polite" hidden>{{i18n:viewer.radar.space}}</p>
5510
- <button class="rail-reveal no-print" id="rail-reveal" type="button" hidden aria-controls="reader-rail" aria-expanded="false"><span class="rail-reveal-icon" aria-hidden="true"></span><span>{{i18n:viewer.rail.show}}</span></button>
5509
+ <p class="no-print overview-map-feedback" id="overview-map-feedback" role="status" aria-live="polite" hidden>{{i18n:viewer.radar.space}}</p>
5510
+ <button class="no-print rail-reveal" id="rail-reveal" type="button" hidden aria-controls="reader-rail" aria-expanded="false"><span class="rail-reveal-icon" aria-hidden="true"></span><span>{{i18n:viewer.rail.show}}</span></button>
5511
5511
  <div class="diagram-nav no-print" role="toolbar" aria-label="{{i18n:viewer.nav.controls}}">
5512
5512
  <button id="btn-route-probe" type="button" aria-label="{{i18n:viewer.nav.route}}" aria-pressed="false" aria-controls="route-probe" title="{{i18n:viewer.nav.route.title}}">{{i18n:viewer.nav.route.short}}</button>
5513
5513
  <button id="btn-overview-map" type="button" aria-label="{{i18n:viewer.nav.radar}}" aria-expanded="false" aria-controls="overview-map" title="{{i18n:viewer.nav.radar.title}}">{{i18n:viewer.nav.radar.short}}</button>
@@ -5521,9 +5521,9 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5521
5521
  </div>
5522
5522
 
5523
5523
  <aside class="reader-rail" id="reader-rail">
5524
- <div class="rail-controls no-print" role="toolbar" aria-label="{{i18n:viewer.rail.controls}}">
5525
- <button class="rail-control" id="rail-placement" type="button" hidden aria-label="{{i18n:viewer.rail.bottom}}" title="{{i18n:viewer.rail.bottom}}" data-placement="right"><span class="rail-control-icon placement" aria-hidden="true"></span></button>
5526
- <button class="rail-control" id="rail-collapse" type="button" hidden aria-controls="reader-rail" aria-expanded="true" aria-label="{{i18n:viewer.rail.collapse}}" title="{{i18n:viewer.rail.collapse}}"><span class="rail-control-icon collapse" aria-hidden="true"></span></button>
5524
+ <div class="no-print rail-controls" role="toolbar" aria-label="{{i18n:viewer.rail.controls}}">
5525
+ <button class="rail-control" id="rail-placement" type="button" hidden aria-label="{{i18n:viewer.rail.bottom}}" title="{{i18n:viewer.rail.bottom}}" data-placement="right"><span class="placement rail-control-icon" aria-hidden="true"></span></button>
5526
+ <button class="rail-control" id="rail-collapse" type="button" hidden aria-controls="reader-rail" aria-expanded="true" aria-label="{{i18n:viewer.rail.collapse}}" title="{{i18n:viewer.rail.collapse}}"><span class="collapse rail-control-icon" aria-hidden="true"></span></button>
5527
5527
  </div>
5528
5528
  <!-- ARCHIFY:CARDS_SLOT_START -->
5529
5529
  <div class="cards">
@@ -5567,7 +5567,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
5567
5567
  </div>
5568
5568
  </div>
5569
5569
  <!-- ARCHIFY:CARDS_SLOT_END -->
5570
- <nav class="node-outline no-print" id="node-outline" hidden aria-labelledby="node-outline-title">
5570
+ <nav class="no-print node-outline" id="node-outline" hidden aria-labelledby="node-outline-title">
5571
5571
  <div class="node-outline-head">
5572
5572
  <strong id="node-outline-title">{{i18n:viewer.outline.title}}</strong>
5573
5573
  <span class="node-outline-count" id="node-outline-count"></span>
@@ -106,7 +106,7 @@ export function renderSemanticSigil(kind, { x, y, size = SEMANTIC_SIGIL_SIZE, ic
106
106
  const normalized = Object.hasOwn(SIGIL_SHAPE, selected) ? selected : 'neutral';
107
107
  const tone = SIGIL_TONE[kind] || 'external';
108
108
  const scale = size / 16;
109
- return `<g aria-hidden="true" data-semantic-sigil="${esc(normalized)}" class="semantic-sigil s-${tone}" transform="translate(${x} ${y}) scale(${scale})">
109
+ return `<g aria-hidden="true" data-semantic-sigil="${esc(normalized)}" class="s-${tone} semantic-sigil" transform="translate(${x} ${y}) scale(${scale})">
110
110
  ${SIGIL_SHAPE[normalized]}
111
111
  </g>`;
112
112
  }
@@ -2,7 +2,7 @@
2
2
  "publisher": "Stacks",
3
3
  "name": "vscode-stacks",
4
4
  "displayName": "Stacks",
5
- "version": "0.75.370",
5
+ "version": "0.75.373",
6
6
  "description": "Stacks, built into VS Code: stx templates, pickier linting and formatting, encrypted env files, the dev server preview and every buddy command. No other extensions required.",
7
7
  "license": "MIT",
8
8
  "funding": "https://github.com/sponsors/chrisbbreuer",
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/defaults",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.75.370",
5
+ "version": "0.75.373",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/stacksjs/stacks.git",
@@ -45,9 +45,9 @@
45
45
  "dependencies": {
46
46
  "@iconify-json/f7": "^1.2.2",
47
47
  "@iconify-json/hugeicons": "^1.2.35",
48
- "@stacksjs/mobile": "0.75.370",
49
- "@stacksjs/sanitizer": "0.2.736",
50
- "@stacksjs/stx": "0.2.736",
48
+ "@stacksjs/mobile": "0.75.373",
49
+ "@stacksjs/sanitizer": "0.2.744",
50
+ "@stacksjs/stx": "0.2.744",
51
51
  "@xterm/addon-fit": "^0.11.0",
52
52
  "@xterm/xterm": "^6.0.0",
53
53
  "ts-qr-codes": "^0.1.8"