v0.2.70
Downloads
Desktop App
| Platform | Download | Size |
|---|---|---|
| Windows (x64) | CachiBot-Setup-0.2.70-win.exe |
154.0 MB |
| macOS (Apple Silicon) | CachiBot-0.2.70-mac.dmg |
214.1 MB |
| Linux (x64 AppImage) | CachiBot-0.2.70-linux.AppImage |
206.7 MB |
| Linux (x64 .deb) | CachiBot-0.2.70-linux.deb |
164.3 MB |
| Linux (x64 .rpm) | CachiBot-0.2.70-linux.rpm |
173.5 MB |
Mobile App
| Platform | Download | Size |
|---|---|---|
| Android (APK) | CachiBot-0.2.70.apk |
79.8 MB |
Downloads become available once the build pipeline completes (~10 min after release).
macOS users: This build is not yet notarized by Apple. After installing, open Terminal and run:
xattr -cr /Applications/CachiBot.appThen open the app normally. This only needs to be done once.
Python Package (pip)
pip install cachibot==0.2.70Changes
The app now knows what happened to your tasks, greets you with a proper splash screen instead of a blank stare, and can update itself without you having to touch pip. This PR introduces a full audit trail for room tasks, a multi-phase app loader with animated splash, and a self-update pipeline with Windows-specific corruption handling and automatic rollback.
Highlights
- Room tasks now track a complete activity history — every create, update, status change, and deletion is recorded with who did it and what changed
- Task detail panel shows a visual timeline of all changes with color-coded events and human-readable descriptions
- App startup now shows an animated splash screen that walks through backend readiness, auth verification, and data loading before handing off to the UI
- CachiBot can check for updates from PyPI and apply them in-place, with a progress dialog, automatic retry, and rollback if the install goes sideways
- Update banner and dialog are automatically hidden when running inside Electron, where the native updater takes over
- Rooms and chats can now have file assets uploaded and managed through a new asset system
Technical changes
Room Task Events
- New
RoomTaskEventActionenum andRoomTaskEventPydantic model incachibot/models/room_task.pytracking six action types: created, updated, status_changed, priority_changed, assigned, deleted room_task_eventsSQLAlchemy model with indexes ontask_id,(task_id, created_at), androom_idfor efficient queriesRoomTaskEventRepositorywithcreate(),create_many()for batch inserts, andget_by_task()with limit/offset pagination- Task CRUD routes in
cachibot/api/routes/room_tasks.pynow emit granular events per changed field on create, update, reorder, and delete - New
GET /api/rooms/{room_id}/tasks/{task_id}/eventsendpoint for retrieving audit trail - Frontend
rooms.tsstore gainstaskEventsandtaskEventsLoadingstate with corresponding actions TaskDetailPanel.tsxrenders the event timeline with color-coded dots and relative timestampsgetRoomTaskEvents()API client function with pagination support
Asset Management
Assetmodel andAssetResponseschema incachibot/models/asset.pysupporting room and chat ownershipassetstable with(owner_type, owner_id)index, disk storage under~/.cachibot/assets/AssetRepositoryfor metadata CRUD and storage path management- REST endpoints for room and chat assets: list, upload, download, delete
- Frontend
Assettype,roomAssetsstore state, andassetsview mode added to rooms
App Loader
AppLoadercomponent infrontend/src/components/common/AppLoader.tsxorchestrates four init phases: backend health polling (30s timeout), setup check, auth verification with token refresh, and parallel data loading- Animated splash with three concentric rotating rings and a progress bar, 400ms fade-out on completion
- Wraps the entire app tree in
main.tsxto gate rendering until initialization succeeds
Auto-Update System
UpdateServiceincachibot/services/update_service.pyfetches version info from PyPI with 1-hour cache, parses stable vs prerelease, and manages the full update lifecycle- Windows-specific safety: detects tilde-prefixed corrupted package remnants, auto-cleans before and after pip install, uses
--force-reinstall --no-cache-dirto avoid NTFS file locking - Exponential backoff retry (2s/4s/8s, 3 attempts) with corruption cleanup between retries
- Rollback support: saves current version as last-known-good before update, auto-reverts if post-install verification fails
- Docker detection prevents auto-update in containerized environments
- External updater script on Windows handles process replacement
- API routes:
GET /api/update/check,POST /api/update/apply(blocked in desktop mode),POST /api/update/restart,GET /api/update/diagnostics - Server startup in
cachibot/api/server.pyruns corruption check and marks healthy versions for rollback baseline - Frontend
update.tsZustand store with rate-limited auto-check,skippedVersionspersistence, and beta opt-in UpdateBanner.tsxshows a persistent notification when updates are available;UpdateDialog.tsxprovides a multi-phase modal covering check, install progress, server restart polling, and result display- Both update components gate on
window.electronAPI?.isDesktopto defer to native updater
Database Migrations
010_room_tasks_and_assets.pycreatesroom_tasksandassetstables with foreign keys and indexes011_room_task_events.pycreatesroom_task_eventstable for the audit trail