The opt-in page gains a debug panel, once the user's saved flag is on: service status (reachability, latency, the caller's own processing queue, with the specific Honcho error when something is wrong), a full overview (peer card, derived facts with ids, summary) and one text field with two actions — search (raw ranked facts) and ask (Honcho's server-side LLM answers), plus an in-page mini-guide. Every endpoint gates on the per-user opt-in server-side, fail closed, and derives the peer from the authenticated Caller — never from the request body — since the workspace is shared. Honcho 404s are translated per-endpoint as 'no memory yet' rather than failures.
8.3 KiB
Changelog
All notable changes to Skald Circle are recorded here, newest first.
The format follows Keep a Changelog. Versions
are the workspace Cargo.toml version — the one ci/verify-version.sh checks before a
release PR may merge — and a section is closed at the commit that bumps it.
[Unreleased]
Added
-
The Long-term memory page (Honcho plugin) now shows, once you have opted in, what Honcho actually remembers about you: a service-status line (connected/unreachable with the specific error, and your memory's processing queue), a full overview (your card, derived facts, summary) and a search-or-ask box — search returns the raw stored facts matching your words, ask has Honcho's AI answer a question in its own words. A built-in mini-guide explains the difference. Errors say what went wrong (unreachable host, rejected key, server error), not just "unavailable".
-
The assistant can now explain the file viewer, the Tasks page, your Profile and the admin's Users page: ask it what a document's history button does, why a
.texis shown instead of a PDF, how to stop a recurring job without losing it, what a "cancelled" run means, what an encrypted account means when a password is forgotten, or why it knows a member's age — and it answers from the in-app documentation instead of guessing. -
A Files section in the menu: everywhere you can reach, in one place — your home, your personal and the shared memory, the folders and projects shared with you, plus skills and documentation. Browse, open, download a folder as a ZIP, and upload, rename or delete wherever you have write access; the read-only places say so. Your memory notes are readable here for the first time (changing them still goes through the assistant).
-
The assistant can be told what you are looking at: the eye next to the paperclip sends what you have open along with your next message, so "what is this?" needs no explaining. It names the page you are on; the folder you are browsing in Files or in a project; the file open in the viewer and any passage you highlighted in it — line numbers included where you are looking at the source — so "what is in here?" and "rewrite this sentence" work without naming anything; and, on a detail page, which project (and which of its tabs), member, connector, plugin, conversation, tool call or LLM request you opened. The active section follows you in Tasks, Models, Background agents, the Marketplace search and the mobile app. It is used only when your message is actually about what you have open: asking something unrelated from inside a folder no longer sends the assistant reading through it. Like an attachment, what the eye sends goes to the AI provider together with your message — hover it (or tap it) to read exactly what would go out, click it to stop sharing; the choice is remembered on this device, and every sent message keeps a faint eye in its corner that shows, on hover, what it carried. Very long highlights are trimmed, with a note saying how much was left out — the assistant can still read the whole file itself. On by default.
-
Several conversations per source: open extra chats with
+, and the tab bar you left open is restored at your next login, on any device. -
A background task now reports back into the chat that started it instead of only the Inbox, and a chat shows the tasks still running under it.
-
Skills reworked for the multi-user model: a shared tree plus a per-member one, with a generated index injected into the agent's prompt.
-
The agent is told what its sandbox can actually run, from a probe of its own container.
-
Event triage can be tuned per person: a check interval that overrides the instance one, and notification preferences read from
user-memory/notifications.md. -
The assistant now remembers how you like emails and documents written — preferred wording, openings, sign-offs, formal vs. informal, per-recipient exceptions — as a short section of your private
user.md, and applies it to later drafts. -
File viewer: syntax highlighting for code files and for code blocks in the chat, a hover copy button on those blocks, and history browsing for a file under git.
-
Project explorer: download a folder as a streaming ZIP.
-
Collapsible icon-only sidebar on desktop.
-
DeepInfra, as a declarative LLM provider.
-
The project coordinator offers to keep a history of a project.
-
An agent can ask which connectors it holds instead of guessing.
-
The assistant can now explain the chat window itself (tabs, the composer's controls, the slash commands), the Inbox and its three kinds of pending request, and the security groups behind "why is it asking me for permission?" — ask it in plain words instead of hunting through the pages.
Changed
- Runtime image
v4: Debian 13 base, plus the shared libraries a headless Chromium needs. - Unencrypted users are unlocked and their runtimes started at boot, so Telegram, cron and the background agents work after a restart without anyone opening the web app first.
- PDFs render through pdf.js instead of an iframe.
- The service is allowed 65536 open files instead of the default 1024. New installs get it from the installer and existing ones from an ordinary update, unless you have set your own limit, in which case yours is left alone.
Fixed
- Models → Text-to-speech now fills the window like every other page. It was rendering as a narrow strip in the middle of an otherwise empty screen, which made the model list and its forms unreadably cramped.
- A connector that fails to start no longer leaves its process behind. One that started but answered the handshake wrong — a broken or mismatched connector — was left running on every retry, and the accumulated processes eventually used up every file handle the server had: within hours the app stopped answering altogether, while the process, the port and every other connector still looked healthy. Stopping or deactivating a connector now genuinely ends its process too.
- The server keeps running after you log out of the box; the install / update / uninstall scripts were hardened alongside it.
- Skald survives a restart of the Docker daemon.
- A user database gets the owner schema re-applied when it is opened.
- An approval bypass applies to the tool it was granted for, not to its whole connector.
- Connectors: an admin can use the ones they implicitly hold, per-user ones appear in the security-group picker, one whose process died is brought back, a global one's dependencies are installed where they are needed, and the prompt's connector list is rebuilt when the set changes.
- Telegram: pairing codes are no longer burned on the way out nor handed out unrecorded,
and
send_attachmentresolves paths in the user's own workspace. - The notification home is stored in the owner's database instead of the registry, where it silently dropped every batch it built.
- Event triage no longer notifies you about the messages your preferences told it to filter — a filtered event now produces silence rather than a notification explaining that it was filtered.
- LLM calls send the provider's model id on the wire rather than the local alias, and catalog capabilities resolve for reasoning-mode queries.
get_ast_outlineruns in the caller's workspace, gives a markdown heading a section range instead of a single line, and shows a proper name and icon on its chat card.- The re-login dialog no longer hijacks the login screen, the new-chat
+menu is visible and clickable, and the session-detail page stays live instead of freezing on a snapshot. - A silently dead agent WebSocket is detected and redialled.
- Opening Files, Plugins, Shared folders or a plugin's own page from a link no longer covers it with the full-screen chat: the chat docks to the side, as on every other page.
- A generated image lands in your own workspace instead of a server folder nobody could reach, so the assistant can finally send it to you on Telegram, open it in the viewer, or work on it with a command. It still shows inline in the web chat, its file is named after the prompt, and it is now readable only by the person who asked for it.
Releases up to and including 0.2.0 predate this file; git log is the record for them.