From 37cab6e633d282a57ab0d312893f88af2fd527d1 Mon Sep 17 00:00:00 2001 From: Danyang Chen Date: Sun, 15 Nov 2026 02:04:38 +0200 Subject: [PATCH] Release v0.2.33 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changelog fragments consumed (8): - #3050 pending-retry-busy - #3062 share-one-at-a-time - #3064 release-section-date - #3071 mixed-approve-reason - #3073 i18n-helper-returns - #3075 batch-failure-card - #3077 i18n-indexed-read - #3080 approval-dock-hidden-tab ## Release notes ### Changed - `scripts/i18n-usage.mjs` sees copy a helper hands back: a `return` of a sentence — or of a `?:` / `||` expression built from sentences — is reported by `--missing` instead of staying invisible to both i18n checks, as long as the helper is drawn (called at a copy position, or rendered as an `h(Component, …)`). A helper whose value is data — a status id the file compares, a React key, a class name, a URL or a `location.href` template — is not reported. Product measured five such sites in `plugins/social/client.js`; the missing-entry baseline grows by 34 pins of English a reader can still see untranslated, and the bare-draw and template-draw counts are unchanged. - `scripts/i18n-usage.mjs` now closes the `]` it opens: an indexed read like `list[0]` no longer leaves the scan inside a bracket it can never close, so a literal beside it (`return list[0] || 'None yet'`) is reported by `--missing` instead of being swallowed along with the rest of the file. The same walk also records the names a `${}` hole interpolates, so a sentence a helper builds from a local counts as read rather than as a dead local. The missing-entry baseline grows by one pin — `Your own Bots stay shared. {} can share it again.`, the other branch of a sentence already pinned — and the bare-draw and template-draw counts are unchanged. See [#3077](https://github.com/ThinkFlowLab/FlyBot/issues/3077). - The approval dock no longer reads the server while its tab is hidden; coming back to the tab reads both of its lists at once instead of waiting for the next five-second poll (#3080). ### Fixed - In the Bot Social dock, the **Retry** on a failed send listed from another chat no longer looks clickable while a different hold is being decided: the whole list's Retry goes disabled with the decision that is in flight, because the click there was already being dropped ([#3050](https://github.com/ThinkFlowLab/FlyBot/issues/3050)). - Sharing a Bot with a friend is one share at a time: while a row is sending, no other row is clickable, so a second click no longer takes the sending row's "Sharing…" over and posts a second grant at the same moment ([#3062](https://github.com/ThinkFlowLab/FlyBot/issues/3062)). - A release section is dated by the Asia/Shanghai calendar day of the release moment instead of the UTC day, so a release after 16:00Z no longer lands under the previous date (`changelog.mjs release` defaults to it; `--date` still overrides) (#3064). - "Approve all" no longer loses the reason when a batch is mixed: a hold that fails keeps its own sentence and the card it belongs to ("Eve: the hold is stale") while the holds that did send leave as before, and the receipt still names only the people reached (#3071). - `plugins/social/client.js`: a Bot Social hold whose send failed now keeps a **Not sent** card, with the reason and **Retry**, until it leaves the queue — the dock remembers the failure itself instead of only the one error line the next click clears, so the 5 s poll that still lists the hold as pending can no longer draw it back as waiting. Its **Retry** sends the same approval again (`approve`), once per card that actually went out, and a second click on a card that already went out sends nothing. A local failed hold keeps the host's own retry, which can be tried again while the host keeps answering with a failure. Written-by: Release --- CHANGELOG.md | 19 ++++++++++++++++++- changelog.d/3050-pending-retry-busy.fixed.md | 1 - changelog.d/3062-share-one-at-a-time.fixed.md | 1 - .../3064-release-section-date.fixed.md | 1 - .../3071-mixed-approve-reason.fixed.md | 1 - .../3073-i18n-helper-returns.changed.md | 1 - changelog.d/3075-batch-failure-card.fixed.md | 1 - changelog.d/3077-i18n-indexed-read.changed.md | 1 - .../3080-approval-dock-hidden-tab.changed.md | 1 - core/package-lock.json | 4 ++-- core/package.json | 2 +- patches/ds-bot/0007-version-and-tooling.patch | 6 +++--- 12 files changed, 24 insertions(+), 15 deletions(-) delete mode 100644 changelog.d/3050-pending-retry-busy.fixed.md delete mode 100644 changelog.d/3062-share-one-at-a-time.fixed.md delete mode 100644 changelog.d/3064-release-section-date.fixed.md delete mode 100644 changelog.d/3071-mixed-approve-reason.fixed.md delete mode 100644 changelog.d/3073-i18n-helper-returns.changed.md delete mode 100644 changelog.d/3075-batch-failure-card.fixed.md delete mode 100644 changelog.d/3077-i18n-indexed-read.changed.md delete mode 100644 changelog.d/3080-approval-dock-hidden-tab.changed.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 2735e5709..c22910d04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,22 @@ New entries are written as one fragment file per change in [changelog.d/](change ## [Unreleased] +## [0.2.33] - 2026-11-15 + +### Changed + +- `scripts/i18n-usage.mjs` sees copy a helper hands back: a `return` of a sentence — or of a `?:` / `||` expression built from sentences — is reported by `--missing` instead of staying invisible to both i18n checks, as long as the helper is drawn (called at a copy position, or rendered as an `h(Component, …)`). A helper whose value is data — a status id the file compares, a React key, a class name, a URL or a `location.href` template — is not reported. Product measured five such sites in `plugins/social/client.js`; the missing-entry baseline grows by 34 pins of English a reader can still see untranslated, and the bare-draw and template-draw counts are unchanged. +- `scripts/i18n-usage.mjs` now closes the `]` it opens: an indexed read like `list[0]` no longer leaves the scan inside a bracket it can never close, so a literal beside it (`return list[0] || 'None yet'`) is reported by `--missing` instead of being swallowed along with the rest of the file. The same walk also records the names a `${}` hole interpolates, so a sentence a helper builds from a local counts as read rather than as a dead local. The missing-entry baseline grows by one pin — `Your own Bots stay shared. {} can share it again.`, the other branch of a sentence already pinned — and the bare-draw and template-draw counts are unchanged. See [#3077](https://github.com/ThinkFlowLab/FlyBot/issues/3077). +- The approval dock no longer reads the server while its tab is hidden; coming back to the tab reads both of its lists at once instead of waiting for the next five-second poll (#3080). + +### Fixed + +- In the Bot Social dock, the **Retry** on a failed send listed from another chat no longer looks clickable while a different hold is being decided: the whole list's Retry goes disabled with the decision that is in flight, because the click there was already being dropped ([#3050](https://github.com/ThinkFlowLab/FlyBot/issues/3050)). +- Sharing a Bot with a friend is one share at a time: while a row is sending, no other row is clickable, so a second click no longer takes the sending row's "Sharing…" over and posts a second grant at the same moment ([#3062](https://github.com/ThinkFlowLab/FlyBot/issues/3062)). +- A release section is dated by the Asia/Shanghai calendar day of the release moment instead of the UTC day, so a release after 16:00Z no longer lands under the previous date (`changelog.mjs release` defaults to it; `--date` still overrides) (#3064). +- "Approve all" no longer loses the reason when a batch is mixed: a hold that fails keeps its own sentence and the card it belongs to ("Eve: the hold is stale") while the holds that did send leave as before, and the receipt still names only the people reached (#3071). +- `plugins/social/client.js`: a Bot Social hold whose send failed now keeps a **Not sent** card, with the reason and **Retry**, until it leaves the queue — the dock remembers the failure itself instead of only the one error line the next click clears, so the 5 s poll that still lists the hold as pending can no longer draw it back as waiting. Its **Retry** sends the same approval again (`approve`), once per card that actually went out, and a second click on a card that already went out sends nothing. A local failed hold keeps the host's own retry, which can be tried again while the host keeps answering with a failure. + ## [0.2.32] - 2026-11-14 ### Fixed @@ -1489,7 +1505,8 @@ If you used the legacy `dsh-bot` package, remove it before you install `ds-bot`. - Only one DSH can change a team at a time; a second DSH on the same DSH home opens it read-only ([Data and backups](ds-bot/README.md#data-and-backups)). - Group chats use many tokens: each member reads the group and answers in turn. -[Unreleased]: https://github.com/ThinkFlowLab/FlyBot/compare/v0.2.32...HEAD +[Unreleased]: https://github.com/ThinkFlowLab/FlyBot/compare/v0.2.33...HEAD +[0.2.33]: https://github.com/ThinkFlowLab/FlyBot/compare/v0.2.32...v0.2.33 [0.2.32]: https://github.com/ThinkFlowLab/FlyBot/compare/v0.2.31...v0.2.32 [0.2.31]: https://github.com/ThinkFlowLab/FlyBot/compare/v0.2.30...v0.2.31 [0.2.30]: https://github.com/ThinkFlowLab/FlyBot/compare/v0.2.29...v0.2.30 diff --git a/changelog.d/3050-pending-retry-busy.fixed.md b/changelog.d/3050-pending-retry-busy.fixed.md deleted file mode 100644 index 3af985301..000000000 --- a/changelog.d/3050-pending-retry-busy.fixed.md +++ /dev/null @@ -1 +0,0 @@ -In the Bot Social dock, the **Retry** on a failed send listed from another chat no longer looks clickable while a different hold is being decided: the whole list's Retry goes disabled with the decision that is in flight, because the click there was already being dropped ([#3050](https://github.com/ThinkFlowLab/FlyBot/issues/3050)). diff --git a/changelog.d/3062-share-one-at-a-time.fixed.md b/changelog.d/3062-share-one-at-a-time.fixed.md deleted file mode 100644 index 0fd5d40cd..000000000 --- a/changelog.d/3062-share-one-at-a-time.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Sharing a Bot with a friend is one share at a time: while a row is sending, no other row is clickable, so a second click no longer takes the sending row's "Sharing…" over and posts a second grant at the same moment ([#3062](https://github.com/ThinkFlowLab/FlyBot/issues/3062)). diff --git a/changelog.d/3064-release-section-date.fixed.md b/changelog.d/3064-release-section-date.fixed.md deleted file mode 100644 index 6fa71515b..000000000 --- a/changelog.d/3064-release-section-date.fixed.md +++ /dev/null @@ -1 +0,0 @@ -A release section is dated by the Asia/Shanghai calendar day of the release moment instead of the UTC day, so a release after 16:00Z no longer lands under the previous date (`changelog.mjs release` defaults to it; `--date` still overrides) (#3064). diff --git a/changelog.d/3071-mixed-approve-reason.fixed.md b/changelog.d/3071-mixed-approve-reason.fixed.md deleted file mode 100644 index 4f4c9eeb7..000000000 --- a/changelog.d/3071-mixed-approve-reason.fixed.md +++ /dev/null @@ -1 +0,0 @@ -"Approve all" no longer loses the reason when a batch is mixed: a hold that fails keeps its own sentence and the card it belongs to ("Eve: the hold is stale") while the holds that did send leave as before, and the receipt still names only the people reached (#3071). diff --git a/changelog.d/3073-i18n-helper-returns.changed.md b/changelog.d/3073-i18n-helper-returns.changed.md deleted file mode 100644 index c0122bc86..000000000 --- a/changelog.d/3073-i18n-helper-returns.changed.md +++ /dev/null @@ -1 +0,0 @@ -`scripts/i18n-usage.mjs` sees copy a helper hands back: a `return` of a sentence — or of a `?:` / `||` expression built from sentences — is reported by `--missing` instead of staying invisible to both i18n checks, as long as the helper is drawn (called at a copy position, or rendered as an `h(Component, …)`). A helper whose value is data — a status id the file compares, a React key, a class name, a URL or a `location.href` template — is not reported. Product measured five such sites in `plugins/social/client.js`; the missing-entry baseline grows by 34 pins of English a reader can still see untranslated, and the bare-draw and template-draw counts are unchanged. diff --git a/changelog.d/3075-batch-failure-card.fixed.md b/changelog.d/3075-batch-failure-card.fixed.md deleted file mode 100644 index 937af7632..000000000 --- a/changelog.d/3075-batch-failure-card.fixed.md +++ /dev/null @@ -1 +0,0 @@ -`plugins/social/client.js`: a Bot Social hold whose send failed now keeps a **Not sent** card, with the reason and **Retry**, until it leaves the queue — the dock remembers the failure itself instead of only the one error line the next click clears, so the 5 s poll that still lists the hold as pending can no longer draw it back as waiting. Its **Retry** sends the same approval again (`approve`), once per card that actually went out, and a second click on a card that already went out sends nothing. A local failed hold keeps the host's own retry, which can be tried again while the host keeps answering with a failure. diff --git a/changelog.d/3077-i18n-indexed-read.changed.md b/changelog.d/3077-i18n-indexed-read.changed.md deleted file mode 100644 index 1cbf85c39..000000000 --- a/changelog.d/3077-i18n-indexed-read.changed.md +++ /dev/null @@ -1 +0,0 @@ -`scripts/i18n-usage.mjs` now closes the `]` it opens: an indexed read like `list[0]` no longer leaves the scan inside a bracket it can never close, so a literal beside it (`return list[0] || 'None yet'`) is reported by `--missing` instead of being swallowed along with the rest of the file. The same walk also records the names a `${}` hole interpolates, so a sentence a helper builds from a local counts as read rather than as a dead local. The missing-entry baseline grows by one pin — `Your own Bots stay shared. {} can share it again.`, the other branch of a sentence already pinned — and the bare-draw and template-draw counts are unchanged. See [#3077](https://github.com/ThinkFlowLab/FlyBot/issues/3077). diff --git a/changelog.d/3080-approval-dock-hidden-tab.changed.md b/changelog.d/3080-approval-dock-hidden-tab.changed.md deleted file mode 100644 index beaf614f8..000000000 --- a/changelog.d/3080-approval-dock-hidden-tab.changed.md +++ /dev/null @@ -1 +0,0 @@ -The approval dock no longer reads the server while its tab is hidden; coming back to the tab reads both of its lists at once instead of waiting for the next five-second poll (#3080). diff --git a/core/package-lock.json b/core/package-lock.json index f4e0c834b..6422e8a7c 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "ds-bot", - "version": "0.2.32", + "version": "0.2.33", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ds-bot", - "version": "0.2.32", + "version": "0.2.33", "license": "Apache-2.0", "dependencies": { "@larksuiteoapi/node-sdk": "1.76.0" diff --git a/core/package.json b/core/package.json index c75ad2151..dfc5a05ef 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "ds-bot", - "version": "0.2.32", + "version": "0.2.33", "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 07ee6538f..ead013226 100644 --- a/patches/ds-bot/0007-version-and-tooling.patch +++ b/patches/ds-bot/0007-version-and-tooling.patch @@ -95,14 +95,14 @@ diff --git a/package-lock.json b/package-lock.json { "name": "ds-bot", - "version": "0.1.5", -+ "version": "0.2.32", ++ "version": "0.2.33", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ds-bot", - "version": "0.1.5", -+ "version": "0.2.32", ++ "version": "0.2.33", "license": "Apache-2.0", + "dependencies": { + "@larksuiteoapi/node-sdk": "1.76.0" @@ -733,7 +733,7 @@ diff --git a/package.json b/package.json { "name": "ds-bot", - "version": "0.1.5", -+ "version": "0.2.32", ++ "version": "0.2.33", "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",