Matthieu
93e0c4052c
chore : bump version to v0.3.12
...
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Successful in 3m26s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
v0.3.12
2026-03-26 09:33:42 +01:00
Matthieu
22373a0b87
refactor : migrate UI to Malio layer-ui components (MalioButton, MalioDrawer, MalioSelectCheckbox)
...
- Replace all AppDrawer with MalioDrawer across 10 drawer components
- Replace native <button> with MalioButton/MalioButtonIcon in all pages and components
- Fix TimeTrackingExportDrawer: use MalioSelectCheckbox for multi-select filters
- Add Malio design system colors (m-btn-*, m-disabled, m-surface) to tailwind.config.ts
- Align toggle button heights with MalioButton (h-[40px])
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-26 09:33:28 +01:00
gitea-actions
d7968af525
chore: bump version to v0.3.11
Auto Tag Develop / tag (push) Successful in 6s
Build Release Artefact / build (push) Successful in 1m49s
v0.3.11
2026-03-25 17:42:21 +00:00
df2a48c20d
fix : remove double /api prefix in export URL
...
Auto Tag Develop / tag (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-25 18:41:05 +01:00
7f1c02256b
fix : replace MalioButton with styled native button in export drawer
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-25 18:41:05 +01:00
fdc9b8b60d
fix : use correct useToast() API in export handler
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-25 18:41:05 +01:00
1025fed0d1
feat : integrate export drawer with async background download
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 18:41:05 +01:00
0331d94ca5
feat : add TimeTrackingExportDrawer component with filters and period presets
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 18:41:05 +01:00
755c39a0f6
feat : extend export endpoint for multi-user, multi-project, client filters
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 18:41:05 +01:00
8f8eeddd91
feat : add downloadExport async method to time-entries service
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 18:41:05 +01:00
548b101d82
feat : add i18n keys for export modal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 18:41:05 +01:00
Matthieu
e3149f8a27
chore : bump version to v0.3.10 and add push-tickets-lesstime skill
...
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Successful in 1m41s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
v0.3.10
2026-03-25 17:36:54 +01:00
gitea-actions
32aff3d4d3
chore: bump version to v0.3.9
Auto Tag Develop / tag (push) Successful in 6s
Build Release Artefact / build (push) Successful in 2m6s
v0.3.9
2026-03-24 20:06:10 +00:00
Matthieu
9760de1805
feat : add export button to time-tracking page
...
Auto Tag Develop / tag (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 16:16:06 +01:00
Matthieu
f72dd57bd0
feat : add getExportUrl to time-entries service and i18n key
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 16:15:04 +01:00
Matthieu
a8f7c77758
feat : add TimeEntryExportController with auth, validation, and filters
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 16:03:35 +01:00
Matthieu
a09a415393
feat : add TimeEntryExportService generating XLSX with detail and recap sheets
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 16:02:18 +01:00
Matthieu
8208df1ade
feat : add findForExport repository method for time entries
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 16:00:22 +01:00
Matthieu
15af8975f0
chore : add phpoffice/phpspreadsheet dependency for time entry export
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 15:59:30 +01:00
Matthieu
040cbfc588
docs : add time entry export implementation plan (LST-41)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 15:54:06 +01:00
Matthieu
e796741dd8
docs : add time entry export design spec (LST-41)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 15:47:33 +01:00
Matthieu
9e7d196443
chore : bump version to v0.3.8
...
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m56s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
v0.3.8
2026-03-20 14:20:57 +01:00
Matthieu
3e9a0c93eb
fix(admin) : embed client and project in user list serialization
...
Client.id/name and Project.id/name were missing the user:list group,
causing them to be serialized as IRI strings instead of embedded objects.
This broke the user edit form which expected object properties.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 14:20:17 +01:00
Matthieu
1d533d1d28
fix : allow ROLE_CLIENT to upload and view documents on client tickets
...
GetCollection/Get required ROLE_USER which ROLE_CLIENT doesn't have.
Added TaskDocumentProvider to scope client access to their own tickets.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 14:17:48 +01:00
Matthieu
efa42b6039
chore : bump version to v0.3.7
...
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m32s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
v0.3.7
2026-03-19 18:12:10 +01:00
gitea-actions
7b0c2d9fba
chore: bump version to v0.3.6
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m38s
v0.3.6
2026-03-19 17:10:47 +00:00
Matthieu
4ce0214ec9
feat(ui) : add dark mode toggle and remove inline dark: classes
...
Auto Tag Develop / tag (push) Successful in 6s
- Add dark mode toggle button in top nav
- Add darkMode store with localStorage persistence
- Enable Tailwind class-based dark mode
- Import dark.css global overrides
- Remove inline dark: Tailwind classes (handled by global CSS)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
43304bebcc
chore : update auto-generated reference config (Symfony rebuild)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
6668af73a7
chore : update MCP config with HTTP transport and local fallback
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
ff9a6763c3
fix(ui) : add dark mode overrides for MalioSelect, forms, and date inputs
...
- Override floating-label background (hardcoded white in malio/layer-ui)
- Override text-black, border-black, border-m-muted for Malio components
- Add color-scheme: dark for native date/datetime inputs
- Override red/blue button backgrounds for dark mode
- Fix checkbox/radio borders in dark mode
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
db5b3d39f9
fix : detect isFinal transition using Doctrine UnitOfWork original entity data
...
The previous approach read $data->getStatus() which already had the NEW
status after API Platform deserialization, making wasAlreadyFinal always
true when transitioning to a final status. Now we read the original status
from UnitOfWork snapshot.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
1fdc68c66d
fix(ui) : remove invalid string props on MalioInputTextArea (expects Number)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
99b664cdd8
fix : use getIsFinal() instead of isFinal() on TaskStatus
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
fd1da75fd7
fix(ui) : use native date/datetime inputs instead of MalioInputText for planning dates
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
66264e3b8c
fix(ui) : escape @ in i18n placeholders for vue-i18n compatibility
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
a89fa6a7af
docs : update CLAUDE.md with Zimbra calendar integration references
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
6862944726
feat : add Zimbra config and calendar task fixtures
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
e00c33d20b
feat(ui) : add Zimbra CalDAV configuration tab in admin page
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
1aa72c3b56
feat(ui) : add deadline/scheduled columns and sort options to Mes tâches page
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
6a8e406cc5
feat(ui) : add deadline badges and calendar/recurrence icons to task cards and list items
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
83b42139b2
feat(ui) : add Planification tab to TaskModal with dates, calendar sync, and recurrence
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
1bdd3883aa
feat(ui) : add i18n translations for calendar integration
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
22c3c3dbd1
feat(ui) : add DTOs and services for calendar fields, recurrence, and Zimbra settings
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
cb768e0ce1
feat : update MCP tools with calendar fields and add recurrence tools
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
b3d317284e
feat : add RecurrenceHandler for auto-creating next recurring task
...
When a task transitions to a final status, archives the current task and creates
a new occurrence with recalculated dates. Adds TaskStatusRepository::findFirstNonFinal()
to assign the initial status to the new task.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
5a47adace5
feat : add TaskCalendarProcessor for CalDAV sync after DB operations
...
Handles Patch (persist + sync + recurrence check) and Delete (remove + cleanup Zimbra events).
Updates TaskNumberProcessor to sync newly created tasks to calendar.
Wires TaskCalendarProcessor as processor for Patch/Delete on Task entity.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
75c53632c8
feat : add Zimbra settings API (CRUD + test connection)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
97a8afe559
feat : add RecurrenceCalculator service for next occurrence dates
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
bae6d10ece
feat : add CalDavService for Zimbra CalDAV sync
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00
Matthieu
a0306bb5b2
feat(ui) : sync task code in URL for deep-linking from Gitea
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 18:10:35 +01:00