fsylvain
|
d275ba3c14
|
feat: complete dockerization (optional)
|
2026-10-05 04:52:49 +02:00 |
|
fsylvain
|
3e01c29657
|
release: v2.8.0-beta API keys and API reference
|
2026-10-05 02:08:26 +02:00 |
|
fsylvain
|
acd392c29d
|
feat: integration page (PART 3/3)
|
2026-10-05 02:03:24 +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
|
68401d66e0
|
refac: revamp the update flow in settings so the user has better visibility that it has to restart when update downloaded
|
2026-10-04 17:42:46 +02:00 |
|
fsylvain
|
daf497576f
|
fix: widened the theme selector in auth shell
|
2026-10-04 17:10:49 +02:00 |
|
fsylvain
|
0490a4c494
|
fix: language buttons real design / conformance
|
2026-10-04 17:08:43 +02:00 |
|
fsylvain
|
2c8f39273c
|
release: v2.6.2-beta English and French interface
|
2026-10-03 02:08:52 +02:00 |
|
fsylvain
|
721311a643
|
feat(SPA): i18n internationzalization, english and french
|
2026-10-03 01:53:49 +02:00 |
|
fsylvain
|
7f1e8e572d
|
docs: deployement guide with new ui update settings
|
2026-10-02 17:11:04 +02:00 |
|
fsylvain
|
02a0a36dc3
|
release: v2.6.0-beta signed updates and browser restart
|
2026-10-02 16:56:04 +02:00 |
|
fsylvain
|
5a430c08f4
|
chore: ai fest
|
2026-10-02 16:44:04 +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
|
a49eec909c
|
chore: groundwork for update from settings page
|
2026-10-01 06:04:02 +02:00 |
|
fsylvain
|
e10a5e57e2
|
docs: release notes for v2.5.0-beta
|
2026-10-01 05:32:13 +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
|
008b0dfbb9
|
feat: media page T1
|
2026-10-01 01:36:35 +02:00 |
|
fsylvain
|
67d456baf6
|
feat(SPA): media page T0
|
2026-09-30 19:45:47 +02:00 |
|
fsylvain
|
0d99544579
|
feat(API): media library
|
2026-09-30 18:35:28 +02:00 |
|
fsylvain
|
95ae043d3e
|
chore: groundwork for media library feature
|
2026-09-30 17:48:15 +02:00 |
|
fsylvain
|
e0fa433ff9
|
docs: release notes format and patch notes for v2.0.0-beta to v2.4.0-beta
|
2026-09-30 03:11:37 +02:00 |
|
fsylvain
|
142325730d
|
feat: users row actions "Cancel invite" on Pending rows and "Renew invite" on Expired rows
|
2026-09-30 02:48:49 +02:00 |
|
fsylvain
|
1ece778caf
|
feat: UsersTable and UserCardList get Email, Display name (dash when empty), Role (new RoleBadge), Invite status and Created
|
2026-09-30 02:00:46 +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
|
b146dfead7
|
fix: desktop account menu icons, labels and check mark are now centred in their 32 px rows
|
2026-09-29 23:36:42 +02:00 |
|
fsylvain
|
27dadbbfa6
|
fix: account menu matches the redesigned board: System, Light, Dark stay in the menu and the sheet, and the visual-check exception on profile "Account menu" in web/visual/states.ts is removed
|
2026-09-29 23:31:04 +02:00 |
|
fsylvain
|
6dc47789ef
|
chore: groundwork for new design and features related to users and settings
|
2026-09-29 23:19:41 +02:00 |
|
fsylvain
|
65ced64568
|
fix: "save X min ago" only min to min/hours/days
|
2026-09-29 22:56:05 +02:00 |
|
fsylvain
|
c40522a09f
|
fix: scrollable toolbar in mobile editor
|
2026-09-29 22:53:49 +02:00 |
|
fsylvain
|
da36c78bc0
|
refac: hardening pass with multiple overhauls
|
2026-09-29 10:55:23 +02:00 |
|
fsylvain
|
b0f7b7892b
|
feat(SPA): profile page, display name and the new account menu
|
2026-09-29 10:13:09 +02:00 |
|
fsylvain
|
55525c06d6
|
feat: invitation accept screen and api
|
2026-09-29 09:21:53 +02:00 |
|
fsylvain
|
310cfd528e
|
chore: new design for invitations accept
|
2026-09-29 08:41:54 +02:00 |
|
fsylvain
|
6afffc1984
|
feat(SPA): users page and invite modal
|
2026-09-29 08:35:14 +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
|
792aba433d
|
chore: new design groundwork for next features
|
2026-09-29 06:32:46 +02:00 |
|
fsylvain
|
b29d0ed045
|
feat: editor image removal QOLs
|
2026-09-29 02:44:31 +02:00 |
|
fsylvain
|
0fc00ceeff
|
refac: cleaning round for image cropping/resizing
|
2026-09-28 07:56:13 +02:00 |
|
fsylvain
|
e15f444603
|
feat: image cropping / resizing T0
|
2026-09-28 07:46:12 +02:00 |
|
fsylvain
|
cb05b38f36
|
feat: password reset full design and flow
|
2026-09-28 05:06:16 +02:00 |
|
fsylvain
|
938263cd6a
|
feat: image upload on articles
|
2026-09-28 02:28:20 +02:00 |
|
fsylvain
|
d4fcfb2bba
|
fix: multiple fixes all accross the SPA, missing buttons actions, styling etc.
|
2026-09-27 23:16:53 +02:00 |
|
fsylvain
|
ad55137883
|
feat: integration screen
|
2026-09-27 18:04:43 +02:00 |
|
fsylvain
|
a9a208b80a
|
fix: workflow now ignores time senstive visual checks
|
2026-09-27 17:15:22 +02:00 |
|
fsylvain
|
f6d0d01092
|
feat: articles list screen
|
2026-09-27 17:12:23 +02:00 |
|
fsylvain
|
ca3fe20519
|
fix: browser was running two copies of ProseMirror's state module (prosemirror-state) at once
|
2026-09-27 06:31:45 +02:00 |
|
fsylvain
|
c47d33eaa9
|
feat: article creation modal
|
2026-09-27 06:26:41 +02:00 |
|
fsylvain
|
a4734b2c91
|
feat: article editor core
|
2026-09-27 02:11:38 +02:00 |
|
fsylvain
|
d493a181e1
|
fix: visuals reference matching overhaul and better workflow
|
2026-09-26 21:04:51 +02:00 |
|
fsylvain
|
930b836241
|
feat: home screen and navigation design
|
2026-09-26 17:46:42 +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
|
3c3f7c6194
|
feat: register T0
|
2026-09-26 02:48:16 +02:00 |
|
fsylvain
|
a5873f8886
|
fix: changed frontend workflow and fixed login reference matching for real
|
2026-09-25 22:31:44 +02:00 |
|
fsylvain
|
f1e22f7073
|
fix: login match design reference
|
2026-09-25 21:28:12 +02:00 |
|
fsylvain
|
001f9f4774
|
feat: login page T0
|
2026-09-25 20:15:29 +02:00 |
|
fsylvain
|
12faab7f92
|
feat: typed API client (useApi) and session store (useSession) with the global 401, unverified-403, 429 and offline handling from states.md
|
2026-09-25 17:33:40 +02:00 |
|
fsylvain
|
eed661bb24
|
feat: PrimeVue replaced by Nuxt UI using token files from web/src/theme, with AuthShell, DashboardShell, AppBoot and the route guards from routes.md
|
2026-09-25 17:09:34 +02:00 |
|
fsylvain
|
24f95a8fd7
|
chore: Vitest + Vue Test Utils test runner exposed as task test:web
|
2026-09-25 16:12:50 +02:00 |
|
fsylvain
|
64f50074bd
|
chore: setup design references
|
2026-09-25 16:04:12 +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 |
|
fsylvain
|
5992c8598b
|
refac: allowed image types and the size limit are a domain rule checked by the use case, not by the persistence layer
|
2026-09-24 00:03:29 +02:00 |
|
fsylvain
|
8a8a24434a
|
refac: deleting an article also deletes its images, and deleting a missing article returns 404
|
2026-09-23 23:42:18 +02:00 |
|
fsylvain
|
c16fdbd26d
|
refac: authenticated user can edit an article's body; an unknown id returns 404
|
2026-09-23 23:24:03 +02:00 |
|
fsylvain
|
8822bdddd0
|
refac: authenticated user can publish and unpublish an article; an unknown id returns 404
|
2026-09-23 22:54:44 +02:00 |
|
fsylvain
|
790d4e6da6
|
refac: authenticated user can list all articles, including offline ones, while the public list only shows online ones
|
2026-09-23 22:36:41 +02:00 |
|
fsylvain
|
6a2ca07b66
|
refac: repository updates, image attachment and deletes report the domain not-found error for an unknown id, the same for articles, users and images, and the test fakes stop returning GORM errors
|
2026-09-23 22:09:06 +02:00 |
|
fsylvain
|
4278d96882
|
refac: article title rules are the same in the API request and the domain; an invalid title returns 400 instead of 500
|
2026-09-23 20:04:09 +02:00 |
|
fsylvain
|
ff8cd5f0ec
|
refac: password and code hashing & checking go through a domain hasher interface used by the use cases instead of bcrypt in the user repository and the auth handler
|
2026-09-23 19:29:20 +02:00 |
|
fsylvain
|
8460a078e3
|
refac: missing user or article is reported with a domain not-found error instead of a raw GORM error, and the API answers 404 for it
|
2026-09-23 18:55:05 +02:00 |
|
fsylvain
|
7c57173497
|
feat: characterized the existing use cases as a baseline; every repo fake behaves like the real ones and can be told to fail, every use case is covered; gremlins runs clean on useCases
|
2026-09-23 18:21:46 +02:00 |
|
fsylvain
|
09bd5afa4a
|
refac: rethought the complete workflow and deployement flow ; docs etc.
|
2026-09-23 17:36:36 +02:00 |
|