Split view, personal modes, budget warnings, server move script

- Up to three chats side by side (#/s/a+b+c), "Open beside" in the sidebar menu
- File manager tabs of a chat stored per user on the server (/sessions/{id}/tabs)
- Personal modes for every user (Settings → My modes, /account/modes)
- Budget meters (total, provider, images, opencode Go windows) with push warnings
  for admins at the warning share and 100 %, shown in the status overlay
- scripts/move-server.sh: move to another Docker host with bind mounts (Unraid);
  scripts/smoke-test.sh

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-09 12:06:20 +01:00
1 parent 81ee084ff2
commit d152ad836d
26 files changed
+836 -52

No files matched your search

+10
View File
@@ -97,6 +97,13 @@ volume `codecraft-data`; recreating the container keeps it. Your projects are mo
WebSocket support) and set `auth.public_url` – installing the app and push notifications
require HTTPS.
**Moving to another host** (for example Unraid with bind mounts instead of the Docker volume):
`scripts/move-server.sh root@newhost:/mnt/user/appdata/codecraft --workspace /mnt/user/projects`
copies the workspace, stops CodeCraft, streams the data volume to `<dir>/data`, writes a
`docker-compose.yml` (and a `start.sh` for hosts without Compose) with bind mounts, starts the
published image there and runs `scripts/smoke-test.sh`. The old container is only stopped, so
you can roll back. `--help` lists the options (owner, port, bind address, dry run).
## How it works
CodeCraft runs on your server, next to your projects. You talk to it from a browser, the
@@ -154,6 +161,9 @@ output limit, reasoning effort, extra request options and prices per million tok
model's fallback.
- **Concurrency limits:** `max_concurrency` per host or model queues requests for servers that
process one at a time; waiting time is shown and never counted as model latency.
- **Budget warnings:** admins get a push notification when the total, a provider's or the image
budget, or an opencode Go window reaches the warning share (default 80 %) and when it is used
up; the status overlay shows all budgets with bars.
- **Prices:** *Fetch prices* fills in prices for OpenRouter and opencode (Zen and Go), including
long-context tiers and peak-hour factors, which are applied per request.
- **Status:** every five minutes each provider's model list is fetched (no tokens used), so