Skip to content

feat(share): promote Share out of Labs#422

Merged
graydawnc merged 2 commits into
mainfrom
feat/share-flag-out-of-labs
Jul 13, 2026
Merged

feat(share): promote Share out of Labs#422
graydawnc merged 2 commits into
mainfrom
feat/share-flag-out-of-labs

Conversation

@graydawnc

@graydawnc graydawnc commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

What

The share editor (local export: image / PDF / Markdown / .spool) graduates from a Labs experiment to a standard always-on feature, following the Security Scan promotion (#420). This removes:

  • The share flag: the VITE_FEATURE_SHARE env (dropped from the test:e2e script; release.yml never set it), the localStorage tri-state store (labsFlags.ts, spool.labs.share), and the resolveFeatureRuntime/useFeature machinery. featureFlags.ts now contains only the sharePublish build-time gate, which stays until the publish backend ops are ready — its removal is the launch switch.
  • The entire Labs tab — with share promoted it had zero rows left. Tab definition, LabsTab component, settings.tab_labs + the labs.* i18n block across all 7 locales. Future experiments can reintroduce the scaffolding.
  • Every shareEnabled gate: App.tsx view gates and ~10 conditional prop spreads, the flag-off bounce-navigation effect (unreachable once the flag is gone), ShortcutsTab/getShortcutGroups (share-editor shortcut group now static — folded into a SHORTCUT_GROUPS const), useDraftCountForSession.

The Labs tab hosted the app's only in-app feedback affordance (the Discord invite). It is relocated to Settings → General → About ("Give feedback", translated in all 7 locales) rather than dropped.

Behavior notes

  • Users who had toggled Share off in Labs get it on after upgrading; stale spool.labs.share localStorage keys are inert (nothing reads them).
  • Prod builds now ship the share editor on by default (previously opt-in via Labs). The remote publish/sign-in surface is unchanged — still gated by VITE_FEATURE_SHAREPUBLISH, which prod does not set.

Known coverage gap (documented, not new)

The shipped prod configuration is now share-on / publish-off, but every e2e build pins VITE_FEATURE_SHAREPUBLISH=1, so the publishEnabled=false arms (ShareMenu popover, SharesPage tabs, Settings rail) render in no automated test — covering them needs a second flag-less build in CI. Before this PR the gap was moot (share itself was off in prod); it is tracked in the share GA fast-follow pool ("flag-OFF render smoke") and should land before the publish flag flips.

Test plan

  • Removed tests covered removed behavior: labsFlags.test.ts (tri-state store), the resolveFeatureRuntime truth table, and settings-labs.spec.ts (toggle persistence + flag-off bounce navigation). The Security-always-on assertion from that spec moved to settings.spec.ts.
  • New e2e in settings.spec.ts: (1) sidebar-shares + sidebar-security visible with no env/opt-in and no settings-tab-labs in the rail; (2) the relocated feedback link renders in General → About with the Discord href.
  • App unit suite green (447); full e2e suite green locally on macOS — all share-*.spec.ts suites now exercise the always-on path since the e2e build no longer sets VITE_FEATURE_SHARE.
  • High-effort multi-agent review on the final diff: 3 findings — feedback-link loss (fixed here), the publish-off coverage gap (documented above), optional share-callback props left in consuming components (type-safety cleanup, deferred to a follow-up PR; zero runtime difference).

🤖 Generated with Claude Code

graydawnc and others added 2 commits July 13, 2026 18:00
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… About

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@graydawnc
graydawnc added this pull request to the merge queue Jul 13, 2026
Merged via the queue into main with commit 55a7640 Jul 13, 2026
6 checks passed
@graydawnc
graydawnc deleted the feat/share-flag-out-of-labs branch July 13, 2026 10:25
graydawnc added a commit to AmagiDDmxh/spool that referenced this pull request Jul 15, 2026
VITE_FEATURE_SECURITY and VITE_FEATURE_SHARE were removed when Security
Scan (paperboytm#420) and Share (paperboytm#422) were promoted out of Labs;
VITE_FEATURE_SHAREPUBLISH is the only flag still read by featureFlags.ts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
graydawnc added a commit to AmagiDDmxh/spool that referenced this pull request Jul 15, 2026
* perf: remove unused packaged ONNX runtime

* chore(build): drop retired feature flags from the app build cache key

VITE_FEATURE_SECURITY and VITE_FEATURE_SHARE were removed when Security
Scan (paperboytm#420) and Share (paperboytm#422) were promoted out of Labs;
VITE_FEATURE_SHAREPUBLISH is the only flag still read by featureFlags.ts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Chen <99816898+donteatfriedrice@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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