cb390dfaab
build(frontend): bundle assets for collections UI
2026-06-26 17:05:22 +02:00
9f7b3c912a
build(frontend): update bundled assets for async capture polling
2026-06-26 12:59:00 +02:00
37fd057c1f
fix(auth): use rfc3339 for session expires_at; update tag tests for auth guards
2026-06-26 12:03:13 +02:00
fbb96fbd05
build(frontend): update bundled assets after favicon+rendering changes
2026-06-24 21:05:35 +02:00
4458f17b13
feat(ui): rewrite frontend in React with Vite
...
- Scaffold Vite+React project in frontend/ (bun, react 18, @vitejs/plugin-react)
- vite.config.js outputs to crates/archivr-server/static/ directly
- src/utils.js: formatBytes, valueText, formatTimestamp, SOURCE_ICONS, sourceIconSvg
- src/api.js: typed fetch wrappers for all API endpoints
- App.jsx: full state management, archive switching, debounced search,
tag filter, view routing, capture dialog orchestration
- components/Topbar.jsx: archive switcher, nav, capture button
- components/CaptureDialog.jsx: native <dialog> ref with showModal/close,
Escape key support, locator validation
- components/EntriesView.jsx + EntryRow.jsx: flex table with source icons,
type pills, keyboard selection
- components/ContextRail.jsx: parallel detail+tags fetch, stale-race guard
via selectSeqRef, inline tag assign/remove
- components/RunsView.jsx: runs kept as <table> (matches original)
- components/AdminView.jsx: mounted archives list
- components/TagsView.jsx: recursive tag tree with active state
- Remove old app.js; styles.css moved to frontend/src/ (Vite bundles it)
2026-06-24 12:24:34 +02:00
b895d6331c
refactor(ui): replace entry table with flexbox layout
2026-06-23 22:45:37 +02:00
8d0352c2c4
feat: browser capture button (Track 4)
...
- Add archivr-core/src/capture.rs: Source enum, all capture helpers,
fail_run (replaces process::exit fail_archive_and_exit), and
perform_capture() as the public entry point
- Slim archivr-cli/src/main.rs to 103 lines: thin adapter over
archivr_core::capture::perform_capture
- Move all source-classification and tweet-entry tests from CLI to
archivr-core/src/capture.rs (they test core logic, belong in core)
- Add POST /api/archives/:archive_id/captures route in archivr-server:
validates non-empty locator (400), resolves archive (404), delegates
to perform_capture, returns {run_uid, status}
- Add capture dialog to browser UI: dialog markup in index.html,
showModal/submit/cancel/loading/error wiring in app.js, dialog
styles in styles.css
- 77 tests pass, clean build (0 warnings)
2026-06-22 22:18:44 +02:00
5803f2119b
feat(server+ui): tag management API routes and browser UI
...
- 5 tag routes (list tree, create, assign, remove, search with tag=)
- Tags nav, tag tree view, tag filter badge
- Entry tag pills with remove, assign-tag form in context rail
2026-06-22 14:48:47 +02:00
b56c969624
feat: add db and multi-archive web UI foundation ( #8 )
...
* Add SQLite metadata database support
* Implement archive metadata database
* chore: let's guess cargoHash because there's something wrong with nixpkgs!
* Gate test-only database helpers behind cfg(test)
* Fix archive database row identity
* Use serde for archive metadata JSON
* Finalize archive runs at command level
* Handle archive command errors without panics
* Cover tweet entry metadata recording
* Document static regex invariants
* docs: add web UI design spec
* docs: add web UI implementation plan
* chore: move cli into workspace crate
* chore: track workspace crates directory
* refactor: extract archive core crate
* refactor: add core archive opening APIs
* refactor: rename taxonomy model to tags
* feat: add archive query APIs
* feat: add web server registry
* feat: expose archive server APIs
* feat: add archive table web UI
* fix: complete web UI smoke path
* docs: add architecture mental model
* docs: remove private superpowers plans
* nix: split cli and server packages
* chore: remove PLAN.md
2026-06-14 00:27:16 +02:00