The query string is now the source of truth for the current view, so every URL is bookmarkable/shareable. Reverses the early minimalist-URL rule (user's call). - urlState: urlWithParams (read-modify-write delta on the live query, each provider owns its keys) + clearParams (strip only transient auth params) replace the whole- query stripUrlParams; shareUrl deleted; filterParamUpdates helper. - NavigationProvider: page + ?chan mirrored to the address bar (pushState URL arg; history.state mechanics untouched); loadInitialPage resolves deep links (?v->plex, ?pl->playlists, filter/?chan->feed, bare->stored landing). - FeedFiltersProvider: feed filters mirrored to the URL, gated on page===feed. - useHistorySubview: optional SubviewUrl mapping; PlexBrowse mirrors the sub-view to ?v=<kind>:<args> (show/season/info/person/playlist; grid+player stay ephemeral). - PlaylistsProvider: selected playlist mirrored to ?pl on the Playlists page. - App: the 5 stripUrlParams calls become targeted clearParams (link/oauth/admin/ access/verify/reset); the share-link hydrate effect removed. - Retire the "Share view" feature: Sidebar + SavedViewsWidget buttons + i18n keys. Browser tab title stays the short module/channel name (document.title untouched) — the query never leaks into it, per the user's request. Gate green: typecheck, knip, eslint (0 err), prettier, 247 vitest (urlState.dom.test +9). No browser-E2E yet (most visual sprint — flagged for the epic-end review).
17 lines
595 B
JSON
17 lines
595 B
JSON
{
|
|
"save": "Save current view",
|
|
"namePlaceholder": "View name",
|
|
"saveAction": "Save",
|
|
"cancel": "Cancel",
|
|
"empty": "No saved views yet. Filter the feed, then save it.",
|
|
"apply": "Apply this view",
|
|
"makeDefault": "Set as default (loads on start)",
|
|
"isDefault": "Default view — loads on start",
|
|
"rename": "Rename",
|
|
"delete": "Delete",
|
|
"deleteConfirm": "Delete the saved view “{{name}}”?",
|
|
"reorder": "Drag to reorder",
|
|
"actionFailed": "Couldn't update your saved views — please try again.",
|
|
"reorderFailed": "Couldn't save the new order — please try again."
|
|
}
|