{"version":"2.1.227","anchor":"a-storage-backend-is-threaded-through-most-of-the-app","canonical_anchor":"a-storage-backend-is-threaded-through-most-of-the-app","heading":"A storage backend is threaded through most of the app","tier":"internal","area":"Internals","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.227\/e\/a-storage-backend-is-threaded-through-most-of-the-app","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.227","markdown":"### A storage backend is threaded through most of the app\n\nA new storage backend now runs through hundreds of paths, from plugin installs to worktree cleanup.\n\n**What**\n\nA new storage backend, previously used at a handful of call sites, is now passed into hundreds of functions covering plugin install and update, marketplace refresh, settings writes, task and daemon state, transcript reads, MCP auth caching and worktree cleanup. A new React context supplies it via `SessionServicesProvider` and `useSessionServices`.\n\n**Details**\n\n- Every consumer keeps a branch for when no backend is supplied, falling back to the existing filesystem paths, so behaviour is unchanged without one.\n- The provider's default value is an empty frozen object.\n- No flag turns this on; the backend is handed down from above, and undefined means the old paths.\n- Occurrences rise from 37 in v2.1.226 to 689 here.\n\n**Evidence**\n\n`SessionServicesProvider: () => uNr`\n\n- Area: Internals\n- Tier: Under the hood\n- Useful: 3\/5\n- Signal: 4\/5"}