diff --git a/CHANGELOG.md b/CHANGELOG.md index 211912b49..21103fca6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,68 @@ New entries are written as one fragment file per change in [changelog.d/](change ## [Unreleased] +## [0.2.14] - 2026-10-30 + +### Added + +- A Bot that needs `PROJECT.md`, `ROADMAP.md`, `docs/governance.md`, a decision file or `LESSONS.md` can now read it through the `project_state` tool, which lists the Project State files of its working folder with a sha256 content hash, byte size and last-modified time, or returns one file whole up to 200,000 bytes. A missing file, an oversized file and a folder without `.git` each answer with the reason instead of an empty string ([#1702](https://github.com/ThinkFlowLab/FlyBot/issues/1702)). +- A Project now has a board of its own: one read-only view over the work under it, grouped by where it lives (Bots, groups, workflow runs), showing each row's column, assignee and the run and node it came from, with every row opening the task it comes from. A Project with nothing under it says so instead of failing. Only the Project's owner sees the management controls, and the host refuses a binding or a Project change from anyone else rather than relying on the page to hide a button. Open the board at `#project=` ([#1710](https://github.com/ThinkFlowLab/FlyBot/issues/1710)). +- A Main Bot can retire a Bot with `archive_bot`: it leaves the tree (freeing a `maxChildren` slot) and the default Bot list, while its chats, memory and history stay readable and it can be restored. Deleting a Bot stays the owner's own action in the UI ([#638](https://github.com/ThinkFlowLab/FlyBot/issues/638)). + +### Changed + +- The workflow stage drawer now looks like the rest of FlyBot: the Bot details drawer's title, role line and pill tabs, soft pill buttons, chat-bubble node cards and run card, the system font stack, and accent tints mixed from the theme's `--bt-accent` instead of a fixed blue, so every theme recolours it ([#1654](https://github.com/ThinkFlowLab/FlyBot/issues/1654)). +- A Bot that is busy now acknowledges a new message with one short, natural sentence written by a quick model call, in the message's language, instead of a templated line that quoted a truncated piece of the message; when the model does not answer within 3 seconds only the pending dots show ([#1665](https://github.com/ThinkFlowLab/FlyBot/issues/1665)). + +### Fixed + +- A Bot turn the provider refused with a requests-per-window `429` (`Limit type: requests`, `Remaining: 0`) is now asked again after a backoff — 2 s, 8 s and 30 s — instead of spending the turn, and the group round or sender keeps waiting for the same exchange. A refusal that outlasts every attempt ends the turn once, in the visible failure line the chat already draws, naming the provider text. A budget or quota refusal is not asked again ([#1308](https://github.com/ThinkFlowLab/FlyBot/issues/1308)). +- The new-task form in Scheduled tasks no longer opens with the first Bot already chosen: the **Send to** picker starts on "Pick a Bot or group chat", and **Create task** stays disabled until a Bot or group chat is picked, so a task can no longer be created for whoever sorts first on one click ([#1334](https://github.com/ThinkFlowLab/FlyBot/issues/1334)). +- Retrying a Workflow task no longer leaves two indistinguishable run rows: every attempt keeps its row, the older finished attempt is marked `superseded by ` and the newer one `retry of `, and the room opens on the newest attempt for that task. Two live attempts for one task are both shown unmarked. ([#1507](https://github.com/ThinkFlowLab/FlyBot/issues/1507)) +- A human message sent while a foreground tool or job wait has been open for more than 60 seconds now stops that turn the way **Stop** does and keeps the message in the inbox, so the line is claimed at once instead of waiting for the command to finish. Shorter waits, finished waits, group rooms and idle Bots are untouched ([#1509](https://github.com/ThinkFlowLab/FlyBot/issues/1509)). +- A run that ended early on `needs-human`, `already-claimed`, `tip-unchanged` or `open-pr` no longer reads as a failed step: the run log ends with `⏹ 提前结束 · ` and still quotes the Bot's reply, instead of saying the node failed and stopped there ([#1577](https://github.com/ThinkFlowLab/FlyBot/issues/1577)). +- A Workflow node that names no model now runs on the profile default whichever surface started the run, so the same graph no longer changes model, cost and tool capability with whoever pressed start; the connector ceiling and the refusal of a run started by a friend's Bot still hold ([#1582](https://github.com/ThinkFlowLab/FlyBot/issues/1582)). +- The face-to-face room no longer closes itself a few seconds after `face-start`: one snapshot that lists no peer no longer counts as every other home leaving, so the room ends only when two polls in a row find no other home, or the server sends the leave event. Seats a room has listed are remembered per room, so a dropped peer no longer looks like a room of one ([#1606](https://github.com/ThinkFlowLab/FlyBot/issues/1606)). +- The room approval dock no longer tells you another owner is waiting when the card is yours: the "Waiting for the owner's approval" card (no buttons) now waits until both approval lists it polls have answered and neither holds a card for this room, so a list that is one 5 s poll behind leaves the dock quiet instead of hiding your own Approve / Reject buttons ([#1607](https://github.com/ThinkFlowLab/FlyBot/issues/1607)). +- An attempt a Workflow graph edit stops no longer loses its `superseded by` marker: the history row that edit writes now carries the id of the run it ended, so once the same task is handed to the workflow again the Runs tab names the stopped attempt as superseded by the retry. A legacy demo record that stores a run id keeps it in the migrated row too ([#1611](https://github.com/ThinkFlowLab/FlyBot/issues/1611)). +- A face room no longer closes itself when the member list is still catching up: the "everyone left" count advances only on a poll, so the `face-start` response no longer spends its one poll of slack and a single lagging poll after **Enter chat** keeps the room open. The second agreeing poll, or a snapshot carrying the leave, still ends it ([#1612](https://github.com/ThinkFlowLab/FlyBot/issues/1612)). +- A run Bot the host could not remove after a Workflow run ended, was stopped, or the app closed is no longer forgotten: its id stays on the run record, so the next load retries the removal instead of leaving a hidden Bot that no screen can find again. ([#1616](https://github.com/ThinkFlowLab/FlyBot/issues/1616)) +- Workflow room Runs tab keeps the HH:MM clock in its own column with a gap before the status chip, and a Failed row without a host reason shows the Failed chip once instead of also painting a clipped red F. +- Deleting a workflow, and a graph edit that ends a running node, no longer drop a run Bot's id before the release that can fail: an id the host would not remove stays on the archived run or in the store's own `orphans` list, and the next load's reap retries it instead of leaving a hidden Bot no state names. +- After a message is sent on DeepSeek Harness 0.2.1, the Bot avatar and shimmering status line under the transcript show again: the activity row finds `RunningStatus` even when it sits inside the `conversation.chat.flow` slot ([#1626](https://github.com/ThinkFlowLab/FlyBot/issues/1626)). +- The busy-ack bubble no longer repeats one canned sentence. While a Bot is working, a new message gets a short one-line ack composed on the spot from what you wrote and what the Bot is doing (e.g. 「看到你说「帮我改周报」了,我正在跑命令,弄完马上接上。」), in the language of your message, with varied wording that never repeats the previous ack — still instant, no extra model call ([#1629](https://github.com/ThinkFlowLab/FlyBot/issues/1629)). +- Deleting a Workflow no longer leaves its task claim behind, so the task matches again on the next board write instead of failing with `No such workflow`; a store that already holds a claim for a deleted Workflow drops it when the plugin loads. ([#1632](https://github.com/ThinkFlowLab/FlyBot/issues/1632)) +- The busy ack now quotes your own message exactly: typing `{d}` or `{t}` in a line no longer makes the ack swap in the running tool's words (or drop it) ([#1634](https://github.com/ThinkFlowLab/FlyBot/issues/1634)). +- An opened thinking row no longer prints its first line twice: the folded row still names a line of its reasoning next to 思考过程, and once you open it that preview steps aside so only the full text below shows the sentence ([#1636](https://github.com/ThinkFlowLab/FlyBot/issues/1636)). +- A room's own pending approval card is no longer announced as "Waiting for the owner's approval": the dock also reads the room's own `pendingApprovals` — the array its `pendingCount` counts — so the one 5 s poll where its own lists are behind stays quiet instead of hiding your own Approve / Reject buttons, while a card it never draws (decided on its reply bubble or in the Bot's chat) keeps the waiting line ([#1638](https://github.com/ThinkFlowLab/FlyBot/issues/1638)). +- The "Waiting for the owner's approval" card in a group chat now says where the room's approval is decided: in a Bot's chat, with one button that opens it, or on the reply bubble above it, which is already on screen. When the dock cannot place the card it says only what it said before ([#1640](https://github.com/ThinkFlowLab/FlyBot/issues/1640)). +- The folded thinking row's one-line preview now skips fences and horizontal rules, cuts on a character boundary instead of halving an emoji, and ends a clipped line with an ellipsis; reasoning that is nothing but markup says how many lines it has instead of showing a fence fragment ([#1642](https://github.com/ThinkFlowLab/FlyBot/issues/1642)). +- A tool result now closes its foreground wait, so the 60-second steering line only aborts a turn that is genuinely waiting: a human line that arrives after a turn has merely been running for a while, with every tool already returned, no longer interrupts it. The Bot's "running tool" chip also clears as soon as the tool returns. ([#1644](https://github.com/ThinkFlowLab/FlyBot/issues/1644)) +- A member Bot busy with a tool in a group chat now acknowledges a person's line there, the same one short line the own-chat path already speaks (`#1646`). The ack is keyed by the member's room Session and drawn on that member's row in the room flow — the host's line, or the same blinking indicator #1656 draws while that line is still on its way, never a fixed sentence; a line that reaches no running member, and every own-chat case, is unchanged. +- A Workflow no longer keeps a task forever: when the card's own fields later name another live Workflow or local Bot, its stored claim and route are dropped and the card is matched again, so the task moves instead of staying on the old target. Re-ingesting the same target is still a no-op, and a trigger or a card that names nothing leaves the claim alone. The Workflows panel now lists, per Workflow, the task ids it holds (bounded to 20 ids plus a count) and gives each one a Re-match action that drops just that claim through the existing ingest call, with no second polling loop. ([#1647](https://github.com/ThinkFlowLab/FlyBot/issues/1647)) +- A person's line in a group room now lets a member's 60-second wait go instead of being held until it returns: when the member turn the round is waiting on has had a tool running for over a minute, the host ends that turn the way Stop does and the next round answers the line, while the person's message waits in the room's own queue. ([#1650](https://github.com/ThinkFlowLab/FlyBot/issues/1650)) +- Editing only the name of a scheduled task no longer rewrites its repeat: an interval that is not a whole number of minutes, such as 90 seconds, now reads as **Every 90 seconds**, the form holds that exact value in its seconds unit, and saving a task whose repeat was not touched leaves the stored interval alone instead of rounding it to 2 minutes ([#1651](https://github.com/ThinkFlowLab/FlyBot/issues/1651)). +- The workflow drawer's flowchart is laid out from its steps again: nodes and the parallel-branch frame no longer fall back into normal flow (a CSS order bug kept them `position:relative`), wires are routed orthogonally from the drawn and measured node boxes with one fork and one join point, the graph fits the drawer width, and a long run summary is clamped to three lines with a Show more toggle ([#1652](https://github.com/ThinkFlowLab/FlyBot/issues/1652)). +- The busy-ack bubble no longer falls back to the fixed line 「看到了,这步做完就接着处理你这条。」 while the host's acknowledgment is on its way: it shows only the Bot's mark and a short blinking indicator, and the host's context-aware line replaces it when it arrives ([#1656](https://github.com/ThinkFlowLab/FlyBot/issues/1656)). +- A line a person sends to a group room while a member is being let go is no longer dropped: it stays queued for the room, nothing is steered into the stopping member, and the round answers it exactly once ([#1664](https://github.com/ThinkFlowLab/FlyBot/issues/1664)). +- Steer now lets a busy Bot's long tool wait go after 60 seconds in the case it was built for: a person's line reaches the Session as `agent/inbox/spliced` while the tool blocks, so the own chat and a group room both stop the wait instead of holding the line until the command finishes. The line still waits in the inbox and is answered at once ([#1666](https://github.com/ThinkFlowLab/FlyBot/issues/1666)). +- The drawer's Edit tab keeps a parallel step's cards apart: in a 364px drawer three or more branches used to be fitted onto each other, so the later card took the click and a branch's out-port could not start a wire. While a parallel layer's cards do stay apart the plane draws exactly what it drew before, and a two-branch graph is unchanged ([#1677](https://github.com/ThinkFlowLab/FlyBot/issues/1677)). +- A person's line sent to a busy Bot is acknowledged the moment it arrives, not only when the turn gets round to claiming it: the ack is composed from the inbox splice DSH writes on arrival, and the later claim no longer composes a second one for the same line ([#1678](https://github.com/ThinkFlowLab/FlyBot/issues/1678)). +- Pressing **Stop** while a requests-per-window `429` had a Bot's answer waiting on a backoff timer now drops that wait: a stopped round is not asked again, so it costs no model call and no tools, and the answer it would have produced is no longer thrown away afterwards. A stop that lands after the retry already went out still cancels the running turn, a `429` with no stop retries exactly as before, and a retry a newer turn in the same Session is already waiting on is left alone ([#1679](https://github.com/ThinkFlowLab/FlyBot/issues/1679)). +- A busy Bot acknowledges a person's line once, not twice: the line id ledger that keeps one line from earning a second model call now outlives the ack entry, which the end of the turn clears, and is bounded — its fixed-size filter is rebuilt before it saturates, so a long-lived chat keeps getting acknowledgments ([#1684](https://github.com/ThinkFlowLab/FlyBot/issues/1684)). A person's line sent to a member that is speaking in a room is acknowledged at arrival too, instead of waiting for the claim the relay never makes ([#1646](https://github.com/ThinkFlowLab/FlyBot/issues/1646), [#1678](https://github.com/ThinkFlowLab/FlyBot/issues/1678)). +- Dragging a node or dropping a Bot in the flowchart drawer's **Edit** plane no longer rewrites the stored coordinates: in the laid-out plane where parallel branches would overlap, a drag now changes only the graph's structure and the plane says where layout lives (Settings), so a drag that used to move the same node on the Settings canvas no longer does ([#1686](https://github.com/ThinkFlowLab/FlyBot/issues/1686)). +- The workflow drawer's Edit plane now draws a parallel step's dashed frame around the cards it actually laid out and routes every wire around those cards: at a narrow drawer the frame no longer leaves the canvas on both sides, its bottom edge no longer runs under the cards, and no wire cuts through a card of another line. The fitted plane and the Read-only plane draw exactly what they drew before ([#1693](https://github.com/ThinkFlowLab/FlyBot/issues/1693)). +- The chat no longer acknowledges the message that starts a turn as if it had arrived while the Bot was busy: an idle conversation now answers with no generated "on it" line and no extra model call, while a line that really lands during a running turn keeps its one acknowledgment ([#1698](https://github.com/ThinkFlowLab/FlyBot/issues/1698)). +- The tools that resolve a Bot through `findTeamBot` no longer accept a retired one: `message_bot`, `stop_bot`, `update_bot`, `create_group`, `update_group` (`add_members`, `admin`, `task_lead`) and `archive_bot` refuse it with the familiar "No Bot named …" line instead of waking a Bot the owner just put away. `list_bots` and the Bot's readable chat are unchanged ([#1700](https://github.com/ThinkFlowLab/FlyBot/issues/1700)). Other host paths that resolve a Bot by name (task assignee, group `@Name`, capability attach, memory scope) are tracked in [#1709](https://github.com/ThinkFlowLab/FlyBot/issues/1709). +- Project and roster ids resolve only from their table's own keys: `project-read {id: "__proto__"}`, `project-bind {kind: "bot", id: "__proto__"}` and `project-of` no longer answer from `Object.prototype`, a binding request can no longer write `projectId` onto it (which made every unbound Bot and group report one Project until the next restart), and `findBot` / `findRooms` stop returning it as a member or a group ([#1704](https://github.com/ThinkFlowLab/FlyBot/issues/1704)). +- A workflow run that fails now reaches the Inbox: one *Needs you* row per graph, naming the graph and the node that failed with the failure text as its reason, bounded to that graph's newest failure inside the same 7-day window the Done list uses ([#1706](https://github.com/ThinkFlowLab/FlyBot/issues/1706)). **Open** goes to Settings → Workflow graphs, because a failed run has no chat to land in and there is no per-graph deep link yet. A run that is still going, and a failure older than the window, stay off the list. +- A folded thinking row stays inside the message column: a long reasoning line without a break is clipped at the row with an ellipsis instead of widening it past its column, and the opened row wraps that line instead of scrolling sideways ([#1718](https://github.com/ThinkFlowLab/FlyBot/issues/1718)). + +### Security + +- Host lookups that index a saved table with an id or name from the request now read only that table's own keys, so `__proto__` is no longer a Bot, a conversation, a task or a capability: `update-bot`, `task-update` and `set-flags` can no longer write a field onto `Object.prototype`, `set-main` no longer persists it as a Main Bot, and `capability-delete` refuses a name that does not exist instead of answering success, an invitation revoke no longer writes `revokedAt` onto `Object.prototype`, a member removal refuses an id that is not an own member, and a grants write for a nonexistent Bot is refused instead of re-pointing the grants table ([#1711](https://github.com/ThinkFlowLab/FlyBot/issues/1711)). +- A Project board now paints only the cards the asking member could open through the task list: `project-board` carries the signed-in actor into the board and drops every card the same member would be refused there, so one member can no longer read another member's Project cards while `tasks` already refuses them. A card stays visible to its requester, to the owner of its Bot or an ancestor of it, and to the admin of the room it came from; an empty board is still an answer, not an error ([#1723](https://github.com/ThinkFlowLab/FlyBot/issues/1723)). + ## [0.2.13] - 2026-10-29 ### Changed diff --git a/changelog.d/1308-rate-limit-retry.fixed.md b/changelog.d/1308-rate-limit-retry.fixed.md deleted file mode 100644 index 2efefeb8a..000000000 --- a/changelog.d/1308-rate-limit-retry.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A Bot turn the provider refused with a requests-per-window `429` (`Limit type: requests`, `Remaining: 0`) is now asked again after a backoff — 2 s, 8 s and 30 s — instead of spending the turn, and the group round or sender keeps waiting for the same exchange. A refusal that outlasts every attempt ends the turn once, in the visible failure line the chat already draws, naming the provider text. A budget or quota refusal is not asked again ([#1308](https://github.com/ThinkFlowLab/FlyBot/issues/1308)). diff --git a/changelog.d/1334-taskform-no-preselect.fixed.md b/changelog.d/1334-taskform-no-preselect.fixed.md deleted file mode 100644 index 4a4ae39c6..000000000 --- a/changelog.d/1334-taskform-no-preselect.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The new-task form in Scheduled tasks no longer opens with the first Bot already chosen: the **Send to** picker starts on "Pick a Bot or group chat", and **Create task** stays disabled until a Bot or group chat is picked, so a task can no longer be created for whoever sorts first on one click ([#1334](https://github.com/ThinkFlowLab/FlyBot/issues/1334)). diff --git a/changelog.d/1507-workflow-runs-superseded.fixed.md b/changelog.d/1507-workflow-runs-superseded.fixed.md deleted file mode 100644 index 3ed8a6884..000000000 --- a/changelog.d/1507-workflow-runs-superseded.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Retrying a Workflow task no longer leaves two indistinguishable run rows: every attempt keeps its row, the older finished attempt is marked `superseded by ` and the newer one `retry of `, and the room opens on the newest attempt for that task. Two live attempts for one task are both shown unmarked. ([#1507](https://github.com/ThinkFlowLab/FlyBot/issues/1507)) diff --git a/changelog.d/1509-steering-interrupt.fixed.md b/changelog.d/1509-steering-interrupt.fixed.md deleted file mode 100644 index 8a843e2f1..000000000 --- a/changelog.d/1509-steering-interrupt.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A human message sent while a foreground tool or job wait has been open for more than 60 seconds now stops that turn the way **Stop** does and keeps the message in the inbox, so the line is claimed at once instead of waiting for the command to finish. Shorter waits, finished waits, group rooms and idle Bots are untouched ([#1509](https://github.com/ThinkFlowLab/FlyBot/issues/1509)). diff --git a/changelog.d/1577.fixed.md b/changelog.d/1577.fixed.md deleted file mode 100644 index 5dfdde16f..000000000 --- a/changelog.d/1577.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A run that ended early on `needs-human`, `already-claimed`, `tip-unchanged` or `open-pr` no longer reads as a failed step: the run log ends with `⏹ 提前结束 · ` and still quotes the Bot's reply, instead of saying the node failed and stopped there ([#1577](https://github.com/ThinkFlowLab/FlyBot/issues/1577)). diff --git a/changelog.d/1582.fixed.md b/changelog.d/1582.fixed.md deleted file mode 100644 index ac4a7af18..000000000 --- a/changelog.d/1582.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A Workflow node that names no model now runs on the profile default whichever surface started the run, so the same graph no longer changes model, cost and tool capability with whoever pressed start; the connector ceiling and the refusal of a run started by a friend's Bot still hold ([#1582](https://github.com/ThinkFlowLab/FlyBot/issues/1582)). diff --git a/changelog.d/1606-face-room-peer-gone.fixed.md b/changelog.d/1606-face-room-peer-gone.fixed.md deleted file mode 100644 index 0e1456a63..000000000 --- a/changelog.d/1606-face-room-peer-gone.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The face-to-face room no longer closes itself a few seconds after `face-start`: one snapshot that lists no peer no longer counts as every other home leaving, so the room ends only when two polls in a row find no other home, or the server sends the leave event. Seats a room has listed are remembered per room, so a dropped peer no longer looks like a room of one ([#1606](https://github.com/ThinkFlowLab/FlyBot/issues/1606)). diff --git a/changelog.d/1607-approval-dock-waiting.fixed.md b/changelog.d/1607-approval-dock-waiting.fixed.md deleted file mode 100644 index 2b145ccdf..000000000 --- a/changelog.d/1607-approval-dock-waiting.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The room approval dock no longer tells you another owner is waiting when the card is yours: the "Waiting for the owner's approval" card (no buttons) now waits until both approval lists it polls have answered and neither holds a card for this room, so a list that is one 5 s poll behind leaves the dock quiet instead of hiding your own Approve / Reject buttons ([#1607](https://github.com/ThinkFlowLab/FlyBot/issues/1607)). diff --git a/changelog.d/1611-workflow-history-row-id.fixed.md b/changelog.d/1611-workflow-history-row-id.fixed.md deleted file mode 100644 index 739810bf0..000000000 --- a/changelog.d/1611-workflow-history-row-id.fixed.md +++ /dev/null @@ -1 +0,0 @@ -An attempt a Workflow graph edit stops no longer loses its `superseded by` marker: the history row that edit writes now carries the id of the run it ended, so once the same task is handed to the workflow again the Runs tab names the stopped attempt as superseded by the retry. A legacy demo record that stores a run id keeps it in the migrated row too ([#1611](https://github.com/ThinkFlowLab/FlyBot/issues/1611)). diff --git a/changelog.d/1612-face-start-miss.fixed.md b/changelog.d/1612-face-start-miss.fixed.md deleted file mode 100644 index df1b1531c..000000000 --- a/changelog.d/1612-face-start-miss.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A face room no longer closes itself when the member list is still catching up: the "everyone left" count advances only on a poll, so the `face-start` response no longer spends its one poll of slack and a single lagging poll after **Enter chat** keeps the room open. The second agreeing poll, or a snapshot carrying the leave, still ends it ([#1612](https://github.com/ThinkFlowLab/FlyBot/issues/1612)). diff --git a/changelog.d/1616-workflow-release-keeps-id.fixed.md b/changelog.d/1616-workflow-release-keeps-id.fixed.md deleted file mode 100644 index 21ee12916..000000000 --- a/changelog.d/1616-workflow-release-keeps-id.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A run Bot the host could not remove after a Workflow run ended, was stopped, or the app closed is no longer forgotten: its id stays on the run record, so the next load retries the removal instead of leaving a hidden Bot that no screen can find again. ([#1616](https://github.com/ThinkFlowLab/FlyBot/issues/1616)) diff --git a/changelog.d/1618-runs-duration-chip.fixed.md b/changelog.d/1618-runs-duration-chip.fixed.md deleted file mode 100644 index b56b13286..000000000 --- a/changelog.d/1618-runs-duration-chip.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Workflow room Runs tab keeps the HH:MM clock in its own column with a gap before the status chip, and a Failed row without a host reason shows the Failed chip once instead of also painting a clipped red F. diff --git a/changelog.d/1621-workflow-orphan-release.fixed.md b/changelog.d/1621-workflow-orphan-release.fixed.md deleted file mode 100644 index 3a072f72f..000000000 --- a/changelog.d/1621-workflow-orphan-release.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Deleting a workflow, and a graph edit that ends a running node, no longer drop a run Bot's id before the release that can fail: an id the host would not remove stays on the archived run or in the store's own `orphans` list, and the next load's reap retries it instead of leaving a hidden Bot no state names. diff --git a/changelog.d/1626-activity-row-running-host.fixed.md b/changelog.d/1626-activity-row-running-host.fixed.md deleted file mode 100644 index cacb22f80..000000000 --- a/changelog.d/1626-activity-row-running-host.fixed.md +++ /dev/null @@ -1 +0,0 @@ -After a message is sent on DeepSeek Harness 0.2.1, the Bot avatar and shimmering status line under the transcript show again: the activity row finds `RunningStatus` even when it sits inside the `conversation.chat.flow` slot ([#1626](https://github.com/ThinkFlowLab/FlyBot/issues/1626)). diff --git a/changelog.d/1629-busy-ack-natural.fixed.md b/changelog.d/1629-busy-ack-natural.fixed.md deleted file mode 100644 index 3d73df06a..000000000 --- a/changelog.d/1629-busy-ack-natural.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The busy-ack bubble no longer repeats one canned sentence. While a Bot is working, a new message gets a short one-line ack composed on the spot from what you wrote and what the Bot is doing (e.g. 「看到你说「帮我改周报」了,我正在跑命令,弄完马上接上。」), in the language of your message, with varied wording that never repeats the previous ack — still instant, no extra model call ([#1629](https://github.com/ThinkFlowLab/FlyBot/issues/1629)). diff --git a/changelog.d/1632.fixed.md b/changelog.d/1632.fixed.md deleted file mode 100644 index 2fde59ce8..000000000 --- a/changelog.d/1632.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Deleting a Workflow no longer leaves its task claim behind, so the task matches again on the next board write instead of failing with `No such workflow`; a store that already holds a claim for a deleted Workflow drops it when the plugin loads. ([#1632](https://github.com/ThinkFlowLab/FlyBot/issues/1632)) diff --git a/changelog.d/1634-busy-ack-placeholder.fixed.md b/changelog.d/1634-busy-ack-placeholder.fixed.md deleted file mode 100644 index 32f2fa1f3..000000000 --- a/changelog.d/1634-busy-ack-placeholder.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The busy ack now quotes your own message exactly: typing `{d}` or `{t}` in a line no longer makes the ack swap in the running tool's words (or drop it) ([#1634](https://github.com/ThinkFlowLab/FlyBot/issues/1634)). diff --git a/changelog.d/1636-thinking-row-duplicate-line.fixed.md b/changelog.d/1636-thinking-row-duplicate-line.fixed.md deleted file mode 100644 index 92ea94050..000000000 --- a/changelog.d/1636-thinking-row-duplicate-line.fixed.md +++ /dev/null @@ -1 +0,0 @@ -An opened thinking row no longer prints its first line twice: the folded row still names a line of its reasoning next to 思考过程, and once you open it that preview steps aside so only the full text below shows the sentence ([#1636](https://github.com/ThinkFlowLab/FlyBot/issues/1636)). diff --git a/changelog.d/1638-approval-dock-room-card.fixed.md b/changelog.d/1638-approval-dock-room-card.fixed.md deleted file mode 100644 index 454dc460e..000000000 --- a/changelog.d/1638-approval-dock-room-card.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A room's own pending approval card is no longer announced as "Waiting for the owner's approval": the dock also reads the room's own `pendingApprovals` — the array its `pendingCount` counts — so the one 5 s poll where its own lists are behind stays quiet instead of hiding your own Approve / Reject buttons, while a card it never draws (decided on its reply bubble or in the Bot's chat) keeps the waiting line ([#1638](https://github.com/ThinkFlowLab/FlyBot/issues/1638)). diff --git a/changelog.d/1640-waiting-card-destination.fixed.md b/changelog.d/1640-waiting-card-destination.fixed.md deleted file mode 100644 index 385e3ec27..000000000 --- a/changelog.d/1640-waiting-card-destination.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The "Waiting for the owner's approval" card in a group chat now says where the room's approval is decided: in a Bot's chat, with one button that opens it, or on the reply bubble above it, which is already on screen. When the dock cannot place the card it says only what it said before ([#1640](https://github.com/ThinkFlowLab/FlyBot/issues/1640)). diff --git a/changelog.d/1642-folded-thinking-preview.fixed.md b/changelog.d/1642-folded-thinking-preview.fixed.md deleted file mode 100644 index af5609109..000000000 --- a/changelog.d/1642-folded-thinking-preview.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The folded thinking row's one-line preview now skips fences and horizontal rules, cuts on a character boundary instead of halving an emoji, and ends a clipped line with an ellipsis; reasoning that is nothing but markup says how many lines it has instead of showing a fence fragment ([#1642](https://github.com/ThinkFlowLab/FlyBot/issues/1642)). diff --git a/changelog.d/1644-tool-result-closes-wait.fixed.md b/changelog.d/1644-tool-result-closes-wait.fixed.md deleted file mode 100644 index 05c6b89e2..000000000 --- a/changelog.d/1644-tool-result-closes-wait.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A tool result now closes its foreground wait, so the 60-second steering line only aborts a turn that is genuinely waiting: a human line that arrives after a turn has merely been running for a while, with every tool already returned, no longer interrupts it. The Bot's "running tool" chip also clears as soon as the tool returns. ([#1644](https://github.com/ThinkFlowLab/FlyBot/issues/1644)) diff --git a/changelog.d/1646-room-busy-ack.fixed.md b/changelog.d/1646-room-busy-ack.fixed.md deleted file mode 100644 index cc26d53a3..000000000 --- a/changelog.d/1646-room-busy-ack.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A member Bot busy with a tool in a group chat now acknowledges a person's line there, the same one short line the own-chat path already speaks (`#1646`). The ack is keyed by the member's room Session and drawn on that member's row in the room flow — the host's line, or the same blinking indicator #1656 draws while that line is still on its way, never a fixed sentence; a line that reaches no running member, and every own-chat case, is unchanged. diff --git a/changelog.d/1647-workflow-claim-rematch.fixed.md b/changelog.d/1647-workflow-claim-rematch.fixed.md deleted file mode 100644 index c7fce7006..000000000 --- a/changelog.d/1647-workflow-claim-rematch.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A Workflow no longer keeps a task forever: when the card's own fields later name another live Workflow or local Bot, its stored claim and route are dropped and the card is matched again, so the task moves instead of staying on the old target. Re-ingesting the same target is still a no-op, and a trigger or a card that names nothing leaves the claim alone. The Workflows panel now lists, per Workflow, the task ids it holds (bounded to 20 ids plus a count) and gives each one a Re-match action that drops just that claim through the existing ingest call, with no second polling loop. ([#1647](https://github.com/ThinkFlowLab/FlyBot/issues/1647)) diff --git a/changelog.d/1650-room-steering-let-go.fixed.md b/changelog.d/1650-room-steering-let-go.fixed.md deleted file mode 100644 index 0777f2990..000000000 --- a/changelog.d/1650-room-steering-let-go.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A person's line in a group room now lets a member's 60-second wait go instead of being held until it returns: when the member turn the round is waiting on has had a tool running for over a minute, the host ends that turn the way Stop does and the next round answers the line, while the person's message waits in the room's own queue. ([#1650](https://github.com/ThinkFlowLab/FlyBot/issues/1650)) diff --git a/changelog.d/1651-schedules-seconds-roundtrip.fixed.md b/changelog.d/1651-schedules-seconds-roundtrip.fixed.md deleted file mode 100644 index 794418a23..000000000 --- a/changelog.d/1651-schedules-seconds-roundtrip.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Editing only the name of a scheduled task no longer rewrites its repeat: an interval that is not a whole number of minutes, such as 90 seconds, now reads as **Every 90 seconds**, the form holds that exact value in its seconds unit, and saving a task whose repeat was not touched leaves the stored interval alone instead of rounding it to 2 minutes ([#1651](https://github.com/ThinkFlowLab/FlyBot/issues/1651)). diff --git a/changelog.d/1652-workflow-drawer-flowchart.fixed.md b/changelog.d/1652-workflow-drawer-flowchart.fixed.md deleted file mode 100644 index 7bf3001f6..000000000 --- a/changelog.d/1652-workflow-drawer-flowchart.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The workflow drawer's flowchart is laid out from its steps again: nodes and the parallel-branch frame no longer fall back into normal flow (a CSS order bug kept them `position:relative`), wires are routed orthogonally from the drawn and measured node boxes with one fork and one join point, the graph fits the drawer width, and a long run summary is clamped to three lines with a Show more toggle ([#1652](https://github.com/ThinkFlowLab/FlyBot/issues/1652)). diff --git a/changelog.d/1654-workflow-stage-style.changed.md b/changelog.d/1654-workflow-stage-style.changed.md deleted file mode 100644 index d91a3ff5c..000000000 --- a/changelog.d/1654-workflow-stage-style.changed.md +++ /dev/null @@ -1 +0,0 @@ -The workflow stage drawer now looks like the rest of FlyBot: the Bot details drawer's title, role line and pill tabs, soft pill buttons, chat-bubble node cards and run card, the system font stack, and accent tints mixed from the theme's `--bt-accent` instead of a fixed blue, so every theme recolours it ([#1654](https://github.com/ThinkFlowLab/FlyBot/issues/1654)). diff --git a/changelog.d/1656-busy-ack-no-canned.fixed.md b/changelog.d/1656-busy-ack-no-canned.fixed.md deleted file mode 100644 index 65020b1b7..000000000 --- a/changelog.d/1656-busy-ack-no-canned.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The busy-ack bubble no longer falls back to the fixed line 「看到了,这步做完就接着处理你这条。」 while the host's acknowledgment is on its way: it shows only the Bot's mark and a short blinking indicator, and the host's context-aware line replaces it when it arrives ([#1656](https://github.com/ThinkFlowLab/FlyBot/issues/1656)). diff --git a/changelog.d/1664-room-line-not-dropped.fixed.md b/changelog.d/1664-room-line-not-dropped.fixed.md deleted file mode 100644 index d2a92d2ec..000000000 --- a/changelog.d/1664-room-line-not-dropped.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A line a person sends to a group room while a member is being let go is no longer dropped: it stays queued for the room, nothing is steered into the stopping member, and the round answers it exactly once ([#1664](https://github.com/ThinkFlowLab/FlyBot/issues/1664)). diff --git a/changelog.d/1665-busy-ack-model.changed.md b/changelog.d/1665-busy-ack-model.changed.md deleted file mode 100644 index 09d384dcb..000000000 --- a/changelog.d/1665-busy-ack-model.changed.md +++ /dev/null @@ -1 +0,0 @@ -A Bot that is busy now acknowledges a new message with one short, natural sentence written by a quick model call, in the message's language, instead of a templated line that quoted a truncated piece of the message; when the model does not answer within 3 seconds only the pending dots show ([#1665](https://github.com/ThinkFlowLab/FlyBot/issues/1665)). diff --git a/changelog.d/1666-steering-spliced.fixed.md b/changelog.d/1666-steering-spliced.fixed.md deleted file mode 100644 index cdac5faf5..000000000 --- a/changelog.d/1666-steering-spliced.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Steer now lets a busy Bot's long tool wait go after 60 seconds in the case it was built for: a person's line reaches the Session as `agent/inbox/spliced` while the tool blocks, so the own chat and a group room both stop the wait instead of holding the line until the command finishes. The line still waits in the inbox and is answered at once ([#1666](https://github.com/ThinkFlowLab/FlyBot/issues/1666)). diff --git a/changelog.d/1677-drawer-edit-overlap.fixed.md b/changelog.d/1677-drawer-edit-overlap.fixed.md deleted file mode 100644 index 4df10a23d..000000000 --- a/changelog.d/1677-drawer-edit-overlap.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The drawer's Edit tab keeps a parallel step's cards apart: in a 364px drawer three or more branches used to be fitted onto each other, so the later card took the click and a branch's out-port could not start a wire. While a parallel layer's cards do stay apart the plane draws exactly what it drew before, and a two-branch graph is unchanged ([#1677](https://github.com/ThinkFlowLab/FlyBot/issues/1677)). diff --git a/changelog.d/1678-busy-ack-arrival.fixed.md b/changelog.d/1678-busy-ack-arrival.fixed.md deleted file mode 100644 index c6fa84e74..000000000 --- a/changelog.d/1678-busy-ack-arrival.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A person's line sent to a busy Bot is acknowledged the moment it arrives, not only when the turn gets round to claiming it: the ack is composed from the inbox splice DSH writes on arrival, and the later claim no longer composes a second one for the same line ([#1678](https://github.com/ThinkFlowLab/FlyBot/issues/1678)). diff --git a/changelog.d/1679-stop-during-backoff.fixed.md b/changelog.d/1679-stop-during-backoff.fixed.md deleted file mode 100644 index 43faf44cb..000000000 --- a/changelog.d/1679-stop-during-backoff.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Pressing **Stop** while a requests-per-window `429` had a Bot's answer waiting on a backoff timer now drops that wait: a stopped round is not asked again, so it costs no model call and no tools, and the answer it would have produced is no longer thrown away afterwards. A stop that lands after the retry already went out still cancels the running turn, a `429` with no stop retries exactly as before, and a retry a newer turn in the same Session is already waiting on is left alone ([#1679](https://github.com/ThinkFlowLab/FlyBot/issues/1679)). diff --git a/changelog.d/1684-busy-ack-ledger.fixed.md b/changelog.d/1684-busy-ack-ledger.fixed.md deleted file mode 100644 index cfed96140..000000000 --- a/changelog.d/1684-busy-ack-ledger.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A busy Bot acknowledges a person's line once, not twice: the line id ledger that keeps one line from earning a second model call now outlives the ack entry, which the end of the turn clears, and is bounded — its fixed-size filter is rebuilt before it saturates, so a long-lived chat keeps getting acknowledgments ([#1684](https://github.com/ThinkFlowLab/FlyBot/issues/1684)). A person's line sent to a member that is speaking in a room is acknowledged at arrival too, instead of waiting for the claim the relay never makes ([#1646](https://github.com/ThinkFlowLab/FlyBot/issues/1646), [#1678](https://github.com/ThinkFlowLab/FlyBot/issues/1678)). diff --git a/changelog.d/1686-edit-plane-commit-coords.fixed.md b/changelog.d/1686-edit-plane-commit-coords.fixed.md deleted file mode 100644 index 4c666f968..000000000 --- a/changelog.d/1686-edit-plane-commit-coords.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Dragging a node or dropping a Bot in the flowchart drawer's **Edit** plane no longer rewrites the stored coordinates: in the laid-out plane where parallel branches would overlap, a drag now changes only the graph's structure and the plane says where layout lives (Settings), so a drag that used to move the same node on the Settings canvas no longer does ([#1686](https://github.com/ThinkFlowLab/FlyBot/issues/1686)). diff --git a/changelog.d/1693-drawer-frame-wires.fixed.md b/changelog.d/1693-drawer-frame-wires.fixed.md deleted file mode 100644 index cb1c578f9..000000000 --- a/changelog.d/1693-drawer-frame-wires.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The workflow drawer's Edit plane now draws a parallel step's dashed frame around the cards it actually laid out and routes every wire around those cards: at a narrow drawer the frame no longer leaves the canvas on both sides, its bottom edge no longer runs under the cards, and no wire cuts through a card of another line. The fitted plane and the Read-only plane draw exactly what they drew before ([#1693](https://github.com/ThinkFlowLab/FlyBot/issues/1693)). diff --git a/changelog.d/1698-busy-ack-fresh-line.fixed.md b/changelog.d/1698-busy-ack-fresh-line.fixed.md deleted file mode 100644 index 28f401fa4..000000000 --- a/changelog.d/1698-busy-ack-fresh-line.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The chat no longer acknowledges the message that starts a turn as if it had arrived while the Bot was busy: an idle conversation now answers with no generated "on it" line and no extra model call, while a line that really lands during a running turn keeps its one acknowledgment ([#1698](https://github.com/ThinkFlowLab/FlyBot/issues/1698)). diff --git a/changelog.d/1700-retired-bot-unreachable.fixed.md b/changelog.d/1700-retired-bot-unreachable.fixed.md deleted file mode 100644 index 4f32108f1..000000000 --- a/changelog.d/1700-retired-bot-unreachable.fixed.md +++ /dev/null @@ -1 +0,0 @@ -The tools that resolve a Bot through `findTeamBot` no longer accept a retired one: `message_bot`, `stop_bot`, `update_bot`, `create_group`, `update_group` (`add_members`, `admin`, `task_lead`) and `archive_bot` refuse it with the familiar "No Bot named …" line instead of waking a Bot the owner just put away. `list_bots` and the Bot's readable chat are unchanged ([#1700](https://github.com/ThinkFlowLab/FlyBot/issues/1700)). Other host paths that resolve a Bot by name (task assignee, group `@Name`, capability attach, memory scope) are tracked in [#1709](https://github.com/ThinkFlowLab/FlyBot/issues/1709). diff --git a/changelog.d/1702-project-state.added.md b/changelog.d/1702-project-state.added.md deleted file mode 100644 index 80adb10ab..000000000 --- a/changelog.d/1702-project-state.added.md +++ /dev/null @@ -1 +0,0 @@ -A Bot that needs `PROJECT.md`, `ROADMAP.md`, `docs/governance.md`, a decision file or `LESSONS.md` can now read it through the `project_state` tool, which lists the Project State files of its working folder with a sha256 content hash, byte size and last-modified time, or returns one file whole up to 200,000 bytes. A missing file, an oversized file and a folder without `.git` each answer with the reason instead of an empty string ([#1702](https://github.com/ThinkFlowLab/FlyBot/issues/1702)). diff --git a/changelog.d/1704-proto-safe-project-ids.fixed.md b/changelog.d/1704-proto-safe-project-ids.fixed.md deleted file mode 100644 index b53d10383..000000000 --- a/changelog.d/1704-proto-safe-project-ids.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Project and roster ids resolve only from their table's own keys: `project-read {id: "__proto__"}`, `project-bind {kind: "bot", id: "__proto__"}` and `project-of` no longer answer from `Object.prototype`, a binding request can no longer write `projectId` onto it (which made every unbound Bot and group report one Project until the next restart), and `findBot` / `findRooms` stop returning it as a member or a group ([#1704](https://github.com/ThinkFlowLab/FlyBot/issues/1704)). diff --git a/changelog.d/1706-workflow-failure-inbox.fixed.md b/changelog.d/1706-workflow-failure-inbox.fixed.md deleted file mode 100644 index 37809c9b3..000000000 --- a/changelog.d/1706-workflow-failure-inbox.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A workflow run that fails now reaches the Inbox: one *Needs you* row per graph, naming the graph and the node that failed with the failure text as its reason, bounded to that graph's newest failure inside the same 7-day window the Done list uses ([#1706](https://github.com/ThinkFlowLab/FlyBot/issues/1706)). **Open** goes to Settings → Workflow graphs, because a failed run has no chat to land in and there is no per-graph deep link yet. A run that is still going, and a failure older than the window, stay off the list. diff --git a/changelog.d/1710.added.md b/changelog.d/1710.added.md deleted file mode 100644 index 1cb105c23..000000000 --- a/changelog.d/1710.added.md +++ /dev/null @@ -1 +0,0 @@ -A Project now has a board of its own: one read-only view over the work under it, grouped by where it lives (Bots, groups, workflow runs), showing each row's column, assignee and the run and node it came from, with every row opening the task it comes from. A Project with nothing under it says so instead of failing. Only the Project's owner sees the management controls, and the host refuses a binding or a Project change from anyone else rather than relying on the page to hide a button. Open the board at `#project=` ([#1710](https://github.com/ThinkFlowLab/FlyBot/issues/1710)). diff --git a/changelog.d/1711-own-key-lookups.security.md b/changelog.d/1711-own-key-lookups.security.md deleted file mode 100644 index 9866f8cad..000000000 --- a/changelog.d/1711-own-key-lookups.security.md +++ /dev/null @@ -1 +0,0 @@ -Host lookups that index a saved table with an id or name from the request now read only that table's own keys, so `__proto__` is no longer a Bot, a conversation, a task or a capability: `update-bot`, `task-update` and `set-flags` can no longer write a field onto `Object.prototype`, `set-main` no longer persists it as a Main Bot, and `capability-delete` refuses a name that does not exist instead of answering success, an invitation revoke no longer writes `revokedAt` onto `Object.prototype`, a member removal refuses an id that is not an own member, and a grants write for a nonexistent Bot is refused instead of re-pointing the grants table ([#1711](https://github.com/ThinkFlowLab/FlyBot/issues/1711)). diff --git a/changelog.d/1718-think-row-clip.fixed.md b/changelog.d/1718-think-row-clip.fixed.md deleted file mode 100644 index 897d8b5ed..000000000 --- a/changelog.d/1718-think-row-clip.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A folded thinking row stays inside the message column: a long reasoning line without a break is clipped at the row with an ellipsis instead of widening it past its column, and the opened row wraps that line instead of scrolling sideways ([#1718](https://github.com/ThinkFlowLab/FlyBot/issues/1718)). diff --git a/changelog.d/1723-project-board-actor.security.md b/changelog.d/1723-project-board-actor.security.md deleted file mode 100644 index e315681f7..000000000 --- a/changelog.d/1723-project-board-actor.security.md +++ /dev/null @@ -1 +0,0 @@ -A Project board now paints only the cards the asking member could open through the task list: `project-board` carries the signed-in actor into the board and drops every card the same member would be refused there, so one member can no longer read another member's Project cards while `tasks` already refuses them. A card stays visible to its requester, to the owner of its Bot or an ancestor of it, and to the admin of the room it came from; an empty board is still an answer, not an error ([#1723](https://github.com/ThinkFlowLab/FlyBot/issues/1723)). diff --git a/changelog.d/638-archive-bot.added.md b/changelog.d/638-archive-bot.added.md deleted file mode 100644 index dee937634..000000000 --- a/changelog.d/638-archive-bot.added.md +++ /dev/null @@ -1 +0,0 @@ -A Main Bot can retire a Bot with `archive_bot`: it leaves the tree (freeing a `maxChildren` slot) and the default Bot list, while its chats, memory and history stay readable and it can be restored. Deleting a Bot stays the owner's own action in the UI ([#638](https://github.com/ThinkFlowLab/FlyBot/issues/638)). diff --git a/core/package-lock.json b/core/package-lock.json index 625b1ac81..9fc0d7841 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "ds-bot", - "version": "0.2.13", + "version": "0.2.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ds-bot", - "version": "0.2.13", + "version": "0.2.14", "license": "Apache-2.0", "dependencies": { "@larksuiteoapi/node-sdk": "1.76.0" diff --git a/core/package.json b/core/package.json index ab5783c92..14cd54a5d 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "ds-bot", - "version": "0.2.13", + "version": "0.2.14", "description": "DS Bot: a team of long-lived Bots for DeepSeek Harness, with Main Bots, Bot-to-Bot messages and group chats", "keywords": [ "dsh-plugin", diff --git a/patches/ds-bot/0007-version-and-tooling.patch b/patches/ds-bot/0007-version-and-tooling.patch index 9de888e6a..d227179a8 100644 --- a/patches/ds-bot/0007-version-and-tooling.patch +++ b/patches/ds-bot/0007-version-and-tooling.patch @@ -68,14 +68,14 @@ diff --git a/package-lock.json b/package-lock.json { "name": "ds-bot", - "version": "0.1.5", -+ "version": "0.2.13", ++ "version": "0.2.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ds-bot", - "version": "0.1.5", -+ "version": "0.2.13", ++ "version": "0.2.14", "license": "Apache-2.0", + "dependencies": { + "@larksuiteoapi/node-sdk": "1.76.0" @@ -706,7 +706,7 @@ diff --git a/package.json b/package.json { "name": "ds-bot", - "version": "0.1.5", -+ "version": "0.2.13", ++ "version": "0.2.14", "description": "DS Bot: a team of long-lived Bots for DeepSeek Harness, with Main Bots, Bot-to-Bot messages and group chats", "keywords": [ "dsh-plugin",