chore: launch checklist + dev script for spool share publish#367
Merged
Conversation
- Fix the featureFlags.test.ts comment that contradicted the assertion: DEV pins both flags on, so the assertion is true, not "off" as the original comment claimed. - Soften LabsTab copy from "Requires Share to be on" to "Pairs with Share" — `sharePublish` is gated independently of `share` today; promising an enforced dependency we don't model would mislead.
Keep internal launch runbooks out of git until the corresponding feature ships (authored in ~/Documents/dev-docs/spool/, promoted via a follow-up after launch). Also ignore the Playwright e2e screenshot output directory so diagnostic artefacts don't accidentally land in commits. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The last piece of the v0.6.0 share-publish stack — the launch checklist + dev tooling + a couple of cleanups that don't fit anywhere else:
scripts/share-dev.sh— one-shot boot for the full local stack. Brings up:share-backendonhttp://localhost:8788(wrangler pages dev with local D1/KV/R2)share-webonhttp://localhost:3002(vite dev,/api/*proxied to backend)Ctrl-C terminates all three. Documented prerequisites:
packages/share-backend/.dev.varsfilled out, local D1 migrations applied,SPOOL_GOOGLE_CLIENT_ID_DESKTOPexported.packages/app/src/renderer/featureFlags.ts— drops the staleDEV_DEFAULT_ON.sharePublishline.useSharePublish()is the single resolver now (covered in feat(app): publish modal — PII gate, visibility, expiry, republish #362); theDEV_DEFAULT_ONentry was a leftover from an earlier revision and would otherwise auto-enable the surface in dev for contributors who haven't opted in viaVITE_FEATURE_SHAREPUBLISH=1.packages/app/src/renderer/components/LabsTab.tsx— comment clarifying why nosharePublishrow appears pre-launch (to keep the surface invisible to contributors who haven't opted in).packages/app/src/renderer/components/SettingsPanel.tsx— visibleTabs / activeTab refactor that already landed in feat(app): Published tab + Settings → Account + cross-device sync #363; this PR's diff is the polish pass on top so the tab visibility filter has a single source of truth.packages/app/src/renderer/featureFlags.test.ts— locksresolveSharePublishbehaviour:'1'→ true, anything else → false, prod env (DEV=false, flag unset) → false. Catches the "I added DEV_DEFAULT_ON back" class of regressions before the gate flips on the wrong build..gitignore— addsdocs/runbooks/(the share runbook is held back until v0.5.0 actually ships per the launch decision) ande2e-output/(Playwright artifact dir).Why a launch-prep PR
The 11 PRs that lead up to this one each touch one slice of the system (backend, oauth, modal, web, hardening, …). None of them own "we're now ready to flip the switch":
DEV_DEFAULT_ON.sharePublishis the actual moment the gate becomes purely build-time. Until this lands, a contributor runningpnpm devwithout setting the flag would still see the publish surface — a real gating leak.Gating state at end of stack
flowchart TD subgraph build["build time"] ENV1["VITE_FEATURE_SHARE"] ENV2["VITE_FEATURE_SHAREPUBLISH"] end subgraph runtime F1["useFeature share"] F2["useSharePublish"] end subgraph surfaces ED["Share editor"] PUB["Share popover + publish form"] TAB["SettingsPanel — Account tab"] SP["Published tab on SharesPage"] ME["Settings — Account pane"] end ENV1 --> F1 ENV2 --> F2 F1 --> ED F2 --> PUB F2 --> TAB F2 --> SP F2 --> MEVITE_FEATURE_SHAREVITE_FEATURE_SHAREPUBLISHmainafter this PR)111.env.development.local)Important: GA flip is not part of this PR. The 12 PRs land all the code; flipping
VITE_FEATURE_SHAREPUBLISH=1in the prod build remains a manual step held back until end-to-end dogfood sign-off.Verification
pnpm --filter @spool/app test— featureFlags.test.ts pins the resolver contractpnpm --filter @spool/app test:e2e— share-related specs still pass with the popover + tab structureVITE_FEATURE_SHAREPUBLISH,pnpm devboots the editor but no Publish tab, no Account tab — the gate is closed by defaultshare-dev.shRisk
The DEV_DEFAULT_ON drop is the only behavior-changing line for someone running plain
pnpm dev. Contributors who relied on the dev default to see the surface need to addVITE_FEATURE_SHAREPUBLISH=1topackages/app/.env.development.local; documented in the LabsTab comment and the share-dev.sh prerequisites.Submitted by @graydawnc.