oh-my-opencode 5.1.34 → 5.1.35

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.
Files changed (66) hide show
  1. package/dist/cli/index.js +116 -45
  2. package/dist/cli-node/index.js +116 -45
  3. package/dist/index.js +14 -14
  4. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  5. package/dist/skills/ulw-research/references/report-gates.md +1 -1
  6. package/dist/skills/ulw-research/scripts/gates-figures.mjs +22 -6
  7. package/dist/skills/ulw-research/scripts/gates-static.test.ts +13 -0
  8. package/dist/tui.js +13 -13
  9. package/package.json +13 -13
  10. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  11. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  12. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  13. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  14. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  15. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  16. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  17. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  18. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  19. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  20. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  21. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  22. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  23. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  25. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2 -1
  27. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2 -1
  28. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  29. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  31. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  32. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  33. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  34. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  35. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  36. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  37. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  38. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  39. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  40. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  57. package/packages/omo-codex/plugin/package-lock.json +12 -12
  58. package/packages/omo-codex/plugin/package.json +1 -1
  59. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  60. package/packages/omo-codex/plugin/skills/ulw-research/references/report-gates.md +1 -1
  61. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-figures.mjs +22 -6
  62. package/packages/omo-codex/scripts/install-dist/install-local.mjs +50 -3
  63. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  64. package/packages/shared-skills/skills/ulw-research/references/report-gates.md +1 -1
  65. package/packages/shared-skills/skills/ulw-research/scripts/gates-figures.mjs +22 -6
  66. package/packages/shared-skills/skills/ulw-research/scripts/gates-static.test.ts +13 -0
@@ -19,7 +19,7 @@ This reference catalogs every defect code the report gates (`static`, `layout`,
19
19
  | `chart_without_figure` | major | false | An image or chart lacks a figure wrapper with a caption. Uncaptioned charts isolate visuals from narrative flow. | Wrap the image or chart in a figure container with a caption. |
20
20
  | `chart_svg_no_text` | major | false | An SVG chart or diagram lacks a title, axis labels, units, or value labels. Visuals cannot stand alone without text guidance. | Give the chart a title, axis labels, units, and value labels as SVG text. |
21
21
  | `chart_svg_missing_labels` | minor | false | An SVG chart has some labels (e.g., title) but is missing others (e.g., axis ticks or unit). | Add the missing title, axis ticks, or unit label to the chart. |
22
- | `report_without_visual` | major | false | The report body has no chart, diagram, or figure image at all (header logos, icons, and images marked decorative do not count; only rendered output counts, so a Mermaid source block or a zero-size image does not). A text-only report hides structure and trends the reader would see at a glance. | Add at least one captioned visual of the findings: a chart from the data table, a rendered Mermaid diagram, or a figure image (references/report-visualization.md). |
22
+ | `report_without_visual` | major | false | The report body has no chart, diagram, or figure image at all (header logos, icons, and images marked decorative do not count; only rendered output counts, so a Mermaid source block or an image with any zero dimension (attribute, inline style, or viewBox) does not; an element with no declared size counts, because the browser sizes it, and the layout gate is where rendering is proven). A text-only report hides structure and trends the reader would see at a glance. | Add at least one captioned visual of the findings: a chart from the data table, a rendered Mermaid diagram, or a figure image (references/report-visualization.md). |
23
23
  | `image_missing_alt` | minor | false | A figure image has a missing or empty `alt` and is not marked decorative. Screen readers and failed image loads leave the reader with nothing. An image is decorative only with an empty `alt` plus `role="presentation"` (or `role="none"`, or `aria-hidden="true"`): it raises nothing here and does not count as a visual. | Give the image an alt attribute that states what it shows, not its file name; mark a purely decorative image alt="" with role="presentation". |
24
24
  | `korean_serif_font` | major | false | A serif or brush Korean font family is applied to Korean text. The design spec mandates gothic (sans) Korean typefaces. | Use a gothic (sans) Korean family; serif and brush families are banned by the design spec. |
25
25
  | `section_without_citation` | major | false | A major section or subsection contains no in-text citations or reference marks. Source attribution is missing. | Cite at least one source inside this section or merge it into a cited one. |
@@ -27,14 +27,30 @@ function pixels(value) {
27
27
  return match ? Number(match[1]) : null
28
28
  }
29
29
 
30
+ function fromStyle(node, prop) {
31
+ return pixels(new RegExp(`(?:^|;)\\s*${prop}\\s*:\\s*([^;]+)`, "i").exec(node.attrs.style ?? "")?.[1])
32
+ }
33
+
34
+ function viewBoxSize(node) {
35
+ const box = String(node.attrs.viewbox ?? "").trim().split(/[\s,]+/).map(Number)
36
+ return box.length === 4 && box.every(Number.isFinite) ? { width: box[2], height: box[3] } : null
37
+ }
38
+
30
39
  /** Largest declared dimension: width/height attributes or style, else the viewBox. */
31
40
  function declaredSize(node) {
32
- const style = node.attrs.style ?? ""
33
- const fromStyle = (prop) => pixels(new RegExp(`(?:^|;)\\s*${prop}\\s*:\\s*([^;]+)`, "i").exec(style)?.[1])
34
- const sizes = [pixels(node.attrs.width), pixels(node.attrs.height), fromStyle("width"), fromStyle("height")].filter((n) => n !== null)
41
+ const sizes = [pixels(node.attrs.width), pixels(node.attrs.height), fromStyle(node, "width"), fromStyle(node, "height")].filter((n) => n !== null)
35
42
  if (sizes.length) return Math.max(...sizes)
36
- const box = String(node.attrs.viewbox ?? "").trim().split(/[\s,]+/).map(Number)
37
- return box.length === 4 && box.every(Number.isFinite) ? Math.max(box[2], box[3]) : null
43
+ const box = viewBoxSize(node)
44
+ return box ? Math.max(box.width, box.height) : null
45
+ }
46
+
47
+ /**
48
+ * True when any declared dimension is zero, so the element cannot render visibly. Each axis reads its inline
49
+ * style first, then its attribute, then the viewBox. An undeclared axis is not zero: the browser sizes it.
50
+ */
51
+ function hasZeroDimension(node) {
52
+ const box = viewBoxSize(node)
53
+ return ["width", "height"].some((axis) => (fromStyle(node, axis) ?? pixels(node.attrs[axis]) ?? box?.[axis] ?? null) === 0)
38
54
  }
39
55
 
40
56
  function isIcon(ctx, node) {
@@ -174,7 +190,7 @@ export const figureGates = [
174
190
  {
175
191
  codes: ["report_without_visual"],
176
192
  run(ctx) {
177
- if (visuals(ctx).some((node) => declaredSize(node) !== 0 && !isDecorative(node))) return []
193
+ if (visuals(ctx).some((node) => !hasZeroDimension(node) && !isDecorative(node))) return []
178
194
  return [ctx.defect("report_without_visual", ctx.body, "the report has no chart, diagram, or figure image")]
179
195
  },
180
196
  },
@@ -263,6 +263,19 @@ describe("report-level visuals", () => {
263
263
  expect(chartCodes(htmlLabels)).toEqual(["chart_svg_no_text"])
264
264
  })
265
265
 
266
+ test("#given a single visual with one zero dimension #when checked #then report_without_visual is raised; viewBox-only and unsized visuals still count", () => {
267
+ // given
268
+ const only = (el: string) => `<figure>${el}<figcaption>c</figcaption></figure>`
269
+ const flat = only('<img src="data:image/png;base64,iVBORw0KGgo=" alt="chart" width="600" height="0">')
270
+ const narrow = only('<svg width="0" height="300"><text>A</text></svg>')
271
+ const styled = only('<img src="data:image/png;base64,iVBORw0KGgo=" alt="chart" width="600" height="300" style="height: 0">')
272
+ const viewBoxOnly = only('<svg viewBox="0 0 600 300" aria-roledescription="flowchart-v2"><text>A</text></svg>')
273
+ const unsized = only('<img src="data:image/png;base64,iVBORw0KGgo=" alt="Deploys per week">')
274
+ // when / then
275
+ for (const html of [flat, narrow, styled]) expect(has(html, "report_without_visual")).toBe(true)
276
+ for (const html of [viewBoxOnly, unsized]) expect(has(html, "report_without_visual")).toBe(false)
277
+ })
278
+
266
279
  test("#given figure images with no alt, a bare empty alt, role- and aria-marked decorative alts and a descriptive alt #when checked #then only the unmarked two raise image_missing_alt", () => {
267
280
  // given
268
281
  const img = (alt: string) => `<figure><img src="data:image/png;base64,iVBORw0KGgo=" ${alt} width="480" height="240"><figcaption>c</figcaption></figure>`
package/dist/tui.js CHANGED
@@ -75007,7 +75007,7 @@ init_shared();
75007
75007
  // package.json
75008
75008
  var package_default = {
75009
75009
  name: "oh-my-opencode",
75010
- version: "5.1.34",
75010
+ version: "5.1.35",
75011
75011
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
75012
75012
  main: "./dist/index.js",
75013
75013
  types: "dist/index.d.ts",
@@ -75243,18 +75243,18 @@ var package_default = {
75243
75243
  typescript: "^7.0.2"
75244
75244
  },
75245
75245
  optionalDependencies: {
75246
- "oh-my-opencode-darwin-arm64": "5.1.34",
75247
- "oh-my-opencode-darwin-x64": "5.1.34",
75248
- "oh-my-opencode-darwin-x64-baseline": "5.1.34",
75249
- "oh-my-opencode-linux-arm64": "5.1.34",
75250
- "oh-my-opencode-linux-arm64-musl": "5.1.34",
75251
- "oh-my-opencode-linux-x64": "5.1.34",
75252
- "oh-my-opencode-linux-x64-baseline": "5.1.34",
75253
- "oh-my-opencode-linux-x64-musl": "5.1.34",
75254
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.34",
75255
- "oh-my-opencode-windows-arm64": "5.1.34",
75256
- "oh-my-opencode-windows-x64": "5.1.34",
75257
- "oh-my-opencode-windows-x64-baseline": "5.1.34"
75246
+ "oh-my-opencode-darwin-arm64": "5.1.35",
75247
+ "oh-my-opencode-darwin-x64": "5.1.35",
75248
+ "oh-my-opencode-darwin-x64-baseline": "5.1.35",
75249
+ "oh-my-opencode-linux-arm64": "5.1.35",
75250
+ "oh-my-opencode-linux-arm64-musl": "5.1.35",
75251
+ "oh-my-opencode-linux-x64": "5.1.35",
75252
+ "oh-my-opencode-linux-x64-baseline": "5.1.35",
75253
+ "oh-my-opencode-linux-x64-musl": "5.1.35",
75254
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.35",
75255
+ "oh-my-opencode-windows-arm64": "5.1.35",
75256
+ "oh-my-opencode-windows-x64": "5.1.35",
75257
+ "oh-my-opencode-windows-x64-baseline": "5.1.35"
75258
75258
  },
75259
75259
  overrides: {
75260
75260
  hono: "^4.13.8",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -236,18 +236,18 @@
236
236
  "typescript": "^7.0.2"
237
237
  },
238
238
  "optionalDependencies": {
239
- "oh-my-opencode-darwin-arm64": "5.1.34",
240
- "oh-my-opencode-darwin-x64": "5.1.34",
241
- "oh-my-opencode-darwin-x64-baseline": "5.1.34",
242
- "oh-my-opencode-linux-arm64": "5.1.34",
243
- "oh-my-opencode-linux-arm64-musl": "5.1.34",
244
- "oh-my-opencode-linux-x64": "5.1.34",
245
- "oh-my-opencode-linux-x64-baseline": "5.1.34",
246
- "oh-my-opencode-linux-x64-musl": "5.1.34",
247
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.34",
248
- "oh-my-opencode-windows-arm64": "5.1.34",
249
- "oh-my-opencode-windows-x64": "5.1.34",
250
- "oh-my-opencode-windows-x64-baseline": "5.1.34"
239
+ "oh-my-opencode-darwin-arm64": "5.1.35",
240
+ "oh-my-opencode-darwin-x64": "5.1.35",
241
+ "oh-my-opencode-darwin-x64-baseline": "5.1.35",
242
+ "oh-my-opencode-linux-arm64": "5.1.35",
243
+ "oh-my-opencode-linux-arm64-musl": "5.1.35",
244
+ "oh-my-opencode-linux-x64": "5.1.35",
245
+ "oh-my-opencode-linux-x64-baseline": "5.1.35",
246
+ "oh-my-opencode-linux-x64-musl": "5.1.35",
247
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.35",
248
+ "oh-my-opencode-windows-arm64": "5.1.35",
249
+ "oh-my-opencode-windows-x64": "5.1.35",
250
+ "oh-my-opencode-windows-x64-baseline": "5.1.35"
251
251
  },
252
252
  "overrides": {
253
253
  "hono": "^4.13.8",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.1.34) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.1.35) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-bootstrap",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.1.34) Checking Comments"
11
+ "statusMessage": "(OmO 5.1.35) Checking Comments"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-comment-checker",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex plugin that runs comment-checker after edit-like PostToolUse hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.1.34) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.1.35) Recommending Git Bash MCP"
12
12
  }
13
13
  ]
14
14
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 5.1.34) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.1.35) Resetting Git Bash MCP Reminder"
24
24
  }
25
25
  ]
26
26
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-git-bash-hook",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex hook component that reminds Windows sessions to prefer the OMO git_bash MCP.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.1.34) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.1.35) Verifying LazyCodex Executor Evidence"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lazycodex-executor-verify",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "5.1.34",
4
- "inputDigest": "sha256:131335f4533ab5a61ada2cf0caf0c1bb90fc1ba51063a470c4797aa887f5a390",
3
+ "version": "5.1.35",
4
+ "inputDigest": "sha256:d7e2b8f2976901140ef492b1d88a9c90e2422b44c0cd3a9a1a3ce85c83e32096",
5
5
  "outputs": [
6
6
  {
7
7
  "path": "cli.d.ts",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 60,
11
- "statusMessage": "(OmO 5.1.34) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.1.35) Checking LSP Diagnostics"
12
12
  }
13
13
  ]
14
14
  }
@@ -21,7 +21,7 @@
21
21
  "type": "command",
22
22
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
23
23
  "timeout": 5,
24
- "statusMessage": "(OmO 5.1.34) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.1.35) Resetting LSP Diagnostics Cache"
25
25
  }
26
26
  ]
27
27
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lsp",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex plugin that exposes Language Server Protocol tools and post-edit diagnostics.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.34) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.1.35) Loading Project Rules"
11
11
  }
12
12
  ]
13
13
  }
@@ -19,7 +19,7 @@
19
19
  "type": "command",
20
20
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
21
21
  "timeout": 10,
22
- "statusMessage": "(OmO 5.1.34) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.1.35) Loading Project Rules"
23
23
  }
24
24
  ]
25
25
  }
@@ -32,7 +32,7 @@
32
32
  "type": "command",
33
33
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
34
34
  "timeout": 10,
35
- "statusMessage": "(OmO 5.1.34) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.1.35) Matching Project Rules"
36
36
  }
37
37
  ]
38
38
  }
@@ -45,7 +45,7 @@
45
45
  "type": "command",
46
46
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
47
47
  "timeout": 10,
48
- "statusMessage": "(OmO 5.1.34) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.1.35) Resetting Project Rule Cache"
49
49
  }
50
50
  ]
51
51
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-rules",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex plugin that injects project rule files into model context through lifecycle hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.1.34) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.1.35) Checking Thread Title Hygiene"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-teammode",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex team-mode hook component that keeps background thread titles descriptive after create_thread.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -270,6 +270,7 @@ function toDiagnosticRecord(input, now) {
270
270
  timestamp: now.toISOString(),
271
271
  event: input.event,
272
272
  source: input.source,
273
+ ...input.count === undefined ? {} : { count: input.count },
273
274
  ...serializeError(input.error, input.errorKind)
274
275
  };
275
276
  }
@@ -358,7 +359,7 @@ function shouldDisableTelemetry(input) {
358
359
  const env = input.env ?? process.env;
359
360
  const globalPrefix = input.globalEnvPrefix ?? "OMO";
360
361
  const prefixes = Array.from(new Set([globalPrefix, input.productEnvPrefix]));
361
- if (isDisableFlag(env["DO_NOT_TRACK"])) {
362
+ if (isDisableFlag(env["DO_NOT_TRACK"]) || isDisableFlag(env[`${globalPrefix}_DISABLE_TELEMETRY`])) {
362
363
  return true;
363
364
  }
364
365
  for (const prefix of prefixes) {
@@ -265,6 +265,7 @@ function toDiagnosticRecord(input, now) {
265
265
  timestamp: now.toISOString(),
266
266
  event: input.event,
267
267
  source: input.source,
268
+ ...input.count === undefined ? {} : { count: input.count },
268
269
  ...serializeError(input.error, input.errorKind)
269
270
  };
270
271
  }
@@ -353,7 +354,7 @@ function shouldDisableTelemetry(input) {
353
354
  const env = input.env ?? process.env;
354
355
  const globalPrefix = input.globalEnvPrefix ?? "OMO";
355
356
  const prefixes = Array.from(new Set([globalPrefix, input.productEnvPrefix]));
356
- if (isDisableFlag(env["DO_NOT_TRACK"])) {
357
+ if (isDisableFlag(env["DO_NOT_TRACK"]) || isDisableFlag(env[`${globalPrefix}_DISABLE_TELEMETRY`])) {
357
358
  return true;
358
359
  }
359
360
  for (const prefix of prefixes) {
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.34) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.1.35) Recording Session Telemetry"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-telemetry",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.34) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.1.35) Checking Ultrawork Trigger"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ultrawork",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.34) Checking Ulw-Execute Continuation"
10
+ "statusMessage": "(OmO 5.1.35) Checking Ulw-Execute Continuation"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-execute-continuation",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex Stop hook continuation injector for omo-codex ulw-execute plans.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit --with-ultrawork",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.34) Checking Ulw-Loop Steering"
10
+ "statusMessage": "(OmO 5.1.35) Checking Ulw-Loop Steering"
11
11
  }
12
12
  ]
13
13
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use-spawn",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 5.1.34) Recording Spawn Admission"
23
+ "statusMessage": "(OmO 5.1.35) Recording Spawn Admission"
24
24
  }
25
25
  ]
26
26
  }
@@ -33,7 +33,7 @@
33
33
  "type": "command",
34
34
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
35
35
  "timeout": 5,
36
- "statusMessage": "(OmO 5.1.34) Enforcing Unlimited Ulw-Loop Budget"
36
+ "statusMessage": "(OmO 5.1.35) Enforcing Unlimited Ulw-Loop Budget"
37
37
  }
38
38
  ]
39
39
  },
@@ -44,7 +44,7 @@
44
44
  "type": "command",
45
45
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
46
46
  "timeout": 5,
47
- "statusMessage": "(OmO 5.1.34) Guarding Ulw-Loop Spawns"
47
+ "statusMessage": "(OmO 5.1.35) Guarding Ulw-Loop Spawns"
48
48
  }
49
49
  ]
50
50
  }
@@ -56,7 +56,7 @@
56
56
  "type": "command",
57
57
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
58
58
  "timeout": 10,
59
- "statusMessage": "(OmO 5.1.34) Checking Ulw-Loop Resume"
59
+ "statusMessage": "(OmO 5.1.35) Checking Ulw-Loop Resume"
60
60
  }
61
61
  ]
62
62
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-loop",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "description": "Codex plugin: durable repo-native multi-goal orchestration with embedded success criteria and observable evidence audit.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook post-compact",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.34) Resetting Git Bash MCP Reminder",
10
+ "statusMessage": "(OmO 5.1.35) Resetting Git Bash MCP Reminder",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-compact",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.34) Resetting LSP Diagnostics Cache",
10
+ "statusMessage": "(OmO 5.1.35) Resetting LSP Diagnostics Cache",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-compact",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.34) Resetting Project Rule Cache",
10
+ "statusMessage": "(OmO 5.1.35) Resetting Project Rule Cache",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/comment-checker/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 30,
10
- "statusMessage": "(OmO 5.1.34) Checking Comments",
10
+ "statusMessage": "(OmO 5.1.35) Checking Comments",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\comment-checker\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 60,
10
- "statusMessage": "(OmO 5.1.34) Checking LSP Diagnostics",
10
+ "statusMessage": "(OmO 5.1.35) Checking LSP Diagnostics",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/teammode/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.1.34) Checking Thread Title Hygiene",
11
+ "statusMessage": "(OmO 5.1.35) Checking Thread Title Hygiene",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\teammode\\dist\\cli.js\" hook post-tool-use"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.34) Matching Project Rules",
10
+ "statusMessage": "(OmO 5.1.35) Matching Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook post-tool-use-spawn",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.1.34) Recording Spawn Admission",
11
+ "statusMessage": "(OmO 5.1.35) Recording Spawn Admission",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook post-tool-use-spawn"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.34) Enforcing Unlimited Goal Budget",
10
+ "statusMessage": "(OmO 5.1.35) Enforcing Unlimited Goal Budget",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use-spawn",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.1.34) Guarding Ulw-Loop Spawns",
11
+ "statusMessage": "(OmO 5.1.35) Guarding Ulw-Loop Spawns",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use-spawn"
13
13
  }
14
14
  ]