@goodandready/dsh-kanban 0.2.0 → 0.2.1
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/docs/design/DESIGN.md +1 -0
- package/lib/client.js +11 -6
- package/package.json +1 -1
package/docs/design/DESIGN.md
CHANGED
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
- Фильтрация structural noise в проверках dirtyFiles: в checkWorktreeDirty добавлен флаг --ignore-submodules=all, исключающий ложные блокировки удаления воркдеревьев из-за субмодулей и дрейфа gitlinks (#213).
|
|
67
67
|
- Фильтрация сессий субагентов: сессии с маркером subagent (origin === 'subagent' или parentId !== undefined) исключаются из liveSessions и не перезаписывают состояние корневых задач (#215).
|
|
68
68
|
## Locked Decisions
|
|
69
|
+
- **0.2.1**: Карточка настроек плагина перенесена строго в слот `settings.plugin.item` (раздел «Настройки → Плагины → Настройки плагинов») без одновременной дублирующей регистрации в `settings.section` (Issue #236).
|
|
69
70
|
|
|
70
71
|
### 2026-09-08: Релиз v0.2.0 — Milestone (SSE, Chat Sync, Templates, Two-Column Drawer, Multi-Repo) (#210, #219, #220, #222, #225)
|
|
71
72
|
- **Live SSE Channel (`/dsh-kanban/events`)**: Постоянное SSE-соединение с автоматическим переподключением для мгновенного пуша обновлений доски (`task:change`, `board:change`) без избыточного поллинга (#222).
|
package/lib/client.js
CHANGED
|
@@ -4217,12 +4217,14 @@ window.__ModuleLoader__.load({
|
|
|
4217
4217
|
if (typeof ctx.slots?.has === 'function' && !ctx.slots.has(entry.name)) {
|
|
4218
4218
|
continue
|
|
4219
4219
|
}
|
|
4220
|
-
let
|
|
4221
|
-
ctx.slots.inject(entry.name, () => {
|
|
4220
|
+
let registeredInSlot = false
|
|
4221
|
+
const res = ctx.slots.inject(entry.name, () => {
|
|
4222
4222
|
ctx.slots.register(entry, component)
|
|
4223
|
-
|
|
4223
|
+
registeredInSlot = true
|
|
4224
4224
|
})
|
|
4225
|
-
if (
|
|
4225
|
+
if (registeredInSlot || (res !== null && res !== false && res !== undefined)) {
|
|
4226
|
+
return entry.name
|
|
4227
|
+
}
|
|
4226
4228
|
} catch { /* слота нет в этой сборке — пробуем следующий */ }
|
|
4227
4229
|
}
|
|
4228
4230
|
return undefined
|
|
@@ -4233,9 +4235,12 @@ window.__ModuleLoader__.load({
|
|
|
4233
4235
|
function apply(ctx) {
|
|
4234
4236
|
ctx.effect(() => ctx.locale.register(NS, { en, zh }), 'dsh-kanban: словари')
|
|
4235
4237
|
|
|
4236
|
-
// Карточка
|
|
4237
|
-
//
|
|
4238
|
+
// Карточка настроек в Настройки → Плагины → Настройки плагинов.
|
|
4239
|
+
// Ключ обязан совпадать с пространством настроек: вкладка перебирает
|
|
4240
|
+
// объявленные пространства и рисует слот settings.plugin.item с entryKey,
|
|
4238
4241
|
// равным имени пространства.
|
|
4242
|
+
// Карточка настроек. В сборке с вкладкой «Настройки плагинов» регистрируется
|
|
4243
|
+
// в settings.plugin.item, иначе откатывается в отдельный раздел settings.section.
|
|
4239
4244
|
const cardSlot = registerFirst(ctx, [
|
|
4240
4245
|
{ name: 'settings.plugin.item', key: NS, locale: NS, inject: () => ({ ctx }) },
|
|
4241
4246
|
{ name: 'settings.section', id: '@goodandready/dsh-kanban', order: 32, locale: NS, label: () => fallbackT('title'), inject: () => ({ ctx }) },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodandready/dsh-kanban",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Visual Kanban board for DeepSeek Harness: Gitea-backed tasks, workflow columns, and a dedicated agent session per task.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|