Repository navigation
AppRC 0.20.0
💥 Breaking changes
-
Breaking:
AppRC(...)now requiresapp_idand declares storage only
through optionalstorage=rc.Storage(...); the 0.19 capability
constructors andmodemodel were removed.
Affected: Applications usingenv_only,storage_only,
app_wide_config,app_wide_storage,app_name, ormode.
Migration: Constructrc.AppRC(app_id=..., config_package=...)directly
and addrc.Storage(selector_env_key=...)only for persistent user data. -
Breaking: New installations use the fixed
~/.local/share/<app-id>/AppRC directory on every operating system, with
apprc.user.env,apprc.toml, and an initialstorage/root; managed
filenames and platformdirs path selection were removed.
Affected: Applications and users relying on platform config/data paths,
filename overrides,.env.apprc-app,.env.apprc-storage, or
<app>.apprc.toml.
Migration: Rename packaged.env.sharedtoapprc.defaults.env, declare
stableapp_idand optionallegacy_app_ids, then run
<app> config migrate --dry-runand<app> config migrate --yes. -
Breaking: Runtime storage selectors now accept registered names only;
selected_storageinapprc.tomlreplaces path selectors persisted in a
user dotenv.
Affected: Users passing a path through--storage,<APP>_STORAGE, or an
explicit dotenv, and applications shipping a selector default.
Migration: Register the path withconfig storage add NAME ROOT, select
the name, and pass onlyNAME;config migrateconverts a released 0.19
path selector into the nameddefaultstorage. -
Breaking: User dotenv operations use
userinstead ofapp, and
storage-free declarations no longer expose--storage,config storage,
or--scope storageeven when an old TOML file exists.
Affected: CLI scripts using--scope app,config app init, or storage
controls for an app that does not declareStorage.
Migration: Runconfig setupto create the always-present user dotenv and
use--scope user; addstorage=rc.Storage()in Python only when the app
actually supports persistent storage. -
Breaking: Machine-readable paths, doctor statuses, and provenance now use
file-specificapprc_dir,user_dotenv,storage_dotenv,
user_dotenv_not_ready,storage_registry_not_ready, and
shell_dotenv_usernames.
Affected: Code parsing config JSON or provenance origin literals.
Migration: Replace 0.19 config-home, app-config, named-storage, and
shell_dotenv_appkeys with the corresponding file-specific names. -
Breaking:
rc.field(..., required=True)and internal
env_field(..., required=True)now reject a Pythondefaultor
default_factory.
Affected: Config declarations that mark a field required while providing
every instance with a Python fallback.
Migration: Removerequired=Truewhen the fallback is intentional, or
remove the fallback and provide the value through the environment,
constructor, orapprc.defaults.env.
➕ Added
-
Added a single named-storage registry model with explicit
add,select,
rename,repoint,move, andremoveoperations shared by the CLI and
Textual editor. The first entry becomes selected, later additions preserve
selection, rename follows selection, and removing the selected entry
clears it with a warning. -
Added
config migratefor released 0.19 platform directories, custom
<APP>_APPRC_TOMLlocations, legacy dotenv filenames, legacy app IDs, and
path-valued storage selectors. It preflights conflicts and never replaces
an existing destination. -
Added
config purgewith dry-run output, malformed-registry preflight,
symlink barriers, exact fixed-file removal, recursive deletion limited to
registered roots inside the AppRC directory, and preservation of external
storage data. -
Added parameterless
AppRC.ensure_bootstrapped()and
AppRC.bootstrap_resultfor high-level convenience boundaries that use
default bootstrap policy.
💔 Changed
-
Changed the default initial storage root to
~/.local/share/<app-id>/storage/without a redundantdefault/
component. Relative registry roots now resolve againstapprc.toml. -
Changed setup to create an empty
apprc.user.envfor every app and to
register storage under the namedefaultwithout writing structural
selectors into a managed dotenv. -
Changed selector precedence to preserve
--env-file-overrides-os-environ:--storagewins, process and explicit
dotenv selectors follow that option, and TOML selection is the fallback. -
Changed repeated explicit bootstrap calls to reload the process
environment while retaining the latest successful result; failed reloads
keep the preceding successful result.
🗑️ Removed
- Removed the runtime
platformdirsdependency and all current-layout
path abstraction. A small internal locator remains only to find released
0.19 files during explicit migration.