diff --git a/CHANGELOG.md b/CHANGELOG.md index f16292408..e2a4917e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,21 @@ New entries are written as one fragment file per change in [changelog.d/](change ## [Unreleased] +## [0.2.11] - 2026-10-27 + +### Added + +- Settings has a **Workflows** page: the factory presets, your own definitions as `workflows/.json` in the workspace, and which one this project uses. A definition is edited as a node table — id, name, role, inputs, outputs, guards, refusal — with the flowchart drawn above it from the same table and each guard showing the sentence it would print right now, or saying the fact could not be read. *Customize* copies a preset into a new file and never edits the shipped one, and saving an unedited definition writes identical bytes (#1272, step 3). + +### Changed + +- A finished task card leaves the task board's active list, and the Done column shows the newest 20 archived cards; a group's overall card now completes when its last child finishes, is cancelled by a rejected approval, or fails because its Bot was deleted, and a Bot's board asks for that Bot's own finished cards (#1252). +- Feishu (Lark) is now connected on Settings → Connectors (左下角「连接应用」), not through the Secrets page or a config file. The one Feishu row offers two modes — a custom-bot webhook (outbound only, as before) or a self-built app with its long connection — and renders one field per credential: the App ID is kept in the record because it is not a secret, the App Secret only in `secrets.json`. App mode proves the pair with one tenant token, opens the socket from the row, answers a message back into the same Feishu chat as the app, and offers `Choose Bots`; the row also carries **允许的飞书用户** — nobody by default, the sender who was turned away listed with Allow, and a field to paste an `open_id` — so a stranger's message never spends the owner's tokens. `Disconnect` closes the socket and clears both credentials. A replayed `event_id` still lands once, and a half-saved pair dials nothing and says so. The app pair is no longer read from `FEISHU_APP_ID` on the Secrets page, and `feishu` is now a reserved capability name. ([#1266](https://github.com/ThinkFlowLab/FlyBot/issues/1266), [#1292](https://github.com/ThinkFlowLab/FlyBot/issues/1292)) + +### Fixed + +- Claiming or assigning a card in a group now posts the one public line the room notice asks for — `接了 #1253,第一步是 …` — in the claiming member's voice. The line goes into the room log without opening a round or waking anyone, takes the card's own note as the first step, and is not repeated for the same card within 30 minutes; progress stays on the card. ([#1253](https://github.com/ThinkFlowLab/FlyBot/issues/1253)) + ## [0.2.10] - 2026-10-27 ### Added diff --git a/changelog.d/1252-board-archive.changed.md b/changelog.d/1252-board-archive.changed.md deleted file mode 100644 index 651ef4655..000000000 --- a/changelog.d/1252-board-archive.changed.md +++ /dev/null @@ -1 +0,0 @@ -A finished task card leaves the task board's active list, and the Done column shows the newest 20 archived cards; a group's overall card now completes when its last child finishes, is cancelled by a rejected approval, or fails because its Bot was deleted, and a Bot's board asks for that Bot's own finished cards (#1252). diff --git a/changelog.d/1253-claim-cue.fixed.md b/changelog.d/1253-claim-cue.fixed.md deleted file mode 100644 index b9366353d..000000000 --- a/changelog.d/1253-claim-cue.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Claiming or assigning a card in a group now posts the one public line the room notice asks for — `接了 #1253,第一步是 …` — in the claiming member's voice. The line goes into the room log without opening a round or waking anyone, takes the card's own note as the first step, and is not repeated for the same card within 30 minutes; progress stays on the card. ([#1253](https://github.com/ThinkFlowLab/FlyBot/issues/1253)) diff --git a/changelog.d/1266-feishu-connector-row.changed.md b/changelog.d/1266-feishu-connector-row.changed.md deleted file mode 100644 index c05bfe41a..000000000 --- a/changelog.d/1266-feishu-connector-row.changed.md +++ /dev/null @@ -1 +0,0 @@ -Feishu (Lark) is now connected on Settings → Connectors (左下角「连接应用」), not through the Secrets page or a config file. The one Feishu row offers two modes — a custom-bot webhook (outbound only, as before) or a self-built app with its long connection — and renders one field per credential: the App ID is kept in the record because it is not a secret, the App Secret only in `secrets.json`. App mode proves the pair with one tenant token, opens the socket from the row, answers a message back into the same Feishu chat as the app, and offers `Choose Bots`; the row also carries **允许的飞书用户** — nobody by default, the sender who was turned away listed with Allow, and a field to paste an `open_id` — so a stranger's message never spends the owner's tokens. `Disconnect` closes the socket and clears both credentials. A replayed `event_id` still lands once, and a half-saved pair dials nothing and says so. The app pair is no longer read from `FEISHU_APP_ID` on the Secrets page, and `feishu` is now a reserved capability name. ([#1266](https://github.com/ThinkFlowLab/FlyBot/issues/1266), [#1292](https://github.com/ThinkFlowLab/FlyBot/issues/1292)) diff --git a/changelog.d/1299-workflows.added.md b/changelog.d/1299-workflows.added.md deleted file mode 100644 index aeea4bce0..000000000 --- a/changelog.d/1299-workflows.added.md +++ /dev/null @@ -1 +0,0 @@ -Settings has a **Workflows** page: the factory presets, your own definitions as `workflows/.json` in the workspace, and which one this project uses. A definition is edited as a node table — id, name, role, inputs, outputs, guards, refusal — with the flowchart drawn above it from the same table and each guard showing the sentence it would print right now, or saying the fact could not be read. *Customize* copies a preset into a new file and never edits the shipped one, and saving an unedited definition writes identical bytes (#1272, step 3). diff --git a/core/package-lock.json b/core/package-lock.json index 70aecd937..be7d04693 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "ds-bot", - "version": "0.2.10", + "version": "0.2.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ds-bot", - "version": "0.2.10", + "version": "0.2.11", "license": "Apache-2.0", "dependencies": { "@larksuiteoapi/node-sdk": "1.76.0" diff --git a/core/package.json b/core/package.json index b1e3b29e1..a1867c314 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "ds-bot", - "version": "0.2.10", + "version": "0.2.11", "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 6d2236a10..4f9af0da7 100644 --- a/patches/ds-bot/0007-version-and-tooling.patch +++ b/patches/ds-bot/0007-version-and-tooling.patch @@ -56,14 +56,14 @@ diff --git a/package-lock.json b/package-lock.json { "name": "ds-bot", - "version": "0.1.5", -+ "version": "0.2.10", ++ "version": "0.2.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ds-bot", - "version": "0.1.5", -+ "version": "0.2.10", ++ "version": "0.2.11", "license": "Apache-2.0", + "dependencies": { + "@larksuiteoapi/node-sdk": "1.76.0" @@ -694,7 +694,7 @@ diff --git a/package.json b/package.json { "name": "ds-bot", - "version": "0.1.5", -+ "version": "0.2.10", ++ "version": "0.2.11", "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",