4gray and Claude Fable 5
b4c0cce741
fix(backup): export and restore hidden Xtream categories by real xtream IDs ( #1224 )
...
Category rows crossed the DB-worker IPC boundary with Drizzle's camelCase
property names while the renderer contracts declare snake_case, so backup
export dropped hidden-category IDs and restore degraded to a type-only
match that hid every category. Project category ops to the declared wire
shape, normalize restore state from untrusted sources (dropping entries
without a numeric xtreamId), reject entries with missing user-state
collections, and add full export→import round-trip coverage (unit
manifest-equality + Electron e2e) plus regression tests.
Closes #1017
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-24 20:32:45 +02:00
4gray and Claude Fable 5
59c15493a7
docs: sync CLAUDE.md, AGENTS.md and architecture docs with actual code
...
Full audit of CLAUDE.md, AGENTS.md, README.md and docs/architecture/
against the codebase; every fix is backed by current code:
- remove documented-but-unimplemented IPTVNATOR_DISABLE_HARDWARE_ACCELERATION
flag (no reads anywhere in apps/, libs/, tools/)
- CLAUDE.md: add epg_channel_mappings to the schema table list
- m3u-playlist-module: *-tab dirs -> *-view (+recent-view), selectActivePlaylist,
real PlaylistState shape, ChannelEpgMetadata instead of removed EnrichedChannel,
actual /workspace/playlists routes, per-view outputs, live-epg-panel-state key
- workspace-dashboard: per-rail Settings.dashboardRails toggles, three missing
rails in the diagram, split live-favorites/recent-live rails,
welcome-dashboard empty-state type, RECENTLY_WATCHED_LIVE_TV title key
- stalker-portal: CategoryContentViewComponent for vod/series, collection-route
components for favorites/recent, corrected series-view/favorites-button paths,
actor/:personId route, epg panel selectors
- category-management: reloadCategories lives in with-content.feature.ts,
workspace-context-panel owns the dialog, XtreamPendingRestoreService flow
- stalker-mock-server (+app README): scenario-seeded faker, resetAll() clears
content cache too, ordinal season episode ids, handlers/ dir location
- sqlite-db-worker: cancellation shipped (drop from out-of-scope), full
operations module list
- portal-detail-navigation: replace three removed component paths
- tmdb-metadata-enrichment: details cache keys are id:<tmdbId>|v2
- electron-security: CSP frame-src youtube-nocookie exception,
sandbox: !frameCopyExperiment nuance
- download-manager: libs/portal/xtream instead of xtream-electron folder,
data-driven downloads nav, drop removed app-search-result-item note
- playlist-backup-restore: settings-backup facade owns the import handoff
- workspace-shell: functional workspaceEntryRedirect, playlists route children
- iptvnator-ui-guidelines: EPG card radius 11px, detail-view mixin is `base`
- embedded-mpv-native, player-controls-contract: minor precision fixes
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-24 08:16:33 +02:00