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

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[966925859616469517,"build_script_build",false,1624306561912834101]],"local":[{"RerunIfChanged":{"output":"release/build/ahash-091d3d2cb8d211f8/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
74577542e3277466

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"getrandom\", \"runtime-rng\", \"std\"]","declared_features":"[\"atomic-polyfill\", \"compile-time-rng\", \"const-random\", \"default\", \"getrandom\", \"nightly-arm-aes\", \"no-rng\", \"runtime-rng\", \"serde\", \"std\"]","target":8470944000320059508,"profile":2040997289075261528,"path":6583748113720099799,"deps":[[966925859616469517,"build_script_build",false,1464188638120142197],[3612005756660025491,"zerocopy",false,17494253497863268549],[5855319743879205494,"once_cell",false,16552463752649564726],[7667230146095136825,"cfg_if",false,2186361646102707522],[18408407127522236545,"getrandom",false,8958231819482926857]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/ahash-40781b5d523fea9b/dep-lib-ahash","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[966925859616469517,"build_script_build",false,1624306561912834101]],"local":[{"RerunIfChanged":{"output":"release/build/ahash-52001d7fd4076fa5/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"getrandom\", \"runtime-rng\", \"std\"]","declared_features":"[\"atomic-polyfill\", \"compile-time-rng\", \"const-random\", \"default\", \"getrandom\", \"nightly-arm-aes\", \"no-rng\", \"runtime-rng\", \"serde\", \"std\"]","target":17883862002600103897,"profile":1369601567987815722,"path":12798855230794838362,"deps":[[5398981501050481332,"version_check",false,4350043254932975801]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/ahash-621b00cf4580623f/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

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

View File

@@ -0,0 +1 @@
28f02dd7b7611439

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"getrandom\", \"runtime-rng\", \"std\"]","declared_features":"[\"atomic-polyfill\", \"compile-time-rng\", \"const-random\", \"default\", \"getrandom\", \"nightly-arm-aes\", \"no-rng\", \"runtime-rng\", \"serde\", \"std\"]","target":8470944000320059508,"profile":1369601567987815722,"path":6583748113720099799,"deps":[[966925859616469517,"build_script_build",false,1919022544243310592],[3612005756660025491,"zerocopy",false,15234903195940310365],[5855319743879205494,"once_cell",false,13011429461946841334],[7667230146095136825,"cfg_if",false,12660270242100428499],[18408407127522236545,"getrandom",false,16345301961394070137]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/ahash-7de38b03da5cd542/dep-lib-ahash","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
41fb416b3d0579fa

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"alloc\"]","declared_features":"[\"alloc\", \"default\", \"fresh-rust\", \"nightly\", \"serde\", \"std\"]","target":5388200169723499962,"profile":10062236005175321273,"path":8150134181990057235,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/allocator-api2-d4bcbf01c9731805/dep-lib-allocator_api2","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
0f0437741e246a8c

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"alloc\"]","declared_features":"[\"alloc\", \"default\", \"fresh-rust\", \"nightly\", \"serde\", \"std\"]","target":5388200169723499962,"profile":4067574213046180398,"path":8150134181990057235,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/allocator-api2-e8e82f7cd7b8658f/dep-lib-allocator_api2","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
c1cdfbe5b26da8f2

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":1563897884725121975,"profile":2040997289075261528,"path":13913051421499132848,"deps":[[12478428894219133322,"build_script_build",false,4816183460687092035]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/anyhow-5d2982aeb53ddad7/dep-lib-anyhow","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":5408242616063297496,"profile":1369601567987815722,"path":1592513962797247754,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/anyhow-82d84b2713591c2c/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[12478428894219133322,"build_script_build",false,12715555506739515007]],"local":[{"RerunIfChanged":{"output":"release/build/anyhow-ff7278fc99e605f3/output","paths":["src/nightly.rs"]}},{"RerunIfEnvChanged":{"var":"RUSTC_BOOTSTRAP","val":null}}],"rustflags":[],"config":0,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
65b1f0a1d9a32889

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[]","target":5116616278641129243,"profile":1369601567987815722,"path":13248684844495357844,"deps":[[4289358735036141001,"proc_macro2",false,12875634249751312574],[10420560437213941093,"syn",false,3635429161447874527],[13111758008314797071,"quote",false,7508059392058957762]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/async-trait-afea7be97ed9a044/dep-lib-async_trait","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
9ee792252ff80c51

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":2515742790907851906,"profile":1369601567987815722,"path":12575998081724658878,"deps":[[5157631553186200874,"num_traits",false,4572053803368034412]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/atoi-3fe726f041345bc7/dep-lib-atoi","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
d1d0403b36497801

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":2515742790907851906,"profile":2040997289075261528,"path":12575998081724658878,"deps":[[5157631553186200874,"num_traits",false,13114170802189624428]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/atoi-c9198cd51aaab159/dep-lib-atoi","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
0cdb1d08b414ad57

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[\"portable-atomic\"]","target":14411119108718288063,"profile":2040997289075261528,"path":14866621870726532260,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/atomic-waker-56aca224abd73116/dep-lib-atomic_waker","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
a2825727870436fd

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[]","target":6962977057026645649,"profile":1369601567987815722,"path":15647454825061823462,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/autocfg-da6ea8157c643bab/dep-lib-autocfg","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
b199146a25a9766f

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"form\", \"http1\", \"json\", \"matched-path\", \"original-uri\", \"query\", \"tokio\", \"tower-log\", \"tracing\"]","declared_features":"[\"__private_docs\", \"default\", \"form\", \"http1\", \"http2\", \"json\", \"macros\", \"matched-path\", \"multipart\", \"original-uri\", \"query\", \"tokio\", \"tower-log\", \"tracing\", \"ws\"]","target":13920321295547257648,"profile":2040997289075261528,"path":7750414729436195668,"deps":[[784494742817713399,"tower_service",false,9756858230363142852],[1363051979936526615,"memchr",false,4531707984392659062],[2251399859588827949,"pin_project_lite",false,12530558976595352840],[2517136641825875337,"sync_wrapper",false,797988733077406],[2620434475832828286,"http",false,832986012250940377],[3626672138398771397,"hyper",false,7388695654428227995],[3632162862999675140,"tower",false,8936433559850698057],[3870702314125662939,"bytes",false,15853816070996633266],[4359148418957042248,"axum_core",false,14193616797328016848],[5532778797167691009,"itoa",false,10020767322859289833],[5898568623609459682,"futures_util",false,16908317174404699628],[6803352382179706244,"percent_encoding",false,18425653128026193902],[7712452662827335977,"tower_layer",false,14607393924189152802],[9678799920983747518,"matchit",false,4910259673828604668],[10229185211513642314,"mime",false,18198232305979617056],[11976082518617474977,"hyper_util",false,17602563182137828853],[13548984313718623784,"serde",false,13980136895421925704],[13795362694956882968,"serde_json",false,3313470706320821944],[14084095096285906100,"http_body",false,15844020918821535306],[14156967978702956262,"rustversion",false,11214144905909051825],[14757622794040968908,"tracing",false,11807848369655216865],[14814583949208169760,"serde_path_to_error",false,14617794141396069846],[16542808166767769916,"serde_urlencoded",false,5933395963294750001],[16611674984963787466,"async_trait",false,9883329537384690021],[16900715236047033623,"http_body_util",false,4277972724758570800],[17541620359049798014,"tokio",false,15361907931370940024]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/axum-a855e8fe1790ea1c/dep-lib-axum","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
d005c1b246dbf9c4

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"tracing\"]","declared_features":"[\"__private_docs\", \"tracing\"]","target":2565713999752801252,"profile":2040997289075261528,"path":4293923778822616582,"deps":[[784494742817713399,"tower_service",false,9756858230363142852],[2251399859588827949,"pin_project_lite",false,12530558976595352840],[2517136641825875337,"sync_wrapper",false,797988733077406],[2620434475832828286,"http",false,832986012250940377],[3870702314125662939,"bytes",false,15853816070996633266],[5898568623609459682,"futures_util",false,16908317174404699628],[7712452662827335977,"tower_layer",false,14607393924189152802],[10229185211513642314,"mime",false,18198232305979617056],[14084095096285906100,"http_body",false,15844020918821535306],[14156967978702956262,"rustversion",false,11214144905909051825],[14757622794040968908,"tracing",false,11807848369655216865],[16611674984963787466,"async_trait",false,9883329537384690021],[16900715236047033623,"http_body_util",false,4277972724758570800]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/axum-core-d4829eacfe20324f/dep-lib-axum_core","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
207682acff1d84c8

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":1369601567987815722,"path":14709185621984536711,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/base64-5590a61cbd2b682c/dep-lib-base64","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
ae88fa777ea46d95

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":2040997289075261528,"path":14709185621984536711,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/base64-b3b96786b6996758/dep-lib-base64","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
16b5f5ddcf081831

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[\"arbitrary\", \"bytemuck\", \"example_generated\", \"serde\", \"serde_core\", \"std\"]","target":7691312148208718491,"profile":2040997289075261528,"path":15191591926664195229,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bitflags-0fe8dc4ec6344104/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
849c04d213765001

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"std\"]","declared_features":"[\"arbitrary\", \"bytemuck\", \"example_generated\", \"serde\", \"serde_core\", \"std\"]","target":7691312148208718491,"profile":1369601567987815722,"path":15191591926664195229,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bitflags-f3fe0bb44830774b/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
c6258db212a2b741

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[]","target":4098124618827574291,"profile":1369601567987815722,"path":12065623917026451340,"deps":[[10520923840501062997,"generic_array",false,2083980926968868576]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/block-buffer-188766f552b9e2d6/dep-lib-block_buffer","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
774fa9b396a32596

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[]","target":4098124618827574291,"profile":2040997289075261528,"path":12065623917026451340,"deps":[[10520923840501062997,"generic_array",false,17938405091832688717]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/block-buffer-d587d5e9f03cc587/dep-lib-block_buffer","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
d99bc3fcf4fe1e24

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"std\"]","declared_features":"[\"default\", \"i128\", \"std\"]","target":8344828840634961491,"profile":1369601567987815722,"path":15643985970352291081,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/byteorder-1c142abb796153a3/dep-lib-byteorder","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
cd37cff94a4e01bc

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"std\"]","declared_features":"[\"default\", \"i128\", \"std\"]","target":8344828840634961491,"profile":2040997289075261528,"path":15643985970352291081,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/byteorder-2be11861ec75e480/dep-lib-byteorder","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

View File

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

View File

@@ -0,0 +1 @@
b226222eb81104dc

View File

@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"extra-platforms\", \"serde\", \"std\"]","target":11402411492164584411,"profile":3654867079619179846,"path":1403929629260805484,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bytes-5380722115e403d5/dep-lib-bytes","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}

Some files were not shown because too many files have changed in this diff Show More