-
37a01e4d96
fix(ui): mobile layout — no horizontal page scroll, truncate names, scrollable card table
master
bert.hausmans
2026-05-21 10:59:55 +02:00
-
eaed138e38
fix(auth): don't 500 / orphan accounts when verification email fails
bert.hausmans
2026-05-21 10:52:28 +02:00
-
5e7b60dfce
chore(deploy): expose flashcards on host port 4100 (4000 was taken)
bert.hausmans
2026-05-21 10:25:11 +02:00
-
102cbcb01a
chore(deploy): pull image from Gitea registry + manual buildx push flow
bert.hausmans
2026-05-21 10:13:31 +02:00
-
fe44e393b3
chore(deploy): expose flashcard on host port 4000 (4000:3000)
bert.hausmans
2026-05-21 09:58:59 +02:00
-
34b6c8d945
chore(deploy): Dockerfile + Dockge compose + deploy guide
Bert Hausmans
2026-05-21 09:51:52 +02:00
-
34431331e9
fix(practice): update session counters client-side after each answer
Bert Hausmans
2026-05-21 07:54:15 +02:00
-
f5000d3c58
fix(import): set owner on auto-created lessons + nest lesson_path under started lesson
Bert Hausmans
2026-05-21 07:45:49 +02:00
-
2890e19953
fix(frontend): wrap lesson tree sibling groups in SortableContext for drag feedback
Bert Hausmans
2026-05-21 07:27:12 +02:00
-
8499c60acb
test(e2e): search palette + lesson detail + stats + legacy redirect
Bert Hausmans
2026-05-21 07:24:42 +02:00
-
99c55c1dba
chore(frontend): remove obsolete Admin/AdminLesson pages
Bert Hausmans
2026-05-21 07:17:04 +02:00
-
9928390946
feat(frontend): router restructure /admin → /lessons with redirects
Bert Hausmans
2026-05-21 07:16:17 +02:00
-
d5dfc0d2db
feat(frontend): ⌘K search trigger in layout + /lessons nav
Bert Hausmans
2026-05-21 07:15:02 +02:00
-
4b9ff4b783
feat(frontend): ⌘K search palette modal
Bert Hausmans
2026-05-21 07:13:50 +02:00
-
5754bec679
feat(frontend): lessons page with filter (replaces Admin.tsx)
Bert Hausmans
2026-05-21 07:12:27 +02:00
-
0529e2a5e8
feat(frontend): lesson tree with filter + dnd-kit drag reorder
Bert Hausmans
2026-05-21 07:11:13 +02:00
-
3254e225e9
feat(frontend): rich lesson detail page
Bert Hausmans
2026-05-21 07:09:26 +02:00
-
d9b913aab7
feat(frontend): lesson stats panel + sublesson list + recent sessions list
Bert Hausmans
2026-05-21 07:07:46 +02:00
-
2a6d048b65
feat(frontend): rewritten stats page with heatmap + progress + due
Bert Hausmans
2026-05-21 07:06:37 +02:00
-
4c2d42779f
feat(frontend): due-overview card with start-review CTA
Bert Hausmans
2026-05-21 07:05:35 +02:00
-
a10d02cbaf
feat(frontend): lesson progress list with sorting
Bert Hausmans
2026-05-21 07:04:34 +02:00
-
5df6b240d9
feat(frontend): 12-month heatmap component
Bert Hausmans
2026-05-21 07:03:50 +02:00
-
ab382a2c62
feat(frontend): API clients for search + stats extensions + due session
Bert Hausmans
2026-05-21 07:02:57 +02:00
-
65dcd185b8
test(ux): integration coverage for search + stats + due session
Bert Hausmans
2026-05-21 07:02:13 +02:00
-
9bfcb02c25
feat(stats): /lessons-progress and /due routes + heatmap default 52 weeks
Bert Hausmans
2026-05-21 07:00:50 +02:00
-
754f8b6fc6
feat(sessions): startDueSession + POST /api/sessions/due
Bert Hausmans
2026-05-21 07:00:00 +02:00
-
fb25f48f04
feat(stats): lessons-progress and due-overview services
Bert Hausmans
2026-05-21 06:58:30 +02:00
-
f9912a7a8d
feat(search): /api/search route
Bert Hausmans
2026-05-21 06:56:44 +02:00
-
b1e5d5f276
feat(search): global search service with library/marketplace + cards
Bert Hausmans
2026-05-21 06:55:35 +02:00
-
aab1b4fdc2
docs: implementation plan for sub-project C — UX extensions (20 tasks)
Bert Hausmans
2026-05-21 02:40:32 +02:00
-
cdd54d3745
docs: spec for sub-project C — UX extensions
Bert Hausmans
2026-05-21 02:31:23 +02:00
-
c04b857c10
test(e2e): multi-user sharing + subscribe + practice flow
Bert Hausmans
2026-05-21 00:42:52 +02:00
-
44622442de
feat(frontend): marketplace route
Bert Hausmans
2026-05-21 00:40:31 +02:00
-
9fdadca529
feat(dashboard): subscriptions section
Bert Hausmans
2026-05-21 00:39:36 +02:00
-
6a65c5cf96
feat(frontend): marketplace page with subscribe + fork
Bert Hausmans
2026-05-21 00:38:20 +02:00
-
3356767d21
feat(admin): visibility toggle, fork/unsubscribe, readonly CardTable for subscribers
Bert Hausmans
2026-05-21 00:36:51 +02:00
-
7eabd667ce
feat(frontend): lesson badges + marketplace nav link
Bert Hausmans
2026-05-21 00:34:31 +02:00
-
01f7df3735
feat(frontend): API for visibility/fork/subscribe/marketplace/curated
Bert Hausmans
2026-05-21 00:32:50 +02:00
-
4d4001e202
test(ownership): multi-user integration coverage
Bert Hausmans
2026-05-21 00:31:23 +02:00
-
5822dbc8ae
feat(app): mount sharing routes + post-migration backfill
Bert Hausmans
2026-05-21 00:28:29 +02:00
-
fb95ccd772
feat(routes): thread userId through routes + visibility/fork/curated endpoints
Bert Hausmans
2026-05-21 00:26:49 +02:00
-
181a757323
refactor(marketplace): substring-only q filter, fix test to use real substring
Bert Hausmans
2026-05-21 00:24:01 +02:00
-
9dcce76f01
feat(marketplace): list shared roots with filters + sort + pagination
Bert Hausmans
2026-05-21 00:23:10 +02:00
-
4339728326
feat(fork): subtree fork service + tests
Bert Hausmans
2026-05-21 00:19:46 +02:00
-
f378c0fdb0
feat(subs): subscribe/unsubscribe/list service + routes
Bert Hausmans
2026-05-21 00:17:16 +02:00
-
28321c6f84
feat(stats): per-user filtering across all aggregations
Bert Hausmans
2026-05-21 00:15:24 +02:00
-
a0c11d8e21
feat(sessions): per-user sessions and progress
Bert Hausmans
2026-05-21 00:13:15 +02:00
-
2d37aee32c
feat(cards): permission-aware CRUD
Bert Hausmans
2026-05-21 00:11:00 +02:00
-
9aaba94b95
feat(lessons): ownership-aware CRUD + tree filtering + visibility/curated
Bert Hausmans
2026-05-21 00:09:32 +02:00
-
66363b8094
feat(perms): canRead/canEdit with ancestor walk + tests
Bert Hausmans
2026-05-21 00:07:05 +02:00
-
262ac8b162
feat(shared): ownership types and marketplace schemas
Bert Hausmans
2026-05-21 00:05:01 +02:00
-
a872560477
feat(db): ownership columns and lesson_subscriptions table
Bert Hausmans
2026-05-21 00:03:24 +02:00
-
18fadc44f3
docs: implementation plan for sub-project B — ownership & sharing (20 TDD tasks)
Bert Hausmans
2026-05-20 23:57:31 +02:00
-
a85d4afa4f
docs: spec for sub-project B — ownership & sharing
Bert Hausmans
2026-05-20 23:46:29 +02:00
-
e27c1ca06c
chore(auth): non-blocking follow-ups from final review
Bert Hausmans
2026-05-20 23:27:52 +02:00
-
5739b6d941
test(e2e): register+verify smoke and admin invite flow via Mailpit
Bert Hausmans
2026-05-20 23:19:56 +02:00
-
28bb903b93
feat(frontend): router with auth boundary, role guard, and all auth pages
Bert Hausmans
2026-05-20 23:12:59 +02:00
-
117cd52e3e
feat(frontend): admin users page (invite, role, activate, send-reset)
Bert Hausmans
2026-05-20 23:11:53 +02:00
-
88ba0a790c
feat(frontend): profile page (display name, email, change password)
Bert Hausmans
2026-05-20 23:10:28 +02:00
-
1850cd78f5
feat(frontend): VerifyEmail + ForgotPassword + ResetPassword + AcceptInvite pages
Bert Hausmans
2026-05-20 23:09:04 +02:00
-
4e15d8b59d
feat(frontend): Login + Register pages
Bert Hausmans
2026-05-20 23:07:19 +02:00
-
6f921ae44e
feat(frontend): AuthBoundary, RoleGuard, UserMenu + Layout integration
Bert Hausmans
2026-05-20 23:05:36 +02:00
-
bd74098786
feat(frontend): authStore (Zustand)
Bert Hausmans
2026-05-20 23:03:43 +02:00
-
eb540c2cd8
feat(frontend): API client CSRF support + auth and admin-users API modules
Bert Hausmans
2026-05-20 23:02:47 +02:00
-
00e69a8d90
chore: docker-compose mailpit, env.example, README auth section
Bert Hausmans
2026-05-20 23:01:18 +02:00
-
bb0d9d7d01
feat(auth): wire auth middleware in app, protect all /api endpoints
Bert Hausmans
2026-05-20 23:00:20 +02:00
-
9ca025f128
feat(auth): admin user management service, routes, and integration tests
Bert Hausmans
2026-05-20 22:58:29 +02:00
-
70658556aa
feat(auth): /api/auth routes + integration tests (pending wiring)
Bert Hausmans
2026-05-20 22:56:10 +02:00
-
574e3de0e8
feat(auth): currentUser, requireAuth, requireRole middleware
Bert Hausmans
2026-05-20 22:53:31 +02:00
-
c9d593984d
feat(auth): named rate limiters (skip in tests)
Bert Hausmans
2026-05-20 22:52:42 +02:00
-
0b62aad7d8
feat(auth): cookies helpers and CSRF middleware
Bert Hausmans
2026-05-20 22:51:42 +02:00
-
1ba2cab2e8
feat(auth): email service with stub fallback + html templates
Bert Hausmans
2026-05-20 22:50:22 +02:00
-
4ef3eaae52
feat(auth): server-side auth sessions with rolling expiry
Bert Hausmans
2026-05-20 22:48:39 +02:00
-
04fbe6e9c3
feat(auth): token service with single-use, hashed storage
Bert Hausmans
2026-05-20 22:47:02 +02:00
-
0e6bc8c640
feat(auth): password hashing service
Bert Hausmans
2026-05-20 22:45:21 +02:00
-
afd51571c5
feat(shared): add auth types and zod schemas
Bert Hausmans
2026-05-20 22:44:08 +02:00
-
7c5600cdef
feat(db): add users, sessions_auth, auth_tokens tables
Bert Hausmans
2026-05-20 22:42:07 +02:00
-
ee7ca9187a
docs: implementation plan for sub-project A — auth & roles (22 TDD tasks)
Bert Hausmans
2026-05-20 22:32:38 +02:00
-
dce6809893
docs: spec for sub-project A — auth & roles
Bert Hausmans
2026-05-20 22:16:41 +02:00
-
b984e83e2b
feat(frontend): apply UI/UX design system - purple/green palette, gradient buttons, 3D flip, polished pages
Bert Hausmans
2026-05-20 21:48:47 +02:00
-
9300af2820
docs: readme with quickstart
Bert Hausmans
2026-05-20 21:30:27 +02:00
-
f88b4d57de
test(e2e): playwright smoke for create→practice flow
bert.hausmans
2026-05-20 21:29:51 +02:00
-
b1992d0dad
feat(frontend): resume active session prompt
bert.hausmans
2026-05-20 21:26:09 +02:00
-
f1abb64573
feat(frontend): settings page with dark mode and defaults
bert.hausmans
2026-05-20 21:24:12 +02:00
-
289a58fac0
feat(frontend): dashboard and stats pages
bert.hausmans
2026-05-20 21:22:44 +02:00
-
2444e2400f
feat(frontend): practice setup, session and done flow
bert.hausmans
2026-05-20 21:20:30 +02:00
-
16a7cc6ad6
feat(frontend): admin card management with excel import/export
bert.hausmans
2026-05-20 21:17:55 +02:00
-
1fd31e1001
feat(frontend): admin lesson tree CRUD
bert.hausmans
2026-05-20 21:15:54 +02:00
-
1d501ee50a
feat(frontend): zustand stores for settings, lessons, session
bert.hausmans
2026-05-20 21:14:20 +02:00
-
1c977c4743
feat(frontend): API client modules + backend GET /api/cards/:id
bert.hausmans
2026-05-20 21:12:38 +02:00
-
480ee15df9
feat(frontend): bootstrap React + Vite + Tailwind + Router + Layout
bert.hausmans
2026-05-20 21:10:27 +02:00
-
4a382b5dd7
feat(backend): serve built frontend in production
bert.hausmans
2026-05-20 21:08:06 +02:00
-
ea45f6fcaf
feat(backend): excel import and export
bert.hausmans
2026-05-20 21:06:44 +02:00
-
d60ec34501
feat(backend): stats service and routes
bert.hausmans
2026-05-20 21:03:39 +02:00
-
5de988d23b
feat(backend): sessions routes
bert.hausmans
2026-05-20 20:59:48 +02:00
-
9ed5fc39bd
feat(backend): session engine with Leitner integration
Bert Hausmans
2026-05-20 20:56:32 +02:00
-
5468b7c172
feat(backend): cards CRUD service and routes
Bert Hausmans
2026-05-20 20:51:42 +02:00
-
fcad3d252e
fix(lessons): cascade delete descendants in service (no FK on parent_id)
Bert Hausmans
2026-05-20 20:48:42 +02:00
-
8af8ad54fa
feat(backend): lessons CRUD service and routes
Bert Hausmans
2026-05-20 20:47:43 +02:00
-
3ff79b252c
test(backend): in-memory db helper
Bert Hausmans
2026-05-20 20:44:34 +02:00