@the-portland-company/shell 0.47.0-rc.3 → 0.47.0

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.
Files changed (2) hide show
  1. package/CHANGELOG.md +32 -3
  2. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -64,9 +64,25 @@ Dark mode keeps the platform's neutral ramp. The Brand sheet resets the Mode
64
64
  SURFACES to the guaranteed-invalid value under `.dark` so they fall through to
65
65
  the neutrals; only the accent, a foreground colour, carries over.
66
66
 
67
- Active sub-rows also gain a 3px left rail drawn from `--nav-row-active-rail`,
68
- which resolves `transparent` unless the Mode declared a chrome group — so for
69
- every other app the span renders invisible and out of flow.
67
+ Active sub-rows also gain a 3px left rail drawn from
68
+ `var(--mode-accent, transparent)` — invisible and out of flow for any app whose
69
+ Mode declares no chrome group.
70
+
71
+ **Where Mode SURFACES are read matters, and the rule is not obvious.** They are
72
+ resolved at the point of use with the pre-0.47 value as an inline fallback:
73
+
74
+ ```
75
+ bg-[color:var(--mode-accent-surface,var(--panel-elevated))]
76
+ ```
77
+
78
+ Not through an alias declared in the `[data-politogy-mode]` block — that block
79
+ does not match an app which is not mode-scoped, so the alias would be unset and
80
+ a bare `var()` is invalid at computed-value time, dropping the property to its
81
+ initial value. And not through a `:root` alias either — `.dark` is a separate
82
+ top-level selector, so a `:root` alias substitutes the LIGHT value and inherits
83
+ it into dark. Point of use is the only placement correct in both themes, scoped
84
+ and unscoped. Two tests enforce it; both mistakes were made and caught during
85
+ the release candidates.
70
86
 
71
87
  Needs the matching Brand API release (`tokens.modes.<id>.chrome`).
72
88
 
@@ -108,6 +124,19 @@ a silent effect.
108
124
 
109
125
  A grant is for a fact only the app HAS, never for a look.
110
126
 
127
+ ### Added — the brand lockup follows the Mode
128
+
129
+ `brandLogoSrc` became core-only in 0.43, so every mode-scoped app rendered the
130
+ Relationship lockup — a red wordmark on a purple `vrm` badge — whatever Mode it
131
+ was scoped to. Petition Mode shipped a green Petition lockup in V1 and lost it in
132
+ that migration.
133
+
134
+ Resolved from the registry by Mode, like the accent:
135
+ `MODE_BRAND_LOGOS = { petition: '/brand/logos/petition-mode-logo.svg' }`. Only
136
+ Modes with a shipped lockup are listed; everything else keeps today's default.
137
+ The path is app-relative, so add the asset to the app's `public/` before adding
138
+ a Mode here.
139
+
111
140
  ### Changed — prereleases publish under the `next` dist-tag
112
141
 
113
142
  `npm publish` tags `latest` whatever the semver, so an rc would silently become
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@the-portland-company/shell",
3
- "version": "0.47.0-rc.3",
3
+ "version": "0.47.0",
4
4
  "description": "Shared chrome (header, sidebar, footer, theme, auth) for politogy apps. Drop into any Vite SPA to inherit the politogy look and signed-in user.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,