What's Changed
Features
- feat(config): support layered OpenCode config sources with revision-guarded saves (#358) — The global OpenCode configuration is now a merged set of recognized sources in OpenCode order (
config.json,opencode.json,opencode.jsonc), with comment-preserving writes into the preferred source, source-set revision checks that reject stale saves, shadowed-removal rejection, and last-known-good recovery across every source.
Bug fixes
- fix(schedules): fall back to the config default model when an override is gone (#356)
- fix(download): keep iOS home screen app saves in-app via the share sheet (#353)
- fix(session): load more pages when filtered list underfills viewport (#351)
Refactors
- refactor(config): make on-disk opencode.json the single source of truth (#354) — Drops the
opencode_configstable, named profiles, and per-repo config switching; reads and writes go through one file owner and one apply owner. - refactor(settings): redesign OpenCode settings with shared collapsible sections
- refactor(settings): remove command slash prefix and collapse mobile row actions
Build
- build(docker): bake chromium runtime libs and refresh pinned tools (#357)
- build(docker): exclude nested node_modules and scratch dirs from build context
Full Changelog: v0.17.5...v0.18.0