dsh-global-todo 0.12.10 → 0.12.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/docs/DISTRIBUTION.md +2 -2
- package/lib/index.js +1 -1
- package/lib/routes.js +10 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## [0.12.11] — 2026-10-21
|
|
2
|
+
|
|
3
|
+
One more silent fallback, found while re-reading the settings path.
|
|
4
|
+
|
|
5
|
+
- **`{idleMinutes: 30.5}` was accepted and then ignored.** `normalizeSettings` only keeps
|
|
6
|
+
integers for the minute fields and otherwise falls back to the default, so the request looked
|
|
7
|
+
like it worked while the value never changed. The settings route now rejects a fractional
|
|
8
|
+
minute with `400 invalid-body`, like every other out-of-range value.
|
|
9
|
+
|
|
1
10
|
## [0.12.10] — 2026-10-21
|
|
2
11
|
|
|
3
12
|
Two follow-ups from #3, plus the notification channel this repository actually has.
|
package/docs/DISTRIBUTION.md
CHANGED
|
@@ -15,10 +15,10 @@ of trusting this table.
|
|
|
15
15
|
|
|
16
16
|
| Registry | Form | What it gives you | Verified state |
|
|
17
17
|
|---|---|---|---|
|
|
18
|
-
| **npm** | the package | the install path | `dsh-global-todo@0.
|
|
18
|
+
| **npm** | the package | the install path | `dsh-global-todo@0.12.10` |
|
|
19
19
|
| **1024 Store** ([deepseek1024.com](https://deepseek1024.com)) · [repo](https://github.com/imsai-sh/awesome-deepseek-harness-plugins) | catalog entry, merged [#654](https://github.com/imsai-sh/awesome-deepseek-harness-plugins/pull/654) | searchable, has a public API | 🟡 entry live, but its install line still resolves to `github:LUgABeEEE/dsh-global-todo` — their npm enrichment has not caught up. Install works either way. |
|
|
20
20
|
| **dsh.pub** · [page](https://dsh.pub/en/plugins/dsh-global-todo/) | published page + `dshpub` CLI | `npx dshpub add LUgABeEEE/dsh-global-todo` | ✅ page live, pinned to a commit |
|
|
21
|
-
| **DSH-Plugins-Marketplace** ([bradeGithub](https://github.com/bradeGithub/DSH-Plugins-Marketplace)) | `registry.json`, collected from the `dsh-plugin` topic | one-click install inside DSH | ✅ `v0.
|
|
21
|
+
| **DSH-Plugins-Marketplace** ([bradeGithub](https://github.com/bradeGithub/DSH-Plugins-Marketplace)) | `registry.json`, collected from the `dsh-plugin` topic | one-click install inside DSH | ✅ `v0.12.x`, risk tier `safe` |
|
|
22
22
|
| **awesome-dsh-plugin** ([19.7k★](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)) | one YAML per plugin | the largest directory | ✅ merged [#7498](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/7498) |
|
|
23
23
|
| **walkinglabs/awesome-deepseek-harness-plugins** | README entry (source-verified list) | review-backed listing | ✅ merged [#114](https://github.com/walkinglabs/awesome-deepseek-harness-plugins/pull/114) |
|
|
24
24
|
|
package/lib/index.js
CHANGED
|
@@ -37,7 +37,7 @@ import { createStore, resolveStorePath } from './store.js'
|
|
|
37
37
|
import { createTools } from './tools.js'
|
|
38
38
|
|
|
39
39
|
/** Must equal `package.json`'s version; `npm run check` enforces that. */
|
|
40
|
-
export const VERSION = '0.12.
|
|
40
|
+
export const VERSION = '0.12.11'
|
|
41
41
|
|
|
42
42
|
/** Plugin id. Also the Loader row id in `cordis.patch.yml`. */
|
|
43
43
|
export const name = 'dsh-global-todo'
|
package/lib/routes.js
CHANGED
|
@@ -742,17 +742,22 @@ export function createRoutes(deps) {
|
|
|
742
742
|
*/
|
|
743
743
|
function assertSettingsRange(body) {
|
|
744
744
|
const ranges = {
|
|
745
|
-
idleMinutes: [5, 24 * 60],
|
|
746
|
-
cooldownMinutes: [5, 24 * 60],
|
|
747
|
-
ingestConfirmBelow: [0, 1],
|
|
748
|
-
reminderLeadMinutes: [0, 24 * 60],
|
|
745
|
+
idleMinutes: [5, 24 * 60, true],
|
|
746
|
+
cooldownMinutes: [5, 24 * 60, true],
|
|
747
|
+
ingestConfirmBelow: [0, 1, false],
|
|
748
|
+
reminderLeadMinutes: [0, 24 * 60, true],
|
|
749
749
|
}
|
|
750
|
-
for (const [field, [low, high]] of Object.entries(ranges)) {
|
|
750
|
+
for (const [field, [low, high, whole]] of Object.entries(ranges)) {
|
|
751
751
|
const value = body[field]
|
|
752
752
|
if (value === undefined || value === null) continue
|
|
753
753
|
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
754
754
|
throw new TodoError('invalid-body', `${field} 必须是数字(${low}–${high})`)
|
|
755
755
|
}
|
|
756
|
+
// normalizeSettings only accepts integers for the minute fields and otherwise falls back
|
|
757
|
+
// to the default — a silently ignored 30.5 is the same trap as a silent clamp.
|
|
758
|
+
if (whole === true && !Number.isInteger(value)) {
|
|
759
|
+
throw new TodoError('invalid-body', `${field} 必须是整数分钟,收到 ${value}`)
|
|
760
|
+
}
|
|
756
761
|
if (value < low || value > high) {
|
|
757
762
|
throw new TodoError('invalid-body', `${field} 必须在 ${low}–${high} 之间,收到 ${value}`)
|
|
758
763
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-global-todo",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.11",
|
|
4
4
|
"icon": "./docs/icon.svg",
|
|
5
5
|
"description": "Cross-session todo list for DeepSeek Harness: one JSON file a person and an agent both write to, with step plans that ship as a numbered hand-off, session read-back, and a human confirmation before an agent's \"done\" counts.",
|
|
6
6
|
"type": "module",
|