fsylvain
|
951fef18ba
|
feat: image variants per image
|
2026-10-08 19:57:51 +02:00 |
|
fsylvain
|
f1d56ef50e
|
feat: image variants engine
|
2026-10-08 02:33:32 +02:00 |
|
fsylvain
|
f914eae3c5
|
feat: setup logs retention by max file size
|
2026-10-07 22:02:13 +02:00 |
|
fsylvain
|
43469ef08d
|
feat: recent activity card on Home and Retention card on Settings
|
2026-10-07 16:01:28 +02:00 |
|
fsylvain
|
e37a46a027
|
feat: activity log producers
|
2026-10-06 22:25:23 +02:00 |
|
fsylvain
|
50b1649965
|
feat: activity log backend foundation
|
2026-10-06 20:35:03 +02:00 |
|
fsylvain
|
dc5d12348c
|
feat: PostgreSQL driver support
|
2026-10-06 13:35:10 +02:00 |
|
fsylvain
|
eb9bfabed5
|
feat: optional S3-compatible storage for uploaded images, instead of the local upload directory
|
2026-10-06 12:13:24 +02:00 |
|
fsylvain
|
d752a61e52
|
feat: optional MySQL/MariaDB database driver for deployments that cannot use local SQLite
|
2026-10-06 04:08:33 +02:00 |
|
fsylvain
|
81e299f09a
|
refac: decouple persistence and image storage behind driver registries
|
2026-10-06 02:13:35 +02:00 |
|
fsylvain
|
1a55a39425
|
feat: media duplicate purge, part 2 of 3: the automatic purge scheduler (Go only)
|
2026-10-05 19:44:15 +02:00 |
|
fsylvain
|
e82d0ce254
|
feat: media duplicate purge, part 1 of 3: persisted purge settings and the purge API
|
2026-10-05 18:24:03 +02:00 |
|
fsylvain
|
508a8ab77e
|
fix: CSP policy missing front components like icons, nextui color mode, wasm
|
2026-10-05 16:32:19 +02:00 |
|
fsylvain
|
1d4f4bd2cc
|
fix: missing security headers on every response, including the SPA and uploaded images
|
2026-10-05 16:19:37 +02:00 |
|
fsylvain
|
d275ba3c14
|
feat: complete dockerization (optional)
|
2026-10-05 04:52:49 +02:00 |
|
fsylvain
|
514a082c96
|
feat(SPA): screen to manage API keys (PART 2/3)
|
2026-10-05 00:05:12 +02:00 |
|
fsylvain
|
844842fdae
|
feat: integration v2 and API key PART 1/3
|
2026-10-04 21:56:14 +02:00 |
|
fsylvain
|
7e9bd9ba30
|
feat: articles format option with markdown new default
|
2026-10-04 19:04:12 +02:00 |
|
fsylvain
|
54e8fd5fed
|
feat: restart to apply update, privileged helper, rollback
|
2026-10-01 21:36:40 +02:00 |
|
fsylvain
|
70460e4170
|
feat: update button (download, verify, stage)
|
2026-10-01 18:13:45 +02:00 |
|
fsylvain
|
834493a4f5
|
feat: signed releases, release feed, notification (read-only)
|
2026-10-01 15:01:53 +02:00 |
|
fsylvain
|
ff0854f331
|
fix: deleted image wrongfully caching
|
2026-10-01 05:27:25 +02:00 |
|
fsylvain
|
b3793d5dbb
|
feat: media picker and image removal
|
2026-10-01 05:04:58 +02:00 |
|
fsylvain
|
0d99544579
|
feat(API): media library
|
2026-09-30 18:35:28 +02:00 |
|
fsylvain
|
153fd8719a
|
feat: invite management API: DELETE /v1/user/invite/:id (204, cancels a pending invite) and POST /v1/user/invite/:id/renew (200, new code, expires_at = now+3d, created_at = now, resends the invitation email, old link dead)
|
2026-09-30 01:36:43 +02:00 |
|
fsylvain
|
461e93e3b5
|
feat: add Role (owner|admin) to the user domain, persistence model and mapper
|
2026-09-30 00:58:58 +02:00 |
|
fsylvain
|
162fea4afb
|
feat: settings page, sidebar and drawer destination "Settings" (icon settings, after Integration), route /settings (verified), showing only the running build's Version
|
2026-09-30 00:19:29 +02:00 |
|
fsylvain
|
da36c78bc0
|
refac: hardening pass with multiple overhauls
|
2026-09-29 10:55:23 +02:00 |
|
fsylvain
|
55525c06d6
|
feat: invitation accept screen and api
|
2026-09-29 09:21:53 +02:00 |
|
fsylvain
|
acdef18b37
|
feat(API): user invitations and emails
|
2026-09-29 07:15:17 +02:00 |
|
fsylvain
|
7aae704d0a
|
feat(API): optional display name on users
|
2026-09-29 06:52:58 +02:00 |
|
fsylvain
|
b29d0ed045
|
feat: editor image removal QOLs
|
2026-09-29 02:44:31 +02:00 |
|
fsylvain
|
f6d0d01092
|
feat: articles list screen
|
2026-09-27 17:12:23 +02:00 |
|
fsylvain
|
30a4df47b1
|
feat: new emails design
|
2026-09-26 05:41:34 +02:00 |
|
fsylvain
|
4e41d60142
|
feat: register T1 (pending, verify)
|
2026-09-26 04:56:48 +02:00 |
|
fsylvain
|
2a64991916
|
refac: GET /v1/auth/registration
|
2026-09-25 15:54:42 +02:00 |
|
fsylvain
|
61828783a1
|
refac: GET /static/uploadedImages/{filename}
|
2026-09-25 15:40:21 +02:00 |
|
fsylvain
|
8d17a12e92
|
refac: GET /v1/auth/me
|
2026-09-25 15:17:39 +02:00 |
|
fsylvain
|
0e050c36ff
|
fix: rate limiting X-Real-IP from the real peer
|
2026-09-25 06:49:55 +02:00 |
|
fsylvain
|
9b47685002
|
refac: split the auth handler into registration and login, account verification, and password reset handlers, each with its own dependencies
|
2026-09-25 06:14:53 +02:00 |
|
fsylvain
|
3282b0580c
|
fix: remove the unused user use cases, fix the specs that no longer match the code, include api/middleware and api/pkg/claims in mutation testing, log failures that password reset requests currently ignore, and reject user_id claims that don't fit a user id
|
2026-09-25 05:58:37 +02:00 |
|
fsylvain
|
cbb403011a
|
fix: login and password reset requests are rate-limited per client (not in the README; there is currently no brute-force protection on the public auth routes)
|
2026-09-25 05:33:02 +02:00 |
|
fsylvain
|
f3ec3d2fa2
|
fix: resetting the password or cancelling a registration ends existing sessions: a token issued before the change is refused
|
2026-09-25 05:03:34 +02:00 |
|
fsylvain
|
81c4b62175
|
fix: reading a single article follows the same rule as the list: anyone can read an online article, a verified user can also read an offline one, and an unknown or hidden id returns 404
|
2026-09-24 16:32:40 +02:00 |
|
fsylvain
|
2ee28203ab
|
fix: API responses never include a user's password, verification code or reset code hashes, or their expiry dates; verifying an account returns only the public user fields
|
2026-09-24 15:39:50 +02:00 |
|
fsylvain
|
aa865af2e9
|
refac: reamaining auth surface rewrite, T0
|
2026-09-24 05:11:49 +02:00 |
|
fsylvain
|
6d510d2805
|
refac: register only open while no verified acc exists, enforced by a use case rather than handler & sends verification email whose link uses the conf pub URL whose code expires after 2h
|
2026-09-24 03:36:37 +02:00 |
|
fsylvain
|
6e9e108033
|
refac: several unverified users can exist at once: an empty reset or verification code is stored as no value so it doesn't break the unique constraint, and deleting a user removes the row so the same username and email can register again
|
2026-09-24 01:59:24 +02:00 |
|
fsylvain
|
0b4e614ec9
|
refac: runtime settings are read once at startup and passed in through the composition root; no handler, router or repository reads environment variables
|
2026-09-24 01:30:00 +02:00 |
|
fsylvain
|
e474f03d91
|
refac: authenticated user can upload an image to an existing article and receives its public location; an unknown article returns 404 and a disallowed type returns 400
|
2026-09-24 00:33:26 +02:00 |
|