Skip to content

Commit 146fa26

Browse files
authored
Merge pull request #31 from ZDOSS/codex/hosted-demo-run-local-cta
[codex] Clarify hosted demo setup path
2 parents 5159fbe + 50d8e9a commit 146fa26

8 files changed

Lines changed: 226 additions & 118 deletions

File tree

AI.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file is the standing architecture and contributor-alignment ledger for the
44

55
## Project state
66

7-
The repository now has a working MVP implementation that matches the planning in `docs/FullSpec.md`. The shared core, hybrid web/desktop shells, validated command surface, board/backlog/table/docs/roadmap/calendar/bugs/my work/search/settings views, PWA install, and desktop shell are wired up and tested.
7+
The repository now has a working MVP implementation that matches the planning in `docs/FullSpec.md`. The shared core, hybrid web/desktop shells, validated command surface, board/backlog/table/docs/roadmap/calendar/bugs/my work/search/settings views, local/self-hosted PWA install behavior, hosted-demo distribution mode, and desktop shell are wired up and tested.
88

99
The product name is **Grillo Project Hub**, with **GPH** as the approved abbreviation.
1010

@@ -26,7 +26,7 @@ The product name is **Grillo Project Hub**, with **GPH** as the approved abbrevi
2626
```
2727
package.json # npm workspace
2828
tsconfig.base.json # shared TS config
29-
apps/web # hosted PWA target (Vite + PWA plugin)
29+
apps/web # hosted demo and local web/PWA target (Vite + PWA plugin)
3030
apps/desktop # Tauri desktop shell (Vite + Rust commands)
3131
packages/core # domain model, storage, commands, export/import, search, templates
3232
packages/ui # shared React components, views, theme, command palette
@@ -84,7 +84,7 @@ The core domain in `packages/core/src/domain/` covers the entities the plan call
8484
- `AppShell` now consumes adapter `watch()` events for the active project and shows an explicit external-change banner with `Reload from storage` and `Keep my changes`; reloading validates the bundle before replacing the store, rename events carry `event.newKey` through the reload path so the app does not keep saving to a stale file key, and keeping local changes marks the project dirty so auto-save can intentionally overwrite on the next save cycle
8585
- the shared shell wraps routes in `ToastProvider`; route code should use `useToast()` for short-lived feedback and keep blocking or recoverable errors in `InlineAlert`
8686
- the shared shell exposes explicit project actions next to the save-state indicator: `Save now` / `Retry save` routes through the active `ProjectStoreAdapter.save()` plus `markSaving()` / `markSaved()` / `markSaveFailed()`, records a launcher recent from successful browser/folder save metadata, `Switch project` navigates to `/projects`, and `Close project` returns to the launcher immediately only for clean saved projects; dirty projects and unsaved in-memory imports/demos must confirm `Close without saving` before `closeProject()` runs
87-
- the web shell now surfaces offline status and a captured `beforeinstallprompt` install action in the header, and emits one lightweight due-item/reminder notification per project/day/count combination
87+
- the web shell now surfaces offline status and emits one lightweight due-item/reminder notification per project/day/count combination; local/self-hosted web builds capture `beforeinstallprompt` and show `Install app`, while hosted-demo builds suppress that install prompt and show a `Run locally` GitHub setup CTA instead
8888
- desktop storage now only writes to the filesystem when a folder path has actually been attached; otherwise the desktop shell behaves as browser-local storage on purpose instead of pretending to be folder-backed
8989
- recent-project reopen uses the active adapter's `load()` path rather than forcing JSON import; desktop recents restore the remembered folder path before loading
9090
- new project creation now saves through the active adapter before navigation, so folder-backed creates produce the initial `.pm-suite/<project-id>.pms.json` immediately instead of waiting for a later dirty auto-save
@@ -140,10 +140,12 @@ The core domain in `packages/core/src/domain/` covers the entities the plan call
140140

141141
- both apps import the same `@gph/ui` AppShell, views, and command palette
142142
- project navigation metadata now lives in shared `packages/ui/src/nav-config.ts`, so AppShell navigation and Settings left-panel visibility both derive from one source of truth
143-
- the web app uses `@vitejs/plugin-pwa` for install/offline; the desktop app uses the Tauri runtime
143+
- the web app uses `@vitejs/plugin-pwa` for offline/local install support; the desktop app uses the Tauri runtime
144144
- the web app's storage adapter supports both browser-local saves and optional local-folder saves via the browser file-system picker when the runtime exposes that capability; the desktop adapter talks to a Rust filesystem command
145145
- in development, both apps run in the browser; the desktop app's storage adapter falls back to localStorage when `__TAURI__` is absent
146-
- the AppShell accepts an `appMode: "web" | "desktop"` prop for platform-specific header sizing
146+
- the AppShell accepts an `appMode: "web" | "desktop"` prop for platform-specific header sizing plus `appDistribution: "local" | "hosted-demo"` for distribution-specific header calls to action
147+
- `apps/web/src/distribution.ts` derives hosted-demo mode from the GitHub Pages base path `/Grillo-Project-Hub/`, from `VITE_GITHUB_PAGES=true`, or from an explicit `VITE_GPH_DISTRIBUTION=hosted-demo`; `VITE_GPH_DISTRIBUTION=local` is the override for self-hosted builds that use the Pages base path but should still offer local PWA install
148+
- hosted-demo mode must point users to the GitHub README `#run-locally` instructions rather than making the Pages sample look like the primary product install path; keep MCP/bridge language careful because the bridge runtime is not shipped yet
147149
- the shared workspace launcher now explains the real storage story per platform:
148150
- web/PWA: browser-local projects by default, optional local-folder saves when supported, plus JSON import/export
149151
- desktop: browser-local by default, optional manual folder path for new projects, and folder scanning/open for existing `.pm-suite` saves
@@ -635,13 +637,22 @@ The core domain in `packages/core/src/domain/` covers the entities the plan call
635637
- increasing board columns from a hard-coded 296px to the shared normal lane width
636638
- making Bug triage lanes use a wider minimum and horizontal overflow instead of compressing all three buckets into the available viewport
637639
- adding a CSS contract test for lane minimums and overflow behavior
640+
- clarified hosted-demo distribution and local setup by:
641+
- adding `appDistribution` to `AppShell` so hosted GitHub Pages builds show a `Run locally` GitHub CTA instead of the browser `Install app` PWA prompt
642+
- adding `apps/web/src/distribution.ts` to derive local vs hosted-demo mode from the Pages base path, `VITE_GITHUB_PAGES`, or an explicit `VITE_GPH_DISTRIBUTION` override
643+
- keeping PWA install support available for local/self-hosted web builds where the browser emits `beforeinstallprompt`
644+
- rewriting `Readme.md` around the real setup story: local-first use, hosted demo limitations, storage model, development commands, deployment, testing, and future release positioning
645+
- adding focused AppShell and web distribution regressions so the hosted demo cannot quietly return to the misleading install CTA
646+
- addressed the Greptile hosted-demo install follow-up by:
647+
- keeping the web `beforeinstallprompt` listener active for hosted-demo builds so it still calls `preventDefault()` and suppresses the browser-native install prompt
648+
- only storing the captured install prompt for local/self-hosted builds, preserving the `Install app` button there while hosted-demo mode continues to show `Run locally`
638649

639650
## Open follow-on planning
640651

641652
- UI/UX overhaul planning lives in `docs/superpowers/specs/2026-07-02-ui-ux-overhaul-design.md`, `docs/superpowers/plans/2026-07-02-ui-ux-overhaul-implementation-plan.md`, and the new `docs/plans/July 2026 plan.md`; the first implementation pass is now in code, and the July plan is the active priority order for deeper product-depth, workflow, and surface-by-surface improvements
642653
- a deeper roadmap interaction plan (multi-day bars, dependencies, swimlanes)
643654
- a security-first plugin runtime plan before any third-party plugin execution
644-
- a public-internet hosting plan (currently out of MVP scope; only trusted internal hosting is supported)
655+
- a public-internet hosting plan (currently out of MVP scope; GitHub Pages is a static hosted demo, and real work remains local/self-hosted until a richer trusted hosting story exists)
645656
- a sync-backend plan if richer collaboration is pursued
646657

647658
The current `docs/FullSpec.md`, `docs/plans/2026-06-10-hybrid-day-one-implementation-plan.md`, and UI/UX overhaul planning package remain the product source of truth. The implementation in this repository implements the MVP slice of the original plan and now includes the first working UI/UX overhaul slice with shared primitives and migrated route surfaces.

0 commit comments

Comments
 (0)