Merge branch 'develop' into feat/share-explorer-impl

This commit is contained in:
2026-06-12 13:52:34 +00:00
5 changed files with 40 additions and 30 deletions
+17 -24
View File
@@ -13,32 +13,25 @@ Application de gestion de projet. Monorepo Symfony 8 (API Platform 4) + Nuxt 4.
## Structure ## Structure
> Le détail (entités, providers, services, composants…) se découvre dans le code. Carte d'orientation :
``` ```
src/Entity/ # Entités Doctrine (User, Client, Project, Task, TaskStatus, TaskEffort, TaskPriority, TaskTag, TaskGroup, TimeEntry, GiteaConfiguration, Notification, TaskDocument, BookStackConfiguration, TaskBookStackLink, TaskRecurrence, ZimbraConfiguration) src/Entity/ # Entités Doctrine (User, Client, Project, Task + métadonnées Task*, TimeEntry, Notification, *Configuration…)
src/ApiResource/ # Ressources API Platform (si découplées des entités) (ZimbraSettings, ZimbraTestConnection) src/ApiResource/ # Ressources API Platform découplées des entités
src/Enum/ # PHP enums (RecurrenceType) src/State/ # Providers & Processors API Platform (Me, ActiveTimeEntry, TaskNumber, Notification, Gitea*, Zimbra*, RecurrenceHandler…)
src/State/ # Providers et Processors API Platform (MeProvider, AppVersionProvider, ActiveTimeEntryProvider, UserPasswordHasherProcessor, TaskNumberProcessor, NotificationProvider, Gitea*Provider, Gitea*Processor, ZimbraSettingsProvider/Processor, ZimbraTestConnectionProvider, TaskCalendarProcessor, RecurrenceHandler)
src/Service/ # Services métier (NotificationService, CalDavService, RecurrenceCalculator) src/Service/ # Services métier (NotificationService, CalDavService, RecurrenceCalculator)
src/Controller/ # Controllers custom Symfony (NotificationUnreadCountController, MarkAllReadController, UserAvatarController, TaskDocumentDownloadController) src/Controller/ # Controllers custom (notifications, avatar, download document)
src/Mcp/Tool/ # MCP tools organisés par domaine (Project/, Task/, TaskMeta/, TimeEntry/, Reference/) src/Mcp/Tool/ # MCP tools par domaine (Project/, Task/, TaskMeta/, TimeEntry/, Reference/)
src/Security/ # Authenticators custom (ApiTokenAuthenticator pour MCP HTTP) src/Security/ # ApiTokenAuthenticator (MCP HTTP)
src/Command/ # Commandes console (GenerateApiTokenCommand) src/Command/ src/Repository/ src/DataFixtures/
src/Repository/ # Repositories Doctrine config/ # security, api_platform, lexik_jwt, nelmio_cors, doctrine — config/jwt/ = clés
src/DataFixtures/ # Fixtures migrations/ docs/plans/ docs/superpowers/
config/ # Config Symfony (security, api_platform, lexik_jwt, nelmio_cors, doctrine) frontend/pages/ # index, login, my-tasks, profile, projects/[id]/*, time-tracking, admin
config/jwt/ # Clés JWT (private.pem, public.pem) frontend/components/ # Sous-dossiers ui/ client/ project/ task/ user/ admin/ time-tracking/ notification/
migrations/ # Migrations Doctrine frontend/composables/# useApi, useAppVersion, useNotifications, useAvatarService
docs/plans/ # Plans d'implémentation frontend/stores/ # Pinia : auth, ui, timer
docs/superpowers/ # Plans et specs superpowers frontend/services/ # 1 service par ressource API (+ services/dto/ pour les types)
frontend/ # App Nuxt 4 frontend/i18n/locales/ # Traductions (langDir résolu depuis i18n/)
frontend/pages/ # Pages (index, login, my-tasks, profile, projects, projects/[id], projects/[id]/groups, projects/[id]/archives, time-tracking, admin)
frontend/layouts/ # Layouts (default)
frontend/components/ # Composants Vue organisés en sous-dossiers (ui/, client/, project/, task/, user/, admin/, time-tracking/, notification/) — inclut admin/AdminZimbraTab
frontend/composables/# Composables (useApi, useAppVersion, useNotifications, useAvatarService)
frontend/stores/ # Stores Pinia (auth, ui, timer)
frontend/services/ # Services API (auth, clients, gitea, projects, tasks, task-statuses, task-efforts, task-groups, task-priorities, task-tags, users, time-entries, notifications, task-documents, zimbra, task-recurrences)
frontend/services/dto/ # Types TypeScript
frontend/i18n/locales/ # Fichiers de traduction (langDir résolu depuis i18n/)
``` ```
## Commandes ## Commandes
+1 -1
View File
@@ -1,2 +1,2 @@
parameters: parameters:
app.version: '0.4.23' app.version: '0.4.26'
+17
View File
@@ -19,3 +19,20 @@
padding-top: 1rem; padding-top: 1rem;
padding-bottom: 1rem; padding-bottom: 1rem;
} }
/*
* Champs Malio (@malio/layer-ui >= 1.7.5) : depuis cette version, la ligne de
* message sous chaque champ est toujours rendue (`reserveMessageSpace` à `true`
* par défaut) et réserve ~1rem (16px) même sans erreur/hint, ce qui décale les
* formulaires denses. On retire cette réserve et on masque la ligne quand elle
* est vide, sans désactiver l'option champ par champ ni perdre l'affichage des
* vraies erreurs/hints.
*
* Hook stable : la ligne de message a un id se terminant par "-describedby".
*/
[id$="-describedby"] {
min-height: 0;
}
[id$="-describedby"]:empty {
display: none;
}
+4 -4
View File
@@ -7,7 +7,7 @@
"name": "nuxt-app", "name": "nuxt-app",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"@malio/layer-ui": "^1.6.0", "@malio/layer-ui": "^1.7.5",
"@nuxt/icon": "^2.2.1", "@nuxt/icon": "^2.2.1",
"@nuxtjs/i18n": "^10.2.3", "@nuxtjs/i18n": "^10.2.3",
"@nuxtjs/tailwindcss": "^6.14.0", "@nuxtjs/tailwindcss": "^6.14.0",
@@ -2220,9 +2220,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@malio/layer-ui": { "node_modules/@malio/layer-ui": {
"version": "1.6.0", "version": "1.7.5",
"resolved": "https://gitea.malio.fr/api/packages/MALIO-DEV/npm/%40malio%2Flayer-ui/-/1.6.0/layer-ui-1.6.0.tgz", "resolved": "https://gitea.malio.fr/api/packages/MALIO-DEV/npm/%40malio%2Flayer-ui/-/1.7.5/layer-ui-1.7.5.tgz",
"integrity": "sha512-2sN4mL1Jf984oeE4N4yEv6XFgSz0Gc+uSG+HLGfRrdzjAsMcU9hbb7HSAo3Q6MBvQHZn3ZBr1cK+VUM0kXY4NA==", "integrity": "sha512-xryrAYgVgX3eurEWXT/d0p4r/MBYNBB3mBnvV6xVcFhzxW+HfOra8hsVHLvrCtd+m5E1t7PDRzjw1FObkV6fdQ==",
"dependencies": { "dependencies": {
"@nuxt/icon": "^2.2.1", "@nuxt/icon": "^2.2.1",
"@nuxtjs/tailwindcss": "^6.14.0", "@nuxtjs/tailwindcss": "^6.14.0",
+1 -1
View File
@@ -11,7 +11,7 @@
"build:dist": "nuxt generate && rm -rf dist && cp -R .output/public dist" "build:dist": "nuxt generate && rm -rf dist && cp -R .output/public dist"
}, },
"dependencies": { "dependencies": {
"@malio/layer-ui": "^1.6.0", "@malio/layer-ui": "^1.7.5",
"@nuxt/icon": "^2.2.1", "@nuxt/icon": "^2.2.1",
"@nuxtjs/i18n": "^10.2.3", "@nuxtjs/i18n": "^10.2.3",
"@nuxtjs/tailwindcss": "^6.14.0", "@nuxtjs/tailwindcss": "^6.14.0",