Per tho: don't add the screenshot test suite to this PR — it's not a
common path elsewhere yet, and the dedicated config / CI step / 12 PNGs
go with it.
Removed:
- desktop/playwright-screenshot.config.ts
- desktop/tests/e2e/screenshot-feature-flags.ts
- 12 screenshot PNGs under desktop/tests/e2e/screenshots/
- the Desktop screenshot e2e step from .github/workflows/ci.yml
Kept (genuine test infra, not a 'test addition' in tho's sense):
- bridge.ts seedPreviewFeatures option — preview features default-on in
E2E so existing smoke specs (workflows.spec.ts etc.) can still reach
preview-gated entry points
- tests/helpers/features.ts — single SoT for the seeding's preview ID
list, derived from preview-features.json
- src/shared/features/resolveEnabled.test.mjs — unit coverage for code
this PR added
Updated stale doc comment in bridge.ts that referenced the removed spec
by name.
Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
Per tho's clarification, the manifest is preview-only by design — a bad
rebase had widened it to include stable entries with an explicit `tier`
field. Restoring the original shape:
- Rename `features.json` -> `preview-features.json` (loader, alias,
ts-config, vite alias, test-loader-hooks, helpers, log strings).
- Drop the 4 stable entries from the manifest. Only the 4 preview
features remain (workflows, projects, pulse, forum).
- Drop the `tier` field from the schema, types, and Zod validator —
manifest membership is now sufficient ("in the file = preview;
absent = stable, fail-open").
- Simplify `resolveEnabled(featureId, overrides)` — once you're inside
it, the feature is preview by definition.
- `useFeatureEnabled`: in-manifest -> check overrides; otherwise return
true (fail-open).
- `usePreviewFeatureWarning`: gate on manifest membership instead of
`tier === 'preview'`.
- Settings: `ExperimentalFeaturesCard` lists every desktop feature in
the manifest directly; SettingsView feature gate uses the new
`resolveEnabled` signature.
- Tests: rewrote `resolveEnabled.test.mjs` for the new signature; helper
drops the tier filter.
Per Marge's review on the previous push, `screenshot-feature-flags.ts`
was dropped from smoke testMatch but no CI step invoked the dedicated
screenshot config — coverage was dark. Adding a `Desktop screenshot e2e`
step in `.github/workflows/ci.yml` that runs `--config=
playwright-screenshot.config.ts` after the smoke step, restoring
coverage without dirtying smoke.
Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
The release notes extraction failed on two counts: awk errors when
CHANGELOG.md doesn't exist (first release has no changelog), and
head -n -1 is a GNU extension unsupported on macOS runners. Guard
with a file existence check and replace head with sed '$d'.