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

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1 @@
c5a735a036ec65bc

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"_rt-tokio\", \"_tls-rustls\", \"any\", \"crc\", \"default\", \"json\", \"migrate\", \"offline\", \"rustls\", \"rustls-pemfile\", \"serde\", \"serde_json\", \"sha2\", \"tokio\", \"tokio-stream\", \"webpki-roots\"]","declared_features":"[\"_rt-async-std\", \"_rt-tokio\", \"_tls-native-tls\", \"_tls-none\", \"_tls-rustls\", \"any\", \"async-io\", \"async-std\", \"bigdecimal\", \"bit-vec\", \"bstr\", \"chrono\", \"crc\", \"default\", \"digest\", \"encoding_rs\", \"ipnetwork\", \"json\", \"mac_address\", \"migrate\", \"native-tls\", \"num-bigint\", \"offline\", \"regex\", \"rust_decimal\", \"rustls\", \"rustls-pemfile\", \"serde\", \"serde_json\", \"sha1\", \"sha2\", \"time\", \"tokio\", \"tokio-stream\", \"uuid\", \"webpki-roots\"]","target":2042750936636613814,"profile":15657897354478470176,"path":12715479326652293184,"deps":[[302948626015856208,"futures_core",false,2468974453932660575],[530211389790465181,"hex",false,14212554984336338939],[788558663644978524,"crossbeam_queue",false,5754882154783770224],[966925859616469517,"ahash",false,9977856390235161376],[1363051979936526615,"memchr",false,3683407666151743318],[1464803193346256239,"event_listener",false,4218970733395139038],[1528297757488249563,"url",false,14659701924419566977],[3405817021026194662,"hashlink",false,13448590758613485344],[3646857438214563691,"futures_intrusive",false,5539349901934390645],[3666196340704888985,"smallvec",false,4779431105772383722],[3712811570531045576,"byteorder",false,6664921756188333092],[3870702314125662939,"bytes",false,2709368896986884538],[5855319743879205494,"once_cell",false,3855828545801537437],[5898568623609459682,"futures_util",false,17833620431097856884],[6803352382179706244,"percent_encoding",false,2496778773300025267],[8008191657135824715,"thiserror",false,11395057855069954267],[9128867168860799549,"futures_channel",false,10146779300635423031],[9857275760291862238,"sha2",false,15969946793932166763],[10257923056054025583,"tokio_stream",false,8010625402444449696],[10630857666389190470,"log",false,1346787831988500618],[10862088793507253106,"sqlformat",false,7702989184519215943],[11295624341523567602,"rustls",false,3600194602438844772],[11774132962602622357,"indexmap",false,6190099684837206637],[12170264697963848012,"either",false,7859406849043667307],[13548984313718623784,"serde",false,13993743657434939901],[13795362694956882968,"serde_json",false,14792315538488301761],[14757622794040968908,"tracing",false,3568424343064569723],[16311359161338405624,"rustls_pemfile",false,17522626658324135149],[16498904324486754729,"crc",false,2030266933250296830],[17106256174509013259,"atoi",false,7567001054104054517],[17541620359049798014,"tokio",false,15060466786909538481],[17605717126308396068,"paste",false,11697934626383394899],[17652733826348741533,"webpki_roots",false,12353016042180054540],[17736352539849991289,"futures_io",false,8306102063533379180]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/sqlx-core-fd9a7e88e2d48b8d/dep-lib-sqlx_core","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}