chore: land tree view-state, vault, Pi module split, and repo hygiene

Persist PageTree expand state via control-plane view-state and align
chevron/DOM with restored expansion; keep Sidex-style shallow page-tree
scan and drop the unused recursive scanner that only added cargo noise.

Add password vault workbench routes/runtime/skill/CLI, split page_ai_pi
into a module package, and retire Hermes/ACP/OpenHub recycle + root
harness evidence from the index while gitignoring recycle and local
diag dumps.

Archive superseded design/bugs docs under old/, point architecture at
ARCHITECTURE.md, and refresh smokes for Pi S1–S7, vault, and editor
regressions so the working tree can stay clean.
This commit is contained in:
Agent Board
2026-07-21 05:13:05 +08:00
parent 6f9c7d3b58
commit b798f628ee
264 changed files with 17480 additions and 17314 deletions
@@ -129,6 +129,14 @@ fn render_filetree_row(
html.push_str("</li>");
}
/// Placeholder FileTree shell for shell-first home SSR.
/// Client hydrates rows via `/api/tree/projections/file` without blocking first paint.
pub fn render_filetree_pending_shell_html() -> String {
String::from(
r#"<ul class="tree-root" role="tree" data-rust-filetree-renderer="pending_shell_v1" data-filetree-ssr="pending" aria-busy="true"></ul>"#,
)
}
pub fn render_initial_filetree_html(input: &FileTreeInitialRenderInput) -> String {
let mut html = String::from(
r#"<ul class="tree-root" role="tree" data-rust-filetree-renderer="initial_v1">"#,
@@ -306,4 +314,13 @@ mod tests {
assert!(html.contains(r#"data-index-status="indexed""#));
assert!(html.contains(r#"<button type="button" class="tree-link""#));
}
#[test]
fn filetree_pending_shell_marks_ssr_pending_for_client_hydrate() {
let html = super::render_filetree_pending_shell_html();
assert!(html.contains(r#"data-rust-filetree-renderer="pending_shell_v1""#));
assert!(html.contains(r#"data-filetree-ssr="pending""#));
assert!(html.contains(r#"aria-busy="true""#));
assert!(!html.contains("tree-row"));
}
}