feat(web): storage admin, search and catalog pages (M2)
- Storage admin: local folders with a folder picker and NFS sources, connection test, scan and full scan with live progress, enable, disable, delete - path pattern editor with reorder, examples and a preview table that shows which pattern matched and what came from tags; compile errors land under the broken pattern - Library page with counters, scans and unreadable files; search reindex for admins - search box in the top bar: combobox with keyboard navigation, 150 ms debounce, cancelled stale requests, "/" and Ctrl+K, layout fix hint - search page with tabs and paging, artist and album pages, album cards and track lists; unavailable tracks are dimmed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c1160cccd3
commit
a685b1b7ca
27 files changed
+2505
-9
No files matched your search
@@ -62,5 +62,92 @@
|
||||
"user.password_reset": "Password reset",
|
||||
"user.delete": "User deleted"
|
||||
}
|
||||
},
|
||||
"sources": {
|
||||
"title": "Storage",
|
||||
"subtitle": "Where the server takes music from: a folder on the server or NFS",
|
||||
"add": "Add storage",
|
||||
"empty": "No storage yet. Connect a music folder to get started.",
|
||||
"type_local": "Server folder",
|
||||
"type_nfs": "NFS",
|
||||
"status_pending": "Connecting",
|
||||
"status_mounted": "Connected",
|
||||
"status_error": "Error",
|
||||
"status_disabled": "Disabled",
|
||||
"last_scan": "Last scan: {{date}}",
|
||||
"never_scanned": "Not scanned yet",
|
||||
"scan": "Scan",
|
||||
"full_scan": "Full scan",
|
||||
"test": "Test",
|
||||
"patterns": "Path patterns",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"disable": "Disable",
|
||||
"enable": "Enable",
|
||||
"delete_confirm": "Delete “{{name}}”? Tracks that exist only in this storage will disappear from the library along with their likes.",
|
||||
"scanning": "Scanning: {{processed}} of {{total}}",
|
||||
"scan_walking": "Walking folders…",
|
||||
"scan_done": "Found {{found}} · new {{added}} · updated {{updated}} · moved {{moved}} · missing {{missing}} · errors {{errors}}",
|
||||
"scan_failed": "Scan stopped: {{error}}",
|
||||
"test_ok": "Reachable, audio files found: {{count}}",
|
||||
"test_fail": "Not reachable: {{message}}",
|
||||
"form_title_new": "New storage",
|
||||
"form_title_edit": "Storage",
|
||||
"name": "Name",
|
||||
"type": "Type",
|
||||
"folder": "Folder",
|
||||
"folder_root": "Whole folder",
|
||||
"folder_hint": "A subfolder of LIBRARY_HOST on the server",
|
||||
"up": "Up",
|
||||
"nfs_server": "Server",
|
||||
"nfs_server_hint": "Host name or IP, e.g. nas.lan",
|
||||
"nfs_export": "Export",
|
||||
"nfs_export_hint": "Path on the server, e.g. /export/music",
|
||||
"nfs_options": "Mount options",
|
||||
"nfs_options_hint": "Read-only is added automatically",
|
||||
"tag_priority": "Prefer",
|
||||
"tags_first": "File tags",
|
||||
"path_first": "Path patterns",
|
||||
"interval": "Auto scan",
|
||||
"interval_off": "Manual",
|
||||
"interval_hours": "Every {{count}} h",
|
||||
"save": "Save"
|
||||
},
|
||||
"patterns": {
|
||||
"title": "Path patterns: {{name}}",
|
||||
"intro": "RE2 regular expressions with named groups are matched against the file path relative to the storage root. The first match wins.",
|
||||
"groups": "Groups: artist, albumartist, album, year, disc, track, title, genre; skip ignores the file.",
|
||||
"add": "Add pattern",
|
||||
"regex": "Pattern {{n}}",
|
||||
"enabled": "Enabled",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"remove": "Remove",
|
||||
"preview": "Preview",
|
||||
"save": "Save",
|
||||
"saved": "Saved. Run a full scan to apply it to files already found.",
|
||||
"col_path": "Path",
|
||||
"col_pattern": "Pattern",
|
||||
"col_result": "Result",
|
||||
"no_match": "no match",
|
||||
"skipped": "skipped",
|
||||
"unmatched": "No pattern matched: {{count}} of {{total}}",
|
||||
"from_tags": "from tags",
|
||||
"error_at": "Error in pattern {{n}}: {{reason}}",
|
||||
"examples": "Examples"
|
||||
},
|
||||
"library": {
|
||||
"title": "Library",
|
||||
"subtitle": "Catalog and scan status",
|
||||
"artists": "Artists",
|
||||
"albums": "Albums",
|
||||
"tracks": "Tracks",
|
||||
"files": "Files",
|
||||
"missing": "Missing files",
|
||||
"errors": "Unreadable",
|
||||
"sources": "Storage",
|
||||
"error_files": "Files with errors",
|
||||
"reindex": "Rebuild search index",
|
||||
"reindex_started": "Rebuild started"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user