2026-03-10
- Renamed “Bugs & Requests” to “Issues”, added Feature Request type
- Added clickable evidence logs to Top Stories section
- Simplified issue resolution: 1 mark = resolved (removed 2/2 requirement)
- Made workspace save failures loud and persistent (status message stays visible)
- Fixed
!restart → /restart references in website onboarding text - Added snapshot history viewer to Agents tab workspace editor (timeline dots, view historical snapshots from Firebase, restore to editor)
- Replaced Revert button with snapshot Restore: loads historical version into editor for review before saving
- Auto-size workspace editor textarea to fit full file content
- Cached workspace files for instant tab switching with background sync
- Fixed race condition: stale fetch overwrites display when switching tabs quickly
- Prefetch all workspace files on page load for instant tab switching
- Autofocus password input so Enter key works with prefilled passwords
- Used prefetched file list and content for instant workspace opening
- Skip redundant history entries in workspace snapshots
- Fixed horizontal scroll in workspace editor
- Fixed workspace editor scroll jump, restart messaging, and collapse business ideas section
- Decentralized workspace snapshots: each Fly server now runs
workspace_snapshot.sh in background, pushing workspace files + daily logs to Firebase RTDB every hour - Centralized Mac cron (
com.mangrove.workspace-snapshot) running as backup via snapshot_workspaces.py - Fixed restart button race condition: Fly Machines API
stop returns 200 immediately while machine is still shutting down. Added fly_wait_for_state() to poll until machine reaches “stopped” before issuing start. - Fixed workspace file loading stuck/hanging:
read_file_from_machine() (sync SSH, 15s timeout) was blocking the asyncio event loop inside async def endpoints. Wrapped all blocking subprocess.run calls in asyncio.to_thread(). - Fixed workspace file loading still slow (17s per file): proxy was trying SSH first (15s timeout) then falling back to local. Swapped to serve local files instantly by default, with
?live=true query param for background refresh from live bot. - Deployed proxy fixes twice to
mangrove-agent-proxy on Fly.io - Reviewed “Thought Virus” paper (arxiv 2603.00131) — subliminal token injection propagating bias through multi-agent chains. Mapped to scenario C008 (Cross-Agent Contagion) for potential experiment.