Skip to content

v0.2.70

Choose a tag to compare

@github-actions github-actions released this 28 Feb 03:24
· 32 commits to main since this release
19b1d0e

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.app

Then open the app normally. This only needs to be done once.

Python Package (pip)

pip install cachibot==0.2.70

Changes

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 RoomTaskEventAction enum and RoomTaskEvent Pydantic model in cachibot/models/room_task.py tracking six action types: created, updated, status_changed, priority_changed, assigned, deleted
  • room_task_events SQLAlchemy model with indexes on task_id, (task_id, created_at), and room_id for efficient queries
  • RoomTaskEventRepository with create(), create_many() for batch inserts, and get_by_task() with limit/offset pagination
  • Task CRUD routes in cachibot/api/routes/room_tasks.py now emit granular events per changed field on create, update, reorder, and delete
  • New GET /api/rooms/{room_id}/tasks/{task_id}/events endpoint for retrieving audit trail
  • Frontend rooms.ts store gains taskEvents and taskEventsLoading state with corresponding actions
  • TaskDetailPanel.tsx renders the event timeline with color-coded dots and relative timestamps
  • getRoomTaskEvents() API client function with pagination support

Asset Management

  • Asset model and AssetResponse schema in cachibot/models/asset.py supporting room and chat ownership
  • assets table with (owner_type, owner_id) index, disk storage under ~/.cachibot/assets/
  • AssetRepository for metadata CRUD and storage path management
  • REST endpoints for room and chat assets: list, upload, download, delete
  • Frontend Asset type, roomAssets store state, and assets view mode added to rooms

App Loader

  • AppLoader component in frontend/src/components/common/AppLoader.tsx orchestrates 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.tsx to gate rendering until initialization succeeds

Auto-Update System

  • UpdateService in cachibot/services/update_service.py fetches 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-dir to 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.py runs corruption check and marks healthy versions for rollback baseline
  • Frontend update.ts Zustand store with rate-limited auto-check, skippedVersions persistence, and beta opt-in
  • UpdateBanner.tsx shows a persistent notification when updates are available; UpdateDialog.tsx provides a multi-phase modal covering check, install progress, server restart polling, and result display
  • Both update components gate on window.electronAPI?.isDesktop to defer to native updater

Database Migrations

  • 010_room_tasks_and_assets.py creates room_tasks and assets tables with foreign keys and indexes
  • 011_room_task_events.py creates room_task_events table for the audit trail

Details