Skip to content

chore: launch checklist + dev script for spool share publish#367

Merged
graydawnc merged 4 commits into
mainfrom
feat/share-launch-prep
Jun 5, 2026
Merged

chore: launch checklist + dev script for spool share publish#367
graydawnc merged 4 commits into
mainfrom
feat/share-launch-prep

Conversation

@graydawnc

@graydawnc graydawnc commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

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-backend on http://localhost:8788 (wrangler pages dev with local D1/KV/R2)
    • share-web on http://localhost:3002 (vite dev, /api/* proxied to backend)
    • Spool app (electron + vite, env-pinned to the local backend)
      Ctrl-C terminates all three. Documented prerequisites: packages/share-backend/.dev.vars filled out, local D1 migrations applied, SPOOL_GOOGLE_CLIENT_ID_DESKTOP exported.
  • packages/app/src/renderer/featureFlags.ts — drops the stale DEV_DEFAULT_ON.sharePublish line. useSharePublish() is the single resolver now (covered in feat(app): publish modal — PII gate, visibility, expiry, republish #362); the DEV_DEFAULT_ON entry was a leftover from an earlier revision and would otherwise auto-enable the surface in dev for contributors who haven't opted in via VITE_FEATURE_SHAREPUBLISH=1.

  • packages/app/src/renderer/components/LabsTab.tsx — comment clarifying why no sharePublish row 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 — locks resolveSharePublish behaviour: '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 — adds docs/runbooks/ (the share runbook is held back until v0.5.0 actually ships per the launch decision) and e2e-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":

  • The dev script makes the whole local stack runnable by someone who's never touched the backend before; without it the contributor experience is "read seven READMEs and remember 4 env vars".
  • Dropping DEV_DEFAULT_ON.sharePublish is the actual moment the gate becomes purely build-time. Until this lands, a contributor running pnpm dev without setting the flag would still see the publish surface — a real gating leak.
  • The featureFlags test pins down the contract so a future "I'll just toggle this for testing" change can't quietly ship the gate broken.

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 --> ME
Loading
Build VITE_FEATURE_SHARE VITE_FEATURE_SHAREPUBLISH Editor Publish surface Account tab
prod (current main after this PR) unset unset hidden hidden hidden
dogfood preview 1 unset visible hidden hidden
internal share-publish dogfood 1 1 visible visible visible
dev contributor (.env.development.local) per pref per pref per pref per pref per pref

Important: GA flip is not part of this PR. The 12 PRs land all the code; flipping VITE_FEATURE_SHAREPUBLISH=1 in 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 contract
  • pnpm --filter @spool/app test:e2e — share-related specs still pass with the popover + tab structure
  • Manual: in a clean checkout with no VITE_FEATURE_SHAREPUBLISH, pnpm dev boots the editor but no Publish tab, no Account tab — the gate is closed by default
  • Manual with the flag set: every share-publish surface lights up; sign-in, publish, revoke all work against the local backend booted by share-dev.sh

Risk

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 add VITE_FEATURE_SHAREPUBLISH=1 to packages/app/.env.development.local; documented in the LabsTab comment and the share-dev.sh prerequisites.

Submitted by @graydawnc.

graydawnc and others added 4 commits June 6, 2026 05:11
- 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>
@graydawnc
graydawnc added this pull request to the merge queue Jun 5, 2026
Merged via the queue into main with commit 26a858f Jun 5, 2026
6 checks passed
@graydawnc
graydawnc deleted the feat/share-launch-prep branch June 5, 2026 21:17
@graydawnc graydawnc changed the title chore: launch checklist + dev script for spool share publish v0.5.0 chore: launch checklist + dev script for spool share publish Jun 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant