@the-portland-company/shell 0.79.0 → 0.80.1

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ ## 0.80.1
2
+
3
+ The Dashboard row shows its active marker on the Dashboard. Spec cited: Specs/Left-Navigation §8.1 and §11.3 ("Exactly one row is active").
4
+
5
+ - **Cause.** The Relationship tree linked Dashboard to the host root (`https://dashboard.politogyvrm.com/`). The app serves the page at `/dashboard` and the root only redirects there; `isNavItemActive` treats a `/` target as active on `/` alone, so no row was active on the Relationship Dashboard (measured 2026-10-12).
6
+ - **Fix.** The row links to `https://dashboard.politogyvrm.com/dashboard`. Other apps follow the same link without the extra redirect.
7
+ - Tests: `__tests__/standardNav.test.ts`.
8
+
9
+ ## 0.80.0
10
+
11
+ The URL-state helper. Specs cited: Reference/UI-Platform "URL state" (decided 2026-10-06, Spencer) and Global Rules → URL State. Until now the page said the helper "ships in a shell minor release" and no app could carry `section=` without concatenating by hand.
12
+
13
+ - **`@the-portland-company/shell/url-state`** (pure, server- and client-safe): `readUrlState`, `writeUrlState`, `buildSearch`, `normalizeUrlState`, `historyMode`, `slugify`, `URL_STATE_KEYS`, `URL_STATE_MODES`.
14
+ - Reads and writes `?mode=&page=&tab=&section=&org_id=` in the fixed order, keeps every feature parameter after them in its own order, writes a full org uuid as its 7-character tail, and refuses a feature parameter that names a base key.
15
+ - `normalizeUrlState(search, { page, mode?, tabs?, sections?, org_id? })` fills a missing default and corrects an unknown `tab` or `section` to the first one, reporting whether the URL needs a replace. `historyMode(prev, next)`: `push` for a `mode`, `org_id`, `page` or `tab` change, `replace` for a `section`-only change or a normalization.
16
+ - Section tracking on scroll (debounced replace) and the scroll-into-view on load are the consuming app's to wire with this helper; the shell's own frame does not touch the URL.
17
+
1
18
  ## 0.79.0
2
19
 
3
20
  Battleground and District Data on their own hosts. Specs cited: Reference/UI-Platform "Dashboard, Battleground and District Data are three features in two Modes" (decided 2026-10-12), Specs/Left-Navigation §9.2, §13 ("Measured 2026-10-12") and §14.
@@ -2324,7 +2324,12 @@ function standardPolitogyNav(opts) {
2324
2324
  { kind: "section", label: "Relationship" },
2325
2325
  // Dashboard moved to the standalone Dashboard app (dashboard.politogyvrm.com,
2326
2326
  // Specs/Relationship-Dashboard) with the retirement of app.politogyvrm.com.
2327
- { label: "Dashboard", icon: icon("layoutDashboard"), href: withOrg(DASHBOARD_ORIGIN) },
2327
+ // The row links to the page itself (`/dashboard`), not the host root.
2328
+ // The root only redirects there, and `isNavItemActive` treats a `/`
2329
+ // target as active on `/` alone, so a root link left the Dashboard row
2330
+ // without its active marker on the Dashboard (Left-Navigation §8.1,
2331
+ // §11.3 "exactly one row is active").
2332
+ { label: "Dashboard", icon: icon("layoutDashboard"), href: withOrg(`${DASHBOARD_ORIGIN}dashboard`) },
2328
2333
  contacts,
2329
2334
  {
2330
2335
  label: "Email broadcast",