Releases: PeckBoard/peckboard
Releases · PeckBoard/peckboard
Release list
0.0.155
0.0.154
Default model setting replaces the Auto pseudo-model Settings gains a Default Model (core.settings/app `default_model`, GET/PUT /api/settings/default-model). Dispatch resolves an unset or legacy auto/default model to it, keeping effort-based routing only as the fallback when nothing is configured. ModelPicker no longer injects an Auto row: the empty option renders only where a defaultLabel is passed. New sessions, cards, reviews and repeating tasks preselect the configured default; the session toolbar shows the default's name for unpinned sessions; project modals keep an explicit "App default" inherit option. Covered by dispatch_resolves_unset_model_to_default_model_setting plus updated model-picker-search / overlay-primitives / doc-review e2e (model option testids are provider-prefixed, e.g. claude:claude-opus-4-8). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0.0.153
mcp oauth: configurable redirect broker for providers that pin redire…
0.0.152
Queue: durable FIFO that never interrupts the agent + per-message Sen…
0.0.151
Docs site: Document Review page + landing refresh New review.html covering the annotate/run/apply loop, versions and history, the repo-to-worktree-to-file wizard, and the GitHub PR link. The landing gains a Review feature row with a captured screenshot, a Doc review marquee entry, and an also-in-the-box grid for the features the page never mentioned (usage dashboard, repeating tasks, multi-user access, plans, reports, provider-agnostic tool rows). The screenshots harness grows a document-review.png capture; docs e2e covers the new page and the landing's new anatomy. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0.0.150
Render documents, not their source, on every markdown surface A review showed a ```mermaid fence as its own source, an unhighlighted code block, and an image at whatever width the file happened to carry. Chat and the plan view had diagrams; the review screen never got them, and a report rendered one way inside a review and another in its own viewer. Every markdown surface now renders the same document the same way: diagrams, highlighted fenced code, images capped to the text column. In the review pane a diagram REPLACES its <pre> rather than nesting in one, so it keeps the block's line anchor and is annotatable like any other passage. Two rendering bugs surfaced doing it, both from the same root cause -- this bundle strips the <style> mermaid embeds in its SVG: - Without the natural-width cap that <style> carries, `width: 100%` stretched a three-node flowchart across a full report column and scaled its text with it. MermaidBlock re-applies the cap from the viewBox. - Mermaid sizes each label from a hidden measurement on <body>, and that same <style> pins the rendered label to match. Left to inherit the surrounding column, labels outgrew their boxes and <foreignObject> clipped the last glyph -- "Draft" came out as "Draf". The stylesheet restates the body typography. The highlight.js theme moves out of ChatView into markdownHighlight, next to the plugin that emits the spans it colours: every other surface was getting highlighted code only as long as the chat happened to be in the module graph. Mermaid's own styles move to MermaidBlock.css for the same reason. PlanView drops its private copy of the mermaid component map. Relative image paths in a reviewed doc still show alt text -- serving them needs an fs-jailed asset route, which this does not add.
0.0.149
Review: keep annotation anchors on their text, and widen what a revie…
0.0.148
Doc review boot recovery must not block startup 0.0.147 looked hung on boot: resuming an interrupted review pass was awaited in main BEFORE the HTTP listener bound, and dispatching a turn goes through the provider's send path — cursor's `--resume` sat there for 120 seconds, so the server took two minutes to answer anything. Recovery now runs in a detached task alongside startup, and the "resuming …" line is logged before the dispatch rather than after it, so a slow provider spawn reads as a slow provider spawn instead of a hang. Verified against a data dir holding a review stuck in `running`: the listener binds in ~0.5s and the pass resumes right after.
0.0.147
Review runs: stop them, narrate them, survive a restart
The review screen could start a pass but never end one. A run had no
stop button, the chat lane said nothing beyond "Working…", clearing the
annotation queue left the reviewer addressing annotations that no longer
existed, and a restart stranded the review on `running` forever — the
completion listener only sees turns the current process started, so
nothing was left to move it and Run pass stayed disabled.
- Stop: POST /api/doc-reviews/{id}/stop interrupts the session, dismisses
the question a killed run leaves parked, logs the same `interrupt`
event the sessions route logs, and hands `running`/`needs_input` back
to `annotating`. Surfaced as Stop pass in the header and a Stop on the
chat lane's working row.
- The working row now names the reviewer's open tool call and updates in
place, so tool traffic never grows the feed.
- Deleting the last open annotation kills the annotation pass it emptied,
identified by the turn text — a chat-lane turn is never collateral.
- Chatting on an approved review no longer drags it back through
`running` → `annotating`; the conversation continues on the same
session either way.
- Boot recovery (`resume_running_reviews`, called from main after the
worker resume, so upgrades get it too via the self-update re-exec):
a `running` review whose turn was genuinely in flight is re-dispatched
verbatim on the same session with the document injection re-armed;
anything else — session gone, turn already finished, user had hit Stop,
dispatch that cannot start — is handed back to `annotating`.
`needs_input` stays parked: answering it spawns the next turn itself.
- The mock reviewer gains `[mock:block]`, a run that parks until
interrupted, so the e2e suite can drive all of this deterministically.
Tests: 6 boot-recovery cases, the resumed-pass kill regression, the
stop/kill/approved-chat cases, and three e2e scenarios. Verified against
a real restart: the pass resumes on the same session and the lane says
so.
0.0.146
review wizard: repo → worktree → file cascade Scan every workspace folder's subfolders for git repos (new GET /api/repos, no git binary needed) and offer each repo's worktrees — main checkout, git-registered linked trees, and .peckboard/worktrees card trees — all jailed to the folder. The wizard's Worktree source is now three searchable dropdowns: Repo → Worktree → Document. Markdown listing takes ?scope=<rel/dir> (legacy ?worktree=<id8> kept). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>