- New tool: image-to-3D (project file or an image attached to the chat,
optional back/left/right views) or text-to-3D; image + prompt refines the
image with the prompt first (the 3D models take no text with an image).
Styles textured / geometry / lowpoly, optional PBR, face count. Runs through
fal.ai's queue API with progress, saves GLB + preview, books the cost
(published prices, overridable per model). Request bodies for the Hunyuan3D,
Tripo and Trellis families; defaults [images] model_3d / model_3d_text.
- Chat card: "Open in the 3D view"; media overview: kind "model" (also
STL/3MF/OBJ written by agents) with previews.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agents tidy up folders after generating images (sort into subfolders, rename
revisions); the image records kept the old path, so /api/images/<id>/file
answered 404 and only the requesting device still showed them from its cache.
- Generated images get a copy in the image store (images.blob, kept by the
blob GC); existing ones are copied once on start-up.
- Records follow: after bash commands with mv/rename (missing images of the
owner from the last two weeks, found by name or by content hash), when moved
with the file manager (file or folder), and on access (served from the copy,
relocated in the background; without a copy found by file name).
- Chat gallery falls back to the preview the model saw when the file is gone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Images of messages (pasted images, screenshots, generated images) were base64
inside the message JSON, so opening a chat downloaded all of them at once
(66 MB for a chat with 120 screenshots). They now live in a `blobs` table,
addressed by SHA-256; messages keep a reference (blob, size). The UI loads
them from /api/blobs/<hash> lazily with an immutable cache header, the runner
fills the bytes in before model requests, JSON exports stay self-contained.
- Store::add_message moves inline images out; large opaque PNGs become JPEG
(q85) when smaller. Older chats are converted once at start-up in the
background, unused images are removed (also after deleting a chat) and the
database is vacuumed when that frees 32 MB or more.
- Responses are compressed with gzip/brotli (not images, SSE streams or
binary downloads).
Example (copy of production): chat load 66 MB -> 1.5 MB (370 KB brotli),
database 90 MB -> 27 MB.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Fetch prices for opencode (Zen and Go) incl. limits, image input, reasoning,
long-context tiers and peak-hour/date factors; costs apply them per request
- Record the cost opencode reports per response; track Go allowance in 5h/7d/month
windows against a provider plan limit (budget table, status overlay)
- Settings → Config file: move values of ${NAME} references into the config
- Examples, presets and forms keep keys in the config instead of .env
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Sidebar: three status LEDs (server, models, MCP) with an overview popover (/api/status)
- Images: preview stage, purpose-based model choice and reference images
(Nano Banana Pro edit refines the chosen preview)
- Settings: restore a stored or uploaded backup (staged, applied on restart)
- Provider form: test connection; saving or reloading re-checks the status at once
- opencode Zen/Go: send x-opencode-session with a stable id per conversation
- Releases are named vYYYYMM-NNNNN; scripts/release.sh numbers, tags, builds and publishes
- Fix: backups made in the same second no longer overwrite each other
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Personal API tokens (full/read scope, expiry, revoke) and CLI password login
- Cargo workspace: codecraft-core (types, providers, permission rules) shared by
server and the upcoming terminal client; server re-exports the old paths
- CLI server API: /cli/config, /cli/skill, /cli/tool (server MCP tools),
/llm/stream model gateway with budgets and usage per user
- Theme/language preferences mirrored to the server; personal memory endpoint
- Statistics: provider and mode tables stacked; CLI usage labelled
- cli/: work in progress (terminal client is being rewritten as a local TUI)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Sandbox (bubblewrap) for non-admin shell/git, MCP per-user rights, hard budgets and quotas,
login rate limiting, audit log and backups
- Ghidra headless decompilation (ARM64 natives built from source), binary_info tool,
clean room / deep workflow per session
- Recreate skill and commands for analysing and re-building old software
- File checkpoints with rewind/restore, background shells (bash_output, kill_shell)
- web_search tool (DuckDuckGo, SearXNG, Brave, Tavily)
- In-app dialogs and toasts instead of browser dialogs
- 15 base themes (trilium-themes palettes plus Nord, VS Code, GitHub, Catppuccin, One,
Dracula, Rose Pine, Everforest, Kanagawa) with light/dark/auto switcher and license notes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>