Matthieu
0113c08a60
chore : bump version to v0.3.1
...
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Successful in 1m29s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 14:13:21 +01:00
Matthieu
c176511d97
feat(ui) : add app title with swap button in top nav bar
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 14:13:12 +01:00
Matthieu
64de971872
feat(ui) : improve textarea description fields with vertical resize
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 14:11:00 +01:00
Matthieu
3dcc5c21a2
chore : bump version to v0.3.0
...
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m17s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 11:50:31 +01:00
Matthieu
47768c0f02
feat(time-tracking) : redesign calendar blocks and view mode switcher
...
Restyle time entry blocks with title on top, project below, tags
bottom-left, duration bottom-right. Checkerboard pattern for entries
without project. Pill-style view mode switcher. Link DateFilter mode
to main view mode and remove redundant toggle.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 11:50:21 +01:00
Matthieu
b278b8a23a
feat(ui) : improve sidebar collapse button, logo and top nav
...
Move sidebar collapse toggle to mid-height floating circle button,
use LOGO_CARRE.png when collapsed, make timer button circular when
collapsed, reduce app bar height to 60px max.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 11:50:21 +01:00
gitea-actions
4074457499
chore: bump version to v0.2.10
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m27s
2026-03-18 10:08:03 +00:00
Matthieu
b29b4d304d
fix(user) : clear allowedProjects when removing ROLE_CLIENT
...
Auto Tag Develop / tag (push) Successful in 6s
Prevents sending /api/projects/undefined when saving a user after
removing client role. Also auto-clears client and projects when
ROLE_CLIENT checkbox is unchecked.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 11:07:51 +01:00
Matthieu
dd9db93751
feat(project) : add delete button for empty projects with confirmation modal
...
Adds taskCount virtual field on Project entity, delete button in ProjectDrawer
(visible only when taskCount === 0), and a reusable ConfirmDeleteProjectModal.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-18 11:07:41 +01:00
gitea-actions
3e2f3b3cf8
chore: bump version to v0.2.9
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m27s
2026-03-17 16:02:42 +00:00
Matthieu
5bf768bc02
feat(ui) : apply pastel project colors on project cards and calendar blocks
...
Auto Tag Develop / tag (push) Successful in 6s
- Project cards (/projects): 16px radius, pastel background, no border
- Time tracking calendar blocks: pastel opaque background, project color text
Ticket: LST-29
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 17:02:34 +01:00
Matthieu
77c7ceb064
fix(ci) : remove templates/ from release artefact after twig removal
...
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Successful in 1m23s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:38:33 +01:00
Matthieu
ac36eeba36
chore : bump version to 0.2.8
...
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Failing after 1m21s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:36:06 +01:00
gitea-actions
005b731a97
chore: bump version to v0.2.7
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Failing after 1m14s
2026-03-17 14:27:30 +00:00
Matthieu
3df0b15fe7
docs : update CLAUDE.md with BookStackConfiguration and TaskBookStackLink entities
...
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Failing after 1m15s
Ticket: T-019
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
8040245e45
feat(ui) : make kanban column headers sticky with scrollable content
...
Give kanban containers a fixed viewport height. Column headers stay fixed
while task cards scroll independently within each column.
Ticket: LST-28
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
5d378c1f75
refactor(frontend) : replace any types with concrete TypeScript types
...
Replace 9 occurrences of 'any' with proper types: HydraCollection, Task,
ClientTicketWrite, TimeEntryWrite across 7 components.
Ticket: T-023
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
8544babf8c
refactor(i18n) : replace hardcoded French strings with i18n keys
...
Replace 30+ hardcoded strings across 15 components with $t() calls.
Added keys for common actions, drawers titles, empty states, and modals.
Ticket: T-020
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
455121132d
feat(frontend) : admin middleware, fix avatar upload, centralize IRI extraction, remove Nitro proxy
...
- Add admin middleware protecting /admin page (ROLE_ADMIN check)
- Fix useAvatarService to use useApi() with FormData detection
- Create extractIdFromIri() utility, replace manual IRI parsing
- Remove redundant Nitro devProxy (Vite proxy handles dev)
Tickets: T-014, T-015, T-017, T-021
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
fd3097cc26
chore(backend) : rate limiting, cache-control, remove twig, clean deps
...
- Add login_throttling on /login_check (5 attempts/min) with symfony/rate-limiter
- Add Cache-Control: public, max-age=86400 on avatar responses
- Remove symfony/twig-bundle (unused in API-only project)
- Remove unused dev deps: symfony/browser-kit, symfony/css-selector
- Rename API Platform title to "Lesstime API"
Tickets: T-010, T-016, T-022, T-024, T-025
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
ff7cff1d39
fix(backend) : add validation constraints and fix concurrent numbering
...
- Add Assert\Choice on ClientTicket type and status with typed constants
- Add Assert\Url on GiteaConfiguration, BookStackConfiguration, TaskBookStackLink, ClientTicket
- Fix concurrent task/ticket numbering: use pg_advisory_xact_lock instead of FOR UPDATE with MAX()
- Wrap CreateTaskTool numbering in transaction
- Harmonize repository contracts: both return max number, caller adds +1
Tickets: T-004, T-008, T-011, T-012
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
ed58a402b0
fix(auth) : use dedicated plainPassword field for password hashing
...
- Add non-persisted plainPassword field to User entity (write-only via API)
- Remove direct write access to password field
- Update UserPasswordHasherProcessor to hash from plainPassword
- Update frontend DTO and UserDrawer component
Ticket: T-009
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
2ac815d074
fix(security) : block SVG upload, enforce ROLE_CLIENT restrictions on documents
...
- Block SVG MIME type in TaskDocumentProcessor upload validation
- Serve existing SVG files as attachment (defense-in-depth) in download controller
- Block ROLE_CLIENT from uploading documents to tasks (only allowed via portal tickets)
- Add Doctrine extension to filter projects by allowedProjects for ROLE_CLIENT
Tickets: T-003, T-005, T-006
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
e0dfcbdbf8
fix(security) : add role checks on Gitea API resources and all MCP tools
...
- GiteaBranch, GiteaBranchName, GiteaPullRequest: require ROLE_USER
- All 22 MCP tools: require ROLE_USER (ROLE_ADMIN for users/clients listing)
Tickets: T-002, T-007
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
Matthieu
5db6b1e2b0
fix(security) : replace real secrets in .env with placeholders and create .env.example
...
Secrets moved to .env.local (gitignored). Added .env.example for new developers.
Also added .idea/ and docker/.env.docker.local to .gitignore and removed them from tracking.
Tickets: T-001, T-013, T-018
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 15:27:16 +01:00
gitea-actions
6e29aeb30f
chore: bump version to v0.2.6
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Successful in 1m22s
2026-03-17 09:38:00 +00:00
Matthieu
cca548dfbc
chore : bump version to 0.2.5 and fix MCP session directory
...
Auto Tag Develop / tag (push) Successful in 5s
Move MCP session storage from cache dir to var/mcp-sessions
so it survives cache:clear operations.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 10:36:04 +01:00
Matthieu
3d4b7fad12
fix(mcp) : allow unauthenticated GET on /_mcp for SSE streaming
...
Auto Tag Develop / tag (push) Has been cancelled
Build Release Artefact / build (push) Failing after 1m16s
Claude Code MCP HTTP client sends GET SSE requests without the
Authorization header, breaking the streamable HTTP transport.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-17 09:15:29 +01:00
Matthieu
5ffb4bbedc
chore : bump version to 0.2.3 and add Monolog logging
...
Auto Tag Develop / tag (push) Successful in 6s
Build Release Artefact / build (push) Successful in 1m22s
Add symfony/monolog-bundle with rotating file logs in dev (7 days)
and fingers_crossed + rotating file in prod (30 days).
Deploy script now ensures var/log/ permissions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 08:52:06 +01:00
Matthieu
d2e9f9ed65
chore : bump version to 0.2.2
...
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m31s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-16 16:35:08 +01:00
Matthieu
c5898fbf74
feat(ui) : add create task button on my-tasks and responsive kanban columns
...
- Add "Créer une tâche" button on my-tasks page with mandatory project selector
- TaskModal now accepts optional projects prop for project selection in create mode
- Replace fixed-width kanban columns (w-72 shrink-0) with flexible layout (min-w-36 flex-1)
- Add min-w-0 and overflow-x-hidden on default layout to properly contain content
- Kanban now adapts to screen size from 1024px to 1920px+
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-16 16:35:02 +01:00
Matthieu
0180dd3715
chore : bump version to 0.2.1
...
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Successful in 1m32s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-16 14:41:38 +01:00
Matthieu
0f99098291
chore : bump version to 0.2.0 and update deploy doc
...
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Failing after 1m25s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-16 14:29:41 +01:00
Matthieu
1c6f473dff
feat(mcp) : add clientTicket relation to time entries
...
Add ManyToOne relation from TimeEntry to ClientTicket entity.
MCP tools create-time-entry, update-time-entry, and list-time-entries
now support clientTicketId parameter for linking tickets to time entries.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-16 14:28:31 +01:00
Matthieu
c95fff530c
docs(deploy) : add deployment guide and MCP connection tutorial
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-16 14:28:31 +01:00
gitea-actions
fb0e6c1ea4
chore: bump version to v0.1.2
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m19s
2026-03-16 08:52:02 +00:00
Matthieu
6d3ecc1322
Merge branch 'feature/client-portal' into develop
Auto Tag Develop / tag (push) Has been cancelled
2026-03-16 09:51:48 +01:00
Matthieu
f5986090c0
feat(deploy) : add deploy script and nginx config for bare Ubuntu server
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 09:51:29 +01:00
Matthieu
d6399c20e1
fix : fix MCP create-task tool crashing on task creation
...
CreateTaskTool called nonexistent findMaxNumberByProject instead of
findMaxNumberByProjectForUpdate. Also removed FOR UPDATE clause from the
query as PostgreSQL does not support it with aggregate functions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 09:26:36 +01:00
Matthieu
a972d243f5
style : center and resize view toggle buttons on my-tasks page
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 09:26:34 +01:00
Matthieu
56bf88f293
fix : prevent document delete button from submitting the TaskModal form
...
The delete button in TaskDocumentList lacked type="button", causing it to
act as a submit button inside the form, which triggered handleSubmit and
closed the modal before the confirmation dialog could appear. Also added
guards to prevent closing TaskModal while a sub-modal is open.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 09:26:32 +01:00
9d80e017c2
docs : complete architecture tree in README with all directories
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 22:27:52 +01:00
4e91507158
docs : rewrite README with full project documentation
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 22:25:42 +01:00
318f14ea88
docs : update CLAUDE.md with avatar feature context and gotchas
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 22:21:12 +01:00
202b516dc3
fix(avatar) : install symfony/mime for server-side MIME type detection
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 22:13:18 +01:00
98782a9849
fix(avatar) : add explicit import for useAvatarService in profile page
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 22:12:38 +01:00
b978adf9ae
fix(avatar) : move avatar service to composables for Nuxt auto-import
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 22:11:03 +01:00
e4fc34b90f
refactor : simplify codebase and fix critical issues
...
Backend:
- Add MCP Serializer to centralize entity-to-array conversion (~300 lines deduped)
- Fix race condition in task/ticket number generation (SELECT FOR UPDATE + transaction)
- Add unique constraint on task (project_id, number) with migration
- Fix MIME type validation: use server-detected finfo instead of client-supplied type
- Add allowlist of permitted MIME types for uploads
- Fix TaskDocumentDownloadController: allow ROLE_CLIENT access, add priority:1
- Fix notification sent even when ticket status unchanged
- Remove redundant exception constructors
- Simplify services (BookStackApi double fetch, TokenEncryptor, GiteaApi)
- Consolidate duplicate checks in processors
Frontend:
- Fix useApi isHandlingUnauthorized scope (module-level to prevent double 401 redirect)
- Fix client-tickets toast key copy-paste bug
- Merge duplicated tasks service methods (getByProject + getByProjectArchived)
- Extract shared uploadWithRelation helper in task-documents service
- Extract formatFileSize utility from duplicated component code
- Extract status transition logic into useClientTicketHelpers composable
- Remove dead code (unused router, handleLogout, empty script blocks)
- Merge duplicate watchers and onMounted calls
- Normalize arrow functions to function declarations per convention
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 22:09:16 +01:00
a5144443a4
fix(avatar) : address review findings — security and UX fixes
...
- Use getMimeType() instead of getClientMimeType() to prevent MIME spoofing
- Change IsGranted to IS_AUTHENTICATED_FULLY so ROLE_CLIENT can access avatars
- Remove Groups from avatarFileName (only avatarUrl needed by frontend)
- Disable aggressive caching to prevent stale avatar images
- Add error handling to avatar upload in profile page
- Use i18n for "Mon profil" button text
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 22:02:27 +01:00
afd4baed92
feat(avatar) : replace initials with UserAvatar component everywhere
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:58:46 +01:00
e8f0202b15
feat(avatar) : add profile page with avatar upload and crop
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:57:55 +01:00
962b3d935c
feat(avatar) : add AvatarCropper modal with vue-advanced-cropper
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:56:11 +01:00
cea22f977b
feat(avatar) : add UserAvatar component with image/initials fallback
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:55:52 +01:00
5613a7c92b
feat(avatar) : add avatar service, DTO update, and cropper dependency
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:55:39 +01:00
4d0aa65920
feat(avatar) : add avatar upload/serve/delete controller
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:54:23 +01:00
63315c0a15
feat(avatar) : add avatarFileName field to User entity
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:53:43 +01:00
cff16611f4
docs : add user avatar implementation plan
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:50:07 +01:00
96f5c7c91c
docs : add user avatar feature design spec
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:47:38 +01:00
f7a76c9e9b
feat(frontend) : add date filter component to time-tracking page
...
Reusable DateFilter component using @vuepic/vue-datepicker with day/week
toggle. Selecting a day switches to day view, selecting a week navigates
the calendar to that week. Includes "Aujourd'hui" and "Cette semaine"
quick shortcuts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:46:48 +01:00
7047f64a6b
fix(portal) : handle submittedBy as object or IRI in canEdit check
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:40:54 +01:00
cd8cea45c1
fix(security) : allow ROLE_CLIENT to read projects
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:39:41 +01:00
1f31a3a33f
fix(portal) : embed project id/name in /me response for client users
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:37:18 +01:00
254f8bc411
fix(admin) : handle null/IRI client in project filter for UserDrawer
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:34:21 +01:00
239cd6398e
docs : update CLAUDE.md with client portal context and gotchas
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:26:05 +01:00
318b6198da
feat(portal) : add drag & drop status change on client ticket kanban
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:16:22 +01:00
4e3e854aa2
fix(portal) : allow admin to edit tickets and enable document deletion
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:12:55 +01:00
49cd971e3e
feat(project) : add client tickets panel to project page
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 20:41:28 +01:00
ffe4a0117c
feat(portal) : allow client to edit own tickets
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 20:41:25 +01:00
d2f6d84d03
feat(portal) : replace ticket list with kanban board
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 20:41:23 +01:00
2a874046d3
feat : allow client to edit own tickets and protect status fields
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 20:35:11 +01:00
f09ef67117
feat : date filter, project drawer, and misc frontend improvements
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 20:25:26 +01:00
046ee396d3
feat(fixtures) : add users alice/bob/charlie and distribute task assignees
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 20:25:14 +01:00
0ba487cfa9
feat(fixtures) : add client users, client tickets, and ticket-task link
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 20:20:27 +01:00
a2fc8e6e52
feat(task) : add client ticket selector in TaskModal
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 20:14:56 +01:00
6c910e7fcc
fix : use native SQL for JSON roles query in PostgreSQL
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 20:11:54 +01:00
6d7e6f5f48
fix : allow admin users to create client tickets on any project
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 20:07:19 +01:00
0c8fb654a9
fix(portal) : allow admin+client users to access both views and add admin link
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 20:06:09 +01:00
f8748c4061
fix(portal) : handle ticket creation error and hide new ticket button for admins
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 20:04:20 +01:00
2c28a4ad1d
fix(notification) : add route priority to prevent API Platform conflict
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:59:47 +01:00
cf1cf1ff5c
chore : add MCP bundle config files and .mcp.json for Claude Code
...
Auto-generated by Symfony Flex recipe + .mcp.json for local STDIO transport.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:53:16 +01:00
0724d38a26
feat(frontend) : add portal pages, update auth middleware and DTOs for client portal
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:51:51 +01:00
17c5160f2c
docs : add MCP server documentation to README
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:49:57 +01:00
40d6f7693f
feat(i18n) : add notification translations in French
2026-03-15 19:48:27 +01:00
e63ed63dd8
feat(frontend) : integrate NotificationBell in AppTopNav navbar
2026-03-15 19:48:13 +01:00
ad8142ac9d
feat(frontend) : add NotificationBell component with dropdown
2026-03-15 19:48:03 +01:00
f7afe1c6fb
docs : add MCP server section to CLAUDE.md
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:47:43 +01:00
697075eea2
feat(frontend) : add useNotifications composable with polling
2026-03-15 19:47:33 +01:00
587733e6f9
feat(frontend) : add notification DTO and service
2026-03-15 19:47:21 +01:00
59b11f1225
feat(notification) : hook NotificationService into ticket processors
2026-03-15 19:47:06 +01:00
4094048aba
feat(notification) : add NotificationService and UserRepository::findByRole
2026-03-15 19:46:37 +01:00
ce2eaa03e1
feat(notification) : add unread-count and mark-all-read custom controllers
2026-03-15 19:46:10 +01:00
d932359024
feat(notification) : add NotificationProvider filtered by current user
2026-03-15 19:45:58 +01:00
669c36cea1
feat(notification) : add Notification entity, repository, and migration
2026-03-15 19:45:47 +01:00
3d1a510d82
feat : add 22 MCP tool classes for projects, tasks, and time tracking
...
Tools: list-users, list-clients, list/get/create/update-project,
list/get/create/update/delete-task, list-statuses/priorities/efforts/tags,
list/create/update-group, list/create/update/delete-time-entry.
Attribute moved to class level for SDK discovery compatibility.
Install nyholm/psr7 for HTTP transport PSR-17 support.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:45:39 +01:00
68dd9599a9
feat(auth) : redirect client users to /portal after login and extract ticket helpers composable
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:42:53 +01:00
0d21e59023
feat(admin) : add client tickets tab with list, filters, status change, and delete
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:42:49 +01:00
7210a0d96f
feat(kanban) : show client ticket icon on task cards, my-tasks, and task modal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:42:46 +01:00
7099f1ca95
feat(documents) : generalize TaskDocumentUpload and add upload zone to ticket detail modal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:42:43 +01:00
e16fd2053e
feat : MCP server infrastructure setup
...
Install symfony/mcp-bundle, add STDIO + HTTP transport config,
API token auth on User entity with custom authenticator and firewall,
generate-api-token console command, Nginx /_mcp location, fixture token.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:33:52 +01:00
760f5b6ad6
feat(frontend) : add i18n translations for client portal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:31:04 +01:00
adf050505d
feat(frontend) : add client ticket support to task-documents service
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:30:52 +01:00
12d043a50f
feat(frontend) : add clientTicket to Task DTO
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:30:38 +01:00
bfd418851e
feat(frontend) : add client-tickets service
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:30:32 +01:00
4fbbead3e3
feat(frontend) : add ClientTicket DTO
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:30:19 +01:00
64961631e4
feat(frontend) : add client user management to admin
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:30:10 +01:00
7f2371e522
feat(frontend) : update UserData DTO for client users
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:29:36 +01:00
851953df1e
feat : generalize TaskDocumentProcessor for client tickets
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:28:04 +01:00
b6cfe9d7d4
feat : add ClientTicketProvider with filtering
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:27:24 +01:00
f33f2f95ec
feat : add ClientTicketStatusProcessor
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:27:10 +01:00
9a9416d6c8
fix : apply review fixes to MCP plan and spec
...
Fix getIsFinal() method name, enrich create/update tool return formats
to match get/list consistency, fix duplicate Reference section in spec,
correct tool count to 22.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:27:06 +01:00
f27297517c
feat : add ClientTicketNumberProcessor
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:27:00 +01:00
d2e27a04ce
feat : add ClientTicketRepository
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:25:45 +01:00
10cde5e2f9
feat : add client portal migration
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:25:36 +01:00
926d6d54c5
feat : generalize TaskDocument for client tickets
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:25:02 +01:00
a538bb3601
feat : add clientTicket relation to Task entity
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:23:50 +01:00
97dcff8542
feat : add ClientTicket entity
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:23:36 +01:00
87ab281099
feat : extend User entity with client and allowedProjects
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:23:10 +01:00
2b9095b1a2
docs : add MCP server implementation plan
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:22:42 +01:00
05e24db6ca
feat(security) : add role hierarchy for client portal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:21:28 +01:00
63febbea45
fix(security) : add ROLE_USER security on all read endpoints
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:21:19 +01:00
edc441f363
fix(security) : exclude ROLE_USER for ROLE_CLIENT users
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 19:20:46 +01:00
f4eec2e6e9
docs : add client portal implementation plans (phases 1-3)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:18:25 +01:00
5547c67b30
docs : add create-group and update-group tools to MCP spec
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:17:44 +01:00
9e19adc09a
docs : add HTTP transport + API token auth to MCP spec
...
Both STDIO (local) and HTTP (LAN) transports are now in scope.
HTTP secured by API token on User entity with custom authenticator.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:15:20 +01:00
8d24949186
docs : update MCP server spec with review fixes
...
Adds list-users, list-clients, update-project tools. Fixes time entry
title as optional, adds startedAt to update-time-entry, adds taskId
filter, pagination limits, eager joins, security model docs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:12:32 +01:00
c2fa308f1e
docs : add MCP server design spec for Lesstime
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:08:27 +01:00
gitea-actions
4216f1b5a1
chore: bump version to v0.1.1
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m17s
2026-03-15 18:07:23 +00:00
c72f17eb93
docs : add time tracking design spec
...
Auto Tag Develop / tag (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:59:02 +01:00
4c19b68156
fix(gitea) : propagate API errors instead of silently returning empty results
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:58:55 +01:00
63e4af785e
chore : update auto-generated reference config
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:58:47 +01:00
f5e41bc377
docs : add client portal design spec
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:54:49 +01:00
f978df6a4b
fix(frontend) : explicit import for ConfirmDeleteDocumentModal
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:53:39 +01:00
98e832afa5
fix(frontend) : use dedicated confirm modal component for document deletion
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:48:10 +01:00
cbfbb16c59
feat(frontend) : replace confirm() with themed modal for document deletion
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:33:44 +01:00
354d994766
fix : tag TaskDocumentListener as doctrine entity listener
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:32:02 +01:00
06771c17e0
fix(bookstack) : add uriVariables to BookStackLink and BookStackSearchResult
...
API Platform 4 requires explicit uriVariables declaration for
URI template parameters on DTO resources.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:27:57 +01:00
9908f34580
fix(frontend) : refresh documents locally after upload/delete and improve progress UX
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:21:04 +01:00
7bf632c1da
feat(bookstack) : integrate TaskBookStackLinks into TaskModal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:15:39 +01:00
66a75c6b6a
feat(bookstack) : add TaskBookStackLinks component
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:15:37 +01:00
f53b2f3d1f
feat(bookstack) : add shelf select to ProjectDrawer
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:15:34 +01:00
c9a3c7c5f8
feat(bookstack) : add BookStack tab to admin page
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:15:30 +01:00
5777e8386f
feat(bookstack) : add AdminBookStackTab component
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:15:27 +01:00
06f2a9e1ea
feat(bookstack) : add i18n translations for BookStack
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:15:24 +01:00
b5fa9e7d06
feat(bookstack) : add frontend BookStack service
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:15:20 +01:00
73ecbbc95b
feat(bookstack) : add frontend BookStack DTOs
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:15:12 +01:00
5327155a80
fix(frontend) : add missing useTaskDocumentService imports
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:12:29 +01:00
9e638c32b8
feat(bookstack) : add BookStackSearchResult API resource for shelf-scoped search
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:10:47 +01:00
bc331982d5
feat(bookstack) : add BookStackLink API resource with CRUD operations
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:10:24 +01:00
1e311242a9
feat(bookstack) : add BookStackShelf API resource for listing shelves
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:09:51 +01:00
97c6ef6a52
feat(bookstack) : add BookStackTestConnection API resource
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:09:36 +01:00
245a8a932e
feat(frontend) : integrate documents into TaskModal
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:09:20 +01:00
28fbc73248
feat(bookstack) : add BookStackSettings API resource with provider and processor
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:09:20 +01:00
df00b27a64
feat(bookstack) : add BookStackApiService
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:08:51 +01:00
ee38f99022
feat(bookstack) : add BookStackApiException
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 18:08:15 +01:00
48ef434f8b
feat(frontend) : add document upload, list and preview components
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:08:10 +01:00
e53862d71f
feat(frontend) : add TaskDocument DTO, service and i18n translations
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:07:00 +01:00
52063cb4fa
feat(bookstack) : add migration for BookStack tables and Project columns
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:06:14 +01:00
06832c24e1
feat : add document upload processor, download controller and cleanup listener
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:05:58 +01:00
8fbafc1f8a
feat(bookstack) : add bookstackShelfId and bookstackShelfName to Project
2026-03-15 18:05:13 +01:00
585cc3368f
feat(bookstack) : add TaskBookStackLink entity and repository
2026-03-15 18:05:09 +01:00
043826075d
feat(bookstack) : add BookStackConfiguration entity and repository
2026-03-15 18:05:07 +01:00
8ec98a593a
feat : add task_document migration
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:04:14 +01:00
3dd2d39222
refactor : rename GITEA_ENCRYPTION_KEY to ENCRYPTION_KEY
...
Generic encryption key name for shared use across Gitea and BookStack
token encryption.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:03:52 +01:00
cfaa6c42ec
feat : add TaskDocument entity with Task relation
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:03:20 +01:00
a36cd92a7f
feat(config) : set upload limits to 50MB and add uploads volume
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:02:09 +01:00
bfffbe7041
docs : add BookStack connector implementation plan
...
21-task plan covering backend (entities, migration, service, API
resources) and frontend (DTOs, service, admin tab, project drawer,
task modal integration). Reviewed and fixed: readonly class issue,
page URL construction, Delete provider handling, task:read group,
search query syntax, security attributes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:00:34 +01:00
c9993ef32d
docs : add task documents implementation plan
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 17:59:29 +01:00
efc3742fff
docs : update task documents spec after review
...
Address review findings: add EntityListener for file cleanup on
cascade delete, dedicated download endpoint, sequential upload,
i18n keys, .gitignore entry, and error handling strategy.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 08:49:18 +01:00
e047b98bed
docs : update BookStack spec with review fixes
...
Address critical and important review findings: search-in-shelf
algorithm detail, unique constraint, TokenEncryptor refactoring,
pagination specifics, and technical notes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 08:48:10 +01:00
758c9f6fbd
docs : add task documents upload design spec
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 08:46:10 +01:00
2c93e83e6b
docs : add BookStack connector design spec
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 08:45:30 +01:00
25b648a1b1
fix(frontend) : align time-tracking filters with view mode toggle
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 08:34:07 +01:00
445f51b473
fix(gitea) : fetch only branch-specific commits using compare API
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-15 08:16:55 +01:00
f888a29e0a
refactor(frontend) : make page headers and filters sticky across all pages
...
Wrap title + filters in a sticky container (top-8 sm:top-12, z-20, bg-white)
on all pages for consistent scroll behavior. Also fix SidebarTimer icon
visibility when sidebar is collapsed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 09:21:45 +01:00
b48ca10304
feat : populate all projects with tasks, groups and time entries in fixtures
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 09:14:15 +01:00
802659434f
fix(frontend) : fix time-tracking page scroll with fixed header and filters
...
Restructure time-tracking page layout so the page title and filters
stay fixed while only the calendar grid body scrolls internally.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 09:10:04 +01:00
25aef9b2d5
feat : add dashboard with Chart.js charts and filters
...
Implement the dashboard page with real data from the API:
- KPI cards (hours, active tasks, total tasks, projects)
- Charts: hours by day (line), hours by project (doughnut),
tasks by status (doughnut), tasks by priority (bar),
tasks by project (horizontal stacked bar)
- Filters: period (week/month), project, user
- Add chart.js and vue-chartjs dependencies
- Add dashboard sidebar icon and translations
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 09:05:35 +01:00
0733ac16cd
feat : add project archiving feature
...
Allow projects to be archived/unarchived from the ProjectDrawer, with a
toggle filter on the projects page to show/hide archived projects.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 08:58:29 +01:00
Matthieu
c0b16ef6dc
refactor(frontend) : redesign TaskGitSection with tabs and collapsible commits, add scrollable modal
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 16:44:30 +01:00
Matthieu
c89f9c5596
fix : load Gitea URL on modal open instead of onMounted
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:19:54 +01:00
Matthieu
94d7794c31
fix : add task:read group to Project gitea fields for TaskModal visibility
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:18:19 +01:00
Matthieu
3c0baee661
feat : add symfony/http-client dependency for Gitea integration
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:06:42 +01:00
Matthieu
c7a0dafae8
feat : integrate TaskGitSection into TaskModal
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:04:29 +01:00
Matthieu
6eeacd2cb0
feat : add TaskGitSection component
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:03:51 +01:00
Matthieu
027e31e139
feat : add Gitea repo selector to ProjectDrawer
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:02:57 +01:00
Matthieu
f8c94cb177
feat : add Gitea tab to admin page
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:02:00 +01:00
Matthieu
5b204a3464
feat : add AdminGiteaTab component
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:01:39 +01:00
Matthieu
92baf8ac0e
feat : add Gitea i18n keys
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:01:05 +01:00
Matthieu
2073339d4f
feat : add gitea fields to Project DTO
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:00:35 +01:00
Matthieu
e278286146
feat : add Gitea frontend service
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 14:00:17 +01:00
Matthieu
a6c5e54619
feat : add Gitea TypeScript DTOs
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:59:56 +01:00
Matthieu
5135e28e3a
feat : add branch name generation endpoint
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:59:32 +01:00
Matthieu
3d0fad3735
feat : add task Gitea pull requests endpoint
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:59:07 +01:00
Matthieu
dcbf5db308
feat : add task Gitea branches endpoints (list + create)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:58:41 +01:00
Matthieu
7b1aa22c15
feat : add Gitea repositories list endpoint
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:58:09 +01:00
Matthieu
5577884c13
feat : add Gitea test connection endpoint
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:57:50 +01:00
Matthieu
be2e7c60a3
feat : add Gitea settings API resource with provider/processor
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:57:31 +01:00
Matthieu
136d0eaaa4
feat : add GiteaApiService with branch/commit/PR methods
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:57:01 +01:00
Matthieu
0b8e2bfc63
feat : add GiteaApiException
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:56:25 +01:00
Matthieu
28e943b519
feat : add TokenEncryptor service with sodium encryption
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:56:14 +01:00
Matthieu
50690e6680
feat : add migration for GiteaConfiguration and Project gitea fields
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:55:39 +01:00
Matthieu
c82b6d1b32
feat : add gitea owner/repo fields to Project entity
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:55:19 +01:00
Matthieu
6ae014fe8a
feat : add GiteaConfiguration entity with repository
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:55:00 +01:00
Matthieu
3ec9424bb2
docs : add Gitea integration implementation plan
...
23 tasks across 7 chunks covering:
- Backend: GiteaConfiguration entity, TokenEncryptor, GiteaApiService
- API: settings CRUD, test connection, repositories list, task branches/PRs
- Frontend: DTOs, service, admin tab, ProjectDrawer repo selector, TaskGitSection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 13:40:28 +01:00
Matthieu
aa5f6cc7c1
docs : address spec review feedback for Gitea integration
...
- Use dedicated GiteaConfiguration entity instead of generic Setting table
- Add token encryption with SodiumEncryptor + GITEA_ENCRYPTION_KEY
- Split aggregated /gitea/info into separate /branches and /pull-requests endpoints
- Fix branch pattern matching to avoid PROJ-420 matching PROJ-42
- Add error handling strategy with GiteaApiException and degraded UI state
- Add slug generation via AsciiSlugger with 50 char limit
- Add test connection endpoint
- Extract TaskGitSection.vue component
- Add frontend service layer (gitea.ts)
- Add i18n consideration
- Add "copy branch name" feature
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:16:29 +01:00
Matthieu
14358fdddc
docs : add Gitea integration design spec
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:13:36 +01:00
Matthieu
3ffd18138b
chore : update auto-generated config reference
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:07:02 +01:00
Matthieu
e5e722c019
docs : add implementation plans for admin clients and time entry multi-type select
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:06:58 +01:00
Matthieu
bc9471e4ba
fix(backend) : add task:read serialization group to Project id
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:06:52 +01:00
Matthieu
cb5aa4584c
feat(frontend) : add tag, assignee and status filters on project page
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:06:48 +01:00
Matthieu
1d0f9a28c3
feat(frontend) : add kanban drag & drop and improve filter selects on my-tasks
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:06:44 +01:00
Matthieu
d3ea09319c
feat(frontend) : show project code and task number badge in TaskModal header
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:06:39 +01:00
Matthieu
e85ea42d7c
docs : update CLAUDE.md structure and fix spec formatting
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:06:35 +01:00
Matthieu
7540c99501
feat : add my-tasks page with Kanban and List views
...
Add a /my-tasks page displaying all non-archived tasks across projects
with server-side filtering (assignee, project, group, priority, effort,
tags, status) and two view modes (Kanban columns by status, List view).
Includes sidebar navigation link and i18n translations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:34:16 +01:00
Matthieu
c60f531607
docs : add my-tasks page implementation plan
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:28:39 +01:00
Matthieu
638bb2b686
docs : address spec review feedback for my-tasks page
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:23:45 +01:00
Matthieu
7b8c754987
docs : add my tasks page design spec
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:21:34 +01:00
Matthieu
bf9faee5f4
feat(frontend) : add current time indicator line on calendar
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:06:09 +01:00
Matthieu
7d1d81688e
refactor(frontend) : replace TaskDrawer with TaskModal for ticket create/edit
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:06:04 +01:00
Matthieu
9a9e5093f5
feat : add archive/unarchive to TaskGroupDrawer and fix isFinal serialization
...
Fix TaskStatus getter naming (isFinal -> getIsFinal) so Symfony serializer
properly exposes the isFinal field. Add archive/unarchive buttons and
non-final tasks info message to TaskGroupDrawer. Remove obsolete TaskType
entity and repository.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 10:50:41 +01:00
Matthieu
7e7e373231
fix(frontend) : fix dropdown z-index and dev config
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 08:20:43 +01:00
Matthieu
517511177c
feat : add project code and task auto-numbering
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 08:20:31 +01:00
Matthieu
56275a9ebe
refactor : rename TaskType to TaskTag across the stack
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 08:20:21 +01:00
Matthieu
dbae1f7536
feat(frontend) : add isFinal toggle to TaskStatusDrawer
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:08:19 +01:00
Matthieu
d5d6452cf2
feat(frontend) : add group archive/unarchive to ProjectGroupTab
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:07:21 +01:00
Matthieu
e6bbe66d42
feat(frontend) : add actions slot to DataTable component
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:06:28 +01:00
Matthieu
0c4363d32b
feat(frontend) : add Archives sidebar link for projects
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:05:39 +01:00
Matthieu
81d0433653
feat(frontend) : create project archives page
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:05:12 +01:00
Matthieu
5057ef45c8
feat(frontend) : filter archived tasks and groups from kanban view
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:04:15 +01:00
Matthieu
c097849dad
feat(frontend) : add archive/unarchive buttons and delete confirmation to TaskDrawer
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:03:27 +01:00
Matthieu
7fe434fa07
feat(frontend) : create ConfirmDeleteTaskModal component
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:01:55 +01:00
Matthieu
4e391e2f57
feat(frontend) : add archiving i18n translations
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:01:19 +01:00
Matthieu
84c85b3322
feat(frontend) : add getByProjectArchived to task service
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 18:00:31 +01:00
Matthieu
91ffb82e44
feat(frontend) : add isFinal and archived fields to DTOs
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 17:59:45 +01:00
Matthieu
96a9f988c4
feat(backend) : set isFinal on Terminé status in fixtures
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 17:58:55 +01:00
Matthieu
2c2ca0a8b6
feat(backend) : add migration for isFinal, archived fields
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 17:58:20 +01:00
Matthieu
e98d952871
feat(backend) : add archived field to TaskGroup entity
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 17:52:54 +01:00
Matthieu
8503111a4b
feat(backend) : add archived field to Task entity
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 17:51:59 +01:00
Matthieu
6801dae0f2
feat(backend) : add isFinal field to TaskStatus entity
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 17:51:14 +01:00
Matthieu
73d0c7b4fa
docs : add task archiving implementation plan
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 17:43:21 +01:00
Matthieu
b76fd589cc
docs : update archiving spec with edge cases and implementation details
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 17:33:29 +01:00
Matthieu
20a5dca6d5
docs : add task archiving feature design spec
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 17:31:20 +01:00
Matthieu
60b5aad0a4
feat(frontend) : allow multiple type selection in time entry drawer and remove group creation from kanban
...
Replace single-select dropdown with multi-select colored badges for types in TimeEntryDrawer, matching TaskDrawer pattern. Remove the "Ajouter un groupe" button and associated code from the kanban page.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 15:14:25 +01:00
Matthieu
3e6f4ecc7a
fix(frontend) : fix z-index overlay hiding drawers and add pathPrefix config
...
Lower the white overlay div from z-50 to z-30 so it still masks scrolling
content but no longer covers drawers/modals teleported to body.
Add components pathPrefix: false to resolve auto-imported components
without folder prefix.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 12:12:48 +01:00
Matthieu
dac493b76d
refactor(frontend) : remove per-project statuses page and sidebar link
2026-03-12 11:52:30 +01:00
Matthieu
37a6cb5558
refactor(frontend) : load global statuses in kanban page
2026-03-12 11:52:15 +01:00
Matthieu
cf84883530
feat(admin) : add statuts tab to admin page
2026-03-12 11:52:07 +01:00
Matthieu
ae8654d9ca
feat(admin) : add task reassignment logic to AdminStatusTab
2026-03-12 11:51:15 +01:00
Matthieu
9d5008a21d
refactor(frontend) : remove projectId from TaskStatusDrawer
2026-03-12 11:50:07 +01:00
Matthieu
cbe3408b72
refactor(frontend) : remove project from TaskStatus DTO and service
2026-03-12 11:49:56 +01:00
Matthieu
16c9b845a6
fix(fixtures) : create global statuses instead of per-project
2026-03-12 11:49:03 +01:00
Matthieu
df29214509
feat(backend) : add migration to remove project_id from task_status
2026-03-12 11:48:43 +01:00
Matthieu
5b8b4716df
refactor(backend) : remove project relationship from TaskStatus entity
2026-03-12 11:47:53 +01:00
Matthieu
f06842729d
refactor(frontend) : remove clients sidebar link
2026-03-12 11:46:51 +01:00
Matthieu
1f74509475
feat(admin) : move clients into admin page, remove standalone page
2026-03-12 11:46:43 +01:00
Matthieu
0bf01cfb27
feat(admin) : add AdminClientTab component
2026-03-12 11:46:19 +01:00
Matthieu
2ffdaafd08
style(frontend) : update timer and delete action colors
2026-03-11 18:05:45 +01:00
Matthieu
33f2bcc393
fix(time-tracking) : keep calendar header sticky below page header
2026-03-11 18:04:57 +01:00
Matthieu
f9d4de3e33
style(frontend) : apply UI corrections from design review
...
- Page titles in blue primary (#222783 )
- Double main content margins (px-16 py-24)
- Remove blue border above sidebar timer
- Remove project color dot, use project color on title text
- All delete buttons/icons orange (#E2953C)
- Fix collapsed sidebar logo (object-cover object-left)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 11:16:50 +01:00
c886506791
fix(time-tracking) : return empty collection instead of 404 for active timer endpoint
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 00:00:33 +01:00
1efa0fa9ca
refactor(frontend) : reorganize components into subdirectories and fix imports
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:59:24 +01:00
d28f385918
docs(claude) : update project structure and add missing commands
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:53:53 +01:00
ae3eeed7d9
refactor(time-tracking) : use MalioSelect for filters and drawer, improve calendar cards
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:47:49 +01:00
7ee1be63b3
feat(time-tracking) : show real-time timer in browser tab title
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:30:10 +01:00
c15a10b36f
feat(time-tracking) : add list view for time entries
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:29:58 +01:00
049275fd96
feat(time-tracking) : add calendar overlap columns, responsive cards, project filter, and auto-scroll
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:20:07 +01:00
a9ba2f3815
feat(time-tracking) : improve TimeEntryDrawer with date/time fields, duration label, and delete
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:20:02 +01:00
7484ce3e45
feat(time-tracking) : add pending complete entry flow and redesign sidebar timer
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:19:58 +01:00
d4c5660ba6
feat(tasks) : add delete button to TaskDrawer and toggle timer from TaskCard
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:19:53 +01:00
576922200c
fix(backend) : fix TimeEntry API route order and config reference typo
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:19:41 +01:00
74116506db
feat(time-tracking) : add calendar page, timer sidebar, and all UI components
...
- SidebarTimer widget with play/stop button
- TimeEntryBlock with drag-to-move and resize
- TimeEntryDrawer for create/edit entries
- TimeEntryContextMenu for copy/paste/delete
- TimeTrackingCalendar grid with week/day view
- Time tracking page with filters and navigation
- Sidebar link and timer integration in layout
- TaskCard play button connected to timer store
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 22:22:48 +01:00
cf021d6136
feat(time-tracking) : add TimeEntry DTO, service, timer store, and i18n keys
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 22:22:40 +01:00
1e07eb1d64
feat(time-tracking) : add ActiveTimeEntryProvider, fixtures, and serialization groups
...
- ActiveTimeEntryProvider returns active timer for current user
- TimeEntry fixtures with 10 sample entries for the SIRH project
- Add time_entry:read group to Project, User, and TaskType for embedded serialization
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 22:22:34 +01:00
fa0adfde88
refactor(frontend) : extract reusable DataTable component from repeated table markup
...
Replace inline table HTML in 8 files with a shared DataTable component
supporting columns definition, scoped slots for custom cells, and
built-in delete action.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 22:19:25 +01:00
e9ca888971
feat(time-tracking) : add TimeEntry entity and migration
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 22:10:27 +01:00
2299d66a9f
docs : add time tracking implementation plan
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 22:05:46 +01:00
66bb94fc98
feat(backend) : add project relation to TaskStatus entity with migration and fixtures
...
Add ManyToOne project field on TaskStatus, SearchFilter for API filtering,
migration to add the column, and update fixtures to create statuses per project.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 21:58:41 +01:00
50ae9ef549
feat(projects) : add per-project task statuses and split project detail into sub-pages
...
Move project detail from [id].vue to [id]/ directory with Kanban, Groups
and Statuses sub-pages. Add project filter on task statuses service and
drawer. Remove global statuses tab from admin.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 21:58:35 +01:00
95450e3b5f
feat(layout) : add collapsible sidebar with icon-only compact mode
...
Introduces SidebarLink component, UI store with localStorage persistence,
and smooth CSS transitions between expanded (w-64) and compact (w-16) modes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 21:36:28 +01:00
bb332aa7e8
docs : add TODO with pending features (task groups page, ticket archiving)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 07:47:51 +01:00
fd6d0afb24
style(projects) : replace color bar with circle avatar on project cards
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 07:44:17 +01:00
71e6e83c82
feat(clients) : add client deletion from list page
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 07:44:10 +01:00
2f746ebce4
chore : add nuxt.config.ts.new with dev proxy config
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:48:08 +01:00
91da21d16b
revert : restore original nuxt.config.ts
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:45:19 +01:00
8c56ee6dd7
chore : update project documentation and config
...
Update CLAUDE.md structure, add implementation plans, fix
config/reference.php and MeProvider comment.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:49 +01:00
81797e10c0
feat : add User CRUD with admin management
...
Add User API operations (GET, POST, PATCH, DELETE) with password
hashing processor, frontend service, drawer and admin tab.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:49 +01:00
c7b1e62037
feat : add admin page for task configuration
...
Add admin page with tabs for managing task statuses, efforts,
priorities and types, with CRUD drawers and color picker.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
ac11690ad4
feat : add task management with kanban and backlog
...
Add kanban board with drag-and-drop, backlog section, task/group
drawers, DTOs, services, and i18n translations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
0a7856b37c
feat : add task data fixtures
...
Add fixtures for TaskStatus, TaskEffort, TaskPriority, TaskType,
TaskGroup and sample Task entries.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
1d50e5dcb3
feat : add Task entities, repositories and migration
...
Add Task, TaskStatus, TaskEffort, TaskPriority, TaskType, TaskGroup
entities with Doctrine mappings and API Platform CRUD operations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
b240dc6fc4
fix : resolve runtime errors and improve configuration
...
- Add explicit imports for useClientService/useProjectService (not auto-imported from services/)
- Fix AppDrawer v-if placement on Teleport to avoid slot warning
- Add json format support in API Platform config (415 fix)
- Support both hydra:member and member keys in extractHydraMembers
- Add Vite/Nitro dev proxy for API calls
- Update CLAUDE.md with full project documentation
- Use tertiary-500 background for project cards
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
64ae634297
feat : add Clients nav link and i18n translations
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
bb45066013
feat : add Projects page with cards and drawer form
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
9ba49cd29c
feat : add Clients page with table and drawer form
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
5f57b377fa
feat : add Project DTO and service (frontend)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
b5efb54f71
feat : add Client DTO, service and Hydra utils (frontend)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
de7c2c25cd
feat : add reusable AppDrawer component
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
b5dbab7dab
feat : add Client and Project fixtures
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
b56d2f6526
feat : add Project entity with CRUD API and Client relation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
0621388ee6
feat : add Client entity with CRUD API
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 23:40:48 +01:00
b14e51dde3
feat : ajout de Malio UI et de la conf gitea
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m6s
2026-03-08 20:22:52 +01:00
47562fbdec
feat : config + login
2026-03-08 19:47:19 +01:00