@the-portland-company/shell 0.27.0 → 0.28.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,19 @@
1
+ ## 0.28.0 — 2026-07-23
2
+
3
+ ### Fixed — DevNotes "Create Task" did nothing
4
+
5
+ `AppDevNotes` mounted `DevNotesProvider` and the menu, but never
6
+ `<DevNotesOverlay />`. The menu only TOGGLES creation mode; the overlay is what
7
+ renders the click-to-place capture layer, the report dots and the report form —
8
+ so on forms / surveys / polls, clicking **Create Task** closed the menu and
9
+ nothing happened at all (HITL bug report 2026-07-23). Contacts escaped it only
10
+ because it still carried its own hand-rolled surface.
11
+
12
+ The chrome now mounts a `DevNotesSurface` at the chrome root: the overlay, plus
13
+ the "View All Tasks" modal (rendered at the root so the top bar's stacking and
14
+ backdrop-blur can't trap it, and mounted only while open so it doesn't fetch
15
+ every user's tasks on page load).
16
+
1
17
  ## 0.27.0 — 2026-07-23
2
18
 
3
19
  VRM native-chrome parity (shell-nav-handoff §1–§3). All three were verified in
@@ -2235,7 +2235,22 @@ function AppDevNotes({
2235
2235
  }),
2236
2236
  [storagePrefix, identity.role]
2237
2237
  );
2238
- return /* @__PURE__ */ jsxRuntime.jsx(devnotes.DevNotesProvider, { adapter, user, config, children });
2238
+ return /* @__PURE__ */ jsxRuntime.jsx(devnotes.DevNotesProvider, { adapter, user, config, children: /* @__PURE__ */ jsxRuntime.jsx(DevNotesSurface, { children }) });
2239
+ }
2240
+ var DevNotesTasksContext = react.createContext({
2241
+ ready: false,
2242
+ openTasks: () => {
2243
+ }
2244
+ });
2245
+ function DevNotesSurface({ children }) {
2246
+ const [tasksOpen, setTasksOpen] = react.useState(false);
2247
+ const openTasks = react.useCallback(() => setTasksOpen(true), []);
2248
+ const tasksCtx = react.useMemo(() => ({ ready: true, openTasks }), [openTasks]);
2249
+ return /* @__PURE__ */ jsxRuntime.jsxs(DevNotesTasksContext.Provider, { value: tasksCtx, children: [
2250
+ children,
2251
+ tasksOpen ? /* @__PURE__ */ jsxRuntime.jsx(devnotes.DevNotesTaskListModal, { open: true, onClose: () => setTasksOpen(false) }) : null,
2252
+ /* @__PURE__ */ jsxRuntime.jsx(devnotes.DevNotesOverlay, {})
2253
+ ] });
2239
2254
  }
2240
2255
  function PolitogyAppChrome({
2241
2256
  storagePrefix,
@@ -2283,13 +2298,18 @@ function ChromeTopBarActions() {
2283
2298
  {
2284
2299
  title: "DevNotes",
2285
2300
  description: "Capture bugs and notes, filed straight to Forge.",
2286
- children: /* @__PURE__ */ jsxRuntime.jsx(devnotes.DevNotesMenu, {})
2301
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChromeDevNotesMenu, {})
2287
2302
  }
2288
2303
  ),
2289
2304
  /* @__PURE__ */ jsxRuntime.jsx(SupportAction, {}),
2290
2305
  /* @__PURE__ */ jsxRuntime.jsx(NotificationsAction, { orgId: state.orgId })
2291
2306
  ] });
2292
2307
  }
2308
+ function ChromeDevNotesMenu() {
2309
+ const { ready, openTasks } = react.useContext(DevNotesTasksContext);
2310
+ if (!ready) return null;
2311
+ return /* @__PURE__ */ jsxRuntime.jsx(devnotes.DevNotesMenu, { position: "top-right", onViewTasks: openTasks });
2312
+ }
2293
2313
  function useIsSuperAdmin() {
2294
2314
  const state = useChromeState();
2295
2315
  return (state?.orgs ?? []).some((o) => /super/i.test(o.rawRole ?? ""));