Commit graph

140 commits

Author SHA1 Message Date
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
e55fd5cc98
pinakes-ui: fix plugin page data loading; add as_json helper
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6d80eff06e9ca46f916e643d5d8bb6c86a6a6964
2026-03-11 21:30:36 +03:00
1acff0227c
pinakes-ui: add WidgetContainer; basic widget injection system
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I7ca9a47e9b085b8c49869586c90034816a6a6964
2026-03-11 21:30:35 +03:00
62058a7c4d
pinakes-ui: fix ApiClient clone to preserve auth token
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I2009ce790b3864105082997be12fe5b56a6a6964
2026-03-11 21:30:34 +03:00
ed8ad73497
pinakes-core: fix `list_ui_pages\' doc comment
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I5f82a35656aa536effe6a159b0cdd2066a6a6964
2026-03-11 21:30:33 +03:00
21572541c3
pinakes-plugin-api: schema validation for page and widget schemas
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I70480786fc8e4a86731560aaca6993ce6a6a6964
2026-03-11 21:30:32 +03:00
aa2a81e354
pinakes-plugin-api: add widgets field to manifest UI section
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6fae2dc3c09702aa5a54d1e17a8175516a6a6964
2026-03-11 21:30:31 +03:00
7ad068b930
pinakes-plugin-api: new UI widget types
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I83a72f3441e5370875239431123b0bbc6a6a6964
2026-03-11 21:30:19 +03:00
a4bc48214f
meta: ignore test configuration
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Id16794aa7425950097f9a20500148c216a6a6964
2026-03-09 22:04:46 +03:00
be4305f46e
pinakes-ui: add plugin page registry
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ie83791e82c68f757173e5dc53a646b356a6a6964
2026-03-09 22:04:45 +03:00
901adcb2f0
pinakes-ui: add plugin schema renderer
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I2c2d99c21a3fdf04dd720286635b98a26a6a6964
2026-03-09 22:04:44 +03:00
307375a348
pinakes-ui: add plugin action executor
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic6dc2c6e3ef58dacad4829037226b0cf6a6a6964
2026-03-09 22:04:43 +03:00
e46a8943cb
pinakes-ui: add plugin data fetching
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ie28a544cf0df1a23b905e89b69db19c06a6a6964
2026-03-09 22:04:42 +03:00
5b204dceb5
pinakes-ui: add ApiClient plugin methods; depend on plugin API
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ica7f913a22d18e59e85f1959a5b336df6a6a6964
2026-03-09 22:04:41 +03:00
29ba24ae01
pinakes-server: add GET /plugins/ui-pages endpoint
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Id09d4dce060e0a79586251a16fb6bdbc6a6a6964
2026-03-09 22:04:40 +03:00
0525ea6c60
pinakes-core: expose plugin UI pages via PluginManager
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic58a0174e6592303e863f51fb237220e6a6a6964
2026-03-09 22:04:39 +03:00
c86d9399ac
pinakes-plugin-api: initial UI schema types; manifest extension for GUI plugins
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I508f94798a6eaa800672bd95fa8127d86a6a6964
2026-03-09 22:04:36 +03:00
1accc202bc
chore: force explicit ABI in rustfmt
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I3cba9aa27b26c89403f82211d7dd0c476a6a6964
2026-03-08 15:48:03 +03:00
c6697e7c6f
docs: update plugin documentation to reflect new isolation model
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I0102be6731db2770408e8a0b445064926a6a6964
2026-03-08 15:45:55 +03:00
1928d26cde
chore: update sample configuration with new plugin fields
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iabfbaff84bb0dbf3f172997adc9aabd36a6a6964
2026-03-08 15:25:12 +03:00
raf
24d60fd4c9 Merge pull request 'finalize server-side plugin system' (#8) from notashelf/push-wxzvxtntoxnn into main
Reviewed-on: #8
2026-03-08 12:21:42 +00:00
ce9c27d410
pinakes-server: update tests with plugin configuration
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I320426c6b2cc9119a44570b4534e08d66a6a6964
2026-03-08 15:17:03 +03:00
e9c5390c45
pinakes-server: integrate plugin system into routes & application state
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib5d482326cae1dcb43603bffb76a6a186a6a6964
2026-03-08 15:17:02 +03:00
f686e8a777
pinakes-core: emit plugin events from scan and import pipelines
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib992e292a3272c52f9b7c18164ec61f56a6a6964
2026-03-08 15:17:01 +03:00
7d3c2052c2
pinakes-core: add plugin integration tests and test fixtures
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: If4372ea33b93306486170353f9edf4a76a6a6964
2026-03-08 15:17:01 +03:00
61ebc6824c
meta: ignore compiled test fixtures in git
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic2f8776f5a55acc4281bfe6fcbe9d1116a6a6964
2026-03-08 15:17:00 +03:00
57f440d62e
nix: add wasm32-wasip1 target
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I4bfc9e9749c17b6950b5489fa42d43c26a6a6964
2026-03-08 15:16:59 +03:00
4edda201e6
pinakes-core: add plugin pipeline; impl signature verification & dependency resolution
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ida98135cf868db0f5a46a64b8ac562366a6a6964
2026-03-08 15:16:58 +03:00
8347a714d2
pinakes-plugin-api: extend manifest with dependencies; basic WASM exchange buffer
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I60c0607fe27092a43826ac956e20a9a16a6a6964
2026-03-08 15:16:46 +03:00
cb10c84809
chore: update example config with ratelimit opts; format TOML
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iefb657f4564caa8fd9a0ec375522c4726a6a6964
2026-03-08 01:07:50 +03:00
99b3c01d22
chore: tag 0.3.0-dev
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I46e0922237f99736aec4b11ecb84b12a6a6a6964
2026-03-08 01:07:01 +03:00
adaab9de21
pinakes-ui: add book management component and reading progress display
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I877f0856ac5392266a9ba4f607a8d73c6a6a6964
2026-03-08 00:43:32 +03:00
66861b8a20
pinakes-tui: add book management view and api key authentication
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I20f205d9e06a93a89e8f4433ed6f80576a6a6964
2026-03-08 00:43:31 +03:00
3d9f8933d2
pinakes-core: update remaining modules and tests
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9e0ff5ea33a5cf697473423e88f167ce6a6a6964
2026-03-08 00:43:30 +03:00
c8425a4c34
pinakes-plugin-api: update manifest, types, and wasm interface
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic574cc8d1d24967a8c997a3092037e526a6a6964
2026-03-08 00:43:29 +03:00
eb6c0a3577
pinakes-server: update remaining route imports and handlers
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I67206fd813d514f8903041eea0a4cd266a6a6964
2026-03-08 00:43:28 +03:00