@nightkatana/kronosys-app 1.0.0-beta.2 → 1.0.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +28 -1
  2. package/app/api/action/route.ts +39 -3
  3. package/app/api/action-logs/route.ts +24 -0
  4. package/app/api/backup/route.ts +1 -1
  5. package/app/api/restore/route.ts +145 -0
  6. package/app/changelog/page.tsx +71 -4
  7. package/app/globals.css +127 -0
  8. package/app/guide/page.tsx +61 -15
  9. package/app/implementation/page.tsx +700 -0
  10. package/app/layout.tsx +14 -3
  11. package/app/licenses/page.tsx +99 -37
  12. package/app/logs/page.tsx +258 -0
  13. package/app/manifest.ts +5 -5
  14. package/app/page.tsx +784 -229
  15. package/app/reporting/page.tsx +1266 -474
  16. package/app/settings/page.tsx +252 -18
  17. package/bin/kronosys.mjs +140 -15
  18. package/components/KronosysPayloadProvider.tsx +2 -0
  19. package/components/RouteTransition.tsx +18 -0
  20. package/components/dashboard/AppShellCommandCenterPlaceholder.tsx +17 -0
  21. package/components/dashboard/AppShellHeaderSessionMeta.tsx +210 -0
  22. package/components/dashboard/AppShellHeaderWallClock.tsx +54 -0
  23. package/components/dashboard/AppShellLiveSessionDrawer.tsx +154 -38
  24. package/components/dashboard/AppShellRouteNav.tsx +323 -48
  25. package/components/dashboard/DashboardPauseBackdrop.tsx +50 -0
  26. package/components/dashboard/DashboardSimpleModal.tsx +168 -25
  27. package/components/dashboard/DashboardTour.tsx +115 -29
  28. package/components/dashboard/GlobalPauseConfirmModal.tsx +183 -0
  29. package/components/dashboard/KronosysDatetimePopoverField.tsx +167 -122
  30. package/components/dashboard/KronosysTimePopoverField.tsx +54 -12
  31. package/components/dashboard/NewSessionScopeModal.tsx +211 -20
  32. package/components/dashboard/PlannedTaskBoundaryConflictWatcher.tsx +275 -0
  33. package/components/dashboard/ReportingTour.tsx +87 -21
  34. package/components/dashboard/SavedProjectPicker.tsx +16 -3
  35. package/components/dashboard/SelectedSessionSidebarBlock.tsx +512 -142
  36. package/components/dashboard/SessionListPanel.tsx +327 -44
  37. package/components/dashboard/SettingsTagsProjectsSection.tsx +1073 -264
  38. package/components/dashboard/SettingsTaskTemplatesSection.tsx +316 -0
  39. package/components/dashboard/SettingsTour.tsx +86 -21
  40. package/components/dashboard/TagPills.tsx +14 -1
  41. package/components/dashboard/TaskFocusPanel.tsx +1081 -478
  42. package/components/dashboard/TaskSessionLiveCard.tsx +650 -135
  43. package/components/dashboard/TaskTimelineGanttModal.tsx +601 -0
  44. package/components/dashboard/taskFieldStyles.ts +20 -4
  45. package/components/dashboard/useReportingInteractionState.ts +80 -0
  46. package/lib/appShellHeaderClasses.ts +13 -0
  47. package/lib/businessRulesMatrix.ts +210 -0
  48. package/lib/copyToClipboard.ts +43 -0
  49. package/lib/dashboardCopy.ts +494 -84
  50. package/lib/dashboardQuickSearch.ts +54 -2
  51. package/lib/dashboardTimeZone.ts +109 -0
  52. package/lib/formatAppShellWallClock.ts +66 -0
  53. package/lib/formatSessionNameTemplate.ts +141 -0
  54. package/lib/generatedUserChangelog.ts +177 -6
  55. package/lib/globalPausePreview.ts +292 -0
  56. package/lib/implementationNotes.ts +1188 -0
  57. package/lib/kronosysApi.ts +6 -0
  58. package/lib/kronosysDashboardModalGates.ts +24 -0
  59. package/lib/plannedBoundaryAttention.ts +9 -0
  60. package/lib/plannedBoundaryConflict.ts +23 -0
  61. package/lib/reportingAggregate.ts +517 -75
  62. package/lib/reportingMetricHelp.ts +8 -0
  63. package/lib/reportingStrings.ts +37 -3
  64. package/lib/sessionListMerge.ts +4 -0
  65. package/lib/sessionTaskSidebarStats.ts +182 -21
  66. package/lib/settingsCopy.ts +178 -4
  67. package/lib/taskParsing.ts +360 -103
  68. package/lib/taskTemplateDraft.ts +135 -0
  69. package/lib/taskTimelineGantt.ts +265 -0
  70. package/lib/temporalDisplayPlanned.ts +71 -0
  71. package/lib/userGuideCopy.ts +121 -47
  72. package/next.config.ts +7 -0
  73. package/package.json +12 -24
  74. package/server/actionDispatch.ts +1000 -77
  75. package/server/actionTaskSession.ts +337 -24
  76. package/server/db.ts +7 -15
  77. package/server/dbSchema.ts +24 -0
  78. package/server/defaultCfg.ts +5 -0
  79. package/server/gitlabTokenStore.ts +0 -12
  80. package/server/liveHistorySync.ts +53 -0
  81. package/server/mainTimerHydrate.ts +38 -2
  82. package/server/payloadStore.ts +33 -11
  83. package/server/sessionWallHydrate.ts +66 -3
  84. package/server/userActionLog.ts +126 -0
  85. package/sonar-project.properties +11 -0
  86. package/tsconfig.json +2 -1
  87. package/components/dashboard/IssuePickerModal.tsx +0 -168
  88. package/components/dashboard/ThemeToggle.test.tsx +0 -26
  89. package/lib/backupCsvExport.test.ts +0 -149
  90. package/lib/dashboardQuickSearchQuery.test.ts +0 -63
  91. package/lib/dataDir.test.ts +0 -87
  92. package/lib/formatIsoShort.test.ts +0 -46
  93. package/lib/kronoFocusRhythm.test.ts +0 -130
  94. package/lib/kronoFocusTimerUrgency.test.ts +0 -74
  95. package/lib/legacyKronoFocusStorageKeys.test.ts +0 -29
  96. package/lib/reportingAggregate.test.ts +0 -325
  97. package/lib/reportingNonFinalIndicators.test.ts +0 -157
  98. package/lib/reportingTagWeekBreakdown.test.ts +0 -141
  99. package/lib/reportingWeekLayout.test.ts +0 -239
  100. package/lib/sessionAssiduity.test.ts +0 -25
  101. package/lib/sessionEndWarnings.test.ts +0 -200
  102. package/lib/sessionListMerge.test.ts +0 -101
  103. package/lib/sessionTaskSidebarStats.test.ts +0 -24
  104. package/lib/taskParsing.test.ts +0 -153
  105. package/lib/usageProfile.test.ts +0 -84
  106. package/server/actionDispatch.test.ts +0 -723
  107. package/server/actionTaskSession.test.ts +0 -713
  108. package/server/kronoFocusHydrate.test.ts +0 -142
  109. package/server/kronoFocusMigrate.test.ts +0 -53
  110. package/server/mainTimerHydrate.test.ts +0 -65
  111. package/server/payloadStore.test.ts +0 -78
  112. package/server/sessionWallHydrate.test.ts +0 -46
@@ -52,6 +52,8 @@ export type KronosysUpdatePayload = {
52
52
  inspectingSessionId?: string | null;
53
53
  knownTags?: string[];
54
54
  knownProjects?: string[];
55
+ /** Projets issus de jetons `!` (temps personnel), distincts des projets `@`. */
56
+ knownPersonalProjects?: string[];
55
57
  /** Étiquettes épinglées manuellement (raccourcis même sans tâche). */
56
58
  userKnownTags?: string[];
57
59
  /** Étiquettes masquées des raccourcis (données des tâches inchangées). */
@@ -114,6 +116,10 @@ export type KronosysActionResponse = {
114
116
  pushSessionToMongo?:
115
117
  | { ok: true }
116
118
  | { ok: false; error: "disabled" | "not_found" | "mongo_failed" | "uri_incomplete" };
119
+ /** `newSession` rétroactif : id inséré dans l’historique sans remplacer la session live. */
120
+ newHistorySessionId?: string;
121
+ /** Validation serveur (ex. session passée sans `sessionEndAt`). */
122
+ newSessionError?: string;
117
123
  } | null;
118
124
  };
119
125
 
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Coordination légère entre modales du tableau de bord (ex. conflit au démarrage d’une tâche
3
+ * vs conflit lorsqu’une tâche planifiée entre dans la fenêtre « en cours »).
4
+ * Évite deux dialogues concurrents pour le même état d’esprit utilisateur.
5
+ */
6
+
7
+ let concurrentTaskStartConflictModalOpen = false;
8
+ let plannedBoundaryConflictModalOpen = false;
9
+
10
+ export function setConcurrentTaskStartConflictModalOpen(value: boolean): void {
11
+ concurrentTaskStartConflictModalOpen = value;
12
+ }
13
+
14
+ export function isConcurrentTaskStartConflictModalOpen(): boolean {
15
+ return concurrentTaskStartConflictModalOpen;
16
+ }
17
+
18
+ export function setPlannedBoundaryConflictModalOpen(value: boolean): void {
19
+ plannedBoundaryConflictModalOpen = value;
20
+ }
21
+
22
+ export function isPlannedBoundaryConflictModalOpen(): boolean {
23
+ return plannedBoundaryConflictModalOpen;
24
+ }
@@ -0,0 +1,9 @@
1
+ /** Émis lorsqu’une tâche quitte l’affichage « planifié » et entre en conflit avec d’autres minuteurs. */
2
+ export const PLANNED_BOUNDARY_ATTENTION_EVENT = "kronosys-planned-boundary-attention";
3
+
4
+ export function dispatchPlannedBoundaryAttention(): void {
5
+ if (typeof globalThis.window === "undefined") {
6
+ return;
7
+ }
8
+ globalThis.window.dispatchEvent(new Event(PLANNED_BOUNDARY_ATTENTION_EVENT));
9
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Détecte le passage simultané d’au moins une tâche vers « minuteur visible en cours »
3
+ * alors qu’il y en avait déjà (ex. une tâche planifiée dont l’heure de début est atteinte).
4
+ */
5
+ export function detectPlannedBoundaryDisplayConflict(
6
+ prevDisplayRunningIds: Set<string> | null,
7
+ currDisplayRunningIds: Set<string>,
8
+ ): { conflict: boolean; newIds: string[]; previousRunnerIds: string[] } {
9
+ if (prevDisplayRunningIds === null) {
10
+ return { conflict: false, newIds: [], previousRunnerIds: [] };
11
+ }
12
+ const newIds = [...currDisplayRunningIds].filter(
13
+ (id) => !prevDisplayRunningIds.has(id),
14
+ );
15
+ if (newIds.length === 0 || prevDisplayRunningIds.size === 0) {
16
+ return { conflict: false, newIds: [], previousRunnerIds: [] };
17
+ }
18
+ return {
19
+ conflict: true,
20
+ newIds,
21
+ previousRunnerIds: [...prevDisplayRunningIds],
22
+ };
23
+ }