Background
The fork stores its own data separately from upstream's settings.json so upstream syncs never conflict:
~/.prowl/global.onevcat.json — UserGlobalSettings: custom commands, agent profiles, didSeedAgentProfiles, and since R2a disabledWorkflowIDs / workflowBindings
~/.prowl/repo/<repo>/prowl.onevcat.json — per-repo custom commands, disabledGlobalCommandIDs, agent-profile memory
The .onevcat. infix dates from the fork's personal-customization era (76046bc, February 2026, originally supacode.onevcat.json at the repo root; renamed during the rebrand). Prowl now ships public releases (GitHub Releases, Sparkle appcast, Prowl-Site), and the data in these files is core feature state, not personal customization — a file named after one person in every user's ~/.prowl/ is wrong.
Proposal
Keep the split-from-upstream design; only rename:
global.onevcat.json → global.user.json
prowl.onevcat.json → prowl.user.json
(final names open to bikeshedding)
Migration
Same shape as the supacode.onevcat.json → prowl.onevcat.json legacy migration (ea9259f / rebrand): read falls back to the old filename when the new one is absent; first save writes the new name. Keep the fallback for at least one release cycle.
Scope
supacode/Support/SupacodePaths.swift (userGlobalSettingsURL, repo settings paths, legacy fallbacks)
- Tests for the migration fallback
docs/reference/settings-fields.md on-disk locations table (+ any other docs naming the files)
Background
The fork stores its own data separately from upstream's
settings.jsonso upstream syncs never conflict:~/.prowl/global.onevcat.json—UserGlobalSettings: custom commands, agent profiles,didSeedAgentProfiles, and since R2adisabledWorkflowIDs/workflowBindings~/.prowl/repo/<repo>/prowl.onevcat.json— per-repo custom commands,disabledGlobalCommandIDs, agent-profile memoryThe
.onevcat.infix dates from the fork's personal-customization era (76046bc, February 2026, originallysupacode.onevcat.jsonat the repo root; renamed during the rebrand). Prowl now ships public releases (GitHub Releases, Sparkle appcast, Prowl-Site), and the data in these files is core feature state, not personal customization — a file named after one person in every user's~/.prowl/is wrong.Proposal
Keep the split-from-upstream design; only rename:
global.onevcat.json→global.user.jsonprowl.onevcat.json→prowl.user.json(final names open to bikeshedding)
Migration
Same shape as the
supacode.onevcat.json→prowl.onevcat.jsonlegacy migration (ea9259f / rebrand): read falls back to the old filename when the new one is absent; first save writes the new name. Keep the fallback for at least one release cycle.Scope
supacode/Support/SupacodePaths.swift(userGlobalSettingsURL, repo settings paths, legacy fallbacks)docs/reference/settings-fields.mdon-disk locations table (+ any other docs naming the files)