@the-portland-company/shell 0.77.0 → 0.79.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ ## 0.79.0
2
+
3
+ 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.
4
+
5
+ - **Registry.** `battleground` origin → `https://battleground.politogyvrm.com`, `districts` origin → `https://districts.politogyvrm.com` (both `mode: 'campaign'`, unchanged otherwise).
6
+ - **Left bar.** The Campaign tree's Battleground and District data rows link to those hosts (`.../battleground`, `.../districts`, org carried as before).
7
+ - **Served by** the dashboard deployment (politogy-dashboard #47), which answers at the new hosts and, with `CAMPAIGN_HOSTS_LIVE`, redirects its old `dashboard.politogyvrm.com/battleground` and `/districts` paths there permanently. Release this and flip that flag together.
8
+
9
+ ## 0.78.0
10
+
11
+ Dashboard, Battleground and District Data are three features in two Modes; no Polls row in the Relationship left bar. Specs cited: Reference/UI-Platform "Dashboard, Battleground and District Data are three features in two Modes" (decided 2026-10-12, Ben), Specs/Left-Navigation §9.1 and §9.2.
12
+
13
+ - **New registry rows `battleground` and `districts`**, both `mode: 'campaign'`, titles "Battleground" and "District Data". The Dashboard deployment must render those two pages with `app="battleground"` / `app="districts"`, never `app="dashboard"`: the `dashboard` row is unscoped, so it draws the Relationship rail, which is how both pages showed inside Relationship Mode with a "Dashboard · Battleground · District Data" strip above the header (measured 2026-10-12). Their hosts are decided (`battleground.politogyvrm.com`, `districts.politogyvrm.com`; UI-Platform, 2026-10-12) but not live, so both origins and both left-bar links stay on the dashboard host until each goes live.
14
+ - **`dashboard` row unchanged** in behavior; its comment now says it is the Relationship Dashboard only.
15
+
16
+ Polls: Spec cited: Specs/Left-Navigation §9.1 ("Polls is not a Relationship row. Polling is a Campaign Mode feature only").
17
+
18
+ - **Relationship tree.** `standardPolitogyNav` no longer adds a `Polls` row to the Collect section (it was restored in 0.75.0). Collect is Calls to action, Forms, Surveys. Seen live on dashboard.politogyvrm.com in Relationship Mode on 2026-10-12.
19
+ - **Campaign tree unchanged.** `Polling` stays under Research, and the `polls` registry entry is already `mode: 'campaign'`, so the Polls app keeps an active row.
20
+ - **For consumers.** `hiddenItems: ['Polls']` is now a no-op and can be dropped.
21
+ - Tests: `__tests__/standardNav.test.ts`.
22
+
1
23
  ## 0.77.0
2
24
 
3
25
  No theme control in the account menu. Specs cited: Reference/UI-Platform "Theme — light only (Dark Mode retired)" and "There is no theme control … Apps must not render any theme control"; Reference/Global-Rules "Theming — Light Only".
@@ -2171,6 +2171,8 @@ var SIGNS_ORIGIN = "https://signs.politogyvrm.com/";
2171
2171
  var POLLS_ORIGIN = "https://polls.politogyvrm.com/";
2172
2172
  var SETTINGS_ORIGIN = "https://settings.politogyvrm.com/";
2173
2173
  var DASHBOARD_ORIGIN = "https://dashboard.politogyvrm.com/";
2174
+ var BATTLEGROUND_ORIGIN = "https://battleground.politogyvrm.com/";
2175
+ var DISTRICTS_ORIGIN = "https://districts.politogyvrm.com/";
2174
2176
  var AUTH_ORIGIN = "https://auth.politogyvrm.com/";
2175
2177
  var PETITION_MODE_ORIGIN = "https://petition-mode.politogyvrm.com/";
2176
2178
  function applyHiddenItems(items, hidden) {
@@ -2361,16 +2363,9 @@ function standardPolitogyNav(opts) {
2361
2363
  href: withOrg("https://surveys.politogyvrm.com/surveys"),
2362
2364
  children: APP_SURVEYS_CHILDREN.map((c) => ({ label: c.label, icon: icon(c.icon), href: withOrg(c.href) }))
2363
2365
  },
2364
- // Polls (polls.politogyvrm.com) — kept in the default Collect section;
2365
- // apps that want it hidden pass `hiddenItems: ['Polls']`. Regression:
2366
- // dropped entirely in 03c4dc2 when app.politogyvrm.com retired; restored
2367
- // here (this row is independent of the retired app).
2368
- {
2369
- label: "Polls",
2370
- icon: icon("chartNoAxes"),
2371
- href: withOrg(POLLS_ORIGIN),
2372
- children: APP_POLLS_CHILDREN.map((c) => ({ label: c.label, icon: icon(c.icon), href: withOrg(c.href) }))
2373
- },
2366
+ // No Polls row here: Polling is a Campaign Mode feature only
2367
+ // (Specs/Left-Navigation §9.1 "Polls is not a Relationship row"). Its
2368
+ // row is "Polling" under Research in the Campaign tree below.
2374
2369
  ...accountRows()
2375
2370
  ];
2376
2371
  };
@@ -2384,12 +2379,11 @@ function standardPolitogyNav(opts) {
2384
2379
  // Battleground is the Campaign landing page; there is no Campaign
2385
2380
  // Dashboard row, and Voter Contact and Tribes have no row.
2386
2381
  { kind: "section", label: "Race data" },
2387
- // Battleground moved to the Dashboard app (dashboard.politogyvrm.com)
2388
- // until a dedicated Battleground host is decided (UI-Platform route table).
2389
- { label: "Battleground", icon: icon("crosshair"), href: withOrg(`${DASHBOARD_ORIGIN}battleground`) },
2390
- // District data moved to the Dashboard app (dashboard.politogyvrm.com)
2391
- // per Reference/UI-Platform v44.
2392
- { label: "District data", icon: icon("landmark"), href: withOrg(`${DASHBOARD_ORIGIN}districts`) },
2382
+ // Battleground is the Campaign Mode landing page, its own app on its own
2383
+ // host (registry key `battleground`; Specs/Left-Navigation §9.2, §13, §14).
2384
+ { label: "Battleground", icon: icon("crosshair"), href: withOrg(`${BATTLEGROUND_ORIGIN}battleground`) },
2385
+ // District Data is its own Campaign Mode app on its own host (registry key `districts`).
2386
+ { label: "District data", icon: icon("landmark"), href: withOrg(`${DISTRICTS_ORIGIN}districts`) },
2393
2387
  { kind: "section", label: "Research" },
2394
2388
  {
2395
2389
  label: "Polling",
@@ -4549,11 +4543,20 @@ var POLITOGY_APPS = {
4549
4543
  polls: { title: "Polls", origin: "https://polls.politogyvrm.com", storagePrefix: "polls", mode: "campaign", grants: ["title"] },
4550
4544
  ctas: { title: "CTAs", origin: "https://ctas.politogyvrm.com", storagePrefix: "ctas", grants: ["title"] },
4551
4545
  // V2 apps that replace retired app.politogyvrm.com pages (Reference/
4552
- // UI-Platform v42 "Retirement of app.politogyvrm.com"). Dashboard hosts the
4553
- // Relationship Dashboard + Campaign Battleground/District data/Campaigns
4554
- // (Specs/Relationship-Dashboard); Settings hosts org settings & billing
4555
- // (Specs/Organization-Settings).
4546
+ // UI-Platform v42 "Retirement of app.politogyvrm.com"). Dashboard is the
4547
+ // Relationship Dashboard, the Relationship Mode landing page, and nothing
4548
+ // else (Specs/Relationship-Dashboard §1A "Relationship Mode only"); Settings
4549
+ // hosts org settings & billing (Specs/Organization-Settings).
4556
4550
  dashboard: { title: "Dashboard", origin: "https://dashboard.politogyvrm.com", storagePrefix: "dashboard" },
4551
+ // Battleground (the Campaign Mode landing page) and District Data are
4552
+ // Campaign Mode features, each its own app on its own host (Specs/Left-
4553
+ // Navigation §9.2, §13, §14; Reference/UI-Platform, decided 2026-10-12).
4554
+ // They are never rendered with `app="dashboard"`: that frame is the
4555
+ // Relationship rail. The dashboard deployment serves these hosts
4556
+ // (politogy-dashboard #47) and redirects its old /battleground and
4557
+ // /districts paths here; the rows' hrefs in standardNav move together.
4558
+ battleground: { title: "Battleground", origin: "https://battleground.politogyvrm.com", storagePrefix: "battleground", mode: "campaign" },
4559
+ districts: { title: "District Data", origin: "https://districts.politogyvrm.com", storagePrefix: "districts", mode: "campaign" },
4557
4560
  settings: { title: "Settings", origin: "https://settings.politogyvrm.com", storagePrefix: "settings" },
4558
4561
  petitions: {
4559
4562
  title: "Petitions",