@nightkatana/kronosys-app 1.0.0-beta.39 → 1.0.0-beta.40
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.
- package/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/guide/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/implementation/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/licenses/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/reporting/page.js +1 -1
- package/.next/standalone/.next/server/app/reporting/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/752.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/static/chunks/400-0c9965113885b1fe.js +1 -0
- package/.next/standalone/.next/static/chunks/app/reporting/page-ad780bfe6b4e868e.js +1 -0
- package/.next/standalone/kronosys-package-meta.json +1 -1
- package/.next/standalone/package.json +1 -1
- package/package.json +1 -1
- package/.next/standalone/.next/static/chunks/400-cbb295eb4a4632f3.js +0 -1
- package/.next/standalone/.next/static/chunks/app/reporting/page-8e6695901d8adc26.js +0 -1
- /package/.next/standalone/.next/static/{6ttfOnXHYUIE_dlJ927gI → 74KXPItqRU0btbDqBJB0U}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{6ttfOnXHYUIE_dlJ927gI → 74KXPItqRU0btbDqBJB0U}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/
|
|
1
|
+
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/74KXPItqRU0btbDqBJB0U/_buildManifest.js","static/74KXPItqRU0btbDqBJB0U/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-72874cc65370f1cd.js","static/chunks/4bd1b696-215e5051988c3dde.js","static/chunks/794-3bbf792b9526214d.js","static/chunks/main-app-bdb688080b70ecf6.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-72874cc65370f1cd.js"/><script src="/_next/static/chunks/4bd1b696-215e5051988c3dde.js" async=""></script><script src="/_next/static/chunks/794-3bbf792b9526214d.js" async=""></script><script src="/_next/static/chunks/main-app-bdb688080b70ecf6.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-72874cc65370f1cd.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[484,[],\"ViewportBoundary\"]\na:I[484,[],\"MetadataBoundary\"]\nc:I[7123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-72874cc65370f1cd.js"/><script src="/_next/static/chunks/4bd1b696-215e5051988c3dde.js" async=""></script><script src="/_next/static/chunks/794-3bbf792b9526214d.js" async=""></script><script src="/_next/static/chunks/main-app-bdb688080b70ecf6.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-72874cc65370f1cd.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[484,[],\"ViewportBoundary\"]\na:I[484,[],\"MetadataBoundary\"]\nc:I[7123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"74KXPItqRU0btbDqBJB0U\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[400],{6400:(e,t,s)=>{s.d(t,{x:()=>r});let a=[{version:"1.0.0-beta.40",items:['**Variance nette** : la colonne totale de la ligne "\xc9cart" affiche maintenant la diff\xe9rence nette entre le temps enregistr\xe9 et les heures de base (ex. `+2 h 30 min`) au lieu des heures de base seules, avec la m\xeame colorim\xe9trie que les cellules individuelles.']},{version:"1.0.0-beta.39",items:["**Gantt \xab Aujourd'hui \xbb** : les laps des t\xe2ches \xe9taient perdus dans la vue \xab Today timeline \xbb — une seule barre apparaissait par t\xe2che au lieu d'une barre par lap. Corrig\xe9 en copiant `taskTimerLaps` et `taskCurrentLapStartedAt` dans les t\xe2ches merg\xe9es."]},{version:"1.0.0-beta.38",items:["**@default** : les t\xe2ches sans projet explicite re\xe7oivent automatiquement le projet `@default` pour un suivi \xe9quilibr\xe9 dans les rapports.","**Avertissement** : un bandeau appara\xeet dans *Billing allocation* quand du temps est allou\xe9 \xe0 `@default`.","**Heures de base** : nouveau champ configurable dans *Settings* (d\xe9faut 7,5 h/jour) avec tol\xe9rance (d\xe9faut \xb110 min).",'**Ligne d\'\xe9cart** : dans *Recorded time by project*, une ligne "\xc9cart" compare le total journalier aux heures de base. Color\xe9e en \uD83D\uDD34\uD83D\uDFE2\uD83D\uDFE0 selon le seuil de tol\xe9rance.',"**Arrondi quart d'heure** : chaque cellule dur\xe9e affiche l'arrondi au 15 min entre parenth\xe8ses (ex. `31 min 55 s (0,50 h)`).","**Chevron align\xe9** : le bouton collapse/expand est maintenant \xe0 droite du nom du projet dans le tableau, pour un alignement vertical parfait.","**Abr\xe9viation** : toutes les dates (sessions, t\xe2ches, Gantt) incluent le jour de la semaine (ex. `lun. 2026-06-03`).","**Inspecteur persistant** : le panneau de d\xe9tail des t\xe2ches (clic sur une cellule dur\xe9e) ne se ferme plus au clic \xe0 l'ext\xe9rieur — permet des modifications multiples sans rouvrir.","**R\xe9sum\xe9 session** : l'en-t\xeate du panneau affiche maintenant les bornes d\xe9but/fin de la session concern\xe9e, pour \xe9viter de corriger des entr\xe9es hors p\xe9riode.","**Timer t\xe2che planifi\xe9e** : le minuteur n'affiche plus la dur\xe9e totale depuis le d\xe9but pr\xe9vu au moment de l'activation (ex. 30 min pour une t\xe2che 9h30 activ\xe9e \xe0 10h). Il d\xe9marre maintenant pr\xe8s de z\xe9ro et s'accumule progressivement.","**Conflit concurrent** : la modale de conflit ne s'affiche plus quand on ajoute une t\xe2che pass\xe9e (mode *past*) alors qu'une t\xe2che est active dans la session live.","**S\xe9lecteur de mode t\xe2che** : les ic\xf4nes Temps r\xe9el (⚡) et Pass\xe9 (\uD83D\uDD50) ont maintenant un anneau violet (`ring-2`) quand elles sont s\xe9lectionn\xe9es, pour un rep\xe8re visuel clair sur les deux th\xe8mes.","**Ic\xf4nes plus nettes** : dimensions des boutons ic\xf4nes pass\xe9es de `rem` \xe0 `px` (`30px`), `strokeWidth` uniformis\xe9 \xe0 `2`, et `box-sizing: border-box` ajout\xe9 — \xe9limine le flou d\xfb aux dimensions fractionnaires.","**Format chronom\xe8tre** : le temps est toujours affich\xe9 `HH:MM:SS.cc` (ex. `00:02:00.00` au lieu de `2:00.00`) pour \xe9viter la confusion entre minutes et heures."]},{version:"1.0.0-beta.37",items:["**Migration compl\xe8te** : toutes les pr\xe9f\xe9rences locales (`localStorage`) sont d\xe9sormais g\xe9r\xe9es par **Zustand** avec middleware `persist`, rempla\xe7ant le pattern manuel `useState` + `useEffect` + `read/write`. 8 stores, ~200 lignes de code en moins.","**Vue active** (Allocation / Rythme / Avanc\xe9) : conserv\xe9e entre les visites.","**Scope Travail/Personnel** : m\xe9moris\xe9.","**Filtres p\xe9riode et tags** : persist\xe9s.","**D\xe9tail des sections** (d\xe9pli\xe9/repli\xe9) : conserv\xe9.","**Position de d\xe9filement** : restaur\xe9e en revenant sur la page (sauvegard\xe9e par onglet).","**194 issues utilisateur** cr\xe9\xe9es sur GitLab \xe0 partir des *user stories* de la page `/implementation`.","**Labels** : `group::*` (8 groupes), `implemented`, `integration-checked`, `e2e-checked`, `discarded`.","**Synchro au build** : `npm run build` met \xe0 jour `implementationNotes.ts` depuis GitLab (si token configur\xe9), les flags `implemented`/`integrationChecked`/`e2eChecked` sont align\xe9s sur les labels GitLab.","**D\xe9pendance** : `zustand` (state management).","**Refactor** : 6 anciens fichiers de stockage localStorage supprim\xe9s, ~150 lignes de hooks et `useEffect` retir\xe9es.","**Pipeline** : la commande `build` inclut d\xe9sormais `node scripts/sync-implementation.mjs` avant Next build."]},{version:"1.0.0-beta.36",items:["**D\xe9filement (xl+)** : la liste des sessions d\xe9file **dans le tiroir** (une seule zone scroll) ; la carte session s\xe9lectionn\xe9e reste fixe au-dessus de la liste quand elle y est affich\xe9e. Corrige le double scroll ou le d\xe9filement bloqu\xe9 avec les tiroirs lat\xe9raux.","**Dur\xe9e session** (correction d\xe9but/fin) : l'ajustement du d\xe9but ou de la fin d'une session modifie `sessionDurationMinutes` par **\xe9cart** (delta) au lieu de recalculer toute la plage `d\xe9but → fin` — le temps de pause reste donc d\xe9duit quand on recale les bornes.","**Finalisation intempestive** : le s\xe9lecteur date/heure ne conserve plus des `hour`/`minute` obsol\xe8tes du montage initial — un `useEffect` rafra\xeechit les parties \xab maintenant \xbb \xe0 chaque ouverture, ce qui \xe9vite la soumission involontaire d'un horaire pass\xe9 et la finalisation de session au moment de choisir une fin future.","**Affichage dur\xe9e** : le panneau session pr\xe9f\xe8re la valeur serveur `sessionDurationMinutes` (qui d\xe9duit les pauses) \xe0 la d\xe9rivation `endAt − startAt` c\xf4t\xe9 client.","**Saisie automatique des horaires** : lorsqu'un mod\xe8le fournit `lastUsedStartTime` et `lastUsedEndTime`, la modale horaire est **contourn\xe9e** ; les cr\xe9neaux (d\xe9cal\xe9s sur la journ\xe9e courante) et la dur\xe9e du minuteur sont pr\xe9remplis directement dans le lanceur — l'utilisateur peut valider imm\xe9diatement par **Entr\xe9e**, sans confirmation interm\xe9diaire.","**Point vert dans la barre d'outils** : un **point vert puls\xe9** appara\xeet dans la barre de navigation (\xe0 c\xf4t\xe9 des ic\xf4nes de route) lorsqu'une **version plus r\xe9cente** est disponible sur le registre npm. Au survol, un tooltip affiche le num\xe9ro de version (`vX.Y.Z`) ; un clic m\xe8ne au **changelog** (`/changelog`). La v\xe9rification est mise en cache **1 heure** c\xf4t\xe9 serveur (`GET /api/version-check`) et rafra\xeechie toutes les heures c\xf4t\xe9 client.","**Dur\xe9e session delta** : trois tests unitaires (`server/actionDispatch.test.ts`) v\xe9rifient que `setSessionStartTime` et `setSessionEndTime` ajustent `sessionDurationMinutes` par \xe9cart (delta) plut\xf4t que par recalcul int\xe9gral — y compris pour une session live avec pause.","**Comparaison semver** : `lib/semverCompare.test.ts` — `isNewerVersion` couvre majeurs, mineurs, correctifs, pr\xe9release (beta.N) et formats invalides (8 cas).","**Guide utilisateur** : mod\xe8les de t\xe2che — contournement de la modale quand les horaires sont fournis par le mod\xe8le (`lib/userGuideCopy.ts`, `docs/USER_GUIDE.md`).","**Impl\xe9mentation** : `lib/implementationNotes.ts`, `docs/IMPLEMENTATION_DETAILS.md` — p\xe9rim\xe8tre **1.0.0-beta.36** (nouvelle story **indicateur version**, flags `integrationChecked` sur correction horodatage)."]},{version:"1.0.0-beta.35",items:["**Dur\xe9e totale planifi\xe9e** : affich\xe9e seulement lorsqu’une session live a une **fin planifi\xe9e** (`scheduledEndAt`) ; ligne masqu\xe9e sinon. **Total planifi\xe9 (t\xe2ches)** : idem — uniquement s’il existe des t\xe2ches encore planifi\xe9es.","**D\xe9but / fin** sur les cartes (planifi\xe9es, en cours, termin\xe9es) : **m\xeame interaction** que le lanceur en mode pass\xe9 — bouton r\xe9sum\xe9 **d\xe9but → fin** ouvrant une **seule modale** avec les deux calendriers **inline** (plus de popover/modale empil\xe9e) ; **fin facultative** ; dur\xe9e du minuteur affich\xe9e seulement si une fin est renseign\xe9e. **Laps de suivi** : m\xeame bouton et modale, avec le **#** et la **dur\xe9e** du lap sur la ligne. **Nouvelle session** : calendriers pass\xe9 / imm\xe9diat \xe9galement inline dans la modale.","**Allocation facturation** : le KPI **Temps de t\xe2che enregistr\xe9** refl\xe8te le **total de la semaine affich\xe9e** (navigation de semaine), pas toute la plage filtr\xe9e.","**Vues** : trois **cartes centr\xe9es** (Allocation facturation, Rythme, Avanc\xe9) avec une courte description de l’objectif de chaque vue.","**Aide (?)** : **un seul** bouton d’aide par section (grilles #/@, graphiques, synth\xe8se, tableau journalier, etc.) ; sous-titres \xab Calendrier hebdomadaire \xbb redondants retir\xe9s.","**Mise en page** : sections **Temps par \xe9tiquette** et **Temps par projet** align\xe9es (m\xeame encadr\xe9, m\xeame indentation des colonnes).","**Guide utilisateur** : modale horaire unique (calendriers inline, fin facultative), laps de suivi, rapports et totaux planifi\xe9s session (`lib/userGuideCopy.ts`, `docs/USER_GUIDE.md`).","**Impl\xe9mentation** : `lib/implementationNotes.ts`, `docs/IMPLEMENTATION_DETAILS.md` — p\xe9rim\xe8tre **1.0.0-beta.35**.","Release **1.0.0-beta.35** : `npm test`, `npm run changelog:build`, `npm run pack:release`, `npm run release:verify` (voir `.cursor/rules/release-workflow.mdc`)."]},{version:"1.0.0-beta.34",items:["**Correctif tarball** : le paquet npm embarque un **changelog in-app** et un **`kronosys-package-meta.json`** align\xe9s sur la version semver du paquet (corrige **1.0.0-beta.33**, publi\xe9e avec un build stale affichant encore **beta.32** dans le changelog et la version standalone).","**Garde-fous release** (obligatoires avant publish) :","`scripts/lib/releaseVersionAlignment.mjs` — logique partag\xe9e + tests ;","`verify-standalone-pack-alignment.mjs` — pr\xe9-pack : semver, lockfile, m\xe9ta standalone, changelog embarqu\xe9 ;","`verify-packed-tarball.mjs` — post-pack : contenu r\xe9el du `.tgz` ;","`pack-with-zip.sh` — build explicite → v\xe9rif pr\xe9-pack → `npm pack --ignore-scripts` → v\xe9rif tarball ;","`prepublishOnly` — rebuild + v\xe9rif standalone si publish sans tarball pr\xe9-construit ;","`sync-standalone-assets.mjs` — auto-v\xe9rif apr\xe8s \xe9criture du m\xe9ta-fichier."]},{version:"1.0.0-beta.33",items:["**Sessions** (gauche) et **\xc9tiquettes / projets** (droite) : tiroirs **coll\xe9s au bord du viewport** (`left` / `right` : 0 + encoche safe-area) au lieu d’\xeatre d\xe9cal\xe9s vers le centre du conteneur max 1920px ; largeur ouverte toujours proportionnelle (**1fr** de l’ancienne grille `1fr / 2,25fr / 1fr`, calcul\xe9e sur **100vw**). La colonne **T\xe2ches** reste centr\xe9e dans le flux ; repli\xe9 : bande **2,75 rem** au bord d’\xe9cran. Mode focus inchang\xe9 (alignement bord + repli haut).","**Mode pass\xe9 / archive** : bouton **R\xe9gler d\xe9but, fin et dur\xe9e…** ouvrant une **modale** (d\xe9but, fin, dur\xe9e du minuteur) — plus de bloc horaire inline dans le lanceur ; les calendriers internes s’ouvrent en popover ancr\xe9 dans cette modale.","**Mod\xe8les et titres r\xe9currents** : liste d\xe9roulante **pleine largeur** de la ligne titre (remplace le `datalist` natif \xe9troit) ; filtrage diff\xe9r\xe9 inchang\xe9 ; m\xe9morisation des **derni\xe8res heures de d\xe9but/fin** utilis\xe9es (r\xe9appliqu\xe9es sur la **journ\xe9e courante** \xe0 la s\xe9lection, mode pass\xe9).","**Carte t\xe2che — horaires** : calendriers **d\xe9but** / **fin** (et laps) en **modale centr\xe9e** plein \xe9cran (portail `document.body`, plus de popover rogn\xe9 dans la carte) ; question d’**ajustement de dur\xe9e** uniquement \xe0 la modification de la **fin** ; le **d\xe9but** s’applique directement et **r\xe9aligne** le lap en cours (minuteur actif ou en pause) sur le nouveau d\xe9but ; t\xe2che **termin\xe9e** \xe0 un seul lap : le lap suit les bornes corrig\xe9es. **Correctif** : \xe0 la terminaison, `durationMs` est **r\xe9concili\xe9** sur la somme des laps (\xe9vite l’affichage 1 h pour un cr\xe9neau 10:30→11:00 avec lap 30 min).","**Points de d\xe9tail** : lien **Ajouter un point de d\xe9tail** (comme **Ajouter une note**) tant qu’il n’y en a aucun ; le champ d’ajout n’appara\xeet qu’apr\xe8s clic ou lorsqu’au moins un point est d\xe9j\xe0 list\xe9.","**Correctif terminer une t\xe2che** : une t\xe2che **termin\xe9e** (bouton Terminer) n’appara\xeet plus \xe0 tort dans **En pause** lorsque la pile active contenait des copies dupliqu\xe9es du m\xeame identifiant.","**Correctif lanceur pass\xe9** : le bascule **Temps r\xe9el / Pass\xe9** et les champs d\xe9but/fin/dur\xe9e restent accessibles **sans session live** (ex. apr\xe8s cl\xf4ture) ; l’ajout d’une t\xe2che pass\xe9e **cr\xe9e la session** automatiquement si besoin.","**Correctif minuteur t\xe2che planifi\xe9e** : apr\xe8s correction du **d\xe9but** (alignement au cr\xe9neau), le gros compteur vert ne **double** plus le temps (ex. ~58 min affich\xe9es pour ~28 min r\xe9elles) ; une **fin planifi\xe9e future** ne gonfle plus `durationMs` sur toute la plage lors du recalcul des bornes.","**Guide utilisateur** : modale **entr\xe9e pass\xe9e** (lanceur), calendriers modale sur cartes t\xe2che, tiroirs bord viewport, correctifs minuteur / terminaison (`lib/userGuideCopy.ts`, `docs/USER_GUIDE.md`)."]},{version:"1.0.0-beta.32",items:["**Fin planifi\xe9e / fin renseign\xe9e** : la **barre de progression** est sur la **m\xeame ligne** que **D\xe9but** et **Fin** (\xe0 droite), au lieu d’une ligne pleine largeur en dessous.","**Note libre** : lien **Ajouter une note** / **Add a note** pour afficher le champ ; si la note est **vide**, le bloc est masqu\xe9 (carte et lanceur). Au **lanceur**, le champ source n’appara\xeet qu’apr\xe8s ouverture explicite du lien (brouillon non vide sans \xe9diteur ouvert reste masqu\xe9). Une note **enregistr\xe9e** sur une carte reste affich\xe9e en lecture (clic pour modifier) ; aide Markdown **(?)** \xe0 c\xf4t\xe9 du lien ou du champ.","**Correctif note au lanceur** : suppression de l’aper\xe7u Markdown sous le champ pendant la saisie — le texte n’appara\xeet plus en double (source + rendu).","**Espacement** : r\xe9duction de l’\xe9cart entre la note et le bloc **sous-t\xe2ches**.","**Disposition align\xe9e sur les cartes** : mode maintenant/pass\xe9, KronoFocus, aide et pastilles projet / `#\xe9tiquettes` **en haut \xe0 droite** ; **titre** avec bouton **D\xe9marrer / Ajouter** **en fin de ligne** (comme avant pour ce seul contr\xf4le), puis **note** en dessous (`TaskFocusPanel.tsx`).","**Tiroir repliable (xl+)** : le lanceur est encadr\xe9 comme les tiroirs lat\xe9raux (bordure, flou, coins arrondis) ; **une seule ligne d’en-t\xeate** fusionne le titre **T\xe2ches** / **Tasks**, le **d\xe9compte par statut**, l’indicateur **SUIVI**, les **dates pass\xe9es** (mode pass\xe9) et le **chevron** d\xe9plier / replier (pas de languette) ; repli\xe9 : bandeau compact (m\xeame ligne, formulaire masqu\xe9) ; \xe9tat m\xe9moris\xe9 (`kronosys.dashboard.taskLauncherDrawer.open.v1`, `DashboardTaskLauncherDrawer.tsx`). Sous xl : toujours d\xe9ploy\xe9.","**Libell\xe9 du lanceur** : l’en-t\xeate du formulaire d’entr\xe9e et l’en-t\xeate repli\xe9 affichent **T\xe2ches** / **Tasks** (align\xe9 sur la colonne) au lieu de **En cours** / **In focus** ; **En cours (minuteur)** reste r\xe9serv\xe9 \xe0 la liste des t\xe2ches au minuteur actif.","**Guide utilisateur** : note repliable, position de la barre de progression sur les cartes, disposition du **lanceur de t\xe2che** (libell\xe9 **T\xe2ches** / **Tasks**, **expand/collapse** par chevron), **tiroir repliable** du lanceur (`lib/userGuideCopy.ts`, `docs/USER_GUIDE.md`).","**Aide (?)** : texte d’intro Markdown align\xe9 sur le flux **Ajouter une note** (`lib/dashboardCopy.ts`).","Release **1.0.0-beta.32** : bump semver, `npm run build`, `npm run pack:release`, `npm run changelog:build`, `npm run release:verify`. Publication npm au commit `chore(release): 1.0.0-beta.32` (voir `.cursor/rules/release-workflow.mdc`)."]},{version:"1.0.0-beta.31",items:["**Changelog in-app** : r\xe9g\xe9n\xe9ration `lib/generatedUserChangelog.ts` (`npm run changelog:build`) align\xe9e sur **1.0.0-beta.31**.","**Guide utilisateur** : en-t\xeate `docs/USER_GUIDE.md` et r\xe9f\xe9rences semver **`1.0.0-beta.31`** (2026-05-29).","**Impl\xe9mentation** : `lib/implementationNotes.ts`, `docs/IMPLEMENTATION_DETAILS.md`, `docs/README.md`, `README.md` — r\xe9f\xe9rences semver synchronis\xe9es.","**Workflow release** : script `scripts/verify-release-alignment.mjs` et r\xe8gle `.cursor/rules/release-workflow.mdc` — v\xe9rification locale avant tag et publish.","**Build standalone** : `npm run build` obligatoire avant `npm run pack:release` pour garantir un tarball npm avec l’UI \xe0 jour.","Release **1.0.0-beta.31** : bump semver, `npm run build`, `npm run pack:release`, `npm run changelog:build`, `npm run release:verify`. Publication npm au commit `chore(release): 1.0.0-beta.31` (voir `.cursor/rules/release-workflow.mdc`)."]},{version:"1.0.0-beta.30",items:["**Mode focus** : masque l’en-t\xeate, les bandeaux et le pied de page pour n’afficher que les **trois colonnes** (sessions, t\xe2ches, \xe9tiquettes / projets). Bouton **agrandir** dans la barre d’outils (\xe0 c\xf4t\xe9 du th\xe8me) ; **\xc9chap** ou bouton **r\xe9duire** en haut \xe0 droite pour quitter. Raccourci par d\xe9faut : **Alt+Shift+F** (modifiable dans la modale raccourcis). Pr\xe9f\xe9rence m\xe9moris\xe9e dans le navigateur.","**Palette donn\xe9es** (Ctrl+K / ⌘K) : commande **Basculer le mode focus** (`toggle-focus-mode`, `DashboardCommandCenter`) — en compl\xe9ment du bouton **agrandir**, du raccourci **Alt+Shift+F** et de la sortie **\xc9chap** / bouton **r\xe9duire**.","**Sessions** (gauche) et **\xc9tiquettes et projets** (droite) : panneaux repliables en tiroirs (`DashboardSideDrawer`, xl+) ; \xe0 l’ouverture, largeur lat\xe9rale identique \xe0 l’ancienne colonne **1fr** (grille `1fr / 2.25fr / 1fr`, conteneur max 1920px) ; repli\xe9 : languette **2,75 rem** avec libell\xe9 vertical (titre de colonne). La colonne **T\xe2ches** reste centr\xe9e sans d\xe9calage ; sa largeur max augmente de **20 % par tiroir repli\xe9** (base **42 rem**). \xc9tat m\xe9moris\xe9 dans le navigateur (`lib/dashboardSideDrawerStorage.ts`). Sous xl : disposition empil\xe9e inchang\xe9e.","**Bande repli\xe9e** : ic\xf4ne de colonne (`DashboardColumnTitleIcon`) au-dessus du **libell\xe9 vertical** ; languette vers la colonne T\xe2ches ; **Alignement sous l’en-t\xeate** via `DashboardSideDrawerTopSync` (`--kronosys-dash-drawer-top`) ; en mode focus, tiroirs cal\xe9s en haut de page.","**Ligne de titre** : \xe0 c\xf4t\xe9 du **total**, d\xe9compte par bloc (**En cours**, **Planifi\xe9es**, **En pause**, **Compl\xe9t\xe9es**, **Non termin\xe9es (instantan\xe9)**) — segments non nuls align\xe9s sur les en-t\xeates de `TaskFocusPanel` (`lib/taskColumnStatusSummary.ts`).","**KronoFocus** reste **toujours visible** dans la barre d’outils (\xe0 c\xf4t\xe9 de l’horloge), sur toutes les pages principales.","**Carte t\xe2che** : **minuteur live** \xe0 droite sur la **ligne du titre** ; boutons d’action ic\xf4ne compacts sur une ligne sous le titre.","**Dur\xe9e restante** sous **Dur\xe9e** lorsque `scheduledEndAt` est renseign\xe9 ; barre de progression sous **Fin** ; **Nouvelle session** avec fin planifi\xe9e optionnelle → cl\xf4ture automatique.","**Markdown** titre (inline) et note (block) ; aide **(?)** ; GFM ; popover **laps de suivi** au survol Gantt.","**Note** : champ source auto-ajust\xe9 en hauteur (`TaskNoteTextarea`, `ResizeObserver`).","**D\xe9but avec minuteur actif** : modale **Tour de minuteur en cours** (`lapAdjustMode`).","**Laps enregistr\xe9s** : \xe9dition d\xe9but/fin et suppression sur la carte.","**Rouvrir** (↺) une t\xe2che termin\xe9e ; **dur\xe9e minimale** et pr\xe9remplissage fin ; **\xe9tiquette \xab d\xe9faut \xbb** et retrait automatique avec `#tag` explicite.","**Nouvelle session** d\xe9but r\xe9troactif + fin future → session live planifi\xe9e.","Bascule **Prod** / **QA** imm\xe9diate (`resetSqliteConnection`) — sans red\xe9marrage requis.","**Param\xe8tres → Tableau de bord web** : **\xab Ne pas distinguer par la couleur seule \xbb** — pr\xe9fixes `#` / `@` / `!` et bordures distinctes sur les pastilles (`lib/semanticChipAccessibleMode.ts`).","**Guide utilisateur** : `lib/userGuideCopy.ts`, `docs/USER_GUIDE.md` — en-t\xeate **`1.0.0-beta.30`** (2026-05-28).","**Impl\xe9mentation** : `lib/implementationNotes.ts`, `docs/IMPLEMENTATION_DETAILS.md`, `docs/README.md`.","**Tests** : suite Vitest compl\xe8te (543 tests) ; couverture tiroirs, focus mode, r\xe9sum\xe9 statuts, pastilles accessibles, Markdown, laps, QA switch, etc.","**Correctifs build** : `lib/taskMarkdownComponents.tsx`, `lib/taskTimelineGantt.ts`, `formatProjectDisplay` (libell\xe9s `!` en rapports).","Release **1.0.0-beta.30** : bump semver, `npm run build`, `npm run pack:release`, `npm run changelog:build`, `npm run release:verify`. Publication npm au commit `chore(release): 1.0.0-beta.30` (voir `.cursor/rules/release-workflow.mdc`)."]},{version:"1.0.0-beta.29",items:["**Mode focus** : masque l’en-t\xeate, les bandeaux et le pied de page pour n’afficher que les **trois colonnes** (sessions, t\xe2ches, \xe9tiquettes / projets). Bouton **agrandir** dans la barre d’outils (\xe0 c\xf4t\xe9 du th\xe8me) ; **\xc9chap** ou bouton **r\xe9duire** en haut \xe0 droite pour quitter. Raccourci par d\xe9faut : **Alt+Shift+F** (modifiable dans la modale raccourcis). Pr\xe9f\xe9rence m\xe9moris\xe9e dans le navigateur.","**Palette donn\xe9es** (Ctrl+K / ⌘K) : commande **Basculer le mode focus** (`toggle-focus-mode`, `DashboardCommandCenter`) — en compl\xe9ment du bouton **agrandir**, du raccourci **Alt+Shift+F** et de la sortie **\xc9chap** / bouton **r\xe9duire**.","**Sessions** (gauche) et **\xc9tiquettes et projets** (droite) : panneaux repliables en tiroirs (`DashboardSideDrawer`, xl+) ; \xe0 l’ouverture, largeur lat\xe9rale identique \xe0 l’ancienne colonne **1fr** (grille `1fr / 2.25fr / 1fr`, conteneur max 1920px) ; repli\xe9 : languette **2,75 rem** avec libell\xe9 vertical (titre de colonne). La colonne **T\xe2ches** reste centr\xe9e sans d\xe9calage \xe0 l’ouverture ou la fermeture ; sa largeur max augmente de **20 % par tiroir repli\xe9** (base **42 rem**). \xc9tat m\xe9moris\xe9 dans le navigateur (`lib/dashboardSideDrawerStorage.ts`). Sous xl : disposition empil\xe9e inchang\xe9e.","**Bande repli\xe9e** : ic\xf4ne de colonne (`DashboardColumnTitleIcon` — Historique / \xc9tiquettes) au-dessus du **libell\xe9 vertical** du titre ; m\xeame pictogramme que la rang\xe9e titre ouverte.","**Languette** : centr\xe9e verticalement sur le **bord int\xe9rieur** (vers la colonne T\xe2ches) ; en repli, positionn\xe9e vers le bas pour \xe9viter le chevauchement du libell\xe9 vertical.","**Alignement sous l’en-t\xeate** : `DashboardSideDrawerTopSync` mesure la bande des colonnes et pose `--kronosys-dash-drawer-top` pour que les tiroirs restent visibles sous la barre d’outils ; en **mode focus**, les tiroirs se calent en haut de page (`app/globals.css`).","**Ligne de titre** : \xe0 c\xf4t\xe9 du **total**, d\xe9compte par bloc (**En cours**, **Planifi\xe9es**, **En pause**, **Compl\xe9t\xe9es**, **Non termin\xe9es (instantan\xe9)**) — segments non nuls align\xe9s sur les en-t\xeates de `TaskFocusPanel` (`lib/taskColumnStatusSummary.ts`, `buildTaskColumnStatusSegments`).","**Panneau timing** : sous **Dur\xe9e**, **Dur\xe9e restante** affiche le temps jusqu’\xe0 la fin planifi\xe9e (`scheduledEndAt`) lorsqu’une heure de fin est renseign\xe9e ; sinon **Ind\xe9termin\xe9e** — bloc **Session en cours** (`SelectedSessionSidebarBlock.tsx`).","**Fin planifi\xe9e** : barre de progression sous la ligne **Fin** (m\xeame logique que les cartes t\xe2che : avancement de `startAt` vers `scheduledEndAt`, alerte visuelle < 15 / 5 min).","**Actions session** : boutons Gantt / terminer la session, **Nouvelle session** (+), **Archives**, crayon nom, et ic\xf4nes de ligne de liste — gabarit compact des cartes t\xe2che (`TASK_CARD_ICON_BTN_*`, 30\xd730 px, ic\xf4nes 14 px).","**Nouvelle session (Maintenant)** : fin planifi\xe9e optionnelle d\xe8s la modale **Nouvelle session** → cl\xf4ture automatique \xe0 l’\xe9ch\xe9ance (`scheduledEndAt` sur `newSession`).","**Actions** : boutons ic\xf4ne compacts (m\xeame \xe9chelle que les pastilles `#` / `@`) sur une **ligne sous le titre** ; le titre occupe toute la largeur (minuteur live \xe0 droite sur la ligne du titre).","**Fin planifi\xe9e** : barre de progression sous **D\xe9but** / **Fin** lorsque `scheduledEndAt` est d\xe9fini (avancement de `startTime` vers l’\xe9ch\xe9ance).","**Modale enrichie** : lorsqu’une t\xe2che **au minuteur** (lap en cours) voit son **d\xe9but** modifi\xe9, une section **Tour de minuteur en cours** propose de **conserver** le lap, le **cl\xf4turer** (enregistr\xe9 dans `taskTimerLaps`) ou le **r\xe9aligner** sur le nouveau d\xe9but — en plus du recalcul de la **dur\xe9e totale** d\xe9j\xe0 existant.","**Serveur** : `setTaskStartTime` accepte `lapAdjustMode` (`keep` | `flush` | `align_start`) ; impl\xe9ment\xe9 dans `updateTaskStartTimeInSession`.","**Titre** : en lecture sur la carte, Markdown **inline** rendu (`TaskMarkdownContent`, variante `inline`) — gras, italique, lien, code ; les listes et aper\xe7us compacts retirent la syntaxe (`stripTaskMarkdownPlainText`).","**Note libre** : Markdown **block** rendu sur la carte (`TaskNoteField`) ; clic pour \xe9diter la source ; aper\xe7u live sous le champ au **lanceur** de t\xe2che ; ic\xf4ne **(?)** (`TaskMarkdownHelpTrigger`) avec exemples source + rendu.","**Saisie note** : le champ source (`TaskNoteTextarea`) s’**ajuste en hauteur** automatiquement \xe0 la saisie (`ResizeObserver`) — meilleure lisibilit\xe9 lors de l’\xe9dition Markdown.","**S\xe9curit\xe9** : pas de HTML brut (`react-markdown` sans `rehype-raw`) ; liens externes `noopener`.","**GFM** : plugin `remark-gfm` — tableaux, `~~barr\xe9~~`, listes `- [ ]` / `- [x]`, autolinks ; hors scope GitLab : Mermaid, @mentions, alertes `> [!note]`, HTML.","**Gantt** : survol d’un segment de t\xe2che — popover listant tous les **laps de suivi** (`TaskTimelineGanttModal`).","**Carte t\xe2che** : section **Laps de suivi** — correction **d\xe9but/fin** par lap (popover date-heure) et **suppression** avec confirmation ; le lap **en cours** reste en lecture seule jusqu’\xe0 cl\xf4ture.","**Serveur** : actions `setTaskTimerLap` et `deleteTaskTimerLap` (`updateTaskTimerLapInSession`, `deleteTaskTimerLapInSession`) — ajustement de `durationMs` par delta, ordre chronologique entre laps contigus.","**Correctif** : la bascule **Prod** / **QA** rouvre imm\xe9diatement le bon fichier SQLite (`resetSqliteConnection` avant toute \xe9criture payload) — y compris lorsque le coffre QA existe d\xe9j\xe0 (sans modale d’amor\xe7age) ou via **Param\xe8tres → G\xe9n\xe9ral**.","**Documentation** : guide in-app (`lib/userGuideCopy.ts`) et `docs/USER_GUIDE.md` (FR/EN) — bascule **imm\xe9diate** (plus de red\xe9marrage requis) ; `lib/settingsCopy.ts` (libell\xe9s coffres) ; `lib/implementationNotes.ts` et `docs/IMPLEMENTATION_DETAILS.md`.","**Param\xe8tre** `taskMinimumDurationMinutes` (d\xe9faut **30 min**, plage **15–480**) dans **Param\xe8tres → T\xe2ches et \xe9tiquettes** (`/settings#settings-task-tags`).","**Entr\xe9e pass\xe9e** (mode \xab Pass\xe9 \xbb ou session archiv\xe9e) : le **d\xe9but** est arrondi \xe0 la **demi-heure pr\xe9c\xe9dente** ; la **fin** est pr\xe9remplie \xe0 **d\xe9but + dur\xe9e minimale** (recalcul\xe9e quand le d\xe9but change) ; la **dur\xe9e du minuteur** suit la plage d\xe9but/fin.","**T\xe2che planifi\xe9e** : sur la carte t\xe2che, la **fin** (brouillon) suit le **d\xe9but** avec le m\xeame \xe9cart ; si aucune fin n’\xe9tait encore enregistr\xe9e, une **fin planifi\xe9e** est pos\xe9e automatiquement \xe0 la validation du d\xe9but (`scheduledEndAt` via `setTaskEndTime`).","**Correctif** : une t\xe2che **termin\xe9e** dont le cr\xe9neau planifi\xe9 (d\xe9but + fin futurs) atteint son **d\xe9but** se **rouvre** et **active** le minuteur automatiquement au lieu de rester dans **Compl\xe9t\xe9es** ; un d\xe9but futur sur une t\xe2che ouverte **l\xe8ve** la pause manuelle pour permettre l’activation \xe0 l’\xe9ch\xe9ance.","**Seau par d\xe9faut** (`taskDefaultTagBucketEnabled`, inchang\xe9) : une t\xe2che **sans** `#` explicite re\xe7oit l’\xe9tiquette r\xe9serv\xe9e `default` (affich\xe9e \xab d\xe9faut \xbb en fran\xe7ais).","**Retrait automatique** (`taskStripDefaultTagWhenExplicitTags`, **activ\xe9** par d\xe9faut) : d\xe8s qu’**au moins une autre** \xe9tiquette explicite est pr\xe9sente (saisie `#…`, tableau `tags`, \xe9dition du titre), l’\xe9tiquette `default` est **retir\xe9e** — y compris lors d’une **cr\xe9ation** avec `#tag` dans le titre ou d’une **mise \xe0 jour** (`updateTask`).","**Persistance serveur** : fusion titre + `tags` \xe0 la cr\xe9ation (`startTask`, `addHistoricalTask`) via `resolveStoredTaskTagsFromTaskLine` ; normalisation centralis\xe9e dans `normalizeTaskTagsForStorage` (`lib/taskParsing.ts`).","**Param\xe8tres** : second commutateur dans **T\xe2ches et \xe9tiquettes** (`#settings-task-tags`) pour conserver volontairement `default` \xe0 c\xf4t\xe9 d’autres \xe9tiquettes.","**Fin future autoris\xe9e** : en mode \xab Dans le pass\xe9 \xbb, une **fin encore \xe0 venir** ouvre une **session live** avec `startAt` r\xe9troactif et **`scheduledEndAt`** ; l’horloge murale part du d\xe9but saisi (dur\xe9e initiale = maintenant − d\xe9but) et la session se **cl\xf4ture automatiquement** \xe0 l’\xe9ch\xe9ance — m\xeame m\xe9canisme que `setSessionEndTime` sur une session live. Si la fin est **d\xe9j\xe0 pass\xe9e**, la plage **close** reste **historis\xe9e** comme avant.","**Session live d\xe9j\xe0 ouverte** : un d\xe9but r\xe9troactif avec **fin future** d\xe9clenche d’abord le flux **fin de session** (comme \xab Maintenant \xbb), en conservant les bornes saisies ; une session **enti\xe8rement pass\xe9e** n’interrompt toujours **pas** la session active.","**Bouton Rouvrir** (↺) sur chaque carte **termin\xe9e** (session live ou archive).","**Modale** : reprendre le **minuteur** (dur\xe9e conserv\xe9e), rouvrir en **pause**, **dur\xe9e manuelle** (h/m/s) ou **remise \xe0 z\xe9ro** ; les **sous-t\xe2ches** sont rouvertes.","**Session live** : si un autre minuteur tourne d\xe9j\xe0 lors d’une **reprise**, modale **pause / terminer / parall\xe8le** (m\xeame m\xe9morisation que pour un d\xe9marrage).","**Instantan\xe9 cl\xf4tur\xe9** : pas de minuteur live — correction de **statut** et de **dur\xe9e** ; regroupement **Non termin\xe9es (instantan\xe9)** dans la colonne t\xe2ches.","**Param\xe8tres → Tableau de bord web** : option **\xab Ne pas distinguer par la couleur seule \xbb** (`dashboardSemanticChipAccessibleMode`) — pr\xe9fixes `#` / `@` / `!` et bordures distinctes (pleine, double, pointill\xe9e) sur les pastilles \xe9tiquette / projet travail / projet personnel, en compl\xe9ment des teintes vert / bleu ciel / rose (`lib/semanticChipAccessibleMode.ts`, `globals.css`, `taskFieldStyles.ts`).","**Guide utilisateur** : `lib/userGuideCopy.ts`, `docs/USER_GUIDE.md` — lot **beta.28–beta.29** (mode focus et palette, tiroirs lat\xe9raux xl+, r\xe9sum\xe9 statuts colonne T\xe2ches, note auto-ajust\xe9e, Markdown t\xe2che, laps, rouvrir t\xe2che, dur\xe9e minimale, \xe9tiquette d\xe9faut, nouvelle session fin future, pastilles accessibles, coffres Prod/QA imm\xe9diats) ; en-t\xeate **`1.0.0-beta.29`**.","**Impl\xe9mentation** : `lib/implementationNotes.ts`, `docs/IMPLEMENTATION_DETAILS.md`, `docs/README.md` — cartographie compl\xe8te du cycle ; user stories **beta.28** et **beta.29**.","**Tests** : `server/actionDispatch.test.ts`, `server/actionTaskSession.test.ts`, `test/integration/apiActionNewSessionScope.test.ts`, `test/integration/apiActionDataEnvironmentQaSeed.test.ts` ; `lib/taskMinimumDuration.test.ts`, `lib/taskParsing.test.ts`, `lib/taskColumnStatusSummary.test.ts` ; `lib/dashboardSideDrawerStorage.test.ts`, `lib/dashboardFocusMode.test.ts`, `lib/dashboardSideDrawerLayout.test.ts`, `lib/semanticChipAccessibleMode.test.ts` ; `server/mainTimerHydrate.test.ts` ; composants Markdown (`TaskMarkdownContent.test.tsx`, `TaskMarkdownHelpTrigger.test.tsx`, `TaskNotesDisplay.test.tsx`).","Release **1.0.0-beta.29** sur npm (dist-tag `beta`) : lot **beta.28** non publi\xe9 s\xe9par\xe9ment — contenu usager consolid\xe9 sous cette section ; bump `package.json` / `package-lock.json`, r\xe9g\xe9n\xe9ration `lib/generatedUserChangelog.ts` (`npm run changelog:build`), v\xe9rification `npm run release:verify` (voir `.cursor/rules/release-workflow.mdc`)."]},{version:"1.0.0-beta.28",items:["**Version non publi\xe9e sur npm** : le d\xe9veloppement \xe9tiquet\xe9 beta.28 a \xe9t\xe9 livr\xe9 dans le paquet **1.0.0-beta.29** ; l’historique d\xe9taill\xe9 des changements usagers figure dans la section **1.0.0-beta.29** ci-dessus."]},{version:"1.0.0-beta.27",items:["**Toast global** : lorsqu’une **t\xe2che planifi\xe9e** atteint son heure de d\xe9but (`startTime`) ou qu’une **session live** atteint son **`startAt` officiel**, un message temporaire s’affiche en bas \xe0 droite **sur toute route** de l’app (tableau de bord, param\xe8tres, rapports, guide, etc.) — le titre de la t\xe2che ou le nom de la session est rappel\xe9 dans le libell\xe9.","La **modale de conflit** (pause / terminer / parall\xe8le) reste affich\xe9e lorsque le passage planifi\xe9 → en cours co\xefncide avec un autre minuteur d\xe9j\xe0 actif ; le toast d’activation s’ajoute en compl\xe9ment, pas en remplacement.","**Alignement livraison** : `lib/userGuideCopy.ts`, `docs/USER_GUIDE.md`, `lib/implementationNotes.ts` et `docs/IMPLEMENTATION_DETAILS.md` — p\xe9rim\xe8tre **beta.26** document\xe9 de fa\xe7on homog\xe8ne (coffres Prod/QA et amor\xe7age QA, journal `/logs`, cr\xe9neaux planifi\xe9s, suggestions `#` / `@` / `!`, rapports avec **Travail / Personnel** et **Total jour**) ; **beta.27** : toast global \xe0 l’activation d’un cr\xe9neau planifi\xe9 ; en-t\xeates et r\xe9f\xe9rences de version **`1.0.0-beta.27`**.","**Index d\xe9p\xf4t** : `docs/README.md` (r\xf4les des fichiers, cartographie, r\xe8gles de maintenance) ; `README.md` racine — section **API HTTP** compl\xe8te (six routes, plus de mention \xab stub \xbb pour `/api/state`).","**Conception** : `docs/IMPLEMENTATION_DETAILS.md` — cartographie du code, contrats API ; **documentation in-code** sur le noyau (`server/payloadStore`, `actionDispatch`, `db`, `userActionLog`, `app/api/*`, `lib/kronosysApi.ts`).","**CHANGELOG usager** : r\xe9g\xe9n\xe9ration via `npm run changelog:build` (`lib/generatedUserChangelog.ts`).","**Tests** : `lib/plannedScheduleActivation.test.ts` — d\xe9tection planifi\xe9 → minuteur et session ; composant global `PlannedScheduleActivationWatcher` (layout racine).","Les versions **pr\xe9release** (`1.0.0-beta.*`) doivent \xeatre publi\xe9es avec un dist-tag explicite, par ex. `npm publish … --access public --tag beta` (sinon npm refuse la publication).","Bump applicatif : **`1.0.0-beta.27`** (`package.json`, `package-lock.json`)."]},{version:"1.0.0-beta.26",items:["**Deux coffres SQLite** : lorsque l’option est activ\xe9e dans **Param\xe8tres → G\xe9n\xe9ral** (*Coffres production et QA*), les donn\xe9es de production restent dans `…/v4` et un coffre **QA** isol\xe9 vit dans `…/v4-qa` (pr\xe9f\xe9rence sur disque : `data-environment-preference.json`, hors des deux dossiers).","**Bascule** : boutons **Prod** / **QA** dans la barre de navigation (visible seulement si les deux coffres sont activ\xe9s) ; action `switchDataEnvironment` ; **red\xe9marrage du serveur** requis pour ouvrir le bon fichier SQLite (comme tout changement de r\xe9pertoire de donn\xe9es).",'**Rep\xe8re visuel QA** : bandeau violet persistant, liser\xe9 et fond l\xe9g\xe8rement teint\xe9s (`data-kronosys-env="qa"` sur `<html>`) lorsque le processus sert effectivement le coffre QA.',"**Priorit\xe9** : si `TRACE_DATA_DIR` est d\xe9fini, les options prod/QA sont d\xe9sactiv\xe9es ; en `next dev`, lorsque les deux coffres sont activ\xe9s, ils priment sur le segment `v4-dev` (coffres `v4` ou `v4-qa`).","**Premier passage en QA** : si le coffre `v4-qa` n’existe pas encore, une modale propose de **copier la production** ou de **d\xe9marrer vide** avant d’enregistrer la bascule (`switchDataEnvironment` avec `qaSeed`).","**Page** `/logs` (ic\xf4ne **liste** dans le bloc navigation principal) : historique des **mutations** pass\xe9es par `POST /api/action` (type d’action, succ\xe8s/\xe9chec, horodatage, session li\xe9e, IP source).","**Persistance** : table SQLite `user_action_log` (`server/userActionLog.ts`) ; champs sensibles du corps (`token`, `password`, `uri`) **masqu\xe9s** dans le JSON archiv\xe9.","**Lecture** : `GET /api/action-logs?limit=…` ; action `clearUserActionLogs` pour vider le journal depuis l’UI.","**D\xe9but planifi\xe9** : tant que le **d\xe9but officiel** (`startTime`) d’une t\xe2che **non termin\xe9e** est encore **futur**, le **serveur** n’accumule **pas** de dur\xe9e et ne laisse **pas** tourner un segment de minuteur en arri\xe8re-plan ; \xe0 l’**heure de d\xe9but**, la t\xe2che **rejoint le suivi actif** (pile `activeTasks` si besoin) et le minuteur s’**ancre** \xe0 ce `startTime` (synchronisation d’\xe9tat, typiquement toutes les **~2 s** via `/api/state`).","**Fin planifi\xe9e** : une **heure de fin** sur une t\xe2che **en cours** pose toujours `scheduledEndAt` ; \xe0 l’\xe9ch\xe9ance, la t\xe2che se **termine** automatiquement (comportement existant, coh\xe9rent avec le d\xe9but planifi\xe9).","**`setTaskStartTime`** : un d\xe9but **futur** ne pose plus de segment de minuteur **imm\xe9diat**.","**Conflit planifi\xe9 → en cours** : si plusieurs cr\xe9neaux deviennent actifs en m\xeame temps qu’un autre minuteur tournait d\xe9j\xe0, la **modale** pause / terminer / parall\xe8le (m\xe9morisation possible) s’applique comme avant.","**Liste d\xe9roulante** : lorsque le jeton **`#`** (\xe9tiquette), **`@`** (projet travail) ou **`!`** (projet personnel) est actif dans le champ \xab sur quoi travaillez-vous \xbb ou en **\xe9dition du titre** d’une t\xe2che, une liste propose les choix **les plus utilis\xe9s** puis **les plus r\xe9cents** (fr\xe9quence dans l’historique des t\xe2ches, puis listes `knownTags` / `knownProjects` / `knownPersonalProjects`).","**Interaction** : filtrage au fil de la frappe ; navigation clavier (**↑** / **↓**, **Entr\xe9e**, **Tab**, **\xc9chap**) et s\xe9lection \xe0 la souris.","**Port\xe9e projet** : apr\xe8s `@projet#` ou `!projet#`, les suggestions **`#`** ciblent les **\xe9tiquettes li\xe9es** \xe0 ce projet.","Les **mod\xe8les de t\xe2che** (pr\xe9fixe **Mod\xe8le :**) restent propos\xe9s via le m\xe9canisme existant (`datalist`), en parall\xe8le de cette liste.","**Sessions par jour — temps des t\xe2ches** : sous chaque t\xe2che, chaque **#** affiche la **dur\xe9e compl\xe8te** enregistr\xe9e (m\xeame r\xe8gle que les grilles d’allocation #) — **plus** de r\xe9partition \xe0 parts \xe9gales lorsque plusieurs \xe9tiquettes portent sur la m\xeame ligne.","**Temps enregistr\xe9 vs planifi\xe9** : les **totaux**, graphiques et grilles # / @ ne comptent que le **temps r\xe9ellement pass\xe9** (`durationMs`, r\xe8gles d’archives inchang\xe9es). Les t\xe2ches dont le cr\xe9neau est encore **dans le futur** (m\xeame crit\xe8re d’affichage \xab planifi\xe9 \xbb que le tableau de bord) montrent une **fen\xeatre planifi\xe9e** \xe0 part (libell\xe9 ambre), sans l’ajouter aux totaux enregistr\xe9s.","**Calendriers hebdomadaires** (# et @) : ligne **Total jour** en bas de chaque tableau de semaine — **somme par colonne** (chaque jour) et **total de semaine** dans la derni\xe8re colonne.","**Grille par projet (@)** : s\xe9lecteur **Travail (@)** / **Personnel (!)** sous le calendrier hebdomadaire par projet — **Travail** (d\xe9faut) exclut le registre personnel ; **Personnel** n’affiche que le temps `!` (`personalProject` ou jeton `!` reconnu dans le titre si le drapeau manque sur d’anciennes donn\xe9es).","**Tests** : `lib/dataDir.test.ts`, `lib/dataEnvironmentPreferenceFile.test.ts` — r\xe9solution `v4` / `v4-qa`, priorit\xe9 du double coffre en dev ; `server/mainTimerHydrate.test.ts`, `server/actionTaskSession.test.ts` — d\xe9but planifi\xe9 (pas d’accumulation avant l’heure, activation et fin \xe0 l’\xe9ch\xe9ance) ; `setTaskStartTime` avec d\xe9but futur sans segment imm\xe9diat.","**Tests** : `lib/taskEntryTokenSuggest.test.ts` — d\xe9tection des jetons actifs, classement et insertion d’une suggestion.","**Tests** : `lib/reportingAggregate.test.ts` — temps planifi\xe9 exclu des agr\xe9gats enregistr\xe9s ; `lib/reportingWeekLayout.test.ts` — `sumWeekCalendarSlots`.","**Tests** : `test/integration/apiActionLogs.test.ts`, `test/integration/apiActionDataEnvironmentQaSeed.test.ts`.","**Guide utilisateur** : `lib/userGuideCopy.ts` et `docs/USER_GUIDE.md` (FR/EN) — **coffres production / QA** (activation, bascule Prod/QA, amor\xe7age QA, red\xe9marrage, rep\xe8re visuel) ; **journal des actions** (`/logs`) ; **cr\xe9neau planifi\xe9** (activation au d\xe9but, fin automatique) ; liste d\xe9roulante `#` / `@` / `!` ; **Rapports** (dur\xe9e compl\xe8te par # en sessions/jour, temps planifi\xe9 \xe0 part, **Total jour** sur calendriers hebdo, s\xe9lecteur **Travail / Personnel** sur la grille @) ; en-t\xeate **`1.0.0-beta.26`**.","**Impl\xe9mentation** : `lib/implementationNotes.ts` (FR + EN, `lastUpdated`) ; `docs/IMPLEMENTATION_DETAILS.md` — `lib/dataDir.ts` / `lib/dataEnvironmentPreferenceFile.ts`, `switchDataEnvironment`, `server/userActionLog.ts`, `activateDuePlannedTaskTimersInSession` / `deferFutureStartMainTimersInSession`, `lib/taskEntryTokenSuggest.ts`, agr\xe9gats reporting (scopes `work` / `personal`).","**D\xe9p\xf4t** : `README.md` (r\xe9f\xe9rence de version npm).","**Aide Rapports** : `lib/reportingStrings.ts` (textes **Rythme**, calendriers, totaux journaliers).","Bump applicatif : **`1.0.0-beta.26`** (`package.json`, `package-lock.json`) ; **CHANGELOG** usager r\xe9g\xe9n\xe9r\xe9 (`npm run changelog:build`)."]},{version:"1.0.0-beta.25",items:["**Cause** : en production, **`node server.js`** s’ex\xe9cute avec **`cwd` = `.next/standalone`** ; le tarball npm ne publie pas le **`package.json`** racine de l’app, et le **`package.json`** minimal g\xe9n\xe9r\xe9 par Next dans le standalone ne porte pas la version **`@nightkatana/kronosys-app`** — l’UI et **`/api/health`** pouvaient donc afficher une version **d\xe9cal\xe9e** (ex. livraison **beta.24** lue comme **beta.23**).","**Correctif** : apr\xe8s **`next build`**, **`scripts/sync-standalone-assets.mjs`** \xe9crit **`kronosys-package-meta.json`** dans le standalone avec la **`version`** du **`package.json`** source ; **`readKronosysPackageVersion()`** lit ce fichier (ou **`KRONOSYS_APP_VERSION`**, pos\xe9e par **`bin/kronosys.mjs`** au lancement du serveur standalone).","**`app/layout.tsx`** : le layout reste **`force-dynamic`** pour \xe9viter une version RSC fig\xe9e au build lorsque la lecture fichier est pertinente.","Bump applicatif : **`1.0.0-beta.25`** (`package.json`, `package-lock.json`) ; **CHANGELOG** usager r\xe9g\xe9n\xe9r\xe9 (`npm run changelog:build`)."]},{version:"1.0.0-beta.24",items:['**`output: "standalone"`** (`next.config.ts`) + **`scripts/sync-standalone-assets.mjs`** apr\xe8s **`npm run build`** : **`kronosys start`** et **`npm run start`** ex\xe9cutent **`node server.js`** dans **`.next/standalone`** (plus **`next start`** sur ce livrable).','**`package.json` → `"files"`** : le tarball publi\xe9 se limite \xe0 **`bin/`**, **`.next/BUILD_ID`** et **`.next/standalone`** (sans sources `app/` / `server/`), pour une archive nettement plus l\xe9g\xe8re qu’un paquet monolithique.',"**Portabilit\xe9** : exclusion du tra\xe7age **`sharp` / `@img/sharp*`** (**`outputFileTracingExcludes`**) + **`images.unoptimized`**, afin d’\xe9viter des binaires **Linux-only** dans un paquet vis\xe9 **Windows / macOS**.","**Docker** : image d’ex\xe9cution all\xe9g\xe9e (**`node server.js`** depuis le standalone copi\xe9).","**`kronosys dev`** : refus explicite depuis un install tarball slim sans dossier **`app/`** (flux dev = checkout source).","Bump applicatif : **`1.0.0-beta.24`** (`package.json`, `package-lock.json`) ; **CHANGELOG** usager r\xe9g\xe9n\xe9r\xe9 (`npm run changelog:build`)."]},{version:"1.0.0-beta.23",items:["**SQLite** : **`better-sqlite3` retir\xe9** au profit de **`node:sqlite`** (`DatabaseSync`) ; **`engines.node`** **≥ 22.13.0** ; r\xe8gle **`.cursor/rules/platform-native-deps.mdc`**.","**Publication / CLI** : cadre **Linux, Windows, macOS** et strat\xe9gie **`kronosys`** — r\xe8gle **`.cursor/rules/kronosys-npm-packaging.mdc`** (it\xe9rations ult\xe9rieures du contenu du tarball : voir **1.0.0-beta.25**).","Bump applicatif : **`1.0.0-beta.23`** (`package.json`, `package-lock.json`) ; **CHANGELOG** usager r\xe9g\xe9n\xe9r\xe9 (`npm run changelog:build`)."]},{version:"1.0.0-beta.22",items:["**Plus de barre de d\xe9filement horizontale** sur la barre d’outils d’en-t\xeate (`lib/appShellHeaderClasses.ts`) : les segments **horloge / KronoFocus / palette de commandes / navigation de routes / utilitaires (th\xe8me, actualiser, langue)** passent d\xe9sormais **\xe0 la ligne** (`flex-wrap`) lorsqu’ils ne tiennent plus, en gardant chaque rang\xe9e **centr\xe9e**, au lieu de produire un ascenseur horizontal sur le conteneur. Le comportement est identique sur **toutes** les routes principales (tableau de bord, rapports, param\xe8tres, journaux, guide, impl\xe9mentation, changelog, licences).","**Bandeau \xab Donn\xe9es actualis\xe9es \xbb du bouton actualiser** (`components/dashboard/PageRefreshButton.tsx`) : rendu via **portail** vers `document.body` avec **`position: fixed`** au lieu d’un positionnement absolu sous le bouton. Corrige l’apparition intermittente d’une **barre de d\xe9filement verticale** sur la page \xe0 chaque clic — l’\xe9l\xe9ment absolu participait au d\xe9bordement du `<body>` et faisait osciller le `scrollHeight` pendant les ~2,8 s d’affichage du libell\xe9.",'**Popover d’\xe9dition de dur\xe9e KronoFocus** (`components/dashboard/KronoFocusPanel.tsx`) : ouvrir le temps depuis l’en-t\xeate (`variant="headerBar"`) ne d\xe9clenche plus l’apparition de **scrollbars sur les deux axes** dans l’alv\xe9ole du ruban. La cause \xe9tait la combinaison `overflow-x-auto` sur l’alv\xe9ole + popover en `position: absolute` : selon la spec CSS, d\xe8s qu’un axe d’overflow n’est pas `visible`, l’autre est promu en `auto`, donc deux ascenseurs apparaissaient sit\xf4t que le panneau d\xe9passait. Le popover est d\xe9sormais rendu en **portail** avec `position: fixed` centr\xe9 sous le bouton du temps. D\xe9tection click-outside r\xe9vis\xe9e pour v\xe9rifier le **d\xe9clencheur** et le **panneau** par leurs `ref` distinctes (ils ne partagent plus de sous-arbre DOM).',"**Surcouche carte \xab compl\xe8te \xbb** (variante `default` de `KronoFocusPanel`) align\xe9e sur le m\xeame pattern portail pour rester coh\xe9rente.",'**`useAnchoredFloatingPortalStyle`** (`components/dashboard/useAnchoredFloatingPortalStyle.ts`) gagne l’alignement **`"center"`** en plus de `start` / `end` : le panneau portail peut maintenant \xeatre centr\xe9 horizontalement sous son d\xe9clencheur. Les autres consommateurs (`PageRefreshButton`, `PlainHelpPopover`, `TagsHelpTrigger`, `InlineMetricHelpTrigger`) conservent leurs alignements existants ; le hook continue de g\xe9rer la contrainte au viewport (marge 10 px) et le **basculement au-dessus** du d\xe9clencheur s’il manque de place en bas.',"**Guide utilisateur** : `lib/userGuideCopy.ts` et `docs/USER_GUIDE.md` (FR/EN) — note explicite sur le repli en plusieurs rang\xe9es de la barre d’outils sur \xe9cran \xe9troit ; en-t\xeate de version pointe **`1.0.0-beta.22`**.","**Impl\xe9mentation** : `lib/implementationNotes.ts` (FR + EN, `lastUpdated`) ; `docs/IMPLEMENTATION_DETAILS.md` — date d’en-t\xeate et note sur le pattern \xab portail + `position: fixed` \xbb pour les surcouches ancr\xe9es \xe0 des \xe9l\xe9ments d’en-t\xeate (\xe9vite la propagation au `scrollableOverflow` du `<body>`).","**D\xe9p\xf4t** : `README.md` (r\xe9f\xe9rence de version npm).","Bump applicatif : **`1.0.0-beta.22`** (`package.json`, `package-lock.json`) ; **CHANGELOG** usager r\xe9g\xe9n\xe9r\xe9 (`npm run changelog:build`)."]},{version:"1.0.0-beta.21",items:["**Parsing** : `findProjectTokens` (`lib/taskParsing.ts`) reconna\xeet d\xe9sormais **`!projet`** et **`!projet#sous-\xe9tiquette`** lorsque le **`!`** suit **directement** un caract\xe8re autoris\xe9 (sans espace avant le sigil), sur le m\xeame principe que les **`#\xe9tiquettes`** \xab coll\xe9es \xbb au mot pr\xe9c\xe9dent. Les jetons **`@`** restent limit\xe9s \xe0 une **fronti\xe8re d\xe9but de cha\xeene ou espace** afin d’\xe9viter les faux positifs (ex. adresses courriel du type `contact@domaine`).","**Effet** : la modification d’un libell\xe9 du type `Courrier!perso#dentiste` met correctement \xe0 jour **`project`**, **`personalProject`** et les **\xe9tiquettes** persist\xe9es (y compris via **`updateTask`**), ce qui aligne le **reporting** (\xe9tiquettes, ventilation par projet selon le scope) sur l’intention utilisateur.","**Guide utilisateur** : `lib/userGuideCopy.ts` et `docs/USER_GUIDE.md` (FR/EN) — pr\xe9cision sur l’espace optionnel avant **`!`** ; en-t\xeate et exemples de livraison pointent **`1.0.0-beta.21`**.","**Impl\xe9mentation** : `docs/IMPLEMENTATION_DETAILS.md` (r\xe8gle de fronti\xe8re `!` / `@`) ; `lib/implementationNotes.ts` (version affich\xe9e et d\xe9tail parsing scoped `!`).","**D\xe9p\xf4t** : `README.md` (r\xe9f\xe9rence de version npm).","**Tests** : `lib/taskParsing.test.ts` — cas `Courrier!perso#dentiste` ; attentes **`personalProject`** pour `parseQuickAddTagOrProjectLine` / `buildStartTaskFromInput` lorsqu’un projet est pr\xe9sent.","Bump applicatif : **`1.0.0-beta.21`** (`package.json`, `package-lock.json`) ; **CHANGELOG** usager r\xe9g\xe9n\xe9r\xe9 (`npm run changelog:build`)."]},{version:"1.0.0-beta.20",items:["**D\xe9pendances runtime** : `@types/node`, `@types/react` et `@types/react-dom` pass\xe9es en **`dependencies`** avec `typescript` — Next.js 16 exige ces paquets pour la phase \xab Running TypeScript \xbb du `next build` ; une installation **`npm install --omit=dev`** ne les omet plus (\xe9vite le message *It looks like you're trying to use TypeScript…* hors environnement de d\xe9veloppement complet).","**Contenu du tarball publi\xe9** : suppression du champ **`files`** dans `package.json` (il neutralisait **`.npmignore`**, comportement **npm-packlist**) ; filtrage du paquet via **`.npmignore`** (fichiers `*.test.*` / `*.spec.*`, dossiers `e2e/`, `test/`, `docs/`, outils CI, etc.) en conservant les sources n\xe9cessaires au build.","Bump applicatif : **`1.0.0-beta.20`** (`package.json`, `package-lock.json`) ; **CHANGELOG** usager r\xe9g\xe9n\xe9r\xe9 (`npm run changelog:build`)."]},{version:"1.0.0-beta.19",items:["**Affichage planifi\xe9** : regroupement sous **Planifi\xe9es**, styles distincts (section, fond, point d’\xe9tat) ; **suppression des pastilles texte** \xab planifi\xe9 \xbb sur les cartes t\xe2che et les lignes de session. T\xe2che **non termin\xe9e** dont le **d\xe9but** (`startTime`) est encore **futur** : pas de minuteur \xab en direct \xbb. T\xe2che **termin\xe9e** : regroupement planifi\xe9 seulement si **d\xe9but et fin** parseables sont **tous deux** strictement futurs — une **fin** future seule ne retient plus la carte sous Planifi\xe9es lorsque le d\xe9but est d\xe9j\xe0 pass\xe9 (`isTaskDisplayPlanned`). Session live \xe0 **startAt** futur : ligne distincte dans la liste ; d\xe9compte planifi\xe9es sur la carte session ; tiroir AppShell sans ces entr\xe9es comme suivi actif.","**Fronti\xe8re planifi\xe9 → en cours** : lorsqu’une t\xe2che rejoint les minuteurs **en cours** alors qu’**au moins un** autre minuteur \xe9tait d\xe9j\xe0 visible comme en cours, une **modale** (pause / terminer / parall\xe8le, m\xeame m\xe9morisation que le d\xe9marrage manuel) s’applique aux t\xe2ches d\xe9j\xe0 au minuteur ; hors route `/`, l’ic\xf4ne **Tableau de bord** peut **pulser**.","**Modales globales** : correction d’un d\xe9calage de positionnement lors des transitions de route ; l’animation de conteneur ne transporte plus de `transform`, ce qui r\xe9tablit l’ancrage viewport des modales en `position: fixed`.","**Horloge murale** permanente dans la barre d’outils : fuseau IANA et format 12/24 h des param\xe8tres **Tableau de bord web**, tick chaque seconde ; correctif d’**hydratation** SSR/CSR sur les secondes au premier rendu.","**S\xe9lecteurs date/heure** : bouton **crochet** pour valider et fermer le calendrier ; pr\xe9remplissage **d\xe9but** avec minutes `:00` (bouton **Today** idem) ; **Now** \xe0 l’instant exact ; champs de **fin** arrondis \xe0 la **demi-heure** suivante (**Today** inclus).","**Heure de fin planifi\xe9e** (t\xe2che ou session) : clignotement doux entre 15 et 5 minutes restantes, puis plus rapide jusqu’\xe0 0.","**Colonne t\xe2ches** : suppression d’une troncature visuelle pendant l’animation d’ouverture ; d\xe9filement correct sur les listes longues.","**Installation desktop / PWA** : priorit\xe9 **512x512** + r\xf4le `maskable` pour l’ic\xf4ne install\xe9e.","**Jeton `!`** : en parall\xe8le de `@projet`, le libell\xe9 de t\xe2che accepte **`!projet`** et les \xe9tiquettes sous port\xe9e **`!projet#sous-\xe9tiquette`** ; le moteur distingue **`personalProject`** sur les t\xe2ches et maintient **`knownPersonalProjects`** sur le payload (liste distincte de `knownProjects`).","**Actions** : `startTask`, `addHistoricalTask`, `updateTask`, `saveTaskTemplate` ; renommage serveur avec **`renameProjectMetadata`** et **`personalOnly`** (pas encore d’inline Param\xe8tres d\xe9di\xe9 aux listes `!`).","**UI** : pastilles et suggestions **rose** pour le personnel (`taskFieldStyles`, `TaskFocusPanel`, `TaskSessionLiveCard`, `SavedProjectPicker`, `TagPills`) ; **Gantt** d’une t\xe2che : barres et **totaux s\xe9par\xe9s** temps productif (`@`) vs personnel (`!`).","**Rapports** : les grilles \xab par projet \xbb utilisent par d\xe9faut le scope **`work`** (`aggregateProjectTaskMinutesByDay`) — le temps `!` n’y est pas m\xe9lang\xe9 ; les scopes **`personal`** / **`all`** existent dans `lib/reportingAggregate.ts` pour une future vue UI d\xe9di\xe9e.","**Qualit\xe9** : tests unitaires sur les mod\xe8les avec projet personnel (`lib/taskTemplateDraft.test.ts`) ; pas de parcours E2E Playwright d\xe9di\xe9 aux jetons `!` dans cette version.","**Guide utilisateur** : `lib/userGuideCopy.ts` et `docs/USER_GUIDE.md` (FR/EN) — convention **`#` / `@` / `!`**, rapports (grilles projet `@` sans m\xe9langer `!`), limite actuelle c\xf4t\xe9 Param\xe8tres pour les projets personnels.","**Impl\xe9mentation** : `lib/implementationNotes.ts` (user stories et coches int\xe9gration/E2E) ; **`docs/IMPLEMENTATION_DETAILS.md`** — section projets personnels et scopes reporting.","**Changelog usager** : r\xe9g\xe9n\xe9ration via `npm run changelog:build` (`lib/generatedUserChangelog.ts`).","**Paquet npm** : version **`1.0.0-beta.19`** ; script **`prepublishOnly`** = `npm run build` avant `npm publish` sur `@nightkatana/kronosys-app`."]},{version:"1.0.0-beta.18",items:["Nouveaut\xe9s — Sauvegarde/restauration: ajout de l’API `POST /api/restore` (import `json` ou `sqlite`) avec couverture d’int\xe9gration d\xe9di\xe9e.","Nouveaut\xe9s — User stories in-app: ajout de la page **Impl\xe9mentation** (`/implementation`) avec inventaire exhaustif ✓/✗, checklist locale \xab revue \xbb et acc\xe8s direct au changelog usager.","Nouveaut\xe9s — Mod\xe8les de t\xe2che: section d\xe9di\xe9e dans Param\xe8tres, cr\xe9ation depuis une t\xe2che, suggestions \xab Mod\xe8le : \xbb dans la saisie, disponibilit\xe9 dans la palette **Spotlight**.","Nouveaut\xe9s — Vue **Gantt du jour**: modal timeline globale des intervalles de t\xe2ches sur les sessions de la journ\xe9e.","Nouveaut\xe9s — Pause globale contextuelle: modal de confirmation enrichie avec r\xe9sum\xe9 d\xe9taill\xe9 (murale, temps actifs/codage, compteurs t\xe2ches/sous-t\xe2ches, ventilation minuteurs).","Nouveaut\xe9s — Nom de session par d\xe9faut: gabarit configurable (`%UUID` + tokens `strftime`) appliqu\xe9 \xe0 la cr\xe9ation de session.","Am\xe9liorations — Tableau de bord: en-t\xeate AppShell consolid\xe9 (m\xe9tadonn\xe9es de session, placeholder commande, navigation), transitions de route et coh\xe9rence inter-pages accrues.","Am\xe9liorations — Reporting: ajout du temps non concurrent par jour, ventilation des sessions par type de cl\xf4ture, aides m\xe9triques et pr\xe9cision accrue des agr\xe9gats.","Am\xe9liorations — Sessions/t\xe2ches: consolidation des statistiques lat\xe9rales, gestion des notes et meilleure continuit\xe9 live/historique.","Am\xe9liorations — Param\xe8tres: \xe9volution des sections \xc9tiquettes/Projets/Mod\xe8les et meilleure ergonomie des flux de configuration.","Qualit\xe9 — Tests: renforcement substantiel de la couverture (unitaires + int\xe9gration + E2E) sur restore API, templates, Gantt, pause globale, agr\xe9gats reporting et flux session/t\xe2che.","Documentation — Guide utilisateur synchronis\xe9 pour `beta.18` sur les deux surfaces (`/guide` et `docs/USER_GUIDE.md`), Spotlight harmonis\xe9, page `/implementation` et `docs/IMPLEMENTATION_DETAILS.md` align\xe9s.","Maintenance — Bump applicatif vers `1.0.0-beta.18` (`package.json`, `package-lock.json`) et r\xe9g\xe9n\xe9ration du changelog usager (`lib/generatedUserChangelog.ts`)."]},{version:"1.0.0-beta.17",items:["Nouveaut\xe9s — Notes libres: ajout d’une **note de t\xe2che** et d’une **note de session** (texte libre) pour documenter le contexte de travail directement sur l’activit\xe9 concern\xe9e.","Am\xe9liorations — Tableau de bord: la note de t\xe2che est affich\xe9e **avant** la liste des sous-t\xe2ches pour garder le contexte visible pendant la d\xe9composition.","Am\xe9liorations — Sessions et archives: aper\xe7u de note de session (ic\xf4ne + extrait) dans la liste des sessions et dans la liste des sessions archiv\xe9es.","Qualit\xe9 — Tests: ajout de tests unitaires UI pour l’ordre d’affichage note/sous-t\xe2ches et la pr\xe9sence de l’aper\xe7u de note en liste de sessions, en plus des tests serveur sur la persistance des notes.","Documentation — Mise \xe0 jour du guide utilisateur (in-app + d\xe9p\xf4t) et des d\xe9tails d’impl\xe9mentation pour les notes de t\xe2ches/sessions.","Nouveaut\xe9s — Planification d’heure de fin sur les **t\xe2ches en cours** : d\xe9finir une heure de fin programme l’\xe9ch\xe9ance et met automatiquement le minuteur en pause lorsqu’elle est atteinte.","Nouveaut\xe9s — Planification d’heure de fin sur la **session live** : d\xe9finir une heure de fin agit comme \xe9ch\xe9ance de session et met automatiquement en pause la dur\xe9e murale \xe0 l’instant pr\xe9vu.","Am\xe9liorations — Tableau de bord : le s\xe9lecteur **Fin** est disponible aussi sur t\xe2ches/sessions en cours (plus seulement sur les \xe9l\xe9ments d\xe9j\xe0 termin\xe9s), avec affichage de l’\xe9ch\xe9ance planifi\xe9e.","Qualit\xe9 — Tests : renforcement de la couverture (dispatch + hydratation minuteurs/session) pour les sc\xe9narios planifi\xe9s et les cas d’\xe9ch\xe9ance d\xe9pass\xe9e.","Documentation — Guide utilisateur et d\xe9tails d’impl\xe9mentation mis \xe0 jour pour expliciter la diff\xe9rence \xab fin r\xe9elle \xbb vs \xab fin planifi\xe9e (auto-pause) \xbb.","Nouveaut\xe9s — \xc9tiquettes et projets : renommage **inline** dans la colonne droite du tableau de bord (\xe9dition en place, validation **Entr\xe9e**, annulation **\xc9chap**).","Am\xe9liorations — Confirmation de renommage : avertissement explicite sur l’impact reporting + option \xab ne plus afficher \xbb m\xe9moris\xe9e localement.","Qualit\xe9 — UX : suppression des ambigu\xeft\xe9s d’actions (pas de bouton de sauvegarde en double pendant le renommage inline)."]},{version:"1.0.0-beta.16",items:["Nouveaut\xe9s — Page Impl\xe9mentation (`/implementation`) avec inventaire exhaustif des user stories (✓ livr\xe9 \xb7 ✗ absent/hors p\xe9rim\xe8tre), checklist locale \xab revue \xbb et acc\xe8s direct au changelog usager.","Nouveaut\xe9s — Documentation technique d’impl\xe9mentation ajout\xe9e dans `docs/IMPLEMENTATION_DETAILS.md` (mod\xe8le temps session murale vs minuteurs de t\xe2ches, pauses, reporting, architecture et maintenance).","Nouveaut\xe9s — Mod\xe8les de t\xe2che: sauvegarde depuis une t\xe2che, suggestions \xab Mod\xe8le: \xbb dans la saisie, pr\xe9sence dans la palette `Ctrl+K`, gestion d\xe9di\xe9e dans Param\xe8tres.","Nouveaut\xe9s — Pause globale contextuelle avec modale de confirmation et aper\xe7u d\xe9taill\xe9 (murale, temps actif/codage, compteurs t\xe2ches/sous-t\xe2ches, ventilation des minuteurs).","Nouveaut\xe9s — Vue Gantt du jour: frise des intervalles de t\xe2ches sur l’ensemble des sessions de la journ\xe9e.","Nouveaut\xe9s — Nom de session par d\xe9faut avec gabarit configurable (`%UUID` + tokens `strftime`) dans les param\xe8tres.","Nouveaut\xe9s — Restauration locale via `POST /api/restore` (`json` ou `sqlite`) en compl\xe9ment de `GET /api/backup`.","Am\xe9liorations — Reporting: ajout du temps non concurrent par jour, ventilation des sessions par type de cl\xf4ture, m\xe9triques d’assiduit\xe9 quand une heure pr\xe9vue est fournie.","Am\xe9liorations — Spotlight: la palette de recherche rapide est d\xe9sormais explicitement nomm\xe9e \xab Spotlight \xbb dans l’interface.","Qualit\xe9 — Tests: ajout/renforcement des parcours E2E et tests unitaires (impl\xe9mentation, templates, pause globale, restauration API, agr\xe9gats).","Documentation — Guide utilisateur: mise \xe0 jour compl\xe8te in-app + d\xe9p\xf4t, et alignement des cha\xeenes FR/EN (dashboard, reporting, param\xe8tres, licences, impl\xe9mentation)."]},{version:"1.0.0-beta.15",items:["Ajout de la commande de version CLI: `kronosys --version` affiche d\xe9sormais la version install\xe9e.","Ajout des alias `kronosys -v` et `kronosys version` pour afficher la version install\xe9e."]},{version:"1.0.0-beta.14",items:["Ajout de la page **Impl\xe9mentation** (`/implementation`) avec inventaire exhaustif des user stories livr\xe9es ou hors p\xe9rim\xe8tre.","Ajout des **mod\xe8les de t\xe2che** (cr\xe9ation depuis une t\xe2che, gestion dans Param\xe8tres, recherche rapide Ctrl+K).","Ajout d’une **pause globale contextuelle** avec modale de confirmation et aper\xe7u des dur\xe9es associ\xe9es.","Ajout de la vue **Gantt du jour** pour visualiser les intervalles de t\xe2ches de la session affich\xe9e."]},{version:"1.0.0-beta.13",items:["Version interm\xe9diaire de stabilisation (pas de nouveaut\xe9 utilisateur majeure document\xe9e)."]},{version:"1.0.0-beta.12",items:["Correctif du runtime CLI: installation des d\xe9pendances avec `--ignore-scripts` pour \xe9viter les erreurs Husky hors d\xe9p\xf4t."]},{version:"1.0.0-beta.11",items:["Correctif Windows du lanceur CLI (PowerShell + installation runtime locale).","Rebuild explicite de `better-sqlite3` dans le runtime local."]},{version:"1.0.0-beta.10",items:["Correctif de dispatch des commandes Windows pour le runtime CLI."]},{version:"1.0.0-beta.9",items:["Correctif de quoting des commandes Windows dans le lanceur CLI."]},{version:"1.0.0-beta.8",items:["Correctif initial Windows du launcher (`npm.cmd`/`npx.cmd`)."]},{version:"1.0.0-beta.7",items:["Stabilisation du packaging b\xeata et g\xe9n\xe9ration des archives de distribution."]},{version:"1.0.0-beta.6",items:["Correctif de r\xe9solution d’alias d’import (`@/...`) pour le build de production."]},{version:"1.0.0-beta.5",items:["Retour temporaire au mode build \xe0 la premi\xe8re ex\xe9cution pour am\xe9liorer la compatibilit\xe9 multiplateforme."]},{version:"1.0.0-beta.4",items:["Ajustements de packaging et de lancement CLI pour la s\xe9rie b\xeata."]},{version:"1.0.0-beta.2",items:["Correctif des d\xe9pendances de build n\xe9cessaires au runtime CLI."]},{version:"1.0.0-beta.1",items:["`kronosys` lance maintenant le build de production automatiquement si `.next` est absent."]},{version:"1.0.0-beta.0",items:["Premi\xe8re version b\xeata publi\xe9e."]},{version:"0.1.1",items:["Added an in-app user CHANGELOG page (`/changelog`).","Added an update modal on Dashboard startup that opens the CHANGELOG after a version change.","Added browser-local tracking of the last seen app version to show update notes once per version."]}],n={title:"User CHANGELOG",subtitle:"This page lists user-visible changes after each software update.",empty:"No changelog entry is available yet.",entries:a},i={title:"CHANGELOG usager",subtitle:"Cette page liste les changements visibles c\xf4t\xe9 utilisateur apr\xe8s chaque mise \xe0 jour du logiciel.",empty:"Aucune entr\xe9e de changelog n’est encore disponible.",entries:a};function r(e){return"fr"===e?i:n}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[747],{2725:(e,t,a)=>{"use strict";a.d(t,{p:()=>g});var r=a(5155),s=a(2115),n=a(3321),i=a(8428),l=a(3098),d=a(8646),o=a(6383),c=a(3666),m=a(9137),x=a(3996),p=a(2635);function u(e,t){let a=e?.current,r=e?.historyArchived||[],s=e?(0,x.t)(e.history||[],a):[],n=e?.inspectingSessionId,i=(0,p.k)(t,e,a,s,r),l="ok"===i.mode,d="string"==typeof a?.sessionId?a.sessionId.trim():"",o="ok"===i.mode?i.id.trim():"",c=l&&o!==d?o:"string"==typeof n&&""!==n.trim()?n.trim():null,m=(c?s.find(e=>e.sessionId===c)||r.find(e=>e.sessionId===c):void 0)??a;return{live:a,history:s,historyArchived:r,sessionCurrent:m}}var h=a(3228),b=a(4695);function g({dt:e,lang:t,dashboardSessionNavId:a,onManualRefresh:x,toolbarDomId:p}){let k=(0,n.useRouter)(),{payload:y,refresh:f}=(0,i.y)(),j="string"==typeof a?a.trim():"",z=(0,s.useCallback)(e=>{k.push((0,m.c)("/","string"==typeof e&&""!==e.trim()?e.trim():void 0))},[k]),w=(0,s.useCallback)(async e=>{await (0,l.$)(e),await f({routerInvalidate:!0})},[f]),v=(0,s.useCallback)(async e=>{let{live:t}=u(y,j),a=e===("string"==typeof t?.sessionId?t.sessionId.trim():"");a?(await (0,l.$)({type:"inspectSession",sessionId:null}),await (0,l.$)({type:"setPaused",paused:!1})):await (0,l.$)({type:"inspectSession",sessionId:e}),await f({routerInvalidate:!0}),z(a?null:e)},[j,y,z,f]),N=(0,s.useMemo)(()=>({newSession:()=>{(0,h.IX)(),z(""!==j?j:null)},refresh:()=>void x(),openReporting:()=>void k.push((0,m.c)("/reporting",j||void 0)),openSettings:()=>void k.push((0,m.c)("/settings",j||void 0)),openUserGuide:()=>void k.push((0,m.c)("/guide",j||void 0)),focusSessions:()=>{(0,h.Bj)("sessions"),z(""!==j?j:null)},focusTasks:()=>{(0,h.Bj)("tasks"),z(""!==j?j:null)},focusTags:()=>{(0,h.Bj)("tags"),z(""!==j?j:null)},toggleLang:()=>void w({type:"setLanguage",lang:"fr"===t?"en":"fr"}),toggleFocusMode:()=>{b.Z.getState().toggleFocusMode(),z(""!==j?j:null)}}),[t,j,x,w,z,k]),{history:T,historyArchived:S,sessionCurrent:B,live:M}=(0,s.useMemo)(()=>u(y,j),[j,y]),L=M&&"string"==typeof M.sessionId&&""!==M.sessionId.trim()?{sessionId:M.sessionId.trim(),sessionPaused:!0===M.isPaused}:null,D=(0,s.useMemo)(()=>(0,c.EW)(y?.taskTemplates),[y]),C=(0,s.useMemo)(()=>(0,o.g)({history:T,historyArchived:S,sessionCurrent:B,dt:e,liveSearchContext:L,taskTemplates:D,onSelectTaskTemplate:e=>{(0,h.Ef)(e),(0,h.Bj)("tasks");let t="string"==typeof B?.sessionId?B.sessionId.trim():"string"==typeof M?.sessionId?M.sessionId.trim():""!==j?j:"";z(""!==t?t:null)},onSelectSession:e=>{v(e)},scrollToSession:e=>{(0,h.YG)(e),v(e)},focusTasksColumn:()=>{(0,h.Bj)("tasks"),z(""!==j?j:null)},scrollToTask:e=>{(0,h.Tr)(e),(0,h.Bj)("tasks");let t="string"==typeof B?.sessionId?B.sessionId.trim():"string"==typeof M?.sessionId?M.sessionId.trim():""!==j?j:"";z(""!==t?t:null)}}),[e,T,S,M,L,j,z,v,B,D]);return(0,r.jsx)(d.L,{dt:e,handlers:N,searchItems:C,toolbarDomId:p})}},3030:(e,t,a)=>{"use strict";a.d(t,{n:()=>i});var r=a(5155),s=a(9921),n=a(2115);function i({ariaLabel:e}){let[t,a]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let e=()=>{a(globalThis.scrollY>320)};return e(),globalThis.addEventListener("scroll",e,{passive:!0}),()=>globalThis.removeEventListener("scroll",e)},[]);let l=(0,n.useCallback)(()=>{globalThis.scrollTo({top:0,behavior:"function"==typeof globalThis.matchMedia&&globalThis.matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth"})},[]);return t?(0,r.jsx)("button",{type:"button",onClick:l,"aria-label":e,className:"fixed bottom-6 right-4 z-40 flex h-11 w-11 items-center justify-center rounded-full border border-zinc-300 bg-white/95 text-zinc-700 shadow-lg shadow-zinc-900/10 backdrop-blur-sm transition-colors hover:border-violet-500/60 hover:bg-violet-50 hover:text-violet-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-violet-500 dark:border-zinc-600 dark:bg-zinc-900/95 dark:text-zinc-200 dark:shadow-black/40 dark:hover:border-violet-500/70 dark:hover:bg-zinc-800 dark:hover:text-violet-100 sm:right-6",children:(0,r.jsx)(s.A,{className:"h-6 w-6",strokeWidth:2.25,"aria-hidden":!0})}):null}},6117:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>e$});var r=a(5155),s=a(2115),n=a(7650),i=a(8500),l=a.n(i),d=a(3321),o=a(1641),c=a(1362),m=a(2934),x=a(3098),p=a(8428),u=a(149),h=a(5486),b=a(3270),g=a(4562),k=a(8778),y=a(7634),f=a(2725),j=a(6664),z=a(2094),w=a(6830),v=a(7792),N=a(21),T=a(8090);function S(e){let t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${t}-${a}-${r}`}function B(e=new Date){let t=S(e);return{from:t,to:t}}var M=a(7856);function L({title:e,ariaLabel:t,entries:a}){return 0===a.length?null:(0,r.jsxs)("nav",{"aria-label":t,className:"mb-6 lg:hidden",children:[(0,r.jsx)("h2",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-zinc-500",children:e}),(0,r.jsx)("ul",{className:"flex flex-wrap gap-2",children:a.map(e=>(0,r.jsx)("li",{children:(0,r.jsx)("a",{href:`#${e.id}`,className:"inline-block max-w-full rounded-md border border-zinc-300 bg-white px-2.5 py-1.5 text-xs leading-snug text-zinc-700 underline-offset-2 hover:border-violet-500/55 hover:text-violet-800 dark:border-zinc-700/90 dark:bg-zinc-900/80 dark:text-zinc-300 dark:hover:text-violet-200",children:e.label})},e.id))})]})}function D({title:e,ariaLabel:t,entries:a}){return 0===a.length?null:(0,r.jsx)("nav",{"aria-label":t,className:"hidden lg:block lg:shrink-0 lg:self-start lg:border-l lg:border-zinc-200 lg:pl-5 xl:pl-6 dark:lg:border-zinc-800",children:(0,r.jsxs)("div",{className:"sticky top-28",children:[(0,r.jsx)("h2",{className:"mb-3 text-xs font-semibold uppercase tracking-wide text-zinc-500",children:e}),(0,r.jsx)("ul",{className:"space-y-0.5",children:a.map(e=>(0,r.jsx)("li",{children:(0,r.jsx)("a",{href:`#${e.id}`,className:"block rounded-r-md py-1.5 pl-2 text-sm leading-snug text-zinc-600 underline-offset-2 hover:bg-zinc-200/70 hover:text-violet-800 dark:text-zinc-400 dark:hover:bg-zinc-800/50 dark:hover:text-violet-200",children:e.label})},e.id))})]})})}var C=a(8578),K=a(6006),$=a(1996),W=a(5112),A=a(1555);function I(e){return e.trim().toLowerCase().startsWith("!")?"p":"w"}var F=a(4747);function E({open:e,onOpenChange:t,onStepChange:a,dt:i,hasReportingChartData:l}){var d;let[o,c]=(0,s.useState)(0),[m,p]=(0,s.useState)(null),[u,h]=(0,s.useState)({}),b=(0,s.useRef)(null),g=(0,s.useRef)(null),{selectors:k,steps:y}=(0,s.useMemo)(()=>{let e=[{title:i.reportingTourStep1Title,body:i.reportingTourStep1Body},{title:i.reportingTourStep2Title,body:i.reportingTourStep2Body},{title:i.reportingTourStep3Title,body:i.reportingTourStep3Body}],t=["#reporting-tour-anchor-intro","#report-filters","#report-summary-kpis"];return l&&(e.push({title:i.reportingTourStep4Title,body:i.reportingTourStep4Body},{title:i.reportingTourStep5aTitle,body:i.reportingTourStep5aBody},{title:i.reportingTourStep5bTitle,body:i.reportingTourStep5bBody}),t.push("#report-chart-sessions","#report-tag-time","#report-projects")),e.push({title:i.reportingTourStep6Title,body:i.reportingTourStep6Body}),t.push("#reporting-tour-anchor-toc-layout"),{selectors:t,steps:e}},[i,l]),f=y.length,j=o>=f-1,z=y[o]??y[0],w=k[Math.min(o,k.length-1)];(0,s.useEffect)(()=>{e&&c(0)},[e]),(0,s.useEffect)(()=>{e&&a?.(o)},[e,o,a]);let v=(0,s.useCallback)(e=>{(0,x.$)({type:"tourInteraction",tour:"reporting_spotlight",action:e,stepIndex:o,stepTotal:f}).catch(()=>void 0),F.r.getState().markReportingCompleted(),t(!1)},[t,o,f]);d=()=>v("escape"),(0,s.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&(e.preventDefault(),d())};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,d]);let N=(0,s.useCallback)(()=>{var t;if(!e)return void p(null);let a=document.querySelector(w);a&&a instanceof HTMLElement?p({top:(t=a.getBoundingClientRect()).top-10,left:t.left-10,width:t.width+20,height:t.height+20}):p(null)},[e,w]);if((0,s.useLayoutEffect)(()=>{if(!e)return void p(null);let t=document.querySelector(w);t instanceof HTMLElement&&t.scrollIntoView({block:"center",inline:"nearest",behavior:"auto"}),N();let a=requestAnimationFrame(N);window.addEventListener("scroll",N,!0),window.addEventListener("resize",N);let r=t instanceof HTMLElement?t:null,s=r&&"u">typeof ResizeObserver?new ResizeObserver(()=>N()):null;return r&&s&&s.observe(r),()=>{cancelAnimationFrame(a),window.removeEventListener("scroll",N,!0),window.removeEventListener("resize",N),s?.disconnect()}},[e,w,o,N]),(0,s.useLayoutEffect)(()=>{if(!e)return;let t=window.innerWidth,a=window.innerHeight,r=Math.min(360,t-24);if(!m)return void h({position:"fixed",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:r,maxWidth:"calc(100vw - 2rem)",zIndex:212});let s=b.current,n=s?.getBoundingClientRect().height??220,i=m.top+m.height+12;i+n>a-12&&m.top-12-n>=12&&(i=m.top-12-n),i=Math.max(12,Math.min(i,a-n-12));let l=m.left+m.width/2-r/2;h({position:"fixed",top:i,left:l=Math.max(12,Math.min(l,t-r-12)),transform:void 0,width:r,maxWidth:void 0,zIndex:212})},[e,m,o,z.title,z.body]),(0,s.useEffect)(()=>{if(!e)return;let t=window.setTimeout(()=>g.current?.focus(),80);return()=>window.clearTimeout(t)},[e,o]),!e)return null;let T=i.reportingTourProgressLabel.replace("{n}",String(o+1)).replace("{total}",String(f)),S="rounded-lg bg-violet-600 px-4 py-2 text-sm font-medium text-white transition hover:bg-violet-700 focus:outline-none focus:ring-2 focus:ring-violet-500 focus:ring-offset-2 dark:bg-violet-500 dark:hover:bg-violet-600 dark:focus:ring-offset-zinc-900",B=window.innerWidth,M=window.innerHeight,L=m?null:(0,r.jsx)("div",{className:"fixed inset-0 z-[210] bg-black/55","aria-hidden":!0}),D=m&&B>0&&M>0?(()=>{let{top:e,left:t,width:a,height:s}=m,n=Math.max(0,e),i=e+s,l=Math.max(0,M-i),d=Math.max(0,t),o=t+a,c=Math.max(0,B-o);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"fixed bg-black/55",style:{top:0,left:0,width:B,height:n,zIndex:210},"aria-hidden":!0}),(0,r.jsx)("div",{className:"fixed bg-black/55",style:{top:i,left:0,width:B,height:l,zIndex:210},"aria-hidden":!0}),(0,r.jsx)("div",{className:"fixed bg-black/55",style:{top:e,left:0,width:d,height:s,zIndex:210},"aria-hidden":!0}),(0,r.jsx)("div",{className:"fixed bg-black/55",style:{top:e,left:o,width:c,height:s,zIndex:210},"aria-hidden":!0}),(0,r.jsx)("div",{className:"pointer-events-none fixed rounded-xl border-2 border-violet-500 shadow-[0_0_0_1px_rgba(139,92,246,0.35)] dark:border-violet-400 dark:shadow-[0_0_0_1px_rgba(167,139,250,0.35)]",style:{top:e,left:t,width:a,height:s,zIndex:211},"aria-hidden":!0})]})})():null;return(0,n.createPortal)((0,r.jsxs)(r.Fragment,{children:[L,D,(0,r.jsxs)("div",{ref:b,role:"dialog","aria-modal":"true","aria-labelledby":"reporting-tour-title","aria-describedby":"reporting-tour-body",className:"rounded-xl border border-zinc-300 bg-white shadow-2xl dark:border-zinc-600 dark:bg-zinc-900",style:u,onMouseDown:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"border-b border-zinc-200 px-4 py-3 dark:border-zinc-700",children:[(0,r.jsx)("p",{className:"text-xs font-medium uppercase tracking-wide text-violet-600 dark:text-violet-300",children:T}),(0,r.jsx)("h2",{id:"reporting-tour-title",className:"mt-1 text-base font-semibold text-zinc-900 dark:text-zinc-100",children:z.title})]}),(0,r.jsx)("div",{id:"reporting-tour-body",className:"max-h-[min(42vh,18rem)] overflow-y-auto px-4 py-3",children:(0,r.jsx)("p",{className:"whitespace-pre-wrap text-sm leading-relaxed text-zinc-700 dark:text-zinc-300",children:z.body})}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 border-t border-zinc-200 px-4 py-3 dark:border-zinc-700",children:[(0,r.jsx)("div",{className:"flex gap-1.5",role:"presentation","aria-hidden":!0,children:y.map((e,t)=>(0,r.jsx)("span",{className:`h-2 w-2 rounded-full ${t===o?"bg-violet-500 dark:bg-violet-400":"bg-zinc-300 dark:bg-zinc-600"}`},t))}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",className:"text-sm text-zinc-500 underline-offset-2 hover:text-zinc-800 hover:underline dark:text-zinc-400 dark:hover:text-zinc-200",onClick:()=>v("skip"),children:i.tourSkipBtn}),o>0?(0,r.jsx)("button",{type:"button",className:"rounded-lg border border-zinc-300 bg-white px-4 py-2 text-sm font-medium text-zinc-800 transition hover:bg-zinc-50 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-200 dark:hover:bg-zinc-700",onClick:()=>c(e=>Math.max(0,e-1)),children:i.tourBackBtn}):null,j?(0,r.jsx)("button",{ref:g,type:"button",className:S,onClick:()=>v("done"),children:i.tourDoneBtn}):(0,r.jsx)("button",{ref:g,type:"button",className:S,onClick:()=>c(e=>Math.min(f-1,e+1)),children:i.tourNextBtn})]})]})]})]}),document.body)}var R=a(3030),P=a(1913),H=a(6523),O=a(7262),U=a(9137),_=a(3228),Y=a(2248),V=a(9281),q=a(1422),G=a(2194),J=a(1934),X=a(9311);!function(){if(window.localStorage.getItem("kronosys-reporting-store"))return;let e={},t=!1;for(let[a,r]of[["kronosys-reporting-viewTab","viewTab"],["kronosys-reporting-projectMinutesScope","projectMinutesScope"],["kronosys-reporting-dateFrom","dateFrom"],["kronosys-reporting-dateTo","dateTo"],["kronosys-reporting-selectedTags","selectedTags"],["kronosys-reporting-sessionDayBreakdownOrder","sessionDayBreakdownOrder"],["kronosys-reporting-tagWeekRollupOpenKeys","tagWeekRollupOpenKeys"],["kronosys-reporting-projectWeekTagBreakdownOpenKeys","projectWeekTagBreakdownOpenKeys"]]){let s=window.localStorage.getItem(a);if(null!==s)try{if("tagWeekRollupOpenKeys"===r||"projectWeekTagBreakdownOpenKeys"===r){let t=JSON.parse(s);e[r]=Array.isArray(t)?t:[]}else if("selectedTags"===r){let t=JSON.parse(s);e[r]=Array.isArray(t)?t:[]}else e[r]=s;t=!0,window.localStorage.removeItem(a)}catch{}}if(t)try{let t=JSON.parse(window.localStorage.getItem("kronosys-reporting-store")||"{}");t.state={...t.state,...e},window.localStorage.setItem("kronosys-reporting-store",JSON.stringify(t))}catch{}}();let Q=(0,J.v)()((0,X.Zr)(e=>({viewTab:"billing",setViewTab:t=>e({viewTab:t}),projectMinutesScope:"work",setProjectMinutesScope:t=>e({projectMinutesScope:t}),dateFrom:"",setDateFrom:t=>e({dateFrom:t}),dateTo:"",setDateTo:t=>e({dateTo:t}),selectedTags:[],setSelectedTags:t=>e({selectedTags:t}),sessionDayBreakdownOrder:"tasks-first",setSessionDayBreakdownOrder:t=>e({sessionDayBreakdownOrder:t}),tagWeekRollupOpenKeys:[],toggleTagWeekRollup:t=>e(e=>({tagWeekRollupOpenKeys:e.tagWeekRollupOpenKeys.includes(t)?e.tagWeekRollupOpenKeys.filter(e=>e!==t):[...e.tagWeekRollupOpenKeys,t]})),projectWeekTagBreakdownOpenKeys:[],toggleProjectWeekTagBreakdown:t=>e(e=>({projectWeekTagBreakdownOpenKeys:e.projectWeekTagBreakdownOpenKeys.includes(t)?e.projectWeekTagBreakdownOpenKeys.filter(e=>e!==t):[...e.projectWeekTagBreakdownOpenKeys,t]})),scrollPositions:{},saveScrollPosition:(t,a)=>e(e=>({scrollPositions:{...e.scrollPositions,[t]:a}}))}),{name:"kronosys-reporting-store",partialize:e=>({viewTab:e.viewTab,projectMinutesScope:e.projectMinutesScope,dateFrom:e.dateFrom,dateTo:e.dateTo,selectedTags:e.selectedTags,sessionDayBreakdownOrder:e.sessionDayBreakdownOrder,tagWeekRollupOpenKeys:e.tagWeekRollupOpenKeys,projectWeekTagBreakdownOpenKeys:e.projectWeekTagBreakdownOpenKeys,scrollPositions:e.scrollPositions})}));function Z({display:e,editBaseline:t,ariaLabel:a,editHint:n,onCommit:i,readClassName:l=""}){let[d,o]=(0,s.useState)(!1),[c,m]=(0,s.useState)(t),x=(0,s.useRef)(null),p=(0,s.useRef)(!1);(0,s.useEffect)(()=>{d||m(t)},[t,d]),(0,s.useEffect)(()=>{d&&x.current&&(x.current.focus(),x.current.select())},[d]);let u=(0,s.useCallback)(()=>{m(t),o(!0)},[t]),h=(0,s.useCallback)(()=>{p.current=!0,m(t),o(!1)},[t]),b=(0,s.useCallback)(async()=>{let e=c.trim();o(!1),e!==t.trim()&&await i(e)},[c,t,i]);return d?(0,r.jsx)("input",{ref:x,type:"text",value:c,onChange:e=>m(e.target.value),"aria-label":a,className:"w-full min-w-0 rounded-sm border-0 border-b border-violet-400/80 bg-transparent py-0.5 text-inherit outline-none focus:border-violet-500 focus:ring-0 dark:border-violet-500/70",onBlur:()=>{if(p.current){p.current=!1;return}b()},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),p.current=!0,b()),"Escape"===e.key&&(e.preventDefault(),h())}}):(0,r.jsx)("span",{role:"button",tabIndex:0,className:`cursor-pointer rounded-sm outline-none hover:text-violet-800 focus-visible:ring-2 focus-visible:ring-violet-400/50 dark:hover:text-violet-200 ${l}`,onClick:u,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),u())},title:n,"aria-label":n,children:e})}function ee({sessionId:e,displayName:t,mergedSessions:a,editHint:s,ariaLabel:n,post:i,readClassName:l}){let d,o=(d=a.find(t=>t.sessionId===e))&&"string"==typeof d.sessionName?d.sessionName.trim():"";return(0,r.jsx)(Z,{display:t,editBaseline:o,ariaLabel:n,editHint:s,readClassName:l,onCommit:async t=>{let a=t===o?null:{type:"setSessionName",sessionId:e,name:t};a&&await i(a)}})}function et({sessionId:e,taskId:t,displayName:a,mergedSessions:s,editHint:n,ariaLabel:i,post:l,readClassName:d}){let o=function(e,t,a){let r=e.find(e=>e.sessionId===t);if(!r)return null;let s=(0,b.Wn)(r).find(e=>e.id===a);return s?{storedName:"string"==typeof s.name?s.name:"",tags:Array.isArray(s.tags)?[...s.tags]:[],project:s.project??null,personalProject:!0===s.personalProject}:null}(s,e,t),c=o?(0,h.jN)(o.storedName):"—"===a?"":a;return(0,r.jsx)(Z,{display:a,editBaseline:c,ariaLabel:i,editHint:n,readClassName:d,onCommit:async a=>{if(!o)return;let r=function(e,t,a,r){if(!e||e===(0,h.jN)(t.storedName))return null;let s=(0,h.H_)(e),n=s.name.trim()||s.tags[0]||e,i=(0,h.hk)(e,t.tags),l=(0,h.jM)(e),d=(0,h.v8)(e),o=void 0!==l?l:t.project??null,c={type:"updateTask",sessionId:a,taskId:r,name:n,tags:(0,h.Ds)(i,o)};return void 0!==l&&(c.project=l),void 0!==d&&(c.personalProject=d),c}(a,o,e,t);r&&await l(r)}})}let ea=["weekend","vacation","sick","holiday","other"];function er(e,t){return({en:{weekend:"Weekend",vacation:"Vacation",sick:"Sick leave",holiday:"Public holiday",other:"Day off (other)"},fr:{weekend:"Fin de semaine",vacation:"Vacances",sick:"Maladie",holiday:"Jour f\xe9ri\xe9",other:"Cong\xe9 (autre)"}})[t][e]}function es({kind:e,lang:t}){return(0,r.jsx)("span",{className:`inline-flex shrink-0 items-center rounded border px-2 py-0.5 text-xs font-semibold ${function(e){switch(e){case"weekend":return"border-zinc-400/50 bg-zinc-100 text-zinc-800 dark:border-zinc-600 dark:bg-zinc-800/80 dark:text-zinc-200";case"vacation":return"border-emerald-400/50 bg-emerald-50 text-emerald-900 dark:border-emerald-700/50 dark:bg-emerald-950/50 dark:text-emerald-200/95";case"sick":return"border-rose-400/50 bg-rose-50 text-rose-900 dark:border-rose-800/50 dark:bg-rose-950/45 dark:text-rose-200/95";case"holiday":return"border-sky-400/50 bg-sky-50 text-sky-900 dark:border-sky-800/50 dark:bg-sky-950/45 dark:text-sky-200/95";default:return"border-amber-400/50 bg-amber-50 text-amber-900 dark:border-amber-800/50 dark:bg-amber-950/45 dark:text-amber-200/95"}}(e)}`,children:er(e,t)})}function en({dayKey:e,value:t,lang:a,strings:s,busy:n=!1,onChange:i}){return(0,r.jsxs)("label",{className:"inline-flex min-w-0 items-center gap-1.5 text-xs text-zinc-600 dark:text-zinc-400",children:[(0,r.jsxs)("span",{className:"sr-only",children:[s.dayMarkerLabel," (",e,")"]}),(0,r.jsxs)("select",{className:"max-w-[11rem] truncate rounded-md border border-zinc-300 bg-white px-2 py-1 text-xs font-medium text-zinc-800 shadow-sm disabled:opacity-60 dark:border-zinc-600 dark:bg-zinc-900 dark:text-zinc-100",value:t??"",disabled:n,"aria-busy":n,title:s.dayMarkerLabel,onChange:e=>{let t=e.target.value;i(""===t?null:t)},children:[(0,r.jsx)("option",{value:"",children:s.dayMarkerNone}),ea.map(e=>(0,r.jsx)("option",{value:e,children:er(e,a)},e))]}),n?(0,r.jsx)("span",{className:"text-[0.65rem] text-zinc-500","aria-live":"polite",children:s.dayMarkerBusy}):null]})}let ei="scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",el="px-2 py-2 pl-3",ed="px-2 py-2 pl-10";function eo(...e){return e.filter(e=>e.trim()).join("\n\n")}function ec(e,t){return e===b.EW?t:e}function em(e,t,a){if(e===b.EW)return t;let r=new Date(`${e}T12:00:00`);return Number.isNaN(r.getTime())?e:new Intl.DateTimeFormat(a,{weekday:"long",year:"numeric",month:"long",day:"numeric"}).format(r)}function ex(e,t,a){let r=new Date(`${e}T00:00:00`);if(Number.isNaN(r.getTime()))return e;let s=new Date(r);s.setDate(s.getDate()+6);let n=new Intl.DateTimeFormat(a,{month:"short",day:"numeric"});return`${"fr"===t?"Semaine":"Week"} ${n.format(r)} - ${n.format(s)}`}function ep(e){let t=e??0;return t>0?(0,h.a3)(t):"—"}function eu(e,t){let a="{duration}",s=e.indexOf(a);if(s<0)return e;let n=(0,h.a3)(t);return(0,r.jsxs)(r.Fragment,{children:[e.slice(0,s),(0,r.jsx)("strong",{className:"font-semibold text-amber-900 tabular-nums dark:text-amber-50",children:n}),e.slice(s+a.length)]})}function eh({days:e,values:t,max:a,className:s,undatedLabel:n,valueTitle:i}){return(0,r.jsx)("div",{className:"flex items-end gap-1 overflow-x-auto pb-2",children:e.map(e=>{let l=t[e]??0,d=a>0?Math.round(l/a*100):0,o=ec(e,n),c=i?`${o}: ${i(l)}`:`${o}: ${l}`;return(0,r.jsxs)("div",{className:"flex w-8 shrink-0 flex-col items-center gap-1",children:[(0,r.jsx)("div",{className:"flex h-[100px] w-full items-end justify-center",title:c,children:(0,r.jsx)("div",{className:`w-full rounded-t ${s}`,style:{height:`${Math.max(d,3*(l>0))}px`}})}),(0,r.jsx)("span",{className:"max-w-[2.5rem] truncate text-[0.6rem] text-zinc-500",title:o,children:e===b.EW?"—":e.slice(5).replace(/^-/,"")})]},e)})})}function eb({days:e,done:t,active:a,max:s,undatedLabel:n}){return(0,r.jsx)("div",{className:"flex items-end gap-1 overflow-x-auto pb-2",children:e.map(e=>{let i=a[e]??0,l=t[e]??0,d=i+l,o=s>0?Math.round(d/s*100):0,c=d>0?Math.round(i/d*o):0,m=d>0?o-c:0,x=ec(e,n);return(0,r.jsxs)("div",{className:"flex w-8 shrink-0 flex-col items-center gap-1",children:[(0,r.jsxs)("div",{className:"flex h-[100px] w-full flex-col justify-end rounded-t bg-zinc-200/90 dark:bg-zinc-800/80",title:`${x}: ${l} / ${i}`,children:[m>0?(0,r.jsx)("div",{className:"w-full rounded-t bg-emerald-600/90",style:{height:`${m}px`}}):null,c>0?(0,r.jsx)("div",{className:"w-full bg-amber-500/90",style:{height:`${c}px`}}):null]}),(0,r.jsx)("span",{className:"max-w-[2.5rem] truncate text-[0.6rem] text-zinc-500",title:x,children:e===b.EW?"—":e.slice(5).replace(/^-/,"")})]},e)})})}function eg(e,t){if(!e.trim())return null;let a=(0,h.qu)(e),r=a.toLowerCase();for(let s of[t[r],t[a],t[e],t[e.trim().toLowerCase()]]){let e=(s??"").trim();if(e)return e}for(let[e,a]of Object.entries(t)){let t=(a??"").trim();if(t&&(0,h.qu)(e).toLowerCase()===r)return t}return null}function ek({tagKey:e,displayLabel:t,untaggedLabel:a,descriptions:s,className:n}){let i=e.trim()&&(s[(0,h.$U)(e).toLowerCase()]??s[(0,h.$U)(e)]??"").trim()||null,l=(0,h.BW)(e)?a:t;return(0,r.jsxs)("td",{className:`align-top ${n}`,children:[(0,r.jsx)("div",{children:l}),i?(0,r.jsx)("p",{className:"mt-1 max-w-[min(22rem,55vw)] whitespace-pre-line text-[0.65rem] font-normal leading-snug text-zinc-500",children:i}):null]})}function ey({projectKey:e,displayLabel:t,unassignedLabel:a,descriptions:s,className:n}){let i=eg(e,s),l=""===e?a:t;return(0,r.jsxs)("td",{className:`align-top ${n}`,children:[(0,r.jsx)("div",{children:l}),i?(0,r.jsx)("p",{className:"mt-1 max-w-[min(22rem,55vw)] whitespace-pre-line text-[0.65rem] font-normal leading-snug text-zinc-500",children:i}):null]})}function ef({rows:e,weekStart:t,rowLabel:a,helpAria:s,helpBody:n}){let{slots:i,total:l}=(0,W.ne)(e);return(0,r.jsx)("tfoot",{className:"border-t-2 border-zinc-300/90 bg-zinc-100/90 dark:border-zinc-700 dark:bg-zinc-900/60",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{scope:"row",className:`${el} text-left text-xs font-semibold uppercase tracking-wide text-zinc-600 dark:text-zinc-400`,children:(0,r.jsxs)("span",{className:"inline-flex min-w-0 items-center gap-0.5",children:[(0,r.jsx)("span",{children:a}),s&&n?(0,r.jsx)(M.p,{align:"start",ariaLabel:s,body:n}):null]})}),i.map((e,a)=>{let s=(0,W.DY)(t,a);return(0,r.jsx)("td",{className:"px-1 py-2 text-center tabular-nums font-semibold text-zinc-950 dark:text-zinc-100",title:s,children:e>0?(0,r.jsxs)(r.Fragment,{children:[(0,h.a3)(e),(0,r.jsx)("span",{className:"ml-0.5 block text-[0.65rem] font-normal leading-tight text-zinc-500 dark:text-zinc-400",children:ez(e)})]}):"—"},s)}),(0,r.jsx)("td",{className:"px-2 py-2 pr-3 text-center tabular-nums font-semibold text-zinc-950 dark:text-zinc-100",children:l>0?(0,r.jsxs)(r.Fragment,{children:[(0,h.a3)(l),(0,r.jsx)("span",{className:"ml-0.5 block text-[0.65rem] font-normal leading-tight text-zinc-500 dark:text-zinc-400",children:ez(l)})]}):"—"})]})})}function ej(e,t){let[a,r,s]=e.split("-").map(Number);if(!a||void 0===r||void 0===s)return!1;let n=new Date(a,r-1,s).getDay();if(!t)return 0===n||6===n;let i=t.split(",").map(e=>e.trim().toLowerCase().slice(0,3)),l=["sun","mon","tue","wed","thu","fri","sat"];return i.some(e=>l[n]===e)}function ez(e){let t=(15*Math.round(e/15)/60).toFixed(2).replace(/\.?0+$/,"");return` (${t.replace(".",",")} h)`}function ew({rows:e,baseDailyHours:t,toleranceMinutes:a,weekStart:s,rowLabel:n,overLabel:i,underLabel:l,okLabel:d,weekendDays:o}){let{slots:c}=(0,W.ne)(e),m=Math.round(60*t),x=c.reduce((e,t,a)=>ej((0,W.DY)(s,a),o)?e:e+(t-m),0),p=Math.abs(x);return(0,r.jsx)("tfoot",{className:"border-t border-zinc-200 dark:border-zinc-700",children:(0,r.jsxs)("tr",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:[(0,r.jsx)("th",{scope:"row",className:`${el} font-medium`,children:n}),c.map((e,t)=>{let n=(0,W.DY)(s,t);if(ej(n,o))return(0,r.jsx)("td",{className:"px-1 py-1.5 text-center tabular-nums font-medium text-zinc-300 dark:text-zinc-600",title:n,children:"—"},n);let i=e-m,l=Math.abs(i),d=0===e?"text-zinc-400 dark:text-zinc-600":l<=a?"text-emerald-600 dark:text-emerald-400":i<0?"text-red-600 dark:text-red-400":"text-orange-500 dark:text-orange-400";return(0,r.jsxs)("td",{className:`px-1 py-1.5 text-center tabular-nums font-medium ${d}`,title:n,children:[0!==i&&i>0?"+":"",(0,h.a3)(Math.abs(i)),l>0?(0,r.jsx)("span",{className:"ml-0.5 block text-[0.65rem] font-normal leading-tight text-zinc-500 dark:text-zinc-400",children:ez(e)}):null]},n)}),(0,r.jsxs)("td",{className:`px-2 py-1.5 pr-3 text-center tabular-nums font-medium ${0===x?"text-zinc-400 dark:text-zinc-600":p<=a?"text-emerald-600 dark:text-emerald-400":x<0?"text-red-600 dark:text-red-400":"text-orange-500 dark:text-orange-400"}`,children:[0!==x&&x>0?"+":"",(0,h.a3)(Math.abs(x)),(0,r.jsx)("span",{className:"ml-0.5 block text-[0.65rem] font-normal leading-tight text-zinc-500 dark:text-zinc-400",children:ez(Math.abs(x))})]})]})})}function ev({weekStart:e,taskMinutesByDay:t,rowLabel:a,helpAria:s,helpBody:n}){let i=[0,1,2,3,4,5,6].map(a=>t[(0,W.DY)(e,a)]??0),l=i.reduce((e,t)=>e+t,0);return(0,r.jsx)("tfoot",{className:"border-t-2 border-violet-300/70 bg-violet-50/80 dark:border-violet-900/50 dark:bg-violet-950/35",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{scope:"row",className:`${el} text-left text-xs font-semibold uppercase tracking-wide text-violet-900/90 dark:text-violet-200/90`,children:(0,r.jsxs)("span",{className:"inline-flex min-w-0 items-center gap-0.5",children:[(0,r.jsx)("span",{children:a}),s&&n?(0,r.jsx)(M.p,{align:"start",ariaLabel:s,body:n}):null]})}),i.map((t,a)=>{let s=(0,W.DY)(e,a);return(0,r.jsx)("td",{className:"px-1 py-2 text-center tabular-nums font-semibold text-violet-950 dark:text-violet-100",title:s,children:t>0?(0,h.a3)(t):"—"},s)}),(0,r.jsx)("td",{className:"px-2 py-2 pr-3 text-center tabular-nums font-semibold text-violet-950 dark:text-violet-100",children:l>0?(0,h.a3)(l):"—"})]})})}let eN="w-full table-fixed text-left text-sm",eT="max-w-xl w-full overflow-x-auto";function eS(){return(0,r.jsxs)("colgroup",{children:[(0,r.jsx)("col",{className:"w-[42%]"}),(0,r.jsx)("col",{className:"w-[38%]"}),(0,r.jsx)("col",{className:"w-[20%]"})]})}function eB(){return(0,r.jsxs)("colgroup",{children:[(0,r.jsx)("col",{className:"w-[68%]"}),(0,r.jsx)("col",{className:"w-[32%]"})]})}function eM({wallLabel:e,tasksSumLabel:t,plannedLabel:a,wallMinutes:s,tasksMinutesSum:n,tasksPlannedMinutesSum:i}){return(0,r.jsxs)("div",{className:"shrink-0 text-sm font-semibold tabular-nums text-zinc-700 dark:text-zinc-300",children:[(0,r.jsxs)("span",{children:[e,": ",(0,h.a3)(s)]}),(0,r.jsx)("span",{className:"mx-1.5 font-normal text-zinc-400 dark:text-zinc-600",children:"\xb7"}),(0,r.jsxs)("span",{children:[t,": ",(0,h.a3)(n)]}),i>0?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"mx-1.5 font-normal text-zinc-400 dark:text-zinc-600",children:"\xb7"}),(0,r.jsxs)("span",{className:"text-amber-800/95 dark:text-amber-200/90",children:[a,": ",(0,h.a3)(i)]})]}):null]})}function eL({minutes:e,className:t,viewTitle:a,onOpen:s}){let n=(0,h.a3)(e);return(0,r.jsx)("button",{type:"button",className:`${t} underline decoration-dotted underline-offset-2 hover:text-violet-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-violet-400/60 dark:hover:text-violet-200`,title:a,onClick:e=>{let t=e.currentTarget.getBoundingClientRect();s({x:t.left+t.width/2,y:t.bottom})},children:n})}function eD({recordedMinutes:e,plannedMinutes:t,plannedPrefix:a,viewTaskTitle:s,onOpenTask:n}){return(0,r.jsxs)("td",{className:"px-2 py-1.5 text-right align-top tabular-nums",children:[e>0?(0,r.jsx)(eL,{minutes:e,className:"text-sky-800 dark:text-sky-300/90",viewTitle:s,onOpen:n}):(0,r.jsx)("span",{className:"text-zinc-400 dark:text-zinc-500",children:"—"}),t>0?(0,r.jsxs)("div",{className:"mt-0.5 text-xs font-normal text-amber-800/95 dark:text-amber-200/90",children:[(0,r.jsx)("span",{className:"font-medium",children:a})," ",(0,r.jsx)(eL,{minutes:t,className:"font-normal text-amber-800/95 dark:text-amber-200/90",viewTitle:s,onOpen:n})]}):null]})}function eC({active:e,label:t,titleText:a}){return e?(0,r.jsx)("span",{className:"inline-flex shrink-0 items-center rounded border border-amber-400/50 bg-amber-100/90 px-1.5 py-px text-[0.65rem] font-semibold uppercase tracking-wide text-amber-900 dark:border-amber-500/35 dark:bg-amber-950/40 dark:text-amber-200/90",title:a,children:t}):null}function eK(){let e,t,a=(0,d.useRouter)(),i=(0,d.usePathname)(),J=(0,d.useSearchParams)(),X=J.get("session"),{payload:Z,error:er,refresh:ez,connectionPhase:eL}=(0,p.y)(),[eK,e$]=(0,s.useState)(!1),eW=Q(e=>e.dateFrom),eA=Q(e=>e.setDateFrom),eI=Q(e=>e.dateTo),eF=Q(e=>e.setDateTo),eE=Q(e=>e.selectedTags),eR=Q(e=>e.setSelectedTags),eP=Q(e=>e.projectMinutesScope),eH=Q(e=>e.setProjectMinutesScope),[eO,eU]=(0,s.useState)(!1),{weekStartsOn:e_,setWeekStartsOn:eY,sessionDayBreakdownOrder:eV,persistSessionDayBreakdownOrder:eq,chartWeekNavIndex:eG,setChartWeekNavIndex:eJ,tagWeekRollupOpenKeys:eX,toggleTagWeekRollup:eQ,projectWeekTagBreakdownOpenKeys:eZ,toggleProjectWeekTagBreakdown:e0,reportingTourOpen:e5,setReportingTourOpen:e2,taskInspectScope:e1,setTaskInspectScope:e9,taskInspectAnchor:e3,setTaskInspectAnchor:e4,taskInspectModalRect:e8,setTaskInspectModalRect:e6,portalReady:e7,taskInspectModalRef:te}=function(e){let[t,a]=(0,s.useState)(()=>(0,G.I2)(e)),r=Q(e=>e.sessionDayBreakdownOrder),n=Q(e=>e.setSessionDayBreakdownOrder),i=Q(e=>e.tagWeekRollupOpenKeys),l=Q(e=>e.toggleTagWeekRollup),d=Q(e=>e.projectWeekTagBreakdownOpenKeys),o=Q(e=>e.toggleProjectWeekTagBreakdown),[c,m]=(0,s.useState)(-1),[x,p]=(0,s.useState)(!1),[u,h]=(0,s.useState)(null),[b,g]=(0,s.useState)(null),[k,y]=(0,s.useState)(null),[f,j]=(0,s.useState)(!1),z=(0,s.useRef)(null),w=(0,s.useCallback)(e=>{n(e)},[n]);return(0,s.useEffect)(()=>{a((0,G.I2)(e))},[e?.dashboardCalendarWeekStartsOn]),(0,s.useEffect)(()=>{j(!0)},[]),{weekStartsOn:t,setWeekStartsOn:a,sessionDayBreakdownOrder:r,setSessionDayBreakdownOrder:n,persistSessionDayBreakdownOrder:w,chartWeekNavIndex:c,setChartWeekNavIndex:m,tagWeekRollupOpenKeys:i,toggleTagWeekRollup:l,projectWeekTagBreakdownOpenKeys:d,toggleProjectWeekTagBreakdown:o,reportingTourOpen:x,setReportingTourOpen:p,taskInspectScope:u,setTaskInspectScope:h,taskInspectAnchor:b,setTaskInspectAnchor:g,taskInspectModalRect:k,setTaskInspectModalRect:y,portalReady:f,taskInspectModalRef:z}}(Z?.cfg),tt=Q(e=>e.viewTab),ta=Q(e=>e.setViewTab),tr=Q(e=>e.scrollPositions),ts=Q(e=>e.saveScrollPosition);(0,s.useEffect)(()=>{if(!e1||!e7)return void e6(null);let e=()=>{let e=te.current;if(!e)return;let t=e.getBoundingClientRect();e6({left:t.left,top:t.top,width:t.width,height:t.height})},t=globalThis.requestAnimationFrame(e),a=()=>e();return globalThis.addEventListener("resize",a),()=>{globalThis.cancelAnimationFrame(t),globalThis.removeEventListener("resize",a)}},[e7,e1]),(0,s.useEffect)(()=>{if(!e1)return;let e=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=e}},[e1]),(0,s.useEffect)(()=>{let e=()=>{ts(tt,window.scrollY)};return window.addEventListener("beforeunload",e),document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&e()}),()=>{e(),window.removeEventListener("beforeunload",e)}},[ts,tt]);let tn=(0,s.useCallback)(async e=>{eY(e),(0,W.ck)(e);try{await (0,x.$)({type:"updateKronosysSettings",settings:{dashboardCalendarWeekStartsOn:e}}),await ez()}catch{}},[ez,eY]),ti=(0,s.useCallback)(async()=>{eU(!0);try{await (0,x.$)({type:"refreshWorkspaceCodeSnapshot"}),await ez()}catch{await ez()}finally{eU(!1)}},[ez]),tl=(0,s.useCallback)(async e=>{await (0,x.$)({type:"setLanguage",lang:e}),await ez()},[ez]),td=(0,s.useCallback)(async e=>{await (0,x.$)(e),await ez()},[ez]),to=(0,s.useMemo)(()=>(function(e){if(!e||"object"!=typeof e||Array.isArray(e))return{};let t={};for(let[r,s]of Object.entries(e)){var a;let e=r.trim();(0,Y.Q)(e)&&"string"==typeof(a=s)&&ea.includes(a)&&(t[e]=s)}return t})(Z?.cfg?.reportingCalendarDayMarkers),[Z?.cfg]),[tc,tm]=(0,s.useState)(null),tx=(0,s.useCallback)(async(e,t)=>{tm(e);try{await (0,x.$)({type:"setReportingCalendarDayMarker",dayKey:e,kind:t}),await ez()}finally{tm(null)}},[ez]),tp=(0,s.useCallback)(()=>{if("replay"!==J.get("tour"))return;let e=new URLSearchParams(J.toString());e.delete("tour");let t=e.toString();a.replace(t?`${i}?${t}`:i)},[i,a,J]),tu=Z?.current,th=tu?.language==="fr"?"fr":"en",tb=(0,C.J)(th),tg=(0,N.z)(th),tk=(0,s.useMemo)(()=>({planned:tg.sessionEndReasonPlanned,early:tg.sessionEndReasonEarly,overrun:tg.sessionEndReasonOverrun,other:tg.sessionEndReasonOther,unspecified:tb.closureBreakdownUnspecified}),[tg.sessionEndReasonPlanned,tg.sessionEndReasonEarly,tg.sessionEndReasonOverrun,tg.sessionEndReasonOther,tb.closureBreakdownUnspecified]),ty=(0,s.useCallback)(async()=>await ez({routerInvalidate:!0}),[ez]),tf=(0,s.useCallback)(async e=>{await (0,x.$)(e),await ez({routerInvalidate:!0})},[ez]),tj="fr"===th?"fr-CA":"en-CA",tz=Z?.tagDescriptions??{},tw=Z?.projectDescriptions??{},tv=(0,s.useMemo)(()=>{let e=Z?.knownTags;return Array.isArray(e)?[...new Set(e.map(e=>String(e)).filter(Boolean))].sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})):[]},[Z?.knownTags]),tN=(0,s.useMemo)(()=>{let e=Z?.knownProjects;return Array.isArray(e)?[...new Set(e.map(e=>String(e)).filter(Boolean))].sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})):[]},[Z?.knownProjects]),tT=(0,s.useMemo)(()=>(0,h.ax)(Z?.cfg),[Z?.cfg]),tS=(0,s.useMemo)(()=>(0,A.g8)(Z?.cfg),[Z?.cfg]),tB=(0,s.useMemo)(()=>(0,b.pw)(eE),[eE]),tM=(0,s.useMemo)(()=>Z?(0,b.sX)(Z):[],[Z]),tL=(0,s.useMemo)(()=>!!(eW.trim()||eI.trim()||eE.length>0),[eW,eI,eE]),tD=eW.trim()||null,tC=eI.trim()||null,tK=(0,s.useMemo)(()=>0===tM.length?null:(0,b.ah)(tM,tB,tD,tC,tS,tT),[tM,tB,tD,tC,tS,tT]),t$=(0,s.useMemo)(()=>0===tM.length?new Map:(0,b.OU)(tM,tB,tD,tC,tS,tb.tagTimeUntagged,tT),[tM,tB,tD,tC,tS,tT,tb.tagTimeUntagged]),tW=(0,s.useMemo)(()=>0===tM.length?0:(0,b.aH)(tM,tB,tD,tC,tS,tT),[tM,tB,tD,tC,tS,tT]),tA=(0,s.useMemo)(()=>(function(e,t,a,r,s,n,i=!0){let l=e?.current,d=!!l?.sessionId?.trim()&&l?.archived!==!0,o=function(e){if(!e)return 0;let t=0;for(let a of Object.values(e))t+=a??0;return t}(s)>0,c=d||o,m=!1,x=!1;if(!e)return{sessionsNonFinal:c,projectsNonFinal:m,tagsNonFinal:x};let p=a.trim()||null,u=r.trim()||null,h=!p&&!u;for(let a of(0,b.sX)(e))for(let e of(0,b.Wn)(a).filter(e=>(0,b.AJ)(e,t,i))){if(!(!0!==a.archived||(0,b.Bj)(e))||!0===e.isDone)continue;let t=(0,A.OH)(e.endTime??e.startTime,n)??(h?b.EW:null);if(t&&(h||(0,b.Vx)(t,p,u))&&(("string"==typeof e.project?e.project.trim():"")&&(m=!0),(e.tags||[]).some(e=>String(e).trim().length>0)&&(x=!0),m&&x))return{sessionsNonFinal:c,projectsNonFinal:m,tagsNonFinal:x}}return{sessionsNonFinal:c,projectsNonFinal:m,tagsNonFinal:x}})(Z,tB,eW,eI,tK?.tasksByDayActive,tS,tT),[Z,tB,eW,eI,tK?.tasksByDayActive,tS,tT]),tI=(0,s.useMemo)(()=>tK?(0,b.Ai)(tK.sessionsByDay,tK.tasksByDayDone,tK.tasksByDayActive,tK.taskMinutesByDay,tK.sessionCodingMinutesByDay,tK.sessionWallClockMinutesByDay):[],[tK]),tF=(0,s.useMemo)(()=>tI.filter(e=>e!==b.EW),[tI]),tE=(0,s.useMemo)(()=>{if(0===tM.length)return{byDay:[]};let{byDay:e}=(0,b.i0)(tM,tB,tD,tC,tS,e_,tb.tagTimeUntagged,tT);return{byDay:e}},[tM,tB,tD,tC,tS,e_,tb.tagTimeUntagged,tT]),tR=(0,s.useMemo)(()=>(0,W.Uw)(tE.byDay,e_),[tE.byDay,e_]),tP=(0,s.useMemo)(()=>0===tM.length?[]:(0,b.a$)(tM,tB,tD,tC,tS,tT,eP),[tM,tB,tD,tC,tS,tT,eP]),tH="personal"===eP?"text-rose-800 dark:text-rose-200/90":"text-sky-800 dark:text-sky-200/90",tO=(0,s.useMemo)(()=>(0,W.zQ)(tP,e_),[tP,e_]),tU=(0,s.useMemo)(()=>{if(!tK)return[];let e=new Set;for(let t of tF){let a=tK.sessionWallClockMinutesByDay[t]??0,r=tK.sessionsByDay[t]??0;if(a>0||r>0){let a=(0,W.oI)(t,e_);a&&e.add(a)}}if(0===e.size)for(let t of tR)e.add(t.weekStart);if(0===e.size)for(let t of tO)e.add(t.weekStart);for(let t of t$.keys()){if(t===b.EW)continue;let a=(0,W.oI)(t,e_);a&&e.add(a)}return[...e].sort()},[tK,tF,e_,tR,tO,t$]),t_=tU.join("|");(0,s.useEffect)(()=>{eJ(-1)},[t_]);let tY=tU.length<=1?0:eG<0?tU.length-1:Math.min(eG,tU.length-1),tV=(0,s.useMemo)(()=>{if(tU.length>1){let e=tU[tY];return e?[0,1,2,3,4,5,6].map(t=>(0,W.DY)(e,t)):tI}if(tI.filter(e=>e!==b.EW).length>0)return tI;if(1===tU.length){let e=tU[0];if(e)return[0,1,2,3,4,5,6].map(t=>(0,W.DY)(e,t))}return tI},[tU,tY,tI]),tq=(0,s.useMemo)(()=>{if(!tK)return 1;let e=0;for(let t of tV){if(t===b.EW)continue;let a=tK.sessionsByDay[t]??0;a>e&&(e=a);let r=(tK.tasksByDayDone[t]??0)+(tK.tasksByDayActive[t]??0);r>e&&(e=r)}return e||1},[tK,tV]),tG=(0,s.useMemo)(()=>{if(!tK)return 1;let e=0;for(let t of tV){if(t===b.EW)continue;let a=(tK.tasksByDayDone[t]??0)+(tK.tasksByDayActive[t]??0);a>e&&(e=a)}return e||1},[tK,tV]),tJ=(0,s.useMemo)(()=>{if(!tK)return 1;let e=0;for(let t of tV){if(t===b.EW)continue;let a=tK.taskMinutesByDay[t]??0;a>e&&(e=a)}return e||1},[tK,tV]),tX=(0,s.useMemo)(()=>{if(!tK)return 1;let e=0;for(let t of tV){if(t===b.EW)continue;let a=tK.sessionWallClockMinutesByDay[t]??0;a>e&&(e=a)}return e||1},[tK,tV]),tQ=(0,s.useMemo)(()=>{if(!tK)return 0;var e=tK.taskMinutesByDay;let t=0;for(let a of tV)a!==b.EW&&(t+=e[a]??0);return t},[tK,tV]),tZ=(0,s.useMemo)(()=>{if(0===tU.length)return null;let e=tU[tY];return e?(0,W.tj)(e,tj):null},[tU,tY,tj]),t0=(0,s.useMemo)(()=>eo(tb.metricHelpTagTimeSectionBody,tb.metricHelpTagTimeWeekTableBody,tb.metricHelpTagWeekCalendarBody,tb.metricHelpTagWeekStartsOnBody,tb.metricHelpTagWeekDistinctTotalsBody),[tb]),t5=(0,s.useMemo)(()=>eo(tb.metricHelpProjectTitleBody,tb.metricHelpProjectCalendarBody),[tb]),t2=(0,s.useMemo)(()=>{if(tU.length<=1)return tR;let e=tU[tY];return tR.filter(t=>t.weekStart===e)},[tR,tU,tY]),t1=(0,s.useMemo)(()=>{let e=new Map;for(let t of t2){let a=e.get(t.weekStart)??[];a.push(t),e.set(t.weekStart,a)}return[...e.keys()].sort().map(t=>{let a=[...e.get(t)??[]].sort((e,t)=>(0,h.BW)(e.tagKey)&&!(0,h.BW)(t.tagKey)?1:!(0,h.BW)(e.tagKey)&&(0,h.BW)(t.tagKey)?-1:e.tagKey.localeCompare(t.tagKey));return{weekStart:t,rows:a}})},[t2]),t9=(0,s.useMemo)(()=>{if(tU.length<=1)return tO;let e=tU[tY];return tO.filter(t=>t.weekStart===e)},[tO,tU,tY]),t3=(0,s.useMemo)(()=>{let e=new Map;for(let t of t2){if((0,h.BW)(t.tagKey))continue;let a=(0,h.T8)(t.tagKey);if(!a)continue;let r=(0,h.qu)(a.projectKey).toLowerCase();if(!r)continue;let s=t.tagKey.trim().toLowerCase().startsWith("!");if("work"===eP&&s||"personal"===eP&&!s)continue;let n=`${t.weekStart}:::${r}`,i=e.get(n)??[];i.push(t),e.set(n,i)}for(let[t,a]of e)e.set(t,[...a].sort((e,t)=>(0,h.$U)(e.tagKey).localeCompare((0,h.$U)(t.tagKey))));return e},[t2,eP]),t4=(0,s.useMemo)(()=>{let e=new Map;for(let t of t9){let a=e.get(t.weekStart)??[];a.push(t),e.set(t.weekStart,a)}return[...e.keys()].sort().map(t=>{let a=[...e.get(t)??[]].sort((e,t)=>""===e.projectKey&&""!==t.projectKey?1:""===t.projectKey&&""!==e.projectKey?-1:e.projectKey.localeCompare(t.projectKey));return{weekStart:t,rows:a}})},[t9]),t8=(0,s.useMemo)(()=>{let e=[],t=!tD&&!tC;for(let a of tM){let r="string"==typeof a.sessionId?a.sessionId.trim():"";if(!r)continue;let s=(0,b.Wn)(a).filter(e=>(0,b.AJ)(e,tB,tT));if(!(tB.size>0)||0!==s.length)for(let n of s){if(!(0,b.Bj)(n)&&!0===a.archived||(0,K.q)(n))continue;let s=(0,A.OH)(n.endTime??n.startTime,tS);if(!t&&!(0,b.Vx)(s,tD,tC))continue;let i=s??(t?b.EW:null);if(!i||(n.durationMs??0)/6e4<=0)continue;let l="string"==typeof n.project?n.project.trim():"",d=l?(0,h.qu)(l).toLowerCase():"",o=i!==b.EW?(0,W.oI)(i,e_):null,c=("string"==typeof n.name?n.name.trim():"")||("fr"===th?"T\xe2che sans titre":"Untitled task");e.push({sessionId:r,pausePlayMode:!0===n.isDone?null:!0===n.manualTaskTimerPaused?"resume":"pause",dayKey:i,weekStart:o,projectKey:d,tagKeys:function(e,t){let a=(e??[]).map(e=>(0,h.$U)(String(e)).toLowerCase()).filter(Boolean);return a.length>0?[...new Set(a)]:t?[h.G]:[""]}(n.tags,tT),task:{id:String(n.id??`${r}-${i}-${e.length}`),name:c,durationMs:Math.max(0,Number(n.durationMs??0)),isDone:!0===n.isDone,startTime:n.startTime,endTime:n.endTime,tags:n.tags??[],project:n.project??null}})}}return e},[tD,tC,th,tM,tS,tB,tT,e_]),t6=(0,s.useMemo)(()=>{if(!e1)return[];if("sessionDay"===e1.kind){let e=function(e,t,a,r){var s;let n=e.find(e=>e.sessionId===t);if(!n)return null;let i=(0,b.Wn)(n).find(e=>e.id===a);if(!i)return null;let l="string"==typeof i.name?i.name.trim():"";return{sessionId:t,pausePlayMode:!0===i.isDone?null:!0===i.manualTaskTimerPaused?"resume":"pause",task:{id:String(i.id??a),name:l||r,durationMs:Math.max(0,Number(i.durationMs??0)),isDone:!0===i.isDone,startTime:"string"==typeof i.startTime?i.startTime:void 0,endTime:"string"==typeof i.endTime?i.endTime:void 0,scheduledEndAt:"string"==typeof i.scheduledEndAt?i.scheduledEndAt:void 0,taskTimerLaps:Array.isArray(i.taskTimerLaps)?i.taskTimerLaps:void 0,tags:Array.isArray(i.tags)?[...i.tags]:[],project:i.project??null,personalProject:!0===i.personalProject,ganttColor:"string"==typeof i.ganttColor?i.ganttColor:null,note:"string"==typeof i.note?i.note:"",subtasks:Array.isArray(s=i.subtasks)?s.map(e=>{if(!e||"object"!=typeof e)return null;let t="string"==typeof e.id?e.id:"",a="string"==typeof e.title?e.title:"";return t?{id:t,title:a,done:!0===e.done,durationMs:"number"==typeof e.durationMs&&Number.isFinite(e.durationMs)?e.durationMs:void 0}:null}).filter(e=>null!==e):[],activeSubtaskTimerId:"string"==typeof i.activeSubtaskTimerId?i.activeSubtaskTimerId:void 0,subtaskTimerStartedAt:i.subtaskTimerStartedAt,mainTimerSegmentStartedAt:"string"==typeof i.mainTimerSegmentStartedAt?i.mainTimerSegmentStartedAt:null,taskCurrentLapStartedAt:i.taskCurrentLapStartedAt}}}(tM,e1.sessionId??"",e1.taskId??"","fr"===th?"T\xe2che sans titre":"Untitled task");return e?[e]:[]}return t8.filter(e=>(!e1.dayKey||e.dayKey===e1.dayKey)&&(!e1.weekStart||e.weekStart===e1.weekStart)&&("project"===e1.kind?e.projectKey===(e1.projectKey??""):e.tagKeys.includes(e1.tagKey??"")))},[t8,e1,tM,th]),t7=(0,s.useMemo)(()=>{if(0===t6.length)return null;let e=new Set,t=[];for(let a of t6){if(!a.sessionId||e.has(a.sessionId))continue;e.add(a.sessionId);let r=tM.find(e=>e.sessionId===a.sessionId);if(!r)continue;let s="string"==typeof r.startAt?r.startAt.trim():"",n="string"==typeof r.endAt?r.endAt.trim():"";(s||n)&&t.push({sessionId:a.sessionId,start:s,end:n})}return t.length>0?t:null},[t6,tM]),ae=(0,s.useCallback)((e,t)=>{e9(e),e4(t)},[]),at=(0,s.useMemo)(()=>"fr"===th?"Modifier la t\xe2che":"Edit task",[th]),aa=(0,s.useCallback)((e,t,a,r,s)=>{ae({kind:"sessionDay",title:a.trim()||("fr"===th?"T\xe2che":"Task"),sessionId:e,taskId:t,dayKey:r,sourceLabel:em(r,tb.undatedLabel,tj)},s)},[th,ae,tj,tb.undatedLabel]),ar=(e,t,a)=>{let s=(0,h.a3)(e),n=(15*Math.round(e/15)/60).toFixed(2).replace(/\.?0+$/,""),i=` (${n.replace(".",",")} h)`;return(0,r.jsxs)("button",{type:"button",className:`${a} underline decoration-dotted underline-offset-2 hover:text-violet-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-violet-400/60 dark:hover:text-violet-200`,onClick:e=>{let a=e.currentTarget.getBoundingClientRect();ae(t,{x:a.left+a.width/2,y:a.bottom})},title:"fr"===th?`Voir les t\xe2ches (${s})`:`View tasks (${s})`,children:[s,(0,r.jsx)("span",{className:"ml-1 block text-[0.65rem] font-normal leading-tight text-zinc-500 dark:text-zinc-400",children:i})]})},as=(0,s.useMemo)(()=>{if(!e3)return null;let e=globalThis.innerWidth,t=globalThis.innerHeight,a=Math.min(760,Math.max(320,e-32)),r=Math.min(Math.max(300,.72*t),t-32),s=e-16-(e3.x+72),n=e3.x-16-72,i=s>=n,l=Math.min(a,i?Math.max(0,s):Math.max(0,n));l<220&&(l=Math.min(a,Math.max(220,i?Math.max(0,n):Math.max(0,s))));let d=t=>Math.max(16,Math.min(t,e-l-16)),o=e=>Math.max(16,Math.min(e,t-r-16)),c=d(i?e3.x+72:e3.x-l-72);c<=e3.x+72&&e3.x-72<=c+l&&(c=d(i?e3.x-l-72:e3.x+72));let m=o(e3.y-r/2),x=e3.y-36,p=e3.y+36,u=[m,o(p+72),o(x-r-72)],h=u.filter(e=>!(e<=p&&x<=e+r)),b=h.length>0?h:u,g=b[0],k=1/0;for(let e of b){let t=Math.abs(e-m);t<k&&(k=t,g=e)}return{left:c,top:g,width:l,height:r}},[e3]),an=(0,s.useMemo)(()=>{if(!as)return null;if(!e8)return as.top;let e=globalThis.innerHeight,t=e8.top+e8.height-(e-16),a=16-e8.top,r=as.top-Math.max(0,t)+Math.max(0,a);return Math.max(16,Math.min(r,Math.max(16,e-e8.height-16)))},[e8,as]),ai=(0,s.useMemo)(()=>{if(!e3||!as)return null;let e=e8?.left??as.left,t=e8?.top??as.top,a=e8?.width??as.width,r=e8?.height??as.height,s=e+a,n=t+r,i=[{x:e+14,y:t+14},{x:s-14,y:t+14},{x:s-14,y:n-14},{x:e+14,y:n-14},{x:e+a/2,y:t+14},{x:s-14,y:t+r/2},{x:e+a/2,y:n-14},{x:e+14,y:t+r/2}],l=i[0].x,d=i[0].y,o=1/0;for(let e of i){let t=Math.hypot(e.x-e3.x,e.y-e3.y);t<o&&(o=t,l=e.x,d=e.y)}let c=l-e3.x,m=d-e3.y,x=Math.hypot(c,m);return{startX:l,startY:d,lineStartX:e3.x+(x>0?c/x:0)*14,lineStartY:e3.y+(x>0?m/x:0)*14,length:Math.max(0,x-14),angleRad:Math.atan2(m,c)}},[e3,e8,as]),al=(0,$.gn)(Z?Z.cfg:void 0),ad=Z?.cfg,ao="number"==typeof ad?.dashboardBaseDailyHours?Math.max(0,ad.dashboardBaseDailyHours):7.5,ac="number"==typeof ad?.dashboardBaseDailyToleranceMinutes?Math.max(0,ad.dashboardBaseDailyToleranceMinutes):10,am="string"==typeof ad?.dashboardWeekendDays&&ad.dashboardWeekendDays.trim()?ad.dashboardWeekendDays.trim():"sat,sun",ax=!!tK&&(tI.length>0||tU.length>1||tR.length>0||tO.length>0),ap=(0,s.useCallback)(e=>{if(e5){if(!ax){2===e&&ta("advanced");return}e<=1?ta("billing"):2===e?ta("advanced"):3===e?ta("rhythm"):e<=5&&ta("billing")}},[e5,ax]);(0,s.useEffect)(()=>{let e=()=>{let e=window.location.hash.slice(1);if(!e)return;let t=new Set(["report-workspace-snapshot","report-summary-kpis","report-closure-by-kind","report-loc-metrics","report-daily-table"]),a=new Set(["report-chart-sessions","report-chart-tasks","report-chart-task-time","report-chart-session-wall","report-session-day-task-breakdown"]),r=new Set(["report-billing-task-time","report-tag-time","report-projects"]);t.has(e)?ta("advanced"):a.has(e)?ta("rhythm"):r.has(e)&&ta("billing")};return e(),window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[]),(0,s.useEffect)(()=>{if(Z&&tK){if("replay"===J.get("tour")){e2(!0),tp();return}F.r.getState().reporting||e2(!0)}},[Z,tK,J,tp]),(0,s.useEffect)(()=>{if(!tK)return;let e=tr[tt];e&&e>0&&requestAnimationFrame(()=>window.scrollTo(0,e))},[tK,tr,tt]);let au=(0,s.useMemo)(()=>{if(!Z)return[];let e=[{id:"report-filters",label:tb.filtersTitle}];return tK?(e.push({id:"reporting-view-tabs",label:tb.tocViewTabs}),ax&&tU.length>1&&e.push({id:"report-week-nav",label:tb.tocWeekNav}),"billing"===tt?e.push({id:"report-billing-task-time",label:tb.summaryTaskTimeRecorded},{id:"report-tag-time",label:tb.tocTagTimeSection},{id:"report-projects",label:tb.projectSectionTitle}):"rhythm"===tt&&ax?e.push({id:"report-chart-sessions",label:tb.chartSessionsPerDay},{id:"report-chart-tasks",label:tb.chartTasksByStatusPerDay},{id:"report-chart-task-time",label:tb.chartTaskTimePerDay},{id:"report-chart-session-wall",label:tb.chartSessionWallPerDay},{id:"report-session-day-task-breakdown",label:tb.tocSessionDayTaskBreakdown}):"advanced"===tt&&(ax&&e.push({id:"report-daily-table",label:tb.tocDailyTable}),e.push({id:"report-summary-kpis",label:tb.tocSummaryKpis},{id:"report-closure-by-kind",label:tb.tocClosureBreakdown}),al&&(e.push({id:"report-loc-metrics",label:tb.tocLocSection}),e.push({id:"report-workspace-snapshot",label:tb.workspaceSnapshotTitle})))):al&&e.push({id:"report-workspace-snapshot",label:tb.workspaceSnapshotTitle}),e},[Z,tK,al,ax,tU.length,tt,tb]);return(0,r.jsxs)("div",{className:"min-h-screen bg-zinc-100 text-zinc-900 dark:bg-zinc-900 dark:text-zinc-100",children:[(0,r.jsxs)("header",{className:k.cI,children:[(0,r.jsxs)("div",{className:k.hu,children:[(0,r.jsxs)("div",{className:"flex min-w-0 flex-col gap-1",children:[(0,r.jsxs)("div",{className:"flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-0.5",children:[(0,r.jsx)(l(),{href:(0,U.c)("/",X),className:"text-xl font-semibold tracking-tight text-zinc-900 hover:text-violet-700 dark:text-zinc-100 dark:hover:text-violet-300",children:"Kronosys"}),(0,r.jsx)("span",{className:"text-zinc-400 dark:text-zinc-600",children:"/"}),(0,r.jsx)("span",{className:"text-lg font-medium text-zinc-700 dark:text-zinc-300",children:tb.title})]}),(0,r.jsxs)("p",{className:"flex flex-wrap items-center gap-x-2 text-xs font-medium leading-snug text-zinc-500 dark:text-zinc-400",children:[(0,r.jsx)("span",{children:tg.brandTagline}),(0,r.jsx)("span",{className:"text-zinc-400/70 dark:text-zinc-600","aria-hidden":!0,children:"\xb7"}),(0,r.jsx)(g.h,{ariaLabelTemplate:tg.appVersionAriaLabel})]})]}),(0,r.jsx)(j._,{payload:Z,dt:tg})]}),(0,r.jsx)(y.u,{leading:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(z.x,{lang:th,dt:tg}),(0,r.jsx)(w.a,{payload:Z,dt:tg,post:tf}),(0,r.jsx)(f.p,{dt:tg,lang:th,dashboardSessionNavId:X,onManualRefresh:ty})]}),nav:(0,r.jsx)(O.b,{current:"reporting",labels:(0,C.C)(th),navAriaLabel:tg.appShellRouteNavAria,dashboardSessionId:X,lang:th,dt:tg}),trailing:(0,r.jsxs)(v.b,{ariaLabel:tg.appShellUtilityToolbarGroupAria,children:[(0,r.jsx)(P.U,{lang:th}),(0,r.jsx)(H.r,{title:tg.pageRefreshTitle,ariaLabel:tg.pageRefreshAriaLabel,inlineMessages:{loading:tg.pageRefreshProgressLabel,success:tg.pageRefreshDoneToast,error:tg.pageRefreshFailedToast},onRefresh:ty}),(0,r.jsx)(V.o,{lang:th,menuHeading:"fr"===th?"Langue":"Language",triggerAriaLabel:"fr"===th?"Langue de l’interface":"Interface language",onSelect:e=>void tl(e)})]})})]}),(0,r.jsxs)("div",{className:"mx-auto w-full max-w-[90rem] px-5 py-8 sm:px-8 lg:px-10 xl:px-12",children:[(0,r.jsxs)("div",{id:"reporting-tour-anchor-intro",className:"mb-8 scroll-mt-28 space-y-3 text-sm text-zinc-600 dark:text-zinc-500",children:[(0,r.jsx)("p",{children:tb.subtitle}),(0,r.jsx)("p",{className:"text-zinc-500 dark:text-zinc-400",children:tb.archivedSessionsReportingNote}),Z?(0,r.jsx)("div",{className:"pt-1",children:(0,r.jsx)("button",{type:"button",className:"rounded-lg border border-zinc-500/50 bg-zinc-500/10 px-3 py-2 text-sm font-medium text-zinc-800 transition hover:border-zinc-500/75 hover:bg-zinc-500/18 dark:border-zinc-400/45 dark:bg-zinc-600/20 dark:text-zinc-100 dark:hover:border-zinc-400/60 dark:hover:bg-zinc-600/30",onClick:()=>{F.r.getState().resetReporting(),e2(!0)},children:tg.tourUndismissBtn})}):null]}),er&&"ready"===eL?(0,r.jsx)("div",{className:"mb-8 rounded-lg border border-amber-300/80 bg-amber-50/90 px-4 py-3 text-sm text-amber-950 dark:border-amber-800/50 dark:bg-amber-950/35 dark:text-amber-100",role:"status",children:tg.dashboardSyncErrorBanner}):null,"ready"!==eL?(0,r.jsx)(T.v,{phase:"unavailable"===eL?"unavailable":"loading",dt:tg,lang:th,technicalDetail:er,retryBusy:eK,onRetry:"unavailable"===eL?()=>{e$(!0),ez({resetBootstrapFailures:!0}).finally(()=>{e$(!1)})}:void 0}):null,Z&&(0,r.jsxs)("div",{id:"reporting-tour-anchor-toc-layout",className:"lg:flex lg:items-start lg:gap-8 xl:gap-10",children:[(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)(L,{title:tb.tocTitle,ariaLabel:tb.tocNavAria,entries:au}),(0,r.jsxs)("section",{id:"report-filters",className:"mb-10 scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 gap-y-2",children:[(0,r.jsx)("h2",{className:"text-sm font-semibold uppercase tracking-wide text-zinc-600 dark:text-zinc-400",children:tb.filtersTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.filtersHelpAriaLabel,body:tb.filtersHelpBody,preserveLineBreaks:!0,panelClassName:"w-[min(calc(100vw-2rem),24rem)]"}),(tA.sessionsNonFinal||tA.projectsNonFinal||tA.tagsNonFinal)&&(0,r.jsxs)("div",{className:"flex min-w-0 max-w-full flex-wrap items-center gap-x-1.5 gap-y-1 border-l border-zinc-600/70 pl-2.5 dark:border-zinc-500/50",children:[(0,r.jsx)("span",{className:"shrink-0 text-[0.65rem] font-semibold uppercase tracking-wide text-zinc-500 dark:text-zinc-400",children:tb.reportingNonFinalLegend}),tA.sessionsNonFinal?(0,r.jsx)("span",{className:"rounded border border-emerald-600/50 bg-emerald-950/40 px-1.5 py-0.5 text-[0.65rem] font-semibold uppercase tracking-wide text-emerald-700 dark:border-emerald-500/45 dark:bg-emerald-950/50 dark:text-emerald-400",children:tb.reportingNonFinalSessionsBadge}):null,tA.projectsNonFinal?(0,r.jsx)("span",{className:"rounded border border-emerald-600/50 bg-emerald-950/40 px-1.5 py-0.5 text-[0.65rem] font-semibold uppercase tracking-wide text-emerald-700 dark:border-emerald-500/45 dark:bg-emerald-950/50 dark:text-emerald-400",children:tb.reportingNonFinalProjectsBadge}):null,tA.tagsNonFinal?(0,r.jsx)("span",{className:"rounded border border-emerald-600/50 bg-emerald-950/40 px-1.5 py-0.5 text-[0.65rem] font-semibold uppercase tracking-wide text-emerald-700 dark:border-emerald-500/45 dark:bg-emerald-950/50 dark:text-emerald-400",children:tb.reportingNonFinalTagsBadge}):null]})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-end gap-4",children:[(0,r.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-zinc-500",children:[tb.dateFrom,(0,r.jsx)("input",{type:"date",value:eW,onChange:e=>eA(e.target.value),className:"rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-900 shadow-inner shadow-zinc-900/[0.03] dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-100 dark:shadow-none"})]}),(0,r.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-zinc-500",children:[tb.dateTo,(0,r.jsx)("input",{type:"date",value:eI,onChange:e=>eF(e.target.value),className:"rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-900 shadow-inner shadow-zinc-900/[0.03] dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-100 dark:shadow-none"})]}),(0,r.jsx)("button",{type:"button",className:"rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-100 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-300 dark:hover:bg-zinc-800",onClick:()=>{let e=B();eA(e.from),eF(e.to)},children:tb.today}),(0,r.jsx)("button",{type:"button",className:"rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-100 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-300 dark:hover:bg-zinc-800",onClick:()=>{eA(""),eF("")},children:tb.clearDates})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-col gap-2",role:"group","aria-label":tb.presetPeriodLabel,children:[(0,r.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:tb.presetPeriodLabel}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,r.jsx)("button",{type:"button",className:"rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-700 hover:border-zinc-400 hover:bg-zinc-100 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-300 dark:hover:border-zinc-500 dark:hover:bg-zinc-800",onClick:()=>{let e=B();eA(e.from),eF(e.to)},children:tb.presetDay}),(0,r.jsx)("button",{type:"button",className:"rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-700 hover:border-zinc-400 hover:bg-zinc-100 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-300 dark:hover:border-zinc-500 dark:hover:bg-zinc-800",onClick:()=>{let e=function(e=new Date){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate()),a=t.getDay();t.setDate(t.getDate()+(0===a?-6:1-a));let r=new Date(t.getFullYear(),t.getMonth(),t.getDate()),s=new Date(r);return s.setDate(s.getDate()+6),{from:S(r),to:S(s)}}();eA(e.from),eF(e.to)},children:tb.presetWeek}),(0,r.jsx)("button",{type:"button",className:"rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-700 hover:border-zinc-400 hover:bg-zinc-100 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-300 dark:hover:border-zinc-500 dark:hover:bg-zinc-800",onClick:()=>{let e=function(e=new Date){let t=new Date(e.getFullYear(),e.getMonth(),1),a=new Date(e.getFullYear(),e.getMonth()+1,0);return{from:S(t),to:S(a)}}();eA(e.from),eF(e.to)},children:tb.presetMonth}),(0,r.jsx)("button",{type:"button",className:"rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-700 hover:border-zinc-400 hover:bg-zinc-100 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-300 dark:hover:border-zinc-500 dark:hover:bg-zinc-800",onClick:()=>{let e=function(e=new Date){let t=new Date(e.getFullYear(),0,1),a=new Date(e.getFullYear(),11,31);return{from:S(t),to:S(a)}}();eA(e.from),eF(e.to)},children:tb.presetYear})]}),(0,r.jsx)("p",{className:"text-[0.65rem] leading-snug text-zinc-600",children:tb.presetPeriodHint})]}),(0,r.jsx)("p",{className:"mt-3 text-xs text-zinc-500",children:tb.tagsHint}),(0,r.jsxs)("div",{className:"mt-2",children:[(0,r.jsx)("span",{className:"text-xs font-medium uppercase text-zinc-500",children:tb.tagsLabel}),(0,r.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:0===tv.length?(0,r.jsx)("span",{className:"text-sm text-zinc-500",children:"—"}):tv.map(e=>{let t=eE.some(t=>(0,h.$U)(t).toLowerCase()===(0,h.$U)(e).toLowerCase());return(0,r.jsx)("button",{type:"button",onClick:()=>{let t;return t=(0,h.$U)(e).toLowerCase(),void(eE.some(e=>(0,h.$U)(e).toLowerCase()===t)?eR(eE.filter(e=>(0,h.$U)(e).toLowerCase()!==t)):eR([...eE,e]))},className:t?u.st:u.zE,children:(0,h.yC)(e)},e)})})]}),(0,r.jsx)("div",{className:"mt-4 flex flex-wrap items-center gap-3",children:(0,r.jsx)("button",{type:"button",disabled:!tL,className:"rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-700 hover:border-zinc-400 hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-40 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-300 dark:hover:border-zinc-500 dark:hover:bg-zinc-800",onClick:()=>{eA(""),eF(""),eR([])},children:tb.resetAllFilters})})]}),al&&!tK?(0,r.jsxs)("section",{id:"report-workspace-snapshot",className:"mb-10 scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,r.jsxs)("div",{className:"flex min-w-0 max-w-full items-center gap-1",children:[(0,r.jsx)("h2",{className:"text-sm font-semibold uppercase tracking-wide text-zinc-600 dark:text-zinc-400",children:tb.workspaceSnapshotTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpWorkspaceTitleAria,body:tb.metricHelpWorkspaceTitleBody})]}),(0,r.jsx)("button",{type:"button",disabled:eO,className:"shrink-0 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-300 dark:hover:bg-zinc-800",onClick:()=>void ti(),children:eO?tb.workspaceSnapshotRefreshing:tb.workspaceSnapshotRefresh})]}),(0,r.jsx)("p",{className:"mt-2 text-xs text-zinc-500",children:tb.workspaceSnapshotIntro}),(e=Z.workspaceCodeSnapshot)?e.ok?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"mt-2 text-xs text-zinc-500",children:"git"===e.source?tb.workspaceSnapshotSourceGit:tb.workspaceSnapshotSourceWalk}),(0,r.jsxs)("div",{className:"mt-3 flex flex-wrap gap-6 text-sm",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.workspaceSnapshotTotalLines}),(0,r.jsx)("div",{className:"tabular-nums text-lg font-semibold text-zinc-900 dark:text-zinc-100",children:e.totalLines})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.workspaceSnapshotFileCount}),(0,r.jsx)("div",{className:"tabular-nums text-lg font-semibold text-zinc-900 dark:text-zinc-100",children:e.fileCount})]})]}),0===e.byLanguage.length?(0,r.jsx)("p",{className:"mt-4 text-sm text-zinc-500",children:"—"}):(0,r.jsx)("div",{className:"mt-4 overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full min-w-[22rem] text-left text-sm",children:[(0,r.jsx)("thead",{className:"border-b border-zinc-200 text-xs uppercase text-zinc-500 dark:border-zinc-800",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"py-2 pr-3 font-medium",children:tb.workspaceSnapshotColLang}),(0,r.jsx)("th",{className:"py-2 pr-3 font-medium tabular-nums",children:tb.workspaceSnapshotColLines}),(0,r.jsx)("th",{className:"py-2 font-medium",children:tb.workspaceSnapshotColPercent})]})}),(0,r.jsx)("tbody",{children:e.byLanguage.map(e=>(0,r.jsxs)("tr",{className:"border-b border-zinc-200/90 last:border-0 dark:border-zinc-800/80",children:[(0,r.jsx)("td",{className:"py-2 pr-3 font-mono text-xs text-zinc-400",children:e.languageId}),(0,r.jsx)("td",{className:"py-2 pr-3 tabular-nums text-zinc-800 dark:text-zinc-200",children:e.lines}),(0,r.jsx)("td",{className:"py-2",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("div",{className:"h-2 min-w-[4rem] flex-1 overflow-hidden rounded bg-zinc-200 dark:bg-zinc-800",children:(0,r.jsx)("div",{className:"h-full rounded bg-sky-600/85",style:{width:`${Math.min(100,e.percent)}%`}})}),(0,r.jsxs)("span",{className:"w-14 shrink-0 tabular-nums text-zinc-400",children:[e.percent.toFixed(1),"%"]})]})})]},e.languageId))})]})})]}):(0,r.jsx)("p",{className:"mt-4 text-sm text-amber-800 dark:text-amber-200/90",children:"no_workspace"===e.reason?tb.workspaceSnapshotNoWorkspace:"empty"===e.reason?e.message||tb.workspaceSnapshotEmpty:e.message||tb.workspaceSnapshotError}):(0,r.jsx)("p",{className:"mt-4 text-sm text-zinc-500",children:tb.workspaceSnapshotRefreshHint}),tW>1e-9?(0,r.jsx)("div",{role:"status",className:"rounded-lg border border-amber-500/40 bg-amber-50 px-3 py-2.5 text-sm leading-relaxed text-amber-950 dark:border-amber-500/40 dark:bg-amber-950/30 dark:text-amber-100/95",children:eu(tb.reportingArchivedExcludedAside,tW)}):null]}):null,tK&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{id:"reporting-view-tabs",className:"mb-8 grid grid-cols-1 gap-3 sm:grid-cols-3",role:"tablist","aria-label":tb.reportingViewTabGroupAria,children:[{tab:"billing",tabId:"reporting-tab-billing",panelId:"report-view-panel-billing",label:tb.reportingViewTabBilling,desc:tb.reportingViewTabBillingDesc},{tab:"rhythm",tabId:"reporting-tab-rhythm",panelId:"report-view-panel-rhythm",label:tb.reportingViewTabRhythm,desc:tb.reportingViewTabRhythmDesc},{tab:"advanced",tabId:"reporting-tab-advanced",panelId:"report-view-panel-advanced",label:tb.reportingViewTabAdvanced,desc:tb.reportingViewTabAdvancedDesc}].map(({tab:e,tabId:t,panelId:a,label:s,desc:n})=>{let i=tt===e;return(0,r.jsxs)("button",{type:"button",role:"tab",id:t,"aria-selected":i,"aria-controls":a,className:`flex flex-col items-center rounded-xl border px-4 py-4 text-center transition sm:px-5 sm:py-5 ${i?"border-violet-500 bg-violet-100 text-violet-950 shadow-sm shadow-violet-900/10 dark:border-violet-500/70 dark:bg-violet-950/40 dark:text-violet-100 dark:shadow-none":"border-zinc-300 bg-white text-zinc-700 hover:border-zinc-400 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-600 dark:bg-zinc-900/60 dark:text-zinc-300 dark:hover:border-zinc-500 dark:hover:bg-zinc-800/80 dark:hover:text-zinc-100"}`,onClick:()=>ta(e),children:[(0,r.jsx)("span",{className:"text-sm font-semibold",children:s}),(0,r.jsx)("span",{className:`mt-2 text-xs leading-relaxed ${i?"text-violet-900/85 dark:text-violet-100/85":"text-zinc-500 dark:text-zinc-400"}`,children:n})]},e)})}),ax&&tU.length>1?(0,r.jsxs)("section",{id:"report-week-nav",className:"mb-8 scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-5","aria-label":tb.weekNavAriaLabel,children:[(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-2",children:[(0,r.jsx)("h2",{className:"text-sm font-semibold uppercase tracking-wide text-zinc-600 dark:text-zinc-400",children:tb.tocWeekNav}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle})]}),(0,r.jsxs)("div",{className:"flex flex-col items-stretch gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsx)("p",{className:"max-w-xl text-xs text-zinc-500",children:tb.weekNavHelpHint}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center justify-center gap-2 sm:justify-end",children:[(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpWeekNavAria,body:tb.metricHelpWeekNavBody}),(0,r.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-800 hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-40 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-200 dark:hover:bg-zinc-800",disabled:tY<=0,"aria-label":tb.weekNavPrev,onClick:()=>eJ(e=>Math.max(0,(e<0?tU.length-1:e)-1)),children:[(0,r.jsx)(o.A,{className:"h-4 w-4 shrink-0","aria-hidden":!0}),tb.weekNavPrev]}),(0,r.jsx)("span",{className:"min-w-[10rem] px-2 text-center text-sm font-medium tabular-nums text-zinc-900 dark:text-zinc-100",children:(0,W.tj)(tU[tY],tj)}),(0,r.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-800 hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-40 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-200 dark:hover:bg-zinc-800",disabled:tY>=tU.length-1,"aria-label":tb.weekNavNext,onClick:()=>eJ(e=>{let t=e<0?tU.length-1:e;return Math.min(tU.length-1,t+1)}),children:[tb.weekNavNext,(0,r.jsx)(c.A,{className:"h-4 w-4 shrink-0","aria-hidden":!0})]})]})]})]}):null,ax?null:(0,r.jsx)("p",{className:"mb-6 text-sm text-zinc-500",children:tb.noRowsInRange}),(0,r.jsxs)("div",{id:"report-view-panel-billing",role:"tabpanel","aria-labelledby":"reporting-tab-billing",className:"billing"!==tt?"hidden":"mb-10 space-y-6",children:[tW>1e-9?(0,r.jsx)("div",{role:"status",className:"rounded-lg border border-amber-500/40 bg-amber-50 px-3 py-2.5 text-sm leading-relaxed text-amber-950 dark:border-amber-500/40 dark:bg-amber-950/30 dark:text-amber-100/95",children:eu(tb.reportingArchivedExcludedAside,tW)}):null,(0,r.jsxs)("section",{id:"report-billing-task-time",className:`${ei} space-y-2`,children:[(0,r.jsxs)("div",{className:"flex min-h-5 items-center gap-0.5",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryTaskTimeRecorded}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpTaskTimeAria,body:eo(tb.metricHelpTaskTimeBody,tZ?tb.billingTaskTimeWeekScope.replace("{weekRange}",tZ):"")})]}),tZ?(0,r.jsx)("p",{className:"text-xs text-zinc-500",children:tb.billingTaskTimeWeekScope.replace("{weekRange}",tZ)}):null,(0,r.jsx)("div",{className:"text-2xl font-semibold tabular-nums",children:(0,h.a3)(tQ)})]}),ax?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("section",{id:"report-tag-time",className:`${ei} space-y-4`,children:[(0,r.jsxs)("div",{className:"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.tagTimeSectionTitle}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpTagTimeSectionAria,body:t0,preserveLineBreaks:!0})]}),(0,r.jsx)("p",{className:"text-xs text-zinc-500",children:tb.tagTimeSectionHint}),(0,r.jsxs)("div",{id:"report-tag-time-week",className:"space-y-4",children:[(0,r.jsxs)("fieldset",{className:"rounded-lg border border-zinc-200/90 bg-zinc-50/90 dark:border-zinc-800/90 dark:bg-zinc-950/30 p-3",children:[(0,r.jsx)("legend",{className:"px-1 text-xs text-zinc-500",children:tb.tagWeekStartsOnLegend}),(0,r.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",role:"radiogroup","aria-label":tb.tagWeekStartsOnLegend,children:[["monday",tb.weekStartsMonday],["sunday",tb.weekStartsSunday],["saturday",tb.weekStartsSaturday]].map(([e,t])=>(0,r.jsx)("button",{type:"button",role:"radio","aria-checked":e_===e,onClick:()=>tn(e),className:`rounded-md border px-3 py-1.5 text-xs font-medium transition-colors ${e_===e?"border-violet-500/80 bg-violet-100 text-violet-900 dark:bg-violet-950/50 dark:text-violet-200":"border-zinc-300 bg-white text-zinc-600 hover:border-zinc-400 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900/60 dark:text-zinc-400 dark:hover:border-zinc-600 dark:hover:text-zinc-200"}`,children:t},e))})]}),0===tR.length?(0,r.jsx)("p",{className:"text-sm text-zinc-500",children:"—"}):0===t2.length?(0,r.jsxs)("div",{className:"space-y-2 text-sm text-zinc-500",children:[(0,r.jsx)("p",{children:tb.weekNavNoTagDataThisWeek}),tW>1e-9?(0,r.jsx)("p",{className:"text-amber-800 dark:text-amber-200/90",children:eu(tb.reportingArchivedExcludedAside,tW)}):null]}):(0,r.jsx)("div",{className:"space-y-8",children:t1.map(({weekStart:e,rows:t})=>(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"mb-2",children:(0,r.jsx)("p",{className:"text-sm font-medium text-zinc-800 dark:text-zinc-300",children:(0,W.tj)(e,tj)})}),(0,r.jsx)("div",{className:"overflow-x-auto rounded-lg border border-zinc-200/80 dark:border-zinc-800/80",children:(0,r.jsxs)("table",{className:"w-full table-fixed min-w-[28rem] text-left text-sm",children:[(0,r.jsx)("thead",{className:"border-b border-zinc-200 bg-zinc-100/80 dark:border-zinc-800 dark:bg-zinc-950/40 text-xs uppercase text-zinc-500",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:`${el} font-medium`,children:tb.tagTimeColTag}),(0,W.x7)(e,tj).map(e=>(0,r.jsx)("th",{className:`px-1 py-2 text-center font-medium normal-case ${ej(e.dateKey,am)?"opacity-60":""}`,title:e.dateKey,children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-0.5 leading-tight",children:[(0,r.jsx)("span",{className:"text-[0.65rem] font-semibold uppercase tracking-wide text-zinc-500",children:e.weekdayShort}),(0,r.jsx)("span",{className:"text-[0.7rem] font-medium tabular-nums text-zinc-700 dark:text-zinc-300",children:e.calendarDateShort})]})},e.dateKey)),(0,r.jsx)("th",{className:"px-2 py-2 pr-3 text-center font-medium",children:tb.tagWeekSumColumn})]})}),(0,r.jsx)("tbody",{children:(function(e){let t=new Map,a=[],r=null;for(let s of e){if((0,h.BW)(s.tagKey)){r=s;continue}if(!(0,h.T8)(s.tagKey)){a.push(s);continue}let e=function(e){let t=(0,h.T8)(e);if(!t)return null;let a=(0,h.qu)(t.projectKey).toLowerCase();return`${a}:::${I(e)}`}(s.tagKey);if(!e){a.push(s);continue}let n=t.get(e)??[];n.push(s),t.set(e,n)}a.sort((e,t)=>(0,h.$U)(e.tagKey).localeCompare((0,h.$U)(t.tagKey)));let s=[];for(let e of a)s.push({kind:"leaf",row:e});for(let e of[...t.keys()].sort((e,t)=>e.localeCompare(t))){let a=[...t.get(e)].sort((e,t)=>(0,h.$U)(e.tagKey).localeCompare((0,h.$U)(t.tagKey))),r=e.includes(":::")?e.slice(0,e.indexOf(":::")):e;if(1===a.length){s.push({kind:"leaf",row:a[0]});continue}let n=(0,h.T8)(a[0].tagKey),i="p"===I(a[0].tagKey),l=n?(0,h.Bf)(n.projectKey,i?{personal:!0}:void 0):r,d=a[0].weekStart;s.push({kind:"rollup",projectKeyLower:r,rollupStableKey:e,displayProject:l,weekStart:d,parentSlots:function(e){let t=[0,0,0,0,0,0,0];for(let a of e)for(let e=0;e<7;e++)t[e]+=a.slots[e]??0;return t}(a),parentTotal:a.reduce((e,t)=>e+t.total,0),children:a})}return r&&s.push({kind:"leaf",row:r}),s})(t).map(t=>{if("leaf"===t.kind){let a=t.row;return(0,r.jsxs)("tr",{className:"border-b border-zinc-200/90 last:border-0 dark:border-zinc-800/70",children:[(0,r.jsx)(ek,{tagKey:a.tagKey,displayLabel:a.displayTag||a.tagKey,untaggedLabel:tb.tagTimeUntagged,descriptions:tz,className:`${el} text-violet-800 dark:text-violet-200/90`}),a.slots.map((e,t)=>{let s=(0,W.DY)(a.weekStart,t);return(0,r.jsx)("td",{className:"px-1 py-2 text-center tabular-nums text-zinc-800 dark:text-zinc-200",title:s,children:e>0?ar(e,{kind:"tag",title:a.displayTag||a.tagKey,dayKey:s,tagKey:a.tagKey,sourceLabel:ec(s,tb.undatedLabel)},"text-zinc-800 dark:text-zinc-200"):"—"},s)}),(0,r.jsx)("td",{className:"px-2 py-2 pr-3 text-center tabular-nums font-semibold text-zinc-950 dark:text-zinc-100",children:ar(a.total,{kind:"tag",title:a.displayTag||a.tagKey,weekStart:a.weekStart,tagKey:a.tagKey,sourceLabel:ex(a.weekStart,th,tj)},"text-zinc-950 dark:text-zinc-100")})]},`${e}\0${a.tagKey}`)}let a=`${e}:::${t.rollupStableKey}`,n=eX.includes(a),i=eg(t.projectKeyLower,tw)??"";return(0,r.jsxs)(s.Fragment,{children:[(0,r.jsxs)("tr",{className:"border-b border-zinc-200/90 bg-zinc-100/70 dark:border-zinc-800/70 dark:bg-zinc-900/40",children:[(0,r.jsx)("td",{className:`${el} align-top text-violet-800 dark:text-violet-200/90`,children:(0,r.jsxs)("div",{className:"flex items-start gap-1.5",children:[(0,r.jsx)("button",{type:"button","aria-expanded":n?"true":"false","aria-label":tb.tagWeekScopedRollupToggleAria,className:"mt-0.5 shrink-0 rounded p-0.5 text-zinc-500 transition hover:bg-zinc-200 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",onClick:()=>eQ(a),children:(0,r.jsx)(c.A,{className:`size-4 transition-transform duration-200 ${n?"rotate-90":""}`,strokeWidth:2,"aria-hidden":!0})}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-1.5 font-medium",children:[(0,r.jsx)("span",{children:t.displayProject}),(0,r.jsxs)("span",{className:"text-[0.65rem] font-normal tabular-nums text-zinc-500",children:["(",t.children.length,")"]})]}),i?(0,r.jsx)("p",{className:"mt-1 max-w-[min(22rem,55vw)] whitespace-pre-line text-[0.65rem] font-normal leading-snug text-zinc-500",children:i}):null]})]})}),t.parentSlots.map((e,a)=>{let s=(0,W.DY)(t.weekStart,a);return(0,r.jsx)("td",{className:"px-1 py-2 text-center tabular-nums text-zinc-800 dark:text-zinc-200",title:s,children:e>0?ar(e,{kind:"project",title:t.displayProject,dayKey:s,projectKey:t.projectKeyLower,sourceLabel:ec(s,tb.undatedLabel)},"text-zinc-800 dark:text-zinc-200"):"—"},s)}),(0,r.jsx)("td",{className:"px-2 py-2 pr-3 text-center tabular-nums font-semibold text-zinc-950 dark:text-zinc-100",children:ar(t.parentTotal,{kind:"project",title:t.displayProject,weekStart:t.weekStart,projectKey:t.projectKeyLower,sourceLabel:ex(t.weekStart,th,tj)},"text-zinc-950 dark:text-zinc-100")})]}),n?t.children.map(t=>(0,r.jsxs)("tr",{className:"border-b border-zinc-200/80 bg-zinc-50/90 dark:border-zinc-800/55 dark:bg-zinc-950/30",children:[(0,r.jsx)(ek,{tagKey:t.tagKey,displayLabel:t.displayTag||t.tagKey,untaggedLabel:tb.tagTimeUntagged,descriptions:tz,className:`${ed} text-violet-800 dark:text-violet-200/85`}),t.slots.map((e,a)=>{let s=(0,W.DY)(t.weekStart,a);return(0,r.jsx)("td",{className:"px-1 py-2 text-center tabular-nums text-zinc-700 dark:text-zinc-300/95",title:s,children:e>0?ar(e,{kind:"tag",title:t.displayTag||t.tagKey,dayKey:s,tagKey:t.tagKey,sourceLabel:ec(s,tb.undatedLabel)},"text-zinc-700 dark:text-zinc-300/95"):"—"},s)}),(0,r.jsx)("td",{className:"px-2 py-2 pr-3 text-center tabular-nums font-medium text-zinc-800 dark:text-zinc-200",children:ar(t.total,{kind:"tag",title:t.displayTag||t.tagKey,weekStart:t.weekStart,tagKey:t.tagKey,sourceLabel:ex(t.weekStart,th,tj)},"text-zinc-800 dark:text-zinc-200")})]},`${e}\0${t.tagKey}`)):null]},a)})}),(0,r.jsx)(ev,{weekStart:e,taskMinutesByDay:tK?.taskMinutesByDay??{},rowLabel:tb.tagWeekDistinctDayTotalsRow})]})})]},e))})]})]}),(0,r.jsxs)("section",{id:"report-projects",className:`${ei} space-y-4`,children:[(0,r.jsxs)("div",{className:"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.projectSectionTitle}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpProjectTitleAria,body:t5,preserveLineBreaks:!0})]}),(0,r.jsx)("p",{className:"text-xs text-zinc-500",children:tb.projectTableHint}),t9.some(e=>"default"===e.projectKey)?(0,r.jsx)("p",{className:"rounded-md border border-amber-300 bg-amber-50 px-3 py-2 text-xs font-medium text-amber-800 dark:border-amber-700 dark:bg-amber-950 dark:text-amber-200",children:"fr"===th?"⚠ Certaines t\xe2ches n'ont pas de projet explicite (@default). Ajoutez un projet (@nom) pour un suivi plus pr\xe9cis.":"⚠ Some tasks have no explicit project (@default). Add a project (@name) for more accurate tracking."}):null,(0,r.jsxs)("fieldset",{className:"rounded-lg border border-zinc-200/90 bg-zinc-50/90 dark:border-zinc-800/90 dark:bg-zinc-950/30 p-3",children:[(0,r.jsx)("legend",{className:"px-1 text-xs text-zinc-500",children:tb.projectScopeLegend}),(0,r.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2",role:"radiogroup","aria-label":tb.projectScopeGroupAria,children:[(0,r.jsx)("button",{type:"button",role:"radio","aria-checked":"work"===eP,onClick:()=>eH("work"),className:`rounded-md border px-3 py-1.5 text-xs font-medium transition-colors ${"work"===eP?"border-violet-500/80 bg-violet-100 text-violet-900 dark:bg-violet-950/50 dark:text-violet-200":"border-zinc-300 bg-white text-zinc-600 hover:border-zinc-400 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900/60 dark:text-zinc-400 dark:hover:border-zinc-600 dark:hover:text-zinc-200"}`,children:tb.projectScopeWork}),(0,r.jsx)("button",{type:"button",role:"radio","aria-checked":"personal"===eP,onClick:()=>eH("personal"),className:`rounded-md border px-3 py-1.5 text-xs font-medium transition-colors ${"personal"===eP?"border-rose-500/70 bg-rose-100 text-rose-900 dark:bg-rose-950/40 dark:text-rose-200":"border-zinc-300 bg-white text-zinc-600 hover:border-zinc-400 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-700 dark:bg-zinc-900/60 dark:text-zinc-400 dark:hover:border-zinc-600 dark:hover:text-zinc-200"}`,children:tb.projectScopePersonal})]})]}),0===tO.length?(0,r.jsx)("p",{className:"text-sm text-zinc-500",children:"—"}):0===t9.length?(0,r.jsxs)("div",{className:"space-y-2 text-sm text-zinc-500",children:[(0,r.jsx)("p",{children:tb.weekNavNoProjectDataThisWeek}),tW>1e-9?(0,r.jsx)("p",{className:"text-amber-800 dark:text-amber-200/90",children:eu(tb.reportingArchivedExcludedAside,tW)}):null]}):(0,r.jsx)("div",{className:"space-y-8",children:t4.map(({weekStart:e,rows:t})=>(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"mb-2",children:(0,r.jsx)("p",{className:"text-sm font-medium text-zinc-800 dark:text-zinc-300",children:(0,W.tj)(e,tj)})}),(0,r.jsxs)("div",{className:"overflow-x-auto rounded-lg border border-zinc-200/80 dark:border-zinc-800/80",children:[(0,r.jsxs)("table",{className:"w-full table-fixed min-w-[28rem] text-left text-sm",children:[(0,r.jsx)("thead",{className:"border-b border-zinc-200 bg-zinc-100/80 dark:border-zinc-800 dark:bg-zinc-950/40 text-xs uppercase text-zinc-500",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:`${el} font-medium`,children:tb.projectColProject}),(0,W.x7)(e,tj).map(e=>(0,r.jsx)("th",{className:`px-1 py-2 text-center font-medium normal-case ${ej(e.dateKey,am)?"opacity-60":""}`,title:e.dateKey,children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-0.5 leading-tight",children:[(0,r.jsx)("span",{className:"text-[0.65rem] font-semibold uppercase tracking-wide text-zinc-500",children:e.weekdayShort}),(0,r.jsx)("span",{className:"text-[0.7rem] font-medium tabular-nums text-zinc-700 dark:text-zinc-300",children:e.calendarDateShort})]})},`proj-${e.dateKey}`)),(0,r.jsx)("th",{className:"px-2 py-2 pr-3 text-center font-medium",children:tb.tagWeekSumColumn})]})}),(0,r.jsx)("tbody",{children:t.map(t=>{let a=(0,h.qu)(t.projectKey).toLowerCase(),n=`${e}:::${a}`,i=t3.get(n)??[],l=i.length>0,d=l&&eZ.includes(n),o=t.displayProject||t.projectKey,m=eg(t.projectKey,tw)??"";return(0,r.jsxs)(s.Fragment,{children:[(0,r.jsxs)("tr",{className:"border-b border-zinc-200/90 last:border-0 dark:border-zinc-800/70",children:[l?(0,r.jsx)("td",{className:`align-top ${el} ${tH}`,children:(0,r.jsxs)("div",{className:"flex items-start gap-1.5",children:[(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("div",{children:""===t.projectKey?tb.projectUnassigned:t.displayProject||t.projectKey}),m?(0,r.jsx)("p",{className:"mt-1 max-w-[min(22rem,55vw)] whitespace-pre-line text-[0.65rem] font-normal leading-snug text-zinc-500",children:m}):null,(0,r.jsxs)("p",{className:"mt-1 text-[0.65rem] font-normal tabular-nums text-zinc-500",children:[i.length," ","fr"===th?"\xe9tiquette(s) li\xe9e(s)":"linked tag(s)"]})]}),(0,r.jsx)("button",{type:"button","aria-expanded":d,"aria-label":tb.tagWeekScopedRollupToggleAria,className:"mt-0.5 shrink-0 rounded p-0.5 text-zinc-500 transition hover:bg-zinc-200 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",onClick:()=>e0(n),children:(0,r.jsx)(c.A,{className:`size-4 transition-transform duration-200 ${d?"rotate-90":""}`,strokeWidth:2,"aria-hidden":!0})})]})}):(0,r.jsx)(ey,{projectKey:t.projectKey,displayLabel:t.displayProject||t.projectKey,unassignedLabel:tb.projectUnassigned,descriptions:tw,className:`${el} ${tH}`}),t.slots.map((e,a)=>{let s=(0,W.DY)(t.weekStart,a);return(0,r.jsx)("td",{className:"px-1 py-2 text-center tabular-nums text-zinc-800 dark:text-zinc-200",title:s,children:e>0?ar(e,{kind:"project",title:o,dayKey:s,projectKey:t.projectKey,sourceLabel:ec(s,tb.undatedLabel)},"text-zinc-800 dark:text-zinc-200"):"—"},s)}),(0,r.jsx)("td",{className:"px-2 py-2 pr-3 text-center tabular-nums font-semibold text-zinc-950 dark:text-zinc-100",children:ar(t.total,{kind:"project",title:o,weekStart:t.weekStart,projectKey:t.projectKey,sourceLabel:ex(t.weekStart,th,tj)},"text-zinc-950 dark:text-zinc-100")})]}),d?i.map(a=>(0,r.jsxs)("tr",{className:"border-b border-zinc-200/80 bg-zinc-50/90 dark:border-zinc-800/55 dark:bg-zinc-950/30",children:[(0,r.jsx)(ek,{tagKey:a.tagKey,displayLabel:a.displayTag||a.tagKey,untaggedLabel:tb.tagTimeUntagged,descriptions:tz,className:`${ed} text-violet-800 dark:text-violet-200/85`}),a.slots.map((e,t)=>{let s=(0,W.DY)(a.weekStart,t);return(0,r.jsx)("td",{className:"px-1 py-2 text-center tabular-nums text-zinc-700 dark:text-zinc-300/95",title:s,children:e>0?ar(e,{kind:"tag",title:a.displayTag||a.tagKey,dayKey:s,tagKey:a.tagKey,sourceLabel:ec(s,tb.undatedLabel)},"text-zinc-700 dark:text-zinc-300/95"):"—"},s)}),(0,r.jsx)("td",{className:"px-2 py-2 pr-3 text-center tabular-nums font-medium text-zinc-800 dark:text-zinc-200",children:ar(a.total,{kind:"tag",title:a.displayTag||a.tagKey,weekStart:a.weekStart,tagKey:a.tagKey,sourceLabel:ex(a.weekStart,th,tj)},"text-zinc-800 dark:text-zinc-200")})]},`${e}\0${t.projectKey}\0${a.tagKey}`)):null]},`${e}\0${t.projectKey}`)})}),(0,r.jsx)(ef,{rows:t,weekStart:e,rowLabel:tb.weekCalendarDayTotalsRow}),(0,r.jsx)(ew,{rows:t,baseDailyHours:ao,toleranceMinutes:ac,weekendDays:am,weekStart:e,rowLabel:"fr"===th?"\xc9cart":"Variance",overLabel:"fr"===th?"Exc\xe9dent":"Over",underLabel:"fr"===th?"Sous":"Under",okLabel:"OK"})]}),(0,r.jsx)("p",{className:"mt-2 text-[0.6rem] leading-tight text-zinc-400 dark:text-zinc-500",children:"fr"===th?"Les valeurs entre parenth\xe8ses (0,25 h) sont arrondies au quart d'heure (15 min) pour la saisie en feuille de temps. Ex. 1 h 11 min → 1,25 h car 71 min arrondi \xe0 75 min = 1,25 h.":"Values in parentheses (0.25 h) are rounded to the nearest quarter hour (15 min) for timesheet entry. E.g., 1 h 11 min → 1.25 h because 71 min rounds to 75 min = 1.25 h."})]})]},e))})]})]}):null]}),(0,r.jsx)("div",{id:"report-view-panel-rhythm",role:"tabpanel","aria-labelledby":"reporting-tab-rhythm",className:"rhythm"!==tt?"hidden":"mb-10 space-y-6",children:ax?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"mb-10 grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,r.jsxs)("section",{id:"report-chart-sessions",className:"scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",children:[(0,r.jsxs)("div",{className:"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.chartSessionsPerDay}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpChartSessionsAria,body:tb.metricHelpChartSessionsBody})]}),(0,r.jsx)("div",{className:"mt-1 text-xs text-zinc-500",children:tb.legendSessions}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(eh,{days:tV,values:tK.sessionsByDay,max:tq,className:"bg-violet-500/90",undatedLabel:tb.undatedLabel})})]}),(0,r.jsxs)("section",{id:"report-chart-tasks",className:"scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",children:[(0,r.jsxs)("div",{className:"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.chartTasksByStatusPerDay}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpChartTasksAria,body:tb.metricHelpChartTasksBody})]}),(0,r.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-zinc-500",children:[(0,r.jsxs)("div",{className:"inline-flex items-center gap-1",children:[(0,r.jsx)("span",{className:"mr-0.5 inline-block h-2 w-2 shrink-0 rounded-sm bg-emerald-600"}),tb.legendDone]}),(0,r.jsxs)("div",{className:"inline-flex items-center gap-1",children:[(0,r.jsx)("span",{className:"mr-0.5 inline-block h-2 w-2 shrink-0 rounded-sm bg-amber-500"}),tb.legendActive]})]}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(eb,{days:tV,done:tK.tasksByDayDone,active:tK.tasksByDayActive,max:tG,undatedLabel:tb.undatedLabel})})]}),(0,r.jsxs)("section",{id:"report-chart-task-time",className:"scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",children:[(0,r.jsxs)("div",{className:"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.chartTaskTimePerDay}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpChartTaskTimeAria,body:tb.metricHelpChartTaskTimeBody})]}),(0,r.jsx)("div",{className:"mt-1 text-xs text-zinc-500",children:tb.summaryTaskTimeRecorded}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(eh,{days:tV,values:tK.taskMinutesByDay,max:tJ,className:"bg-sky-500/90",undatedLabel:tb.undatedLabel,valueTitle:e=>(0,h.a3)(e)})})]}),(0,r.jsxs)("section",{id:"report-chart-session-wall",className:"scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",children:[(0,r.jsxs)("div",{className:"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.chartSessionWallPerDay}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpChartSessionWallAria,body:tb.metricHelpChartSessionWallBody})]}),(0,r.jsx)("div",{className:"mt-1 text-xs text-zinc-500",children:tb.summarySessionWallClock}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(eh,{days:tV,values:tK.sessionWallClockMinutesByDay,max:tX,className:"bg-fuchsia-500/85",undatedLabel:tb.undatedLabel,valueTitle:e=>(0,h.a3)(e)})})]})]}),(0,r.jsxs)("section",{id:"report-session-day-task-breakdown",className:"scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",children:[(0,r.jsxs)("div",{className:"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.sessionDayTaskBreakdownTitle}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.sessionDayTaskBreakdownHelpAria,body:tb.sessionDayTaskBreakdownHelpBody})]}),(0,r.jsx)("p",{className:"mt-2 text-xs text-zinc-600 dark:text-zinc-400",children:tb.sessionDayTaskBreakdownIntro}),(0,r.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",role:"group","aria-label":tb.sessionDayBreakdownOrderGroupAria,children:[(0,r.jsx)("span",{className:"text-xs font-medium text-zinc-600 dark:text-zinc-400",children:tb.sessionDayBreakdownOrderLegend}),(0,r.jsxs)("div",{className:"inline-flex rounded-lg border border-zinc-300 p-0.5 dark:border-zinc-600",children:[(0,r.jsx)("button",{type:"button",className:"tasks-first"===eV?"rounded-md bg-violet-600 px-2.5 py-1 text-xs font-medium text-white shadow-sm dark:bg-violet-500":"rounded-md px-2.5 py-1 text-xs font-medium text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800","aria-pressed":"tasks-first"===eV,onClick:()=>eq("tasks-first"),children:tb.sessionDayBreakdownOrderTasksFirst}),(0,r.jsx)("button",{type:"button",className:"tags-first"===eV?"rounded-md bg-violet-600 px-2.5 py-1 text-xs font-medium text-white shadow-sm dark:bg-violet-500":"rounded-md px-2.5 py-1 text-xs font-medium text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800","aria-pressed":"tags-first"===eV,onClick:()=>eq("tags-first"),children:tb.sessionDayBreakdownOrderTagsFirst})]})]}),"tasks-first"===eV&&tV.some(e=>(t$.get(e)??[]).length>0)?(0,r.jsx)("div",{className:`${eT} mt-4`,children:(0,r.jsxs)("table",{className:`${eN} text-xs uppercase text-zinc-500`,children:[(0,r.jsx)(eS,{}),(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"px-2 py-1 font-medium",children:tb.sessionDayTaskBreakdownColTask}),(0,r.jsx)("th",{className:"px-2 py-1 font-medium",children:tb.sessionDayTaskBreakdownColTags}),(0,r.jsx)("th",{className:"px-2 py-1 text-right font-medium tabular-nums",children:tb.sessionDayTaskBreakdownColTime})]})})]})}):null,(0,r.jsx)("div",{className:"mt-5 space-y-8",children:tV.map(e=>{let t=t$.get(e)??[],a=to[e];return(0,r.jsxs)("div",{className:a?"rounded-lg border border-zinc-200/90 bg-zinc-50/70 px-3 pt-4 pb-2 first:border-t-0 dark:border-zinc-700/80 dark:bg-zinc-950/35":"border-t border-zinc-200 pt-6 first:border-t-0 first:pt-0 dark:border-zinc-800",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("h4",{className:"text-sm font-semibold text-zinc-800 dark:text-zinc-100",children:em(e,tb.undatedLabel,tj)}),a?(0,r.jsx)(es,{kind:a,lang:th}):null]}),e!==b.EW?(0,r.jsx)("p",{className:"mt-0.5 font-mono text-xs text-zinc-500",children:e}):null]}),(0,Y.Q)(e)?(0,r.jsx)(en,{dayKey:e,value:a,lang:th,busy:tc===e,strings:{dayMarkerLabel:tb.dayMarkerLabel,dayMarkerNone:tb.dayMarkerNone,dayMarkerBusy:tb.dayMarkerBusy},onChange:t=>void tx(e,t)}):null]}),0===t.length?(0,r.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,r.jsx)("p",{className:"text-sm text-zinc-500",children:tb.sessionDayTaskBreakdownEmptyDay}),(0,Y.Q)(e)?(0,r.jsx)(l(),{href:(0,U.c)("/",X),className:"inline-flex text-sm font-medium text-violet-700 underline decoration-dotted underline-offset-2 hover:text-violet-900 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-violet-400/60 dark:text-violet-300 dark:hover:text-violet-200",onClick:()=>(0,_._r)(e),children:tb.sessionDayTaskBreakdownAddPastSession}):null]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"mt-3 space-y-4",children:t.map(t=>(0,r.jsxs)("div",{className:"rounded-lg border border-zinc-200/90 bg-zinc-50/80 dark:border-zinc-700/90 dark:bg-zinc-950/40",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline justify-between gap-2 border-b border-zinc-200/80 px-3 py-2 dark:border-zinc-800/90",children:[(0,r.jsx)("div",{className:"min-w-0 font-medium text-zinc-900 dark:text-zinc-100",children:(0,r.jsx)(ee,{sessionId:t.sessionId,displayName:t.sessionName,mergedSessions:tM,editHint:tb.sessionDayBreakdownRenameSessionHint,ariaLabel:tb.sessionDayBreakdownRenameSessionAria,post:td})}),(0,r.jsx)(eM,{wallLabel:tb.sessionDayTaskBreakdownColWall,tasksSumLabel:tb.sessionDayTaskBreakdownTotalTasks,plannedLabel:tb.sessionDayTaskBreakdownTotalPlanned,wallMinutes:t.wallMinutesOnSessionDay,tasksMinutesSum:t.tasksMinutesSum,tasksPlannedMinutesSum:t.tasksPlannedMinutesSum})]}),0===t.tasks.length?(0,r.jsx)("p",{className:"px-3 py-2 text-sm text-zinc-500",children:tb.sessionDayTaskBreakdownNoTasksInRange}):"tags-first"===eV?(0,r.jsx)("div",{className:"space-y-2 px-1 pb-2",children:(0,b.we)(t.tasks).map(a=>(0,r.jsxs)("div",{className:"overflow-hidden rounded-md border border-zinc-200/85 dark:border-zinc-700/85",children:[(0,r.jsxs)("div",{className:"flex items-baseline justify-between gap-2 border-b border-zinc-200/70 bg-violet-100/90 px-2 py-1.5 text-xs font-semibold text-violet-950 dark:border-zinc-700/70 dark:bg-violet-950/40 dark:text-violet-100",children:[(0,r.jsx)("span",{className:"min-w-0",children:a.displayTag}),(0,r.jsx)("span",{className:"shrink-0 tabular-nums",children:(0,h.a3)(a.tagMinutesSum)})]}),(0,r.jsx)("div",{className:eT,children:(0,r.jsxs)("table",{className:eN,children:[(0,r.jsx)(eB,{}),(0,r.jsx)("thead",{className:"text-xs uppercase text-zinc-500",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"px-2 py-1 font-medium",children:tb.sessionDayTaskBreakdownColTask}),(0,r.jsx)("th",{className:"px-2 py-1 text-right font-medium tabular-nums",children:tb.sessionDayTaskBreakdownColTime})]})}),(0,r.jsx)("tbody",{children:a.lines.map(s=>(0,r.jsxs)("tr",{className:"border-t border-zinc-200/60 dark:border-zinc-800/70",children:[(0,r.jsx)("td",{className:"px-2 py-1 align-top text-zinc-800 dark:text-zinc-200",children:(0,r.jsx)(et,{sessionId:t.sessionId,taskId:s.taskId,displayName:s.name,mergedSessions:tM,editHint:tb.sessionDayBreakdownRenameTaskHint,ariaLabel:tb.sessionDayBreakdownRenameTaskAria,post:td,readClassName:"line-clamp-2"})}),(0,r.jsx)(eD,{recordedMinutes:s.minutes,plannedMinutes:s.plannedMinutes,plannedPrefix:tb.sessionDayBreakdownPlannedPrefix,viewTaskTitle:at,onOpenTask:a=>aa(t.sessionId,s.taskId,s.name,e,a)})]},`${a.tagKey}-${s.taskId}`))})]})})]},`${t.sessionId}-${a.tagKey}`))}):(0,r.jsx)("div",{className:`${eT} px-1 pb-2`,children:(0,r.jsxs)("table",{className:eN,children:[(0,r.jsx)(eS,{}),(0,r.jsx)("tbody",{children:t.tasks.map(a=>(0,r.jsxs)("tr",{className:"border-t border-zinc-200/70 dark:border-zinc-800/80",children:[(0,r.jsx)("td",{className:"px-2 py-1.5 align-top text-zinc-800 dark:text-zinc-200",children:(0,r.jsx)(et,{sessionId:t.sessionId,taskId:a.taskId,displayName:a.name,mergedSessions:tM,editHint:tb.sessionDayBreakdownRenameTaskHint,ariaLabel:tb.sessionDayBreakdownRenameTaskAria,post:td,readClassName:"line-clamp-2"})}),(0,r.jsx)("td",{className:"px-2 py-1.5 align-top text-zinc-800 dark:text-zinc-200",children:(0,r.jsx)("div",{className:"flex flex-col gap-1",children:0===a.tagSlices.length?(0,r.jsx)("span",{className:"text-xs text-zinc-500",children:"—"}):a.tagSlices.map(e=>(0,r.jsxs)("div",{className:"flex items-baseline justify-between gap-3 text-xs",children:[(0,r.jsx)("span",{className:"min-w-0 text-zinc-700 dark:text-zinc-300",children:e.displayTag}),(0,r.jsx)("span",{className:"shrink-0 tabular-nums text-zinc-600 dark:text-zinc-400",children:(0,h.a3)(e.minutes)})]},`${a.taskId}-${e.tagKey||"none"}`))})}),(0,r.jsx)(eD,{recordedMinutes:a.minutes,plannedMinutes:a.plannedMinutes,plannedPrefix:tb.sessionDayBreakdownPlannedPrefix,viewTaskTitle:at,onOpenTask:r=>aa(t.sessionId,a.taskId,a.name,e,r)})]},`${t.sessionId}-${a.taskId}`))})]})})]},t.sessionId))}),"tags-first"===eV&&(0,b.Xb)(t).length>0?(0,r.jsxs)("div",{className:"mt-4 rounded-lg border border-violet-200/90 bg-violet-50/60 p-3 dark:border-violet-900/50 dark:bg-violet-950/30",children:[(0,r.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wide text-violet-900 dark:text-violet-200/95",children:tb.sessionDayBreakdownDayTagRollupTitle}),(0,r.jsx)("div",{className:eT,children:(0,r.jsxs)("table",{className:eN,children:[(0,r.jsx)(eB,{}),(0,r.jsx)("thead",{className:"border-b border-violet-200/80 text-xs uppercase text-violet-800/90 dark:border-violet-800/60 dark:text-violet-300/90",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"py-1.5 pr-2 font-medium",children:tb.sessionDayBreakdownRollupColTag}),(0,r.jsx)("th",{className:"py-1.5 text-right font-medium tabular-nums",children:tb.sessionDayTaskBreakdownColTime})]})}),(0,r.jsx)("tbody",{children:(0,b.Xb)(t).map(t=>(0,r.jsxs)("tr",{className:"border-t border-violet-200/50 dark:border-violet-900/40",children:[(0,r.jsx)("td",{className:"py-1.5 pr-2 text-zinc-800 dark:text-zinc-200",children:t.displayTag}),(0,r.jsx)("td",{className:"py-1.5 text-right tabular-nums text-violet-900 dark:text-violet-200/90",children:ar(t.minutes,{kind:"tag",title:t.displayTag,dayKey:e,tagKey:t.tagKey,sourceLabel:em(e,tb.undatedLabel,tj)},"text-violet-900 dark:text-violet-200/90")})]},`day-${e}-${t.tagKey}`))})]})})]}):null]})]},e)})})]})]}):null}),(0,r.jsxs)("div",{id:"report-view-panel-advanced",role:"tabpanel","aria-labelledby":"reporting-tab-advanced",className:"advanced"!==tt?"hidden":"mb-10 space-y-10",children:[al?(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)("section",{id:"report-workspace-snapshot",className:"mb-10 scroll-mt-28 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,r.jsxs)("div",{className:"flex min-w-0 max-w-full items-center gap-1",children:[(0,r.jsx)("h2",{className:"text-sm font-semibold uppercase tracking-wide text-zinc-600 dark:text-zinc-400",children:tb.workspaceSnapshotTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpWorkspaceTitleAria,body:tb.metricHelpWorkspaceTitleBody})]}),(0,r.jsx)("button",{type:"button",disabled:eO,className:"shrink-0 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-600 dark:bg-transparent dark:text-zinc-300 dark:hover:bg-zinc-800",onClick:()=>void ti(),children:eO?tb.workspaceSnapshotRefreshing:tb.workspaceSnapshotRefresh})]}),(0,r.jsx)("p",{className:"mt-2 text-xs text-zinc-500",children:tb.workspaceSnapshotIntro}),(t=Z.workspaceCodeSnapshot)?t.ok?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"mt-2 text-xs text-zinc-500",children:"git"===t.source?tb.workspaceSnapshotSourceGit:tb.workspaceSnapshotSourceWalk}),(0,r.jsxs)("div",{className:"mt-3 flex flex-wrap gap-6 text-sm",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.workspaceSnapshotTotalLines}),(0,r.jsx)("div",{className:"tabular-nums text-lg font-semibold text-zinc-900 dark:text-zinc-100",children:t.totalLines})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.workspaceSnapshotFileCount}),(0,r.jsx)("div",{className:"tabular-nums text-lg font-semibold text-zinc-900 dark:text-zinc-100",children:t.fileCount})]})]}),0===t.byLanguage.length?(0,r.jsx)("p",{className:"mt-4 text-sm text-zinc-500",children:"—"}):(0,r.jsx)("div",{className:"mt-4 overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full min-w-[22rem] text-left text-sm",children:[(0,r.jsx)("thead",{className:"border-b border-zinc-200 text-xs uppercase text-zinc-500 dark:border-zinc-800",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"py-2 pr-3 font-medium",children:tb.workspaceSnapshotColLang}),(0,r.jsx)("th",{className:"py-2 pr-3 font-medium tabular-nums",children:tb.workspaceSnapshotColLines}),(0,r.jsx)("th",{className:"py-2 font-medium",children:tb.workspaceSnapshotColPercent})]})}),(0,r.jsx)("tbody",{children:t.byLanguage.map(e=>(0,r.jsxs)("tr",{className:"border-b border-zinc-200/90 last:border-0 dark:border-zinc-800/80",children:[(0,r.jsx)("td",{className:"py-2 pr-3 font-mono text-xs text-zinc-400",children:e.languageId}),(0,r.jsx)("td",{className:"py-2 pr-3 tabular-nums text-zinc-800 dark:text-zinc-200",children:e.lines}),(0,r.jsx)("td",{className:"py-2",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("div",{className:"h-2 min-w-[4rem] flex-1 overflow-hidden rounded bg-zinc-200 dark:bg-zinc-800",children:(0,r.jsx)("div",{className:"h-full rounded bg-sky-600/85",style:{width:`${Math.min(100,e.percent)}%`}})}),(0,r.jsxs)("span",{className:"w-14 shrink-0 tabular-nums text-zinc-400",children:[e.percent.toFixed(1),"%"]})]})})]},e.languageId))})]})})]}):(0,r.jsx)("p",{className:"mt-4 text-sm text-amber-800 dark:text-amber-200/90",children:"no_workspace"===t.reason?tb.workspaceSnapshotNoWorkspace:"empty"===t.reason?t.message||tb.workspaceSnapshotEmpty:t.message||tb.workspaceSnapshotError}):(0,r.jsx)("p",{className:"mt-4 text-sm text-zinc-500",children:tb.workspaceSnapshotRefreshHint})]})}):null,(0,r.jsxs)("section",{id:"report-summary-kpis",className:"mb-10 scroll-mt-28 flex flex-col gap-3",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("h2",{className:"text-sm font-semibold uppercase tracking-wide text-zinc-600 dark:text-zinc-400",children:tb.tocSummaryKpis}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpSummaryKpisSectionAria,body:tb.metricHelpSummaryKpisSectionBody})]}),(0,r.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:[(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summarySessionsInRange}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:tK.sessionCountContributing})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryTaskEvents}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:tK.taskCountContributing})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryKronoFocusCompleted}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:tK.kronoFocusSessionsCompleted})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryKronoFocusTasksUsed}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:tK.kronoFocusTasksUsedCount})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryKronoFocusCycles}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:tK.kronoFocusTaskCyclesSum})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryTaskTimeRecorded}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:(0,h.a3)(tK.taskMinutesTotal)})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summarySessionCoding}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:(0,h.a3)(tK.sessionCodingMinutesTotal)})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summarySessionActive}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:(0,h.a3)(tK.sessionActiveMinutesTotal)})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summarySessionWallClock}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:(0,h.a3)(tK.sessionWallClockMinutesTotal)})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryAssiduityWithReference}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:tK.assiduityReferenceSessionCount})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryAssiduityLateSessions}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:tK.assiduityLateSessionCount})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryAssiduityLateTotal}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:(0,h.a3)(tK.assiduityLateMinutesTotal)})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryAssiduityAvgLateWhenLate}),(0,r.jsx)("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:null==tK.assiduityAverageLateMinutesWhenLate?"—":(0,h.a3)(tK.assiduityAverageLateMinutesWhenLate)})]})]}),(0,r.jsxs)("div",{id:"report-closure-by-kind",className:"mt-4 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4",children:[(0,r.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[(0,r.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wide text-zinc-500",children:tb.closureBreakdownTitle}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpClosureBreakdownAria,body:tb.metricHelpClosureBreakdownBody})]}),(0,r.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5",children:b.mv.map(e=>{let t=tK.sessionCountByClosureKind[e]??0;return(0,r.jsxs)("div",{className:"rounded-lg border border-zinc-200/80 bg-zinc-100/70 dark:border-zinc-800/80 dark:bg-zinc-950/40 p-3",children:[(0,r.jsx)("div",{className:"text-xs uppercase text-zinc-500",children:tk[e]}),(0,r.jsx)("div",{className:"mt-1 text-xl font-semibold tabular-nums text-zinc-900 dark:text-zinc-100",children:t})]},e)})})]})]}),al?(0,r.jsxs)("section",{id:"report-loc-metrics",className:"mb-10 scroll-mt-28 space-y-4 rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none p-4 sm:p-6",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("h2",{className:"text-sm font-semibold uppercase tracking-wide text-zinc-600 dark:text-zinc-400",children:tb.tocLocSection}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpLocMetricsSectionAria,body:tb.metricHelpLocMetricsSectionBody})]}),(0,r.jsx)("p",{className:"text-xs text-zinc-500",children:tb.locMetricsHint}),(0,r.jsxs)("div",{className:"grid gap-3 sm:grid-cols-3",children:[(0,r.jsxs)("div",{className:"rounded-lg border border-zinc-200/80 bg-zinc-100/70 dark:border-zinc-800/80 dark:bg-zinc-950/40 p-3",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryLinesWrittenTotal}),(0,r.jsx)("div",{className:"mt-1 text-xl font-semibold tabular-nums text-zinc-900 dark:text-zinc-100",children:tK.linesWrittenTotalSum})]}),(0,r.jsxs)("div",{className:"rounded-lg border border-zinc-200/80 bg-zinc-100/70 dark:border-zinc-800/80 dark:bg-zinc-950/40 p-3",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryLinesWrittenHuman}),(0,r.jsx)("div",{className:"mt-1 text-xl font-semibold tabular-nums text-emerald-400/90",children:tK.linesWrittenHumanSum})]}),(0,r.jsxs)("div",{className:"rounded-lg border border-zinc-200/80 bg-zinc-100/70 dark:border-zinc-800/80 dark:bg-zinc-950/40 p-3",children:[(0,r.jsx)("span",{className:"text-xs uppercase text-zinc-500",children:tb.summaryLinesWrittenAi}),(0,r.jsx)("div",{className:"mt-1 text-xl font-semibold tabular-nums text-violet-400/90",children:tK.linesWrittenAiSum})]})]}),(0,r.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.locByLanguageSectionTitle}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle})]}),0===tK.locByLanguageMerged.length?(0,r.jsx)("p",{className:"mt-3 text-sm text-zinc-500",children:"—"}):(0,r.jsxs)("table",{className:"mt-3 w-full min-w-[12rem] text-left text-sm",children:[(0,r.jsx)("thead",{className:"border-b border-zinc-200 text-xs uppercase text-zinc-500 dark:border-zinc-800",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"py-2 pr-3 font-medium",children:tb.locByLanguageColLang}),(0,r.jsx)("th",{className:"py-2 font-medium tabular-nums",children:tb.locByLanguageColLines})]})}),(0,r.jsx)("tbody",{children:tK.locByLanguageMerged.map(([e,t])=>(0,r.jsxs)("tr",{className:"border-b border-zinc-200/90 last:border-0 dark:border-zinc-800/80",children:[(0,r.jsx)("td",{className:"py-2 pr-3 font-mono text-xs text-zinc-400",children:e}),(0,r.jsx)("td",{className:"py-2 tabular-nums text-zinc-800 dark:text-zinc-200",children:t})]},e))})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.codingSignalsSectionTitle}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle})]}),0===tK.codingSignalsByLanguageMerged.length?(0,r.jsx)("p",{className:"mt-3 text-sm text-zinc-500",children:"—"}):(0,r.jsxs)("table",{className:"mt-3 w-full min-w-[12rem] text-left text-sm",children:[(0,r.jsx)("thead",{className:"border-b border-zinc-200 text-xs uppercase text-zinc-500 dark:border-zinc-800",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"py-2 pr-3 font-medium",children:tb.codingSignalsColLang}),(0,r.jsx)("th",{className:"py-2 font-medium tabular-nums",children:tb.codingSignalsColCount})]})}),(0,r.jsx)("tbody",{children:tK.codingSignalsByLanguageMerged.map(([e,t])=>(0,r.jsxs)("tr",{className:"border-b border-zinc-200/90 last:border-0 dark:border-zinc-800/80",children:[(0,r.jsx)("td",{className:"py-2 pr-3 font-mono text-xs text-zinc-400",children:e}),(0,r.jsx)("td",{className:"py-2 tabular-nums text-zinc-800 dark:text-zinc-200",children:t})]},e))})]})]})]})]}):null,ax?(0,r.jsxs)("section",{id:"report-daily-table",className:"scroll-mt-28 overflow-x-auto rounded-xl border border-zinc-200 bg-white/95 shadow-sm shadow-zinc-900/[0.06] dark:border-zinc-800 dark:bg-zinc-900/50 dark:shadow-none",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-200",children:tb.tocDailyTable}),(0,r.jsx)(eC,{active:tL,label:tb.sectionFilteredBadge,titleText:tb.sectionFilteredBadgeTitle}),(0,r.jsx)(M.p,{ariaLabel:tb.metricHelpDailyTableSectionAria,body:tb.metricHelpDailyTableSectionBody})]}),(0,r.jsxs)("table",{className:"w-full min-w-[48rem] text-left text-sm",children:[(0,r.jsx)("thead",{className:"border-b border-zinc-200 text-xs uppercase text-zinc-500 dark:border-zinc-800",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"px-4 py-3 font-medium",children:tb.tableDay}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium tabular-nums",children:tb.tableSessions}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium tabular-nums",children:tb.tableSessionWall}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium tabular-nums",children:tb.tableDone}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium tabular-nums",children:tb.tableActive}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium tabular-nums",children:tb.tableTaskTime}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium tabular-nums",children:tb.tableTaskTimeNonConcurrent}),(0,r.jsx)("th",{className:"px-4 py-3 font-medium tabular-nums",children:tb.tableSessionCoding})]})}),(0,r.jsx)("tbody",{children:tV.map(e=>(0,r.jsxs)("tr",{className:"border-b border-zinc-200/90 last:border-0 dark:border-zinc-800/80",children:[(0,r.jsx)("td",{className:"px-4 py-2.5 text-zinc-900 dark:text-zinc-200",children:ec(e,tb.undatedLabel)}),(0,r.jsx)("td",{className:"px-4 py-2.5 tabular-nums text-zinc-700 dark:text-zinc-300",children:tK.sessionsByDay[e]??0}),(0,r.jsx)("td",{className:"px-4 py-2.5 tabular-nums text-fuchsia-800 dark:text-fuchsia-300/90",children:ep(tK.sessionWallClockMinutesByDay[e])}),(0,r.jsx)("td",{className:"px-4 py-2.5 tabular-nums text-emerald-800 dark:text-emerald-400/90",children:tK.tasksByDayDone[e]??0}),(0,r.jsx)("td",{className:"px-4 py-2.5 tabular-nums text-amber-800 dark:text-amber-400/90",children:tK.tasksByDayActive[e]??0}),(0,r.jsx)("td",{className:"px-4 py-2.5 tabular-nums text-sky-800 dark:text-sky-300/90",children:ep(tK.taskMinutesByDay[e])}),(0,r.jsx)("td",{className:"px-4 py-2.5 tabular-nums text-cyan-800 dark:text-cyan-300/90",children:ep(tK.nonConcurrentTaskMinutesByDay[e])}),(0,r.jsx)("td",{className:"px-4 py-2.5 tabular-nums text-zinc-700 dark:text-zinc-300",children:ep(tK.sessionCodingMinutesByDay[e])})]},e))})]})]}):null]})]})]}),(0,r.jsx)(D,{title:tb.tocTitle,ariaLabel:tb.tocNavAria,entries:au})]})]}),(0,r.jsx)("div",{"aria-hidden":!0,className:"pointer-events-none h-[45vh] min-h-44 max-h-80"}),(0,r.jsx)(R.n,{ariaLabel:tb.scrollToTopAria}),e7&&e1?(0,n.createPortal)((0,r.jsxs)("div",{className:"fixed inset-0 z-[140] bg-black/65 p-4",role:"dialog","aria-modal":"true","aria-label":"fr"===th?"D\xe9tails des t\xe2ches":"Task details",children:[e3&&ai?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"pointer-events-none fixed z-[141] size-1.5 -translate-x-1/2 -translate-y-1/2 rounded-full bg-violet-200/70 shadow-[0_0_0_1px_rgba(255,255,255,0.08)]",style:{left:`${e3.x}px`,top:`${e3.y}px`}}),(0,r.jsx)("div",{className:"pointer-events-none fixed z-[141] h-px origin-left border-t border-dashed border-violet-200/45",style:{left:`${ai.lineStartX}px`,top:`${ai.lineStartY}px`,width:`${ai.length}px`,transform:`rotate(${ai.angleRad}rad)`}})]}):null,(0,r.jsxs)("div",{ref:te,className:"max-h-[72vh] overflow-hidden rounded-xl border border-zinc-200 bg-white shadow-2xl dark:border-zinc-700 dark:bg-zinc-900",style:as?{position:"fixed",left:`${as.left}px`,top:`${an??as.top}px`,width:`${as.width}px`}:{position:"fixed",left:"50%",top:"50%",width:"min(56rem, calc(100vw - 2rem))",transform:"translate(-50%, -50%)"},children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-700",children:[(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("h2",{className:"min-w-0 truncate text-sm font-semibold text-zinc-900 sm:text-base dark:text-zinc-100",children:"fr"===th?`D\xe9tails des t\xe2ches - ${e1.title}`:`Task details - ${e1.title}`}),e1.sourceLabel?(0,r.jsx)("p",{className:"mt-0.5 truncate text-[0.7rem] text-zinc-600 dark:text-zinc-400",children:"sessionDay"===e1.kind?"fr"===th?`Jour : ${e1.sourceLabel}`:`Day: ${e1.sourceLabel}`:"fr"===th?`Source : ${"tag"===e1.kind?"\xc9tiquette":"Projet"} - ${e1.sourceLabel}`:`Source: ${"tag"===e1.kind?"Tag":"Project"} - ${e1.sourceLabel}`}):null,t7?(0,r.jsx)("div",{className:"mt-1.5 space-y-0.5",children:t7.map(e=>(0,r.jsxs)("p",{className:"truncate text-[0.65rem] text-zinc-500 dark:text-zinc-400",children:["Session",": ",(0,m._)(e.start,th)??"—"," → ",(0,m._)(e.end,th)??"—"]},e.sessionId))}):null]}),(0,r.jsx)("button",{type:"button",className:"rounded border border-zinc-300 px-2 py-1 text-xs text-zinc-800 hover:bg-zinc-100 dark:border-zinc-600 dark:text-zinc-200 dark:hover:bg-zinc-800",onClick:()=>{e9(null),e4(null),e6(null)},children:"fr"===th?"Fermer":"Close"})]}),(0,r.jsx)("div",{className:"max-h-[calc(72vh-3.25rem)] overflow-y-auto p-4",children:t6.length>0?(0,r.jsx)("div",{className:"space-y-3",children:t6.map(e=>(0,r.jsx)(q.E,{task:e.task,lang:th,calendarWeekStartsOn:e_,isInspecting:!0,inspectingId:e.sessionId,knownTags:tv,knownProjects:tN,post:td,t:tg,confirmDeleteTask:()=>{},kronoFocusIsRunningOrPaused:!1,showKronoFocusTaskActions:!1,startKronoFocusFromTask:()=>{},onDuplicateTask:()=>{},pausePlayMode:e.pausePlayMode,onPausePlay:()=>{},showTaskActionButtons:!1,allowAddSubtasks:!1,showLiveTimerWhenInspecting:!0,deriveLiveTimerFromStartTime:!1},`${e.sessionId}\0${e.task.id}`))}):(0,r.jsx)("p",{className:"text-sm text-zinc-600 dark:text-zinc-400",children:"fr"===th?"Aucune t\xe2che correspondante pour ce segment de temps.":"No matching tasks for this time segment."})})]})]}),document.body):null,(0,r.jsx)(E,{open:e5,onOpenChange:e2,onStepChange:ap,dt:tg,hasReportingChartData:ax})]})}function e$(){return(0,r.jsx)(s.Suspense,{fallback:(0,r.jsx)("div",{className:"min-h-screen bg-zinc-100 px-6 py-10 text-sm text-zinc-500 dark:bg-zinc-900",children:"Kronosys…"}),children:(0,r.jsx)(eK,{})})}},6565:(e,t,a)=>{Promise.resolve().then(a.bind(a,6117))}},e=>{e.O(0,[34,555,102,317,227,569,918,952,441,794,358],()=>e(e.s=6565)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"1.0.0-beta.
|
|
1
|
+
{"version":"1.0.0-beta.40"}
|