a8e52bdf71
security: add per-IP sliding-window rate limit on POST /api/auth/login
...
5 attempts / 15 min per IP. Excess attempts get 429 + Retry-After.
Client IP read from X-Forwarded-For with loopback fallback.
In-memory; prune inline on each check.
Refactored app() into app_with_state() + thin wrapper.
Uses parking_lot::Mutex (no unwrap, no poisoning).
2026-06-29 20:06:41 +02:00
24c5321f6e
feat(collections): collection CRUD + entry-visibility routes
2026-06-26 17:00:19 +02:00
db28d038d9
feat(auth): AuthUser extractor, password helpers, token generation
2026-06-26 11:50:29 +02:00
57fc48d73c
feat(auth): add argon2, rand, axum-extra dependencies
2026-06-26 11:28:51 +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
fa2968a21a
fix(server): remove unused Body import; keep bonus happy-path artifact test
2026-06-22 14:48:46 +02:00
dcf9e127bb
feat: entry detail view and artifact file serving
2026-06-22 14:48:46 +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