|
|
0feb51d7b4
|
pinakes-ui: add playlists; expand detail/settings/player components
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ifb9c9da6fec0a9152b54ccf48705088e6a6a6964
|
2026-03-22 22:04:55 +03:00 |
|
|
|
bb69f2fa37
|
pinakes-tui: cover more API routes in the TUI crate
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Id14b6f82d3b9f3c27bee9c214a1bdedc6a6a6964
|
2026-03-22 22:04:54 +03:00 |
|
|
|
9d58927cb4
|
pinakes-server: add utoipa annotations to all routes; fix tests
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I28cf5b7b7cff8e90e123d624d97cf9656a6a6964
|
2026-03-22 22:04:51 +03:00 |
|
|
|
67b8322705
|
pinakes-server: add utoipa annotations; manage embedded subtitle data
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I30d4b23f09113628dea245404b0a31bd6a6a6964
|
2026-03-22 22:04:50 +03:00 |
|
|
|
aa68d742c9
|
pinakes-core: fix minor clippy warnings; add toggle for Swagger UI generation
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ie33a5d17b774289023e3855789d3adc86a6a6964
|
2026-03-22 22:04:49 +03:00 |
|
|
|
5e0f404fc7
|
pinakes-core: initial subtitle management
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Id2f9b87b1cc903462539ab8ea47099696a6a6964
|
2026-03-22 22:04:48 +03:00 |
|
|
|
2daa1e4395
|
pinakes-core: add error variants for external tool calls and subtitle ops
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9c9f4a7de065e176e16b108411c3d44b6a6a6964
|
2026-03-22 22:04:47 +03:00 |
|
|
|
ee5df288bc
|
pinakes-server: expand test coverage for server features
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ia09d2d3ad7f6613e21d20321e0877bc16a6a6964
|
2026-03-22 22:04:46 +03:00 |
|
|
|
60b6aa1fe8
|
pinakes-plugin-api: suppress enum_variant_names lint
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I01367dea28dd7b47cf765b6f33782a5e6a6a6964
|
2026-03-22 22:04:45 +03:00 |
|
|
|
1ee225201a
|
pinakes-plugin-api: suppress struct_field_names lint; minor doc tweaks
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I90f1cc46303564a61bdefe76d21045066a6a6964
|
2026-03-22 22:04:44 +03:00 |
|
|
|
2f43279dd7
|
pinakes-server: consolidate helpers for the tests
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ifbc07ced09014391bc264a36be27dc8c6a6a6964
|
2026-03-22 22:04:43 +03:00 |
|
|
|
6b8444f19c
|
pinakes-plugin-api: fix hasher usage in tests
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I8ee475aef2d1f81cf6af6f5e247f5e386a6a6964
|
2026-03-22 22:04:42 +03:00 |
|
|
|
5b817e0b3e
|
pinakes-core: fix hasher usage in tests
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ied03277d450e39299470667ef479c3526a6a6964
|
2026-03-22 22:04:41 +03:00 |
|
|
|
e15dad208e
|
pinakes-core: clarify backup support for postgresql
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I7f7d5dcb1d973c8615aacbfc0a5a44576a6a6964
|
2026-03-22 22:04:40 +03:00 |
|
|
|
c6efd3661f
|
treewide: replace std hashers with rustc_hash alternatives; fix clippy
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I766c36cb53d3d7f9e85b91a67c4131a66a6a6964
|
2026-03-22 22:04:38 +03:00 |
|
|
|
ede8a26e59
|
pinakes-ui: get rid of the build wrapper; let Dioxus compile its own stylesheets
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I8e83a7d9e592b0770b22c5832da6a5586a6a6964
|
2026-03-22 21:58:53 +03:00 |
|
|
|
530873b7a3
|
pinakes-ui: replace unwrap() with expect(); add # Panics section to convert_wikilinks`
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I984d4d9e636a6a4091cba6f4048c09826a6a6964
|
2026-03-19 20:06:21 +03:00 |
|
|
|
b86ff5f6ab
|
pinakes-server: validate rename/move destinations; cap import tag arrays; consolidate batch_delete audit entry
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I02b585a9fb5fc3a2b5fa40f9aac3a7b66a6a6964
|
2026-03-12 20:49:47 +03:00 |
|
|
|
1f7d7ea925
|
pinakes-server: warn on backup cleanup failure; add error logging around
`clear_database`
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I903ce59772c16883642c82427be8167a6a6a6964
|
2026-03-12 20:49:46 +03:00 |
|
|
|
61eb2335d3
|
pinakes-server: validate GPS coordinate bounds; validate saved search fields and sort_order
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Idca86117aeeff4afd489ee00bb5c70a36a6a6964
|
2026-03-12 20:49:45 +03:00 |
|
|
|
18fda530f2
|
pinakes-server: cap batch_enrich size; reject path traversal in library roots
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I42212cdd385921295484d5c1f5fbfeab6a6a6964
|
2026-03-12 20:49:44 +03:00 |
|
|
|
c16fcb4a9b
|
pinakes-server: add MAX_OFFSET/MAX_LIMIT constants; centralize pagination bounds
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib8227feb353cbbadc7f42fa5d29618e16a6a6964
|
2026-03-12 20:49:43 +03:00 |
|
|
|
e026dcb1e0
|
pinakes-plugin-api: restrict validate_element to pub(crate)
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ifdffa6f56261bfa8c4e8a345ba8e9c4f6a6a6964
|
2026-03-12 20:49:42 +03:00 |
|
|
|
6d68a83003
|
pinakes-core: fix subtitle i32 overflow in postgres
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I3b43f97c96905953fd58f051667c59096a6a6964
|
2026-03-12 20:49:41 +03:00 |
|
|
|
ad6d0b646f
|
chore: fix clippy lints; format
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib3d98a81c7e41054d27e617394bef63c6a6a6964
|
2026-03-12 20:49:38 +03:00 |
|
|
|
ba01acf271
|
pinakes-ui: integrate plugin pages into sidebar navigation; sanitize theme-extension CSS eval
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ie87e39c66253a7071f029d52dd5979716a6a6964
|
2026-03-12 20:49:37 +03:00 |
|
|
|
90504609e9
|
pinakes-ui: supply local_state to Conditional and Progress; remove last_refresh
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib513b5846d6c74bfe821da195b7080af6a6a6964
|
2026-03-12 20:49:36 +03:00 |
|
|
|
071ea19c8f
|
pinakes-ui: add plugin component stylesheet
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I05de526f0cea5df269b0fee226ef1edf6a6a6964
|
2026-03-12 20:49:35 +03:00 |
|
|
|
dccaff2481
|
pinakes-plugin-api: add reserved-route and required-endpoint validation
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Id85a7e729b26af8eb028e19418a5a1706a6a6964
|
2026-03-12 20:49:34 +03:00 |
|
|
|
91123fc90e
|
pinakes-core: use InvalidOperation for nil media_id in upsert_book_metadata
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I72a80731d926b79660abf20c2c766e8c6a6a6964
|
2026-03-12 19:41:16 +03:00 |
|
|
|
185e3b562a
|
treewide: cleanup
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ia01590cdeed872cc8ebd16f6ca95f3cc6a6a6964
|
2026-03-12 19:41:15 +03:00 |
|
|
|
0ba898c881
|
pinakes-core: check file existence before removal in TempFileGuard drop
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I800825f5dc3b526d350931ff8f1ed0da6a6a6964
|
2026-03-12 19:41:14 +03:00 |
|
|
|
0c9b71346d
|
pinakes-core: map serde_json errors to Serialization variant in export
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I77c27639ea1aca03d54702e38fc3ef576a6a6964
|
2026-03-12 19:41:13 +03:00 |
|
|
|
15b005cef0
|
pinakes-core: expose required_endpoints alongside UI pages in plugin manager
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I32c95a03f106db8fef7eedd0362756a46a6a6964
|
2026-03-12 19:41:12 +03:00 |
|
|
|
dc4dc41670
|
pinakes-plugin-api: consolidate reserved-route check; reject widget data-source refs
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I042ee31e95822f46520a618de8dcaf786a6a6964
|
2026-03-12 19:41:11 +03:00 |
|
|
|
cf76d42c33
|
pinakes-core: add integration tests for batch_update_media
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I0787bec99f7c1d098c1c1168560a43266a6a6964
|
2026-03-12 19:41:08 +03:00 |
|
|
|
592a9bcc47
|
pinakes-core: add error context to tag and collection writes; map serde_json errors to Serialization variant
pinakes-core: distinguish task panics from cancellations in import error
handling
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Icf5686f34144630ebf1935c47b3979156a6a6964
|
2026-03-12 19:41:07 +03:00 |
|
|
|
8f2b44b50c
|
pinakes-core: unify book metadata extraction; remove ExtractedBookMetadata
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ifd6e66515b9ff78a4bb13eba47b9b2cf6a6a6964
|
2026-03-12 19:41:06 +03:00 |
|
|
|
9c67c81a79
|
pinakes-server: relativize media paths against configured root directories
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9f113e6402030c46ad97f636985b5d6c6a6a6964
|
2026-03-12 19:41:05 +03:00 |
|
|
|
5077e9f117
|
pinakes-ui: extract expression evaluation into dedicated module
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I4d4901c4701e8ae446dbc76b457c058d6a6a6964
|
2026-03-11 21:30:47 +03:00 |
|
|
|
0baa57d48d
|
pinakes-ui: add SettingsSection widget target; align location strings with schema constants
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9a5b91457136254fdf5fa582899079e46a6a6964
|
2026-03-11 21:30:46 +03:00 |
|
|
|
5d7076426c
|
pinakes-ui: add special actions; add modal control to action executor
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: If2e94d303e1e86f5e6cd7589c9ff58356a6a6964
|
2026-03-11 21:30:45 +03:00 |
|
|
|
9389af9fda
|
pinakes-ui: enforce plugin endpoint allowlist; replace inline styles with CSS custom properties
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I751e5c7ec66f045ee1f0bad6c72759416a6a6964
|
2026-03-11 21:30:44 +03:00 |
|
|
|
ada1c07f66
|
pinakes-server: add widget, theme-extension, and event plugin routes; expose allowed_endpoints in UI page DTO
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ia7efa6db85da2d44b59e0e2e57f6e45b6a6a6964
|
2026-03-11 21:30:43 +03:00 |
|
|
|
4834208f9f
|
pinakes-core: use checked_sub for Instant arithmetic in pipeline tests
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I785a8e5e521581c78024252fc5baf5616a6a6964
|
2026-03-11 21:30:42 +03:00 |
|
|
|
7a6d602eed
|
pinakes-plugin-api: add integration and sample plugin tests
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I0de4c3e1e5b49579ae42983f93a2332e6a6a6964
|
2026-03-11 21:30:41 +03:00 |
|
|
|
5a0901ba95
|
pinakes-plugin-api: add required_endpoints and theme_extensions to manifest UI section
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I203fabfe07548106abb5bac760bbfec06a6a6964
|
2026-03-11 21:30:40 +03:00 |
|
|
|
6e442065b1
|
pinakes-ui: integrate plugin registry into app navigation and routing
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I7c4593d93693bf08555a0b5f89a67aea6a6a6964
|
2026-03-11 21:30:39 +03:00 |
|
|
|
de913e54bc
|
pinakes-ui: rewrite renderer with interactive tabs; correct data context; per-item loop binding
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iebe4945e1fcb7c28ff74a76e9d0717276a6a6964
|
2026-03-11 21:30:38 +03:00 |
|
|
|
188f9a7b8d
|
pinakes-ui: fix action param precedence and non-JSON 2xx handling
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iac5d1f3d2ed5c85c3e1f3d0f259235056a6a6964
|
2026-03-11 21:30:37 +03:00 |
|