You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AI.md
+11-1Lines changed: 11 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -89,6 +89,7 @@ The core domain in `packages/core/src/domain/` covers the entities the plan call
89
89
- the browser adapter now repairs older browser-local saves whose metadata index is missing by falling back to the raw `localStorage` project blob and reconstructing the saved-project index entry on load
90
90
- the active project session is now persisted in `localStorage` (`gph.active.project`) and restored on startup through `restoreLastProjectSession()`, so reloads in both web and desktop shells reopen the last project instead of dropping the user into an empty shell
91
91
- session restore now treats corrupt or invalid persisted bundles as stale state: failed import/validation clears `gph.active.project` instead of bubbling an unhandled rejection through the startup hook
92
+
- session restore treats folder-backed active sessions as folder-backed only when the adapter exposes `loadFolderProject()`: if that folder-aware loader is missing or cannot read the project, it clears the active session and returns to the launcher/recent-project reconnect path instead of silently opening the browser-local recovery copy as browser mode
92
93
- the web runtime now installs the same `WebLocalStorageAdapter` instance into both `window.__gph_store` and `WebStorageAdapter.adapter`, preventing auto-save and startup restore from drifting onto different adapter instances if adapter-local state is added later
93
94
- the desktop runtime now installs the same `DesktopStorageAdapter.adapter` instance into `window.__gph_store`; folder-backed desktop saves/loads/existence checks/deletes call `save_project`, `load_project`, `project_exists`, and `delete_project`
94
95
-`useProjectStore.setBundle()` and `markSaved()` normalize `bundle.projectSettings.storageTrust` to the runtime storage trust, so overview/settings/header storage surfaces do not keep showing browser-local after a folder save or open
@@ -183,7 +184,8 @@ The core domain in `packages/core/src/domain/` covers the entities the plan call
183
184
-`/overview` is now the default in-project landing route; `OverviewView` derives health summaries from the active bundle, including active work, milestone progress, blocking relationships, future-only upcoming dates/reminders, triage-lane bug intake, recent activity, and the current storage trust/save state without adding new persisted overview state
184
185
-`ProjectRouter` keeps `/board` pinned to `projectSettings.defaultViewId` when that view is a board, even if saved board views have earlier ordering, and only mounts the work-item modal overlay route while the current path is `/item/:itemId`
185
186
- saved board/backlog/table views keep multi-value filter arrays intact when hydrated into the current single-select toolbar controls; selecting a concrete value intentionally narrows that one dimension, while untouched imported/command-created multi-value filters remain multi-value on update
186
-
- create-item entry points now carry view context through `CreateItemPrefill` in `palette-bus.ts`; the shared dialog can receive and expose `typeId`, `statusId`, `priorityId`, and `assigneeId`, so board, bug triage, and my-work creates no longer drop the context that made the user click that surface's action in the first place
187
+
- create-item entry points now carry view context through `CreateItemPrefill` in `palette-bus.ts`; the shared dialog can receive and expose `typeId`, `statusId`, `priorityId`, `assigneeId`, `milestoneId`, `startDate`, and `dueDate`, so board, bug triage, my-work, backlog, table, and calendar creates no longer drop the context that made the user click that surface's action in the first place
188
+
-`createItemPrefillFromFilter()` in `views/planning/view-helpers.ts` is the shared adapter from active single-value planning filters into create-dialog defaults; board creation uses first-column status as a fallback, then lets active type/status filters override it, while backlog and table creation inherit active type/status/priority/assignee/milestone filters
187
189
- the create-item dialog derives type defaults from dependency-tracked type-registry inputs while open, and its form-opening reset is split from derived default refreshes so a settings-level type default change can update selects without clearing a user's typed title or description
188
190
- modal-style work item detail at `/item/:id` with full edit, checklist conversion, inline comment editing, subtasks, relationships, attachments, reminders, custom fields, readable activity, and pinned action footer; `WorkItemModal.tsx` is now the owning implementation and routes through the shared `Modal` primitive with `size="work-item"`, while `WorkItemDrawer.tsx` is only a compatibility wrapper that renders `WorkItemModal`
189
191
- work item detail interactions avoid browser-native modal APIs for persisted edits/destructive work: comment edits use inline local state and `comment.edit`, permanent deletion uses shared `ConfirmDialog`, and relationship add/remove controls route through `relationship.create` / `relationship.delete` so duplicate/cycle validation remains in `@gph/core`
@@ -563,6 +565,14 @@ The core domain in `packages/core/src/domain/` covers the entities the plan call
563
565
- refusing to silently open stale browser recovery when a selected folder does not contain the recorded `.pms.json`
564
566
- replacing the misleading "could not be found in local storage" error with a reconnect message that names the recorded `.pm-suite` file
565
567
- adding focused ProjectsListView regressions for reconnect-and-open, rejected/null folder-load recovery, and missing-folder-file behavior
568
+
- fixed the post-July flow-correctness gaps by:
569
+
- preventing folder-backed startup restore from silently downgrading to browser recovery when `loadFolderProject()` cannot read the project
570
+
- tightening that guard so a folder-trust active session also clears when an adapter lacks `loadFolderProject()` entirely, rather than falling back through recovery-capable `load()`
571
+
- extending the create dialog with milestone prefill and `item.create` submission support
572
+
- making board, backlog, and table New item actions inherit active planning filters through `createItemPrefillFromFilter()`
573
+
- adding the missing table-level New item action so table users do not have to leave the surface to create matching work
574
+
- hardening the command-palette keyboard regression to wait for the palette focus effect before asserting `aria-activedescendant` movement in the full parallel UI suite
575
+
- adding focused regressions for folder-session restore, create-dialog milestone defaults, and board/backlog/table filter-aware creation
Copy file name to clipboardExpand all lines: Readme.md
+7-6Lines changed: 7 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,12 +6,12 @@ A free, open source, hybrid day-one project management suite for practical softw
6
6
7
7
The MVP implementation is in place. The current build supports:
8
8
9
-
-**Workspace** with new/open/demo project flow, immediate folder-backed project creation when a folder is selected, recent-project reopen, browser-vs-folder storage guidance, inline delete/remove confirmation, an explicit `/projects` launcher route, and automatic restore of the last active project after reload
9
+
-**Workspace** with new/open/demo project flow, immediate folder-backed project creation when a folder is selected, recent-project reopen, browser-vs-folder storage guidance, inline delete/remove confirmation, an explicit `/projects` launcher route, and automatic restore of the last active project after reload without silently downgrading folder sessions to browser recovery
10
10
-**Shared UI foundation** with reusable buttons, icon buttons, fields, page headers, surfaces, toolbars, empty states, inline alerts, focus-restoring modal/dialog primitives, data tables, work-item metadata components, and responsive shell navigation that owns Escape while open
11
11
-**Overview** as the default project landing view for created, opened, imported, demo, and restored projects, summarizing active work, milestone progress, blocked items, future upcoming dates/reminders, triage-lane bug intake, recent activity, and the current storage/save state
12
-
-**Board** with drag-and-drop, WIP limits (warn + hard modes), explicit hard-limit feedback, column-based status grouping, context-aware item creation that starts in the first board lane, and whole-card link navigation that keeps visible card metadata available to assistive technology
13
-
-**Backlog** with priority-sorted items, saved working views, shared text/type/status/priority/assignee/milestone filters, custom-field metadata tags, a shared toolbar, and a visible new-item entry point
14
-
-**Table** with accessible sortable header buttons, corrected priority/updated sorting, saved working views, shared filters, column visibility and saved column order, row selection that survives filter changes, bulk status/priority/assignee edits, inline status/priority/assignee/milestone/due-date edits, custom-field columns, and shared metadata badges
12
+
-**Board** with drag-and-drop, WIP limits (warn + hard modes), explicit hard-limit feedback, column-based status grouping, context-aware item creation that starts in the first board lane or active type/status filters, and whole-card link navigation that keeps visible card metadata available to assistive technology
13
+
-**Backlog** with priority-sorted items, saved working views, shared text/type/status/priority/assignee/milestone filters, custom-field metadata tags, a shared toolbar, and a visible new-item entry point that inherits active planning filters
14
+
-**Table** with accessible sortable header buttons, corrected priority/updated sorting, saved working views, shared filters, column visibility and saved column order, row selection that survives filter changes, bulk status/priority/assignee edits, inline status/priority/assignee/milestone/due-date edits, custom-field columns, shared metadata badges, and a filter-aware new-item entry point
15
15
-**Docs** with Markdown editing, sanitized rendering, internal embeds, command-backed sections, reusable document templates, in-surface doc search, linked-work and backlink context panels, router-safe in-app navigation for preview links, stale document-route recovery, correct pane updates when switching documents, draft-preserving editor resets, shared confirmation for document deletion, and safe navigation to the next active document after deleting the open one
16
16
-**Roadmap / timeline** with date drag/resize, milestone lanes, milestone progress and target dates, dependency indicators, explicit date controls that clear each side of a range independently, milestone reassignment, invalid-range feedback, and shared zoom/anchor controls
17
17
-**Calendar** with accessible month navigation controls, month grid, date-based item visibility, explicit day-level scheduled-work creation through the shared work-item dialog, and an agenda for upcoming start/due dates and timezone-aware reminders that stay visible around UTC/local day boundaries
@@ -22,7 +22,7 @@ The MVP implementation is in place. The current build supports:
22
22
-**Consistent settings editing** for members, statuses, priorities, types, and plugin trust with explicit edit or save/cancel flows instead of always-live row inputs
23
23
-**Shared navigation config** so sidebar navigation and left-panel visibility toggles stay in sync
24
24
-**Saved planning views** in the project view bar, with board/backlog/table save, update, delete, and reorder flows backed by validated shared filters that preserve multi-value saved filters
25
-
-**Command palette** with `Ctrl/Cmd+K`, collision-safe combobox/listbox keyboard semantics, and `C` to create items through a draft-preserving dialog with view-aware defaults
25
+
-**Command palette** with `Ctrl/Cmd+K`, collision-safe combobox/listbox keyboard semantics, and `C` to create items through a draft-preserving dialog with view-aware type/status/priority/assignee/milestone/date defaults
26
26
-**Trash** with restore and confirmed permanent deletion for work items, documents, and attachments, including inline feedback when a recovery action cannot be completed
27
27
-**Modal-style work item detail** backed by the shared modal primitive, with full edit, checklist (with convert-to-subtask), inline comment editing, an accessible comment composer, subtasks, relationship add/remove controls, custom fields, attachment upload/preview/delete, reminder create/update/delete, readable activity, app-owned permanent-delete confirmation, archive/trash/delete, and a pinned action footer
28
28
-**Local full-text search** with structured filters
@@ -65,6 +65,7 @@ Note: This is a static client-side demo only. All data lives in the browser (loc
65
65
- Creating a new project after selecting a folder writes the initial `.pm-suite/<project-id>.pms.json` file before the app enters the project, so the folder-backed copy exists immediately.
66
66
- Opening from a selected folder reads the listed `.pms.json` file directly, even if that project has never been recorded in the browser-local recent-project index, and folder metadata wins over stale browser-local trust saved inside older project files.
67
67
- PWA folder saves also keep a browser-local recovery copy so the project still reopens if the browser cannot restore folder access after reload; until the folder is selected again, that recovery load reports as browser-local because the app no longer has write access to the folder.
68
+
- Automatic last-project restore for a folder-backed session reconnects through the folder-aware load path; if that path is unavailable or the folder project cannot be read, the app returns to the launcher/recent-project reconnect flow instead of quietly opening stale browser recovery as browser-local.
68
69
- Opening a folder-backed PWA recent from the launcher reconnects the selected folder before loading the `.pms.json`; if a remembered folder cannot read the project, the launcher asks for the folder once more. If that reconnect is cancelled or unavailable, the browser-local recovery copy can still open, but if a selected folder is missing the recorded project file, the app asks for the folder that contains that `.pm-suite` path instead of silently opening stale recovery data.
69
70
- If you edit that browser-local recovery copy and then select the folder again, opening the folder project promotes the newer recovery copy back into `.pm-suite` before returning to folder-backed mode.
70
71
- If the folder file changed externally while the app was using browser recovery, the folder version is loaded instead of being overwritten by stale browser recovery data.
@@ -104,7 +105,7 @@ The UI/UX overhaul planning package lives in `docs/superpowers/specs/2026-07-02-
0 commit comments