@boyingliu01/opencode-plugin 0.10.12 → 0.10.14
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/index.ts
CHANGED
|
@@ -322,6 +322,8 @@ export const XpGatePlugin = async (input: OpenCodePluginInput) => {
|
|
|
322
322
|
if (!checked) {
|
|
323
323
|
checked = true
|
|
324
324
|
const msg = await runBackgroundUpdates(directory).catch(() => null)
|
|
325
|
+
// Primary notification: upgrade-notice.json → TUI sidebar banner
|
|
326
|
+
// Fallback: stderr for users without TUI panel registered
|
|
325
327
|
if (msg) process.stderr.write(`${msg}\n`)
|
|
326
328
|
}
|
|
327
329
|
},
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
|
-
**Generated:** 2026-06-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-06-25
|
|
4
|
+
**Commit:** 1fe912a
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.10.
|
|
6
|
+
**Version:** 0.10.14.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, 3 experts from ≥2 providers, domestic models only). Supports design + code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
|
-
**Generated:** 2026-06-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-06-25
|
|
4
|
+
**Commit:** 1fe912a
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.10.
|
|
6
|
+
**Version:** 0.10.14.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**11-phase** development pipeline: ISOLATE → AUTO-ESTIMATE → THINK → PLAN → BUILD → REVIEW → USER ACCEPTANCE → FEEDBACK → SHIP → LAND → CLEANUP. Phase 2 default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE in Phase 1: design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
|
-
**Generated:** 2026-06-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-06-25
|
|
4
|
+
**Commit:** 1fe912a
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.10.
|
|
6
|
+
**Version:** 0.10.14.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
package/tui-plugin.ts
CHANGED
|
@@ -329,11 +329,29 @@ function renderMultiSprintSidebar(sprints: DiscoveredSprint[]): string | null {
|
|
|
329
329
|
return blocks.join("\n---\n");
|
|
330
330
|
}
|
|
331
331
|
|
|
332
|
-
function renderContent(sprints: DiscoveredSprint[], upgradeNotice: string | null): string | null {
|
|
332
|
+
function renderContent(sprints: DiscoveredSprint[], upgradeNotice: string | null, dir: string): string | null {
|
|
333
333
|
const sprintContent = renderMultiSprintSidebar(sprints)
|
|
334
|
-
|
|
335
|
-
if (
|
|
336
|
-
|
|
334
|
+
|
|
335
|
+
if (sprintContent) {
|
|
336
|
+
return [upgradeNotice, sprintContent].filter(Boolean).join("\n---\n")
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// Early-phase placeholders: when no sprint data yet, check for directory hints
|
|
340
|
+
const hasStateDir = existsSync(join(dir, ".sprint-state"))
|
|
341
|
+
const gitRoot = findGitRoot(dir)
|
|
342
|
+
const hasWorktreesRoot = gitRoot ? existsSync(join(gitRoot, ".worktrees")) : false
|
|
343
|
+
|
|
344
|
+
if (hasStateDir) {
|
|
345
|
+
const placeholder = "SPRINT FLOW\n → 初始化中..."
|
|
346
|
+
return [upgradeNotice, placeholder].filter(Boolean).join("\n---\n")
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
if (hasWorktreesRoot) {
|
|
350
|
+
const placeholder = "SPRINT FLOW\n · 准备中..."
|
|
351
|
+
return [upgradeNotice, placeholder].filter(Boolean).join("\n---\n")
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
return upgradeNotice || null
|
|
337
355
|
}
|
|
338
356
|
|
|
339
357
|
// ── Upgrade notice ──
|
|
@@ -376,15 +394,14 @@ const tuiPlugin: TuiSlotPlugin = {
|
|
|
376
394
|
const dir = process.env.XP_GATE_PROJECT_DIR || process.cwd();
|
|
377
395
|
const now = Date.now();
|
|
378
396
|
|
|
379
|
-
// Use cache if still valid for current directory
|
|
380
397
|
if (_cache && _cache.dir === dir && now - _cache.ts < CACHE_TTL_MS) {
|
|
381
|
-
return renderContent(_cache.data, _cache.upgradeNotice);
|
|
398
|
+
return renderContent(_cache.data, _cache.upgradeNotice, dir);
|
|
382
399
|
}
|
|
383
400
|
|
|
384
401
|
const sprints = discoverActiveSprints(dir);
|
|
385
402
|
const upgradeNotice = renderUpgradeNotice()
|
|
386
403
|
_cache = { data: sprints, ts: now, dir, upgradeNotice };
|
|
387
|
-
return renderContent(sprints, upgradeNotice);
|
|
404
|
+
return renderContent(sprints, upgradeNotice, dir);
|
|
388
405
|
},
|
|
389
406
|
},
|
|
390
407
|
}
|