Skip to content

v0.2.65

Choose a tag to compare

@github-actions github-actions released this 23 Feb 22:28
· 72 commits to main since this release
8f610b3

Downloads

Desktop App

Platform Download Size
Windows (x64) CachiBot-Setup-0.2.65-win.exe 153.2 MB
macOS (Apple Silicon) CachiBot-0.2.65-mac.dmg 213.2 MB
Linux (x64 AppImage) CachiBot-0.2.65-linux.AppImage 205.7 MB
Linux (x64 .deb) CachiBot-0.2.65-linux.deb 171.6 MB
Linux (x64 .rpm) CachiBot-0.2.65-linux.rpm 172.9 MB

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

Changes

Every datetime.utcnow() call in the codebase was living on borrowed deprecation warnings. This PR replaces all of them with timezone-aware datetime.now(timezone.utc) across 28 files — models, routes, services, plugins, and websockets — so timestamps actually know what timezone they belong to. On top of that, usage stats now report the model that actually ran the request (not the one configured on the bot), and the dashboard finally counts room activity alongside regular chats.

Highlights

  • Dashboard stats now include room messages and room counts alongside regular chats
  • Usage metadata shows the actual model used per request, not just the bot's configured default
  • Room WebSocket usage events are now tracked in the dashboard usage store
  • Azure provider configuration supports additional per-backend keys and endpoints (Claude, Mistral)
  • Desktop splash screen upgraded to a proper HTML file with app icon, version display, and animated progress bar
Technical changes
  • Replaced all datetime.utcnow() and datetime.now() calls with datetime.now(timezone.utc) across 28 backend files (routes, models, services, plugins, websockets)
  • Changed default_factory=datetime.utcnow in Pydantic/dataclass fields to default_factory=lambda: datetime.now(timezone.utc) in automations.py, chat.py, command.py, instruction.py, job.py, work.py
  • Fixed datetime.utcfromtimestamp() in auth_service.py to use datetime.fromtimestamp(ts, tz=timezone.utc)
  • Bot export timestamp in routes/bots.py now uses .isoformat() directly (already UTC-aware) instead of appending "Z" manually
  • message_processor.py extracts the actual model from Prompture's per_model usage breakdown, falling back to effective_model or bot.model
  • useWebSocket.ts reads model from payload.perModel keys instead of currentBot?.model, ensuring usage stats reflect the real model used
  • useRoomWebSocket.ts now calls useUsageStore.getState().recordUsage() on room_usage events, previously these were not tracked in the dashboard
  • DashboardView.tsx imports useRoomStore, aggregates roomMessages into total message count, counts room-based bot connections, and displays "X chats · Y rooms" in stat cards
  • PROVIDERS dict in routes/providers.py expanded with AZURE_CLAUDE_API_KEY, AZURE_CLAUDE_ENDPOINT, AZURE_MISTRAL_API_KEY, AZURE_MISTRAL_ENDPOINT
  • bot_environment.py adds _PROVIDER_EXTRA_ENV_KEYS mapping and provider_extras field on ResolvedEnvironment, loaded from both os.environ and bot-level overrides
  • websocket.py passes provider_extras as kwargs to build_driver_with_key() so per-provider endpoints reach the driver
  • Desktop splash screen extracted from inline data URL in main.js to desktop/splash.html with icon, version query params, progress bar, and cycling status messages

Details