Commit Graph
644 Commits
Author SHA1 Message Date
haelyra 0036875f86 feat(install): integrate namespaced Copilot rule instructions
Preserve contributor PR #3771 head 4114945775. Repair single-file language namespaces and preserve fenced Markdown examples. Verified 36 adapter/lifecycle and 5 support-surface tests; independent code and security review passed.
2026-10-29 17:02:31 -07:00
haelyra de8c290057 fix: keep Copilot detector explanation aligned with installed workflow 2026-10-29 13:09:04 -07:00
haelyra 6d7d4920c8 fix: close final integration security and portability gaps 2026-10-29 12:57:39 -07:00
haelyra 1eadb741a5 fix: scope Copilot detector projection to the canonical TDD workflow 2026-10-29 11:59:19 -07:00
haelyra 0d92059410 fix: close installed workflow and review publication gaps before integration 2026-10-29 11:58:01 -07:00
haelyra 60053622fe maint: integrate reviewed contribution #3791 2026-10-29 11:34:19 -07:00
haelyra 7acdf21516 maint: integrate reviewed contribution #3804 2026-10-29 11:27:57 -07:00
haelyra 8fc06b13cb maint: integrate reviewed contribution #3562 2026-10-29 11:26:56 -07:00
haelyra 124887fd3b maint: integrate reviewed contribution #3748 2026-10-29 11:26:55 -07:00
haelyra c7db9b410f maint: integrate reviewed contribution #3657 2026-10-29 11:25:29 -07:00
haelyra f77db133ac maint: integrate reviewed contribution #3614 2026-10-29 11:25:23 -07:00
haelyra 3a346e5109 maint: integrate reviewed contribution #3587 2026-10-29 11:25:13 -07:00
haelyra 09e0eb7d7f maint: integrate reviewed contribution #3591 2026-10-29 11:23:24 -07:00
haelyra 7bc0b1a6a9 maint: integrate reviewed contribution #3631 2026-10-29 11:23:22 -07:00
haelyra 9aed578c67 fix: integrate symlink-aware GateGuard exemptions from #3726 2026-10-29 11:20:48 -07:00
haelyra 8e00137b04 fix: integrate observer identity and lease repair with canonical root matching 2026-10-29 11:19:43 -07:00
minteeqahmed-png 5362ffe26d fix(install): preserve mixed body line endings verbatim in Antigravity agent transform 2026-10-29 21:51:31 +05:00
minteeqahmed-png 68eb49d175 fix(install): harden Antigravity target containment, agent tools, and binary asset copies 2026-10-29 21:37:41 +05:00
Harry Chen fbea3e0c62 fix(work-items): use native unbounded ready selection for pickup 2026-10-29 12:36:47 +08:00
Harry Chen 9fd9aa5e7c fix(work-items): select next ready task over full native store 2026-10-29 12:36:36 +08:00
Harry Chen 037df2b3e9 fix(work-items): preserve legacy active claim idempotence 2026-10-29 12:14:48 +08:00
Harry Chen 581cc54186 fix(work-items): require explicit ready state for new claims 2026-10-29 12:00:53 +08:00
Ali Arslan d2df54a2ef fix(opencode): never report repair success while the pre-fix stub is retained 2026-10-29 01:06:32 +05:00
Ali Arslan 770eb29b9f fix(opencode): remove the pre-fix declined stub the legacy migration leaves behind 2026-10-28 23:30:39 +05:00
Ali Arslan b2f4abb4c4 fix(opencode): treat the pre-fix declined factory stub as inactive during migration 2026-10-28 23:17:07 +05:00
Ali Arslan 73f61801db fix(opencode): make the declined-hooks plugin stub satisfy the V2 loader schema
The inert stub written when hook consent is not granted was
`export default async () => ({})`. OpenCode v2 validates every plugin
module before running it and requires the default export to be a definition
object with an `id` and an `effect` or `setup` function, so a declined or
runtime-less home install printed the same startup error as the V1 hook
plugin:

  PluginModule.LoadError: Plugin must export a default definition with an id
  and an effect or setup function.
  (cause: SchemaError(Expected object at ["default"]))

Write `export default { id: "ecc-hooks", setup() {} }` instead. It keeps the
inert behaviour (no imports, no module initialization of the replaced
plugin) and satisfies the loader.

Tests that pinned the generated bytes now compare against
getDisabledOpenCodePluginContent() rather than a duplicated literal, and
tests/opencode-plugin-loader-contract.test.js asserts the loader contract on
the generated payload. That test fails on the previous stub
("default export must be an object, got function").

Refs #3537. The same assertion should cover .opencode/plugins/*.ts once a V2
entrypoint lands (#3536, #3224); those plugins are scanned independently in
home installs, so both the barrel and the implementation are loaded.
2026-10-28 22:32:41 +05:00
manuel-albaneseeandCopilot 4114945775 fix(install): keep fenced code examples unchanged in copilot rules
Address CodeRabbit re-review on #3771: rewriteRuleLinks now tracks fenced
code blocks (``` and ~~~) line by line and only rewrites links outside
them, so Markdown examples shown inside fences stay verbatim. One shipped
rule contains such an example, so this changes installed output today.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-28 10:32:58 +01:00
manuel-albaneseeandCopilot 15cc7632d1 fix(install): harden copilot rule conversion edge cases
Address CodeRabbit review on #3771:

- Treat immediately empty (`---\n---`) and whitespace-only frontmatter
  blocks as empty metadata instead of throwing or leaking the delimiters
  into the installed body.
- Reject an empty `paths: []` list before serialization so an installed
  instruction never receives an empty `applyTo:` glob.
- Rewrite relative Markdown links that resolve inside the installed rule
  set to their renamed `.instructions.md` targets; links escaping rules/,
  external URLs, absolute paths, anchors, and README.md stay unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-28 10:15:38 +01:00
manuel-albanese_ssgiaandCopilot 6425693e4b feat(install): install converted rules for the copilot target
The copilot project target installed only skills and agents, dropping the
entire rules/ tree even though Copilot CLI and VS Code read path-specific
instructions from .github/instructions/**/*.instructions.md.

Plan each rules/**/*.md file into .github/instructions/ecc/ as an
.instructions.md file and add a copilot-rule-frontmatter transform that maps
the Claude-style `paths:` list onto Copilot's `applyTo:` glob list. Rules
without `paths:` become applyTo: "**", matching their always-on semantics in
Claude Code. rules/README.md documents the rule set and is not installed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-28 01:45:40 +01:00
Gaurav Dubey dc9bb9f2d9 fix(hooks): keep inline resolver backslash-free so hooks parse on Windows
On native Windows, Claude Code runs each hook as `bash.exe -c "<command>"`
through the Windows command line. That extra unescape layer collapses the
backslashes in the WSL path conversion of the inline plugin-root resolver,
so `.replace(/\\/g,'/')` reaches node as `.replace(/\/g,'/')` and every hook
fails with `SyntaxError: missing ) after argument list`.

Build the backslash separator with String.fromCharCode(92) and split/join
instead of regex escapes, so the resolver contains no backslash. Conversion
behaviour is unchanged. Regenerate every embedded copy (hooks.json,
codex-hooks.json, commands/*.md) and refresh hooks.metadata.json
fingerprints.

Add a test that the resolver and each hook `node -e` program are
backslash-free, and run the shipped SessionStart command through bash with
backslashes collapsed the way Windows does.

Fixes #3746
2026-10-26 18:39:04 +00:00
haelyra b144908df6 fix(types): declare Git utility options 2026-10-25 19:43:37 -04:00
haelyra 0a7a9a718e fix(hooks): use session repository for console warnings 2026-10-25 19:32:16 -04:00
haelyra 9c8a66b696 Integrate L4XB PR #3664 2026-10-25 19:30:50 -04:00
haelyra 0e7588cec5 Integrate L4XB PR #3667 2026-10-25 19:30:50 -04:00
haelyra f390400944 Merge pull request #3583 from Tivonsico/fix/skill-run-timestamp-type-20261014
fix(skill-tracker): reject non-string execution timestamps
2026-10-25 19:16:34 -04:00
haelyra 7f0b6ce500 fix(install): reject malformed empty-container JSONC commas 2026-10-25 18:20:40 -04:00
haelyra f4e8f6eb3e Merge reviewed OpenCode JSONC fix from #3590 2026-10-25 18:17:10 -04:00
Gaurav Dubey b98bff4a45 fix(observer): keep project context and leases aligned after remote changes
Integrates #3697 on current main. Prefer the observer project ID, retain a sole legacy ID until the new observer folder exists, and release the ending session lease across same-root aliases. Replace the unsafe live merge hint with read-only project inspection, and validate alias IDs before path use. #3711 independently identified the computed-ID selection gap; its early switch without observer data and unchanged SessionEnd path were not adopted.
2026-10-25 17:54:47 -04:00
Gaurav Dubey dcb947a4e1 fix(gateguard): judge exempt globs against real target location
Port #3656 onto current main, preserving both the contributor fix and the unrelated current changelog entry. Includes the follow-up glob normalization from 2c11fd74.
2026-10-25 17:47:30 -04:00
haelyra e3292b0010 Merge pull request #3594 from ketpatil77/fix/managed-hook-config-bom
fix(hooks): honor managed preferences in BOM-prefixed config
2026-10-25 17:44:47 -04:00
L4XB 10e7c5800f fix(hooks): recognize Prettier's TypeScript and JSON5 config files
Prettier's config searcher also reads .prettierrc.json5, .prettierrc.ts/.mts/.cts and prettier.config.ts/.mts/.cts. resolve-formatter knew none of them, so a project configured only through prettier.config.ts was never formatted by post-edit-format, quality-gate or the Stop batch. config-protection's rc pattern stopped at .yaml/.toml, so an existing .prettierrc.ts or .prettierrc.json5 could be edited freely.
2026-10-22 23:51:32 +02:00
L4XB b02e02dcd2 fix(hooks): list modified files from the repository root even with diff.relative
With diff.relative=true, `git diff --name-only` reports paths relative to the working directory, so joining them to the repository root pointed at files that do not exist, and a session in a subdirectory again got no console.log warning. getGitModifiedFiles now runs `git -c diff.relative=false diff --name-only HEAD`. The -c form also works on Git versions older than --no-relative.
2026-10-22 23:01:26 +02:00
yyx db29f112ff fix(hooks): preserve usage records at transcript tail boundaries 2026-10-21 14:58:50 +08:00
haelyra 6e11d21dd1 Merge branch 'stewardship/verified-pr-batch-3538-3566' into stewardship/verified-pr-batch-3602-3621-owned 2026-10-20 18:41:32 -04:00
haelyra a6db53f835 fix(inspection): normalize diagnostic-looking Windows filenames 2026-10-20 18:41:19 -04:00
haelyra fcff074e6f Merge branch 'stewardship/verified-pr-batch-3538-3566' into stewardship/verified-pr-batch-3602-3621-owned 2026-10-20 18:28:33 -04:00
haelyra c04d00c15e fix(integration): address review findings in docs and diagnostics 2026-10-20 18:17:37 -04:00
Eneko Ruiz 21e0ab5271 fix(session-aliases): reject array-shaped alias maps
(cherry picked from commit b1668579f6)
2026-10-20 17:40:59 -04:00
Eneko Ruiz 0bdb6a52ab fix: validate session alias titles before saving
(cherry picked from commit e4f9aac414)
2026-10-20 17:40:58 -04:00
Alan Vo 67034687f3 Fix CLAUDE_CONFIG_DIR tilde expansion, blank path fallback, and inline WSL resolver parity
(cherry picked from commit 617ab29f8d)
2026-10-20 17:40:58 -04:00