From 786d8ebfe898d11e42226cd8a49aba8d2319b861 Mon Sep 17 00:00:00 2001 From: librelad Date: Mon, 24 Aug 2026 03:14:04 +0100 Subject: [PATCH] docs(roadmap): drop STORAGE_PINNED, record the name-vs-path decision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pinning an app to the primary location isn't a fact about its storage, it's a statement about whether the field is editable — so it belongs in the comment, where the renderer's other display metadata already lives. webui_generate_configs.sh already parses **ADVANCED** out of a field's comment; **READONLY** parses the same way and needs no new key, no engine-side list, and no special case in appDir or the migrate path. It also has uses beyond this feature: crowdsec.config:72 warns that editing a field does nothing, next to an editable input. Also records why CFG__STORAGE holds a location name rather than a path, since it's the kind of decision that gets relitigated: mount paths move (relabel, /media//…, a different session) and a name means re-registering once instead of rewriting every app config; and migrate's central question — "this host has no such location, where should it go?" — is a registry lookup, not a string comparison. The config stores intent, the manifest stores fact. Unlike backup locations there's no case for a custom-path override: root only touches registered roots, so a path outside the registry is unusable rather than merely discouraged. Co-Authored-By: Claude Opus 5 --- docs/roadmap/storage-locations.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/roadmap/storage-locations.md b/docs/roadmap/storage-locations.md index c2bdc2b..5eb2094 100644 --- a/docs/roadmap/storage-locations.md +++ b/docs/roadmap/storage-locations.md @@ -116,6 +116,17 @@ CFG_BOOKSTACK_STORAGE=default - `configBackfillMissingKeys` carries the new key into already-installed apps on the next update, so nothing needs a reinstall. - **New compose tag** `#LIBREPORTAL|APP_DIR_TAG|APP_DIR_DATA`, filled in `dockerConfigSetupFileWithData` alongside the existing `CONTAINERS_DIR_TAG`, for the rare template that genuinely needs its own absolute host path. Most apps need nothing — relative volumes already do the right thing. +### 5.1 — Why the value is a name and not `CFG__STORAGE_PATH` + +A path reads better in isolation — `grep STORAGE *.config` would tell you where everything lives without consulting anything. It loses on the two things that actually happen: + +- **Mount paths move.** External drives arrive at `/media//