v0.7.0
Release v0.7.0
AI Craftery Bord — project workspace, releases overhaul, workspace-files
skill, file tree redesign, PDF export.
Project workspace (CRAFT-24)
Projects now have a full working environment:
- Working folder — code directory, cwd for the agent in project chats.
- Description folder — separate folder for AI context (description,
rules, identity), default<Working folder>/description/, auto-created. project.md— auto-created from template on first access, added to
mandatory refs automatically.- Instructions — list of mandatory / recommendation file refs. Mandatory
content is inlined into every task chat's system prompt (transitive:
chat → task → project). Recommendation refs are passed as paths only. - Workspace folders — named working folders (deploy, specs, dev-infra)
passed as path references in the system prompt. - Tasks panel grouping —
project → phase → taskwith fold/unfold at
both levels, persisted to localStorage. - Project chat — dedicated chat session bound to the project via
projects.project_chat_sessions. cwd = description folder, auto-attaches
instructions + recommendations + folders. - i18n — Projects tab fully translated across all 10 locales.
Releases overhaul (CRAFT-42)
Releases panel and release-chat reworked for multi-project setups:
- Group-by-project rendering in the Releases panel (headings tinted with
project.color, collapsed state persisted). - Inline pencil for the planned version, pre-filled from
GET /api/releases/project/{id}/suggested-version(bumps the last shipped
patch, strips-suffix). - Unified
POST /api/releases/{bucket}/renamecovering both Current
planned-version edits and Upcoming bucket rename (folder + DB atomic).
PUT /versionretained as a deprecated alias. - Release chat — dedicated chat session per release, cwd = bucket folder,
prompt includes project context + task list + overlay of the project's
release.md. GET /api/releases/project/{id}/release-mdwithfilepath.Clean
prefix-check, symlink-resolve re-check, 256 KiB size cap.- The
aicraftery-releasesskill rewritten under multi-project semantics
(every call carriesprojectId). - 6 new i18n keys across 10 locales.
Workspace files skill (CRAFT-51)
Any agent in any chat can now see which files the user has open, which one
is in front, what's selected in the editor, and can refresh an open tab
after writing:
GET /api/workspace/open-files— list of tabs (path,kind,
lastFocusedAt,isCurrentlyActive), optional?kind=editor,viewer.GET /api/workspace/selection— current Monaco selection (path, text
capped at 8 KiB, 1-indexed range) ornull.POST /api/workspace/refresh-tab {path}— refreshes an open editor or
viewer from disk without manual reload. Path must appear in the current
snapshot, otherwise 404.aicraftery-workspace-filesskill — auto-installs as the 6th always-on
bundled skill; RU + EN triggers for demonstrative phrases
(«этот файл», «current file», «selected text», «here»).- "Current file" means the file rendered in front of the workspace stack,
not the one holding keyboard focus — so the agent still knows which file
Pasha is looking at while typing in chat or terminal.
File tree redesign (CRAFT-53)
The file list and directory tree have been reworked end-to-end:
- Single render path — the Files panel and card mini-trees now share
one component (file-tree-row.js+file-tree-list.js) with injection
seams (menuItems/decorateRow/buildCreateRow). - Scope switcher in the header: All tree / Current / Recent /
Favorites. Current = tree rooted at the active chat's cwd (with a
fallback to All tree). Recent / Favorites are flat lists. The selected
scope lives in the GoldenLayout component state. - Favorites — pin / unpin from the context menu.
- Recent — currently open editors plus history, deduplicated, capped
at 50. - Favorites and Recent now live under global localStorage keys
(bord.filetree.favorites/.recent) instead of per-root keys, which
fixes pins disappearing when scope flipped between All tree and Current. - Locate — "find current file" button (PyCharm-style): expands the
ancestors of the active file and scrolls it into view. - Reload — icon replacing the old text hint.
- Drag-and-drop import fixed (
dragDropEnabled: truein all four
Tauri configs). The authorized import path
(workspace_copy_external_paths) is unchanged. files.jsdecomposed: 2456 → 300 lines (thin orchestrator) + 16 focused
modules underpanels/, all ≤300 LoC.- Decisive active-row states (open file vs session cwd), neutral icons
re-tinted for the light theme. - 13 new
workspace.file_tree.*keys across 10 locales.
PDF export (CRAFT-54)
PDF export from every viewer panel — markdown / mermaid / csv / image /
code-text / pdf-copy:
- PDF button in every panel header + "Export to PDF…" entry in the file
tree context menu (one file at a time). - Native Save-As dialog via
rfd::FileDialog, pre-fills<basename>.pdf
next to the source. Atomic write throughtempfile + persist. - HTML panels (md / code / csv) — sanitized HTML clone →
pdf-export-light
CSS →html2canvas→ A4 multi-page slice. - Mermaid (mmd) — re-rendered via
loadEngine()in a light theme →
svg2pdf.jsfit-to-A4 (vector text). - Image viewer — offscreen canvas →
jsPDF.addImagefit-to-A4, orientation
picked automatically. - PDF reader — Rust
fs::read+ atomic copy. - PDF theme is always light, regardless of the active Bord theme.
- After save: the result opens in a
pdf-readerpanel + a standard
notification fires. - Cross-platform parity by design — no
cfg(target_os)branches. - Bundle weight: jspdf 365 KB + html2canvas 199 KB + svg2pdf 87 KB
= 651 KB (≤ 800 KB NFR). - 5 new
panels.pdf_export.*keys across 10 locales.
Known limitations
- HTML panels (md / code / csv) export as rasterized text (not selectable).
Mermaid via svg2pdf produces vector text. - Non-Latin glyphs in SVG through svg2pdf — not verified for Cyrillic in
large diagrams. dragDropEnabled: true(Tauri) may break HTML5 drag of task cards on
Windows — tracked as a follow-up.- Workspace-files skill assumes a single Bord window; all chats in that
window share one snapshot. - File tree fingerprint-guard on full rerender on
bord:workspace-sessions-changedis a deferred optimization, not
shipped in this release.