Skip to content

Phase 3: config packs (config-only, one-click apply) - #53

Merged
initcore0 merged 1 commit into
mainfrom
feat/phase3-config-packs
Jun 24, 2026
Merged

Phase 3: config packs (config-only, one-click apply)#53
initcore0 merged 1 commit into
mainfrom
feat/phase3-config-packs

Conversation

@initcore0

Copy link
Copy Markdown
Owner

Second Phase 3 item, building on import/export (#52). Ships curated config-only bundles users apply in one click — and the same format works for community packs.

Changes

  • ConfigPack (OpenWhispCore): a ConfigBundle + display metadata (id/name/description). Same schema-version guard as a hand-imported file. Pure ConfigPack.parseAll turns a directory listing into valid packs — sorted by name, deduped by id, with malformed/too-new files skipped so a bad pack never hides the good ones.
  • Two built-in packs in Resources/packs/: Developer Vocabulary (dev terms + mishear fix-ups) and Punchy Telegram Posts (a shorter telegramPost prompt). package.sh already bundles Resources/*.
  • AppState: bundledConfigPacks() reads Resources/packs/*.json (parsing delegated to the pure helper); applyPack() routes through the existing applyConfig import path, so a pack only touches the sections it contains.
  • SettingsView: a Packs subsection under Backup & Sharing, each pack showing its description + what it will change, with an Apply button.
  • Tests: +9 ConfigPackTestsparseAll sort/dedup/skip-bad, version/malformed guards, and a test that loads the shipped pack files so an authoring typo fails CI rather than a user's import. 147 → 156.
  • README + ROADMAP updated.

swift test 156/156 · ./build.sh clean.

🤖 Generated with Claude Code

Second Phase 3 item, building on import/export (#52). Ships curated config-only
bundles users apply in one click, and the same format works for community packs.

- ConfigPack (OpenWhispCore): a ConfigBundle + display metadata (id/name/
  description). Decodes with the same schema-version guard as a hand-imported
  file; "description" JSON key maps to packDescription. Pure ConfigPack.parseAll
  parses a directory listing into valid packs (sorted by name, deduped by id,
  malformed/too-new files skipped so a bad pack never hides the good ones).
- Two built-in packs in Resources/packs: Developer Vocabulary (dev terms +
  mishear fix-ups) and Punchy Telegram Posts (shorter telegramPost prompt).
  package.sh already copies Resources/* into the bundle.
- AppState: bundledConfigPacks() reads Resources/packs/*.json (delegates parsing
  to ConfigPack.parseAll) and applyPack() routes through the existing applyConfig.
- SettingsView: a Packs subsection under Backup & Sharing listing each pack with
  its description + what it will change, and an Apply button.
- Tests: +9 ConfigPackTests incl. parseAll sort/dedup/skip-bad AND a test that
  loads the SHIPPED pack files so an authoring typo fails CI. 147 -> 156.
- README + ROADMAP updated.

swift test 156/156; ./build.sh clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@initcore0
initcore0 merged commit fee0cd0 into main Jun 24, 2026
3 checks passed
@initcore0
initcore0 deleted the feat/phase3-config-packs branch June 24, 2026 00:58
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