| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: path-based --domain and --common stage filtering for skill install - Fix --domain <name> to match skills/domain/<name>/ directory paths in addition to metadata.domain, so --domain test correctly selects skills under skills/domain/test/ even when their metadata.domain is arkts/capi - Fix install --domain reporting 'Unknown skill' when the domain value is not a preset profile name; now resolves domain-to-profile only when a matching profile exists - Add --common <stage> flag to install/list skills under skills/common/<stage>/ (e.g. --common design, --common cicd) - Add matchDomain() and matchCommonStage() helpers in manifest.js for path+metadata matching - Derive TUI domain groups from actual skills/domain/<folder>/ paths instead of hardcoded DOMAIN_NAMES, so domain / test appears when skills/domain/test/ skills exist - Update selectSkillsForChoices to use matchDomain for consistent path-based selection in interactive TUI - Add stage profiles (design, development, troubleshooting) and shorthand aliases (dev, ci, req, sec) to profiles.json - Add buildNoMatchError/buildUnknownDomainError/buildUnknownCommonStageError with available-domains/stages hints - Update help text and README with --common documentation - 272 tests passing AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
fix(agents): unify OpenCode path to plural skills and auto-migrate legacy dir OpenCode installed to the singular skill/ directory while codex/claude and the marketplace use plural skills/, leaving doctor/clean blind to residues and installed skills unloaded by OpenCode. Switch the OpenCode install path to skills, add an idempotent migration on opencode target resolution that moves the legacy singular dir and merges install records, and surface a migration notice in install/clean flows. The opencode config-root helpers now accept both skill and skills basenames for the transition. Isolate the all-agent doctor test HOME/USERPROFILE/CODEX_HOME so npm test no longer mutates the real opencode directory. Closes #11 AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
feat: path-based --domain and --common stage filtering for skill install - Fix --domain <name> to match skills/domain/<name>/ directory paths in addition to metadata.domain, so --domain test correctly selects skills under skills/domain/test/ even when their metadata.domain is arkts/capi - Fix install --domain reporting 'Unknown skill' when the domain value is not a preset profile name; now resolves domain-to-profile only when a matching profile exists - Add --common <stage> flag to install/list skills under skills/common/<stage>/ (e.g. --common design, --common cicd) - Add matchDomain() and matchCommonStage() helpers in manifest.js for path+metadata matching - Derive TUI domain groups from actual skills/domain/<folder>/ paths instead of hardcoded DOMAIN_NAMES, so domain / test appears when skills/domain/test/ skills exist - Update selectSkillsForChoices to use matchDomain for consistent path-based selection in interactive TUI - Add stage profiles (design, development, troubleshooting) and shorthand aliases (dev, ci, req, sec) to profiles.json - Add buildNoMatchError/buildUnknownDomainError/buildUnknownCommonStageError with available-domains/stages hints - Update help text and README with --common documentation - 272 tests passing AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
fix(list): correct skill brackets and block scalar descriptions - Derive list bracket from skill directory path instead of metadata.domain/stage - Add shared frontmatter parser with YAML block scalar support (>, |, >-, |-, >+, |+) - Filter unknown/null segments in clean menu group column - Add formatSkillGroup and formatSkillBracket helpers in cli.js - Add tests for bracket path, block scalar parsing, and clean menu group AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
fix(plugin): adapt OpenCode V2 config schema and coexist with other tools OpenCode V2 reads the plugins (plural) config field and no longer runs the V1 plugin hook. The CLI only read/wrote the legacy singular plugin field, leaving V2-installed plugins undetected (channel conflict blind spot, doctor scan blind spot, plugins never loaded) and polluting/ clobbering other tools' entries (e.g. oh-langfuse) on install/uninstall. - Add collectOpenCodePluginEntries() to read both plugins and plugin fields; channel/doctor/doctor-legacy adopt it. - Field isolation in installer/uninstaller/doctor-legacy: touch only the chosen field, strip own legacy entry on V2, never merge fields. - Register skills dir in skills array so V2 discovers skills directly. - Generate V1/V2-compatible plugin JS: detect @opencode/plugin import, emit Plugin.define + setup for V2, fall back to callable fn for V1. Co-Authored-By:Agent Signed-off-by: xiao_xing9426 <xiaoxing12@h-partners.com> AI[95%] Human Fixed[0%] Human[5%] AI Adopted[31%] Co-authored-by: opencode2 (unknown) <ai@local> | 6 天前 | |
fix(plugin): relocate literal runtime paths in skill payloads | 1 天前 | |
fix(plugin): adapt OpenCode V2 config schema and coexist with other tools OpenCode V2 reads the plugins (plural) config field and no longer runs the V1 plugin hook. The CLI only read/wrote the legacy singular plugin field, leaving V2-installed plugins undetected (channel conflict blind spot, doctor scan blind spot, plugins never loaded) and polluting/ clobbering other tools' entries (e.g. oh-langfuse) on install/uninstall. - Add collectOpenCodePluginEntries() to read both plugins and plugin fields; channel/doctor/doctor-legacy adopt it. - Field isolation in installer/uninstaller/doctor-legacy: touch only the chosen field, strip own legacy entry on V2, never merge fields. - Register skills dir in skills array so V2 discovers skills directly. - Generate V1/V2-compatible plugin JS: detect @opencode/plugin import, emit Plugin.define + setup for V2, fall back to callable fn for V1. Co-Authored-By:Agent Signed-off-by: xiao_xing9426 <xiaoxing12@h-partners.com> AI[95%] Human Fixed[0%] Human[5%] AI Adopted[31%] Co-authored-by: opencode2 (unknown) <ai@local> | 6 天前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
fix(plugin): adapt OpenCode V2 config schema and coexist with other tools OpenCode V2 reads the plugins (plural) config field and no longer runs the V1 plugin hook. The CLI only read/wrote the legacy singular plugin field, leaving V2-installed plugins undetected (channel conflict blind spot, doctor scan blind spot, plugins never loaded) and polluting/ clobbering other tools' entries (e.g. oh-langfuse) on install/uninstall. - Add collectOpenCodePluginEntries() to read both plugins and plugin fields; channel/doctor/doctor-legacy adopt it. - Field isolation in installer/uninstaller/doctor-legacy: touch only the chosen field, strip own legacy entry on V2, never merge fields. - Register skills dir in skills array so V2 discovers skills directly. - Generate V1/V2-compatible plugin JS: detect @opencode/plugin import, emit Plugin.define + setup for V2, fall back to callable fn for V1. Co-Authored-By:Agent Signed-off-by: xiao_xing9426 <xiaoxing12@h-partners.com> AI[95%] Human Fixed[0%] Human[5%] AI Adopted[31%] Co-authored-by: opencode2 (unknown) <ai@local> | 6 天前 | |
fix(plugin): adapt OpenCode V2 config schema and coexist with other tools OpenCode V2 reads the plugins (plural) config field and no longer runs the V1 plugin hook. The CLI only read/wrote the legacy singular plugin field, leaving V2-installed plugins undetected (channel conflict blind spot, doctor scan blind spot, plugins never loaded) and polluting/ clobbering other tools' entries (e.g. oh-langfuse) on install/uninstall. - Add collectOpenCodePluginEntries() to read both plugins and plugin fields; channel/doctor/doctor-legacy adopt it. - Field isolation in installer/uninstaller/doctor-legacy: touch only the chosen field, strip own legacy entry on V2, never merge fields. - Register skills dir in skills array so V2 discovers skills directly. - Generate V1/V2-compatible plugin JS: detect @opencode/plugin import, emit Plugin.define + setup for V2, fall back to callable fn for V1. Co-Authored-By:Agent Signed-off-by: xiao_xing9426 <xiaoxing12@h-partners.com> AI[95%] Human Fixed[0%] Human[5%] AI Adopted[31%] Co-authored-by: opencode2 (unknown) <ai@local> | 6 天前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
feat(plugin): transactional lifecycle + strict conflict blocking Closes OpenharmonyhubTools/oh-skillhub#9 - --atomic: scope lock + staging projection swap + rollback on host failure + journal crash recovery + auto-GC - --strict: block same-version-different-content/downgrade/independent skill shadow + true idempotent SKIP - new commands: plugin gc / repair / enable / disable / migrate - doctor: materialized-copy warn->fail (--allow-materialized-copy), cross-scope shadow (--all-scopes) - plugin-store computePluginDigest; plugin-registry fsync + readRegistryAt/writeRegistryAt - README documents opt-in switches + new commands - Default behavior unchanged (all switches opt-in). Tests: 260 pass / 0 fail. AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
fix(plugin): adapt OpenCode V2 config schema and coexist with other tools OpenCode V2 reads the plugins (plural) config field and no longer runs the V1 plugin hook. The CLI only read/wrote the legacy singular plugin field, leaving V2-installed plugins undetected (channel conflict blind spot, doctor scan blind spot, plugins never loaded) and polluting/ clobbering other tools' entries (e.g. oh-langfuse) on install/uninstall. - Add collectOpenCodePluginEntries() to read both plugins and plugin fields; channel/doctor/doctor-legacy adopt it. - Field isolation in installer/uninstaller/doctor-legacy: touch only the chosen field, strip own legacy entry on V2, never merge fields. - Register skills dir in skills array so V2 discovers skills directly. - Generate V1/V2-compatible plugin JS: detect @opencode/plugin import, emit Plugin.define + setup for V2, fall back to callable fn for V1. Co-Authored-By:Agent Signed-off-by: xiao_xing9426 <xiaoxing12@h-partners.com> AI[95%] Human Fixed[0%] Human[5%] AI Adopted[31%] Co-authored-by: opencode2 (unknown) <ai@local> | 6 天前 | |
feat(plugin): transactional lifecycle + strict conflict blocking Closes OpenharmonyhubTools/oh-skillhub#9 - --atomic: scope lock + staging projection swap + rollback on host failure + journal crash recovery + auto-GC - --strict: block same-version-different-content/downgrade/independent skill shadow + true idempotent SKIP - new commands: plugin gc / repair / enable / disable / migrate - doctor: materialized-copy warn->fail (--allow-materialized-copy), cross-scope shadow (--all-scopes) - plugin-store computePluginDigest; plugin-registry fsync + readRegistryAt/writeRegistryAt - README documents opt-in switches + new commands - Default behavior unchanged (all switches opt-in). Tests: 260 pass / 0 fail. AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
feat(plugin): transactional lifecycle + strict conflict blocking Closes OpenharmonyhubTools/oh-skillhub#9 - --atomic: scope lock + staging projection swap + rollback on host failure + journal crash recovery + auto-GC - --strict: block same-version-different-content/downgrade/independent skill shadow + true idempotent SKIP - new commands: plugin gc / repair / enable / disable / migrate - doctor: materialized-copy warn->fail (--allow-materialized-copy), cross-scope shadow (--all-scopes) - plugin-store computePluginDigest; plugin-registry fsync + readRegistryAt/writeRegistryAt - README documents opt-in switches + new commands - Default behavior unchanged (all switches opt-in). Tests: 260 pass / 0 fail. AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
feat(plugin): generate native manifests from neutral plugin.yaml Add 'plugin manifest' command that produces the full platform-native structure (manifests + hooks + marketplace.json + opencode plugins/commands) from a neutral plugin.yaml source, honoring compatibility.targets.*.strategy (generate-native-plugin / generate-install-payload / none) with claude-code key mapping. Add --check flag to compare installed vs source version (not-installed / up-to-date / upgrade-available). Zero-touch to existing install/update/uninstall logic: buildPluginPayload and loadNeutralPlugin are reused as exported pure functions; cli.js gets a single additive branch (+44 lines, 0 deletions). 140/140 tests pass (129 existing + 11 new). Closes OpenharmonyhubTools/oh-skillhub#7 AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
feat(plugin): transactional lifecycle + strict conflict blocking Closes OpenharmonyhubTools/oh-skillhub#9 - --atomic: scope lock + staging projection swap + rollback on host failure + journal crash recovery + auto-GC - --strict: block same-version-different-content/downgrade/independent skill shadow + true idempotent SKIP - new commands: plugin gc / repair / enable / disable / migrate - doctor: materialized-copy warn->fail (--allow-materialized-copy), cross-scope shadow (--all-scopes) - plugin-store computePluginDigest; plugin-registry fsync + readRegistryAt/writeRegistryAt - README documents opt-in switches + new commands - Default behavior unchanged (all switches opt-in). Tests: 260 pass / 0 fail. AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
feat(plugin): transactional lifecycle + strict conflict blocking Closes OpenharmonyhubTools/oh-skillhub#9 - --atomic: scope lock + staging projection swap + rollback on host failure + journal crash recovery + auto-GC - --strict: block same-version-different-content/downgrade/independent skill shadow + true idempotent SKIP - new commands: plugin gc / repair / enable / disable / migrate - doctor: materialized-copy warn->fail (--allow-materialized-copy), cross-scope shadow (--all-scopes) - plugin-store computePluginDigest; plugin-registry fsync + readRegistryAt/writeRegistryAt - README documents opt-in switches + new commands - Default behavior unchanged (all switches opt-in). Tests: 260 pass / 0 fail. AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
feat(plugin): transactional lifecycle + strict conflict blocking Closes OpenharmonyhubTools/oh-skillhub#9 - --atomic: scope lock + staging projection swap + rollback on host failure + journal crash recovery + auto-GC - --strict: block same-version-different-content/downgrade/independent skill shadow + true idempotent SKIP - new commands: plugin gc / repair / enable / disable / migrate - doctor: materialized-copy warn->fail (--allow-materialized-copy), cross-scope shadow (--all-scopes) - plugin-store computePluginDigest; plugin-registry fsync + readRegistryAt/writeRegistryAt - README documents opt-in switches + new commands - Default behavior unchanged (all switches opt-in). Tests: 260 pass / 0 fail. AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
fix(plugin): relocate literal runtime paths in skill payloads | 1 天前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
feat(plugin): transactional lifecycle + strict conflict blocking Closes OpenharmonyhubTools/oh-skillhub#9 - --atomic: scope lock + staging projection swap + rollback on host failure + journal crash recovery + auto-GC - --strict: block same-version-different-content/downgrade/independent skill shadow + true idempotent SKIP - new commands: plugin gc / repair / enable / disable / migrate - doctor: materialized-copy warn->fail (--allow-materialized-copy), cross-scope shadow (--all-scopes) - plugin-store computePluginDigest; plugin-registry fsync + readRegistryAt/writeRegistryAt - README documents opt-in switches + new commands - Default behavior unchanged (all switches opt-in). Tests: 260 pass / 0 fail. AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
fix(plugin): adapt OpenCode V2 config schema and coexist with other tools OpenCode V2 reads the plugins (plural) config field and no longer runs the V1 plugin hook. The CLI only read/wrote the legacy singular plugin field, leaving V2-installed plugins undetected (channel conflict blind spot, doctor scan blind spot, plugins never loaded) and polluting/ clobbering other tools' entries (e.g. oh-langfuse) on install/uninstall. - Add collectOpenCodePluginEntries() to read both plugins and plugin fields; channel/doctor/doctor-legacy adopt it. - Field isolation in installer/uninstaller/doctor-legacy: touch only the chosen field, strip own legacy entry on V2, never merge fields. - Register skills dir in skills array so V2 discovers skills directly. - Generate V1/V2-compatible plugin JS: detect @opencode/plugin import, emit Plugin.define + setup for V2, fall back to callable fn for V1. Co-Authored-By:Agent Signed-off-by: xiao_xing9426 <xiaoxing12@h-partners.com> AI[95%] Human Fixed[0%] Human[5%] AI Adopted[31%] Co-authored-by: opencode2 (unknown) <ai@local> | 6 天前 | |
feat(plugin): transactional lifecycle + strict conflict blocking Closes OpenharmonyhubTools/oh-skillhub#9 - --atomic: scope lock + staging projection swap + rollback on host failure + journal crash recovery + auto-GC - --strict: block same-version-different-content/downgrade/independent skill shadow + true idempotent SKIP - new commands: plugin gc / repair / enable / disable / migrate - doctor: materialized-copy warn->fail (--allow-materialized-copy), cross-scope shadow (--all-scopes) - plugin-store computePluginDigest; plugin-registry fsync + readRegistryAt/writeRegistryAt - README documents opt-in switches + new commands - Default behavior unchanged (all switches opt-in). Tests: 260 pass / 0 fail. AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
refactor: extract 4 shared utility modules to eliminate code duplication - plugin-fs-util.js: stripBom/sha256File/fileRecord/readJsonFile/writeJson/listFiles (6 functions, 12 files) - plugin-command.js: runCommand/createCommandInvocation/resolveCommandPath/isWindowsCommandScript/isPathLikeCommand/commandOutput/escapeRegExp (7 functions, 3 files) - source-shared.js: runGit/runGitAsync/gitDetail/repositorySlug/sanitize/isRetryableMoveError/cacheMoveError/sleepSync/sleep/moveCheckoutIntoCache(Async) + 3 constants (3 files) - plugin-agent-paths.js: codexHomeForTarget/openCodeConfigPathsForTarget/openCodeProjectRootForTarget/registryPathForScope/defaultPayloadRoot (5 functions, 5 files) - Net reduction: 642 lines of duplicate code - Added 10 boundary tests for codexHomeForTarget - Updated AGENTS.md code map Co-Authored-By: Agent Signed-off-by: kkmdmcgxi <huobaobao@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[62%] Co-authored-by: opencode (glm-5.2) <ai@local> | 1 个月前 | |
chore(telemetry): 迁移 skillhub 上报端点至 skillhub.openharmonyhub.cn(HTTPS) 将 skillhub 上报 ingest 端点 POST /api/oh-skillhub/events 的旧地址 http://120.46.221.227(对应域名 metrics.openharmonyinsight.cn)统一迁移到 https://skillhub.openharmonyhub.cn,HTTP 升级为 HTTPS,:3000 端口去除(经 Nginx 443 反代)。 涉及 11 个文件、41 处引用(代码 3 处 + 文档 38 处): - 代码:src/telemetry.js DEFAULT_COLLECTOR_URL、test/telemetry.test.js 默认地址断言 - 客户端文档:README.md 默认上报地址与 dashboard 链接 - collector 部署文档与历史设计/计划文档:dashboard / stats / healthz / 部署 server_name / SSH 等 验证:npm test 157/157、npm test --prefix collector 12/12 通过; 端点 GET /api/oh-skillhub/events、GET /healthz、POST ingest 实测 HTTPS 200,证书有效。 AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: opencode (glm-5.2) <ai@local> | 2 个月前 | |
fix: detect skill content updates 🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%] Co-authored-by: codex (gpt-5.5) <ai@local> | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 6 天前 | ||
| 1 天前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 3 个月前 |