Flowntier v0.4.22 — workdir swap + run_task timeout + file-tree UI + error badge
Flowntier v0.4.22 — chairman's bug fixes (event 000066)
Bug fixes (all 4 closed-loop verified)
A. WORKDIR ↔ WORKSPACE BRIDGE
state.workspace: Arc<RwLock<Workspace>>(was: locked at runtime launch-time cwd)- New routes:
GET /api/workspace,POST /api/workspace/set,GET /api/workspace/tree - Tauri
set_workdir_with_nwtnow firesPOST /api/workspace/setafter writing workdir.json - Was: workdir.json said
O:\trybut runtime wrote toO:\Flowntier\workspace\
B. RUN_TASK TIMEOUT
agent.run()wrapped intokio::time::timeout(default 300s, configurable 10..=1800s)- On timeout synthesise
Done { status: 'TIMEOUT (Ns)' }so subscribers + UI exit sending=true - Was: hang forever when upstream provider throttled
C. FILE TREE UI
- New
apps/desktop/src/components/FileTree.tsxpolls every 5s LeftRosteradds '文件' tab to show the live tree- Chairman can SEE chief writes appear without manual refresh
D. ERROR AGGREGATOR
- pipe-server holds in-memory ring buffer (cap 200) of
ErrorRecord - New route
GET /api/errors/recent?limit=N components/ErrorBadge.tsxmounted in TopBar: red dot + click-to-expand dropdown- Pushed to from: run_task timeout, workspace swap reject, quota recording failure, non-DONE outcome
Verified end-to-end
POST /api/workspace/set 'C:/Users/thatg/workdir-test'→ 200, previous_root =O:\FlowntierGET /api/workspace/tree?depth=2→ 7 entries (chief's earlierO:\Flowntier\workspace\tarot\index.htmlvisible)POST /api/run_task {task:'说一句话证明你活着', timeout_secs:60}→ DONE, taskt_01KWHG0R21NQ30ZVN5WYR0FK7FGET /api/errors/recent→ records the earlier workspace_swap warn automatically
Installer
Flowntier_0.4.22_x64-setup.exe— 8,574,597 bytes- sidecar MD5
2e1dde3cdfe1e2bb65b689c60bbf50c4 - Includes the 000066 fix and the prior 000064 dashboard fix
NSIS patches embedded
- (a) sidecar
CheckIfAppIsRunningforflowntier_runtime.exe - (b) belt-and-braces taskkill in
.onInit(handles zombie runtime that's stuck holding the file) - (c) Node.js runtime check — abort install with zh-CN error if Node missing