Add side panels, task selection, graph animation, and project docs

- Foldable left panel (user profile) and right panel (task details)
- Clicking a task in the list or graph node selects it and shows details
- Both views (task list + graph) always mounted via absolute inset-0 for
  correct canvas dimensions; tabs toggle visibility with opacity
- Graph node selection animation: other nodes repel outward (charge -600),
  then selected node smoothly slides to center (500ms cubic ease-out),
  then charge restores to -120 and graph stabilizes
- Graph re-fits on tab switch and panel resize via ResizeObserver
- Fix UUID string IDs throughout (backend returns UUIDs, not integers)
- Add TaskDetailPanel, UserPanel components
- Add CLAUDE.md project documentation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Alvis
2026-04-08 11:23:06 +00:00
parent 5c7edd4bbc
commit f1d51b8cc8
23998 changed files with 3242708 additions and 0 deletions

2
frontend/node_modules/dlv/dist/dlv.es.js generated vendored Normal file
View File

@@ -0,0 +1,2 @@
export default function(t,e,l,n,r){for(e=e.split?e.split("."):e,n=0;n<e.length;n++)t=t?t[e[n]]:r;return t===r?l:t}
//# sourceMappingURL=dlv.es.js.map

1
frontend/node_modules/dlv/dist/dlv.es.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"dlv.es.js","sources":["../index.js"],"sourcesContent":["export default function dlv(obj, key, def, p, undef) {\n\tkey = key.split ? key.split('.') : key;\n\tfor (p = 0; p < key.length; p++) {\n\t\tobj = obj ? obj[key[p]] : undef;\n\t}\n\treturn obj === undef ? def : obj;\n}\n"],"names":["obj","key","def","p","undef","split","length"],"mappings":"eAAe,SAAaA,EAAKC,EAAKC,EAAKC,EAAGC,OAC7CH,EAAMA,EAAII,MAAQJ,EAAII,MAAM,KAAOJ,EAC9BE,EAAI,EAAGA,EAAIF,EAAIK,OAAQH,IAC3BH,EAAMA,EAAMA,EAAIC,EAAIE,IAAMC,SAEpBJ,IAAQI,EAAQF,EAAMF"}

2
frontend/node_modules/dlv/dist/dlv.js generated vendored Normal file
View File

@@ -0,0 +1,2 @@
module.exports=function(t,e,l,n,o){for(e=e.split?e.split("."):e,n=0;n<e.length;n++)t=t?t[e[n]]:o;return t===o?l:t};
//# sourceMappingURL=dlv.js.map

1
frontend/node_modules/dlv/dist/dlv.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"dlv.js","sources":["../index.js"],"sourcesContent":["export default function dlv(obj, key, def, p, undef) {\n\tkey = key.split ? key.split('.') : key;\n\tfor (p = 0; p < key.length; p++) {\n\t\tobj = obj ? obj[key[p]] : undef;\n\t}\n\treturn obj === undef ? def : obj;\n}\n"],"names":["obj","key","def","p","undef","split","length"],"mappings":"eAAe,SAAaA,EAAKC,EAAKC,EAAKC,EAAGC,OAC7CH,EAAMA,EAAII,MAAQJ,EAAII,MAAM,KAAOJ,EAC9BE,EAAI,EAAGA,EAAIF,EAAIK,OAAQH,IAC3BH,EAAMA,EAAMA,EAAIC,EAAIE,IAAMC,SAEpBJ,IAAQI,EAAQF,EAAMF"}

2
frontend/node_modules/dlv/dist/dlv.umd.js generated vendored Normal file
View File

@@ -0,0 +1,2 @@
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=function(t,n,e,i,o){for(n=n.split?n.split("."):n,i=0;i<n.length;i++)t=t?t[n[i]]:o;return t===o?e:t}:"function"==typeof define&&define.amd?define(function(){return function(t,n,e,i,o){for(n=n.split?n.split("."):n,i=0;i<n.length;i++)t=t?t[n[i]]:o;return t===o?e:t}}):t.dlv=function(t,n,e,i,o){for(n=n.split?n.split("."):n,i=0;i<n.length;i++)t=t?t[n[i]]:o;return t===o?e:t}}(this);
//# sourceMappingURL=dlv.umd.js.map

1
frontend/node_modules/dlv/dist/dlv.umd.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"dlv.umd.js","sources":["../index.js"],"sourcesContent":["export default function dlv(obj, key, def, p, undef) {\n\tkey = key.split ? key.split('.') : key;\n\tfor (p = 0; p < key.length; p++) {\n\t\tobj = obj ? obj[key[p]] : undef;\n\t}\n\treturn obj === undef ? def : obj;\n}\n"],"names":["obj","key","def","p","undef","split","length"],"mappings":"mFAAe,SAAaA,EAAKC,EAAKC,EAAKC,EAAGC,OAC7CH,EAAMA,EAAII,MAAQJ,EAAII,MAAM,KAAOJ,EAC9BE,EAAI,EAAGA,EAAIF,EAAIK,OAAQH,IAC3BH,EAAMA,EAAMA,EAAIC,EAAIE,IAAMC,SAEpBJ,IAAQI,EAAQF,EAAMF,kEALf,SAAaA,EAAKC,EAAKC,EAAKC,EAAGC,OAC7CH,EAAMA,EAAII,MAAQJ,EAAII,MAAM,KAAOJ,EAC9BE,EAAI,EAAGA,EAAIF,EAAIK,OAAQH,IAC3BH,EAAMA,EAAMA,EAAIC,EAAIE,IAAMC,SAEpBJ,IAAQI,EAAQF,EAAMF,WALf,SAAaA,EAAKC,EAAKC,EAAKC,EAAGC,OAC7CH,EAAMA,EAAII,MAAQJ,EAAII,MAAM,KAAOJ,EAC9BE,EAAI,EAAGA,EAAIF,EAAIK,OAAQH,IAC3BH,EAAMA,EAAMA,EAAIC,EAAIE,IAAMC,SAEpBJ,IAAQI,EAAQF,EAAMF"}