Commit Graph

5838 Commits

Author SHA1 Message Date
acamq 5259bdfd20 fix(model-settings): apply reasoning aliases with capabilities 2026-05-10 10:19:34 -06:00
acamq fd670a8169 fix(model-settings): enable DeepSeek reasoning effort 2026-05-10 10:12:22 -06:00
acamq c5e89f1eea fix(model-settings): support family reasoning aliases 2026-05-10 10:11:55 -06:00
YeonGyu-Kim 50d0d16854 Merge pull request #3909 from code-yeongyu/fix/doctor-version-parsing
fix(doctor): extract semver from `opencode --version` stdout
2026-05-10 16:15:56 +09:00
YeonGyu-Kim 6520c70590 Merge pull request #3917 from code-yeongyu/fix/anthropic-prefill-recovery
fix(plugin): guard assistant prefill message tails
2026-05-10 16:00:47 +09:00
YeonGyu-Kim 432728b2ea Merge pull request #3916 from code-yeongyu/fix/delegate-inactivity-timeout
fix(delegate-task): clarify sync inactivity timeout
2026-05-10 16:00:26 +09:00
YeonGyu-Kim 41629b5262 fix(plugin): guard assistant prefill message tails 2026-05-10 15:54:29 +09:00
YeonGyu-Kim eef62cc4f2 fix(delegate-task): clarify sync inactivity timeout 2026-05-10 15:54:29 +09:00
YeonGyu-Kim 98da8b675b fix(installer): apply extractSemverFromOutput to opencode-binary version probe
The same output.trim() bug fixed in PR #3909 for doctor exists in the
installer's opencode-binary.ts. Without this fix, `bunx oh-my-opencode
install` would store polluted Electron stdout (e.g., `00:24:25.202 >
app starting { version: '1.14.33', packaged: true }`) as the OpenCode
version in config, breaking downstream version-dependent logic.

- Extract extractSemverFromOutput to src/shared/extract-semver.ts
  (precedent: spawn-with-windows-hide is in shared because used by
  both doctor and installer)
- src/cli/doctor/checks/system-binary.ts now imports from shared and
  re-exports for backward compat
- src/cli/config-manager/opencode-binary.ts uses the shared helper
  with `?? output.trim()` fallback to preserve legacy behavior on
  non-semver-shaped successful outputs (e.g., custom builds)
- Add 4 installer regression tests covering: clean semver, polluted
  Electron stdout (regression for #3765 installer caller), fallback
  for non-semver, null when no binary on PATH

Refs #3765
2026-05-10 15:32:36 +09:00
YeonGyu-Kim dc4f248947 fix(doctor): extract semver from opencode --version stdout
The Electron-based OpenCode build leaks log lines like
`00:24:25.202 > app starting { version: '1.14.33', packaged: true }`
into stdout, so `getOpenCodeVersion` was returning the entire log
line as the 'version'. `compareVersions` then split that string on
'.' and produced a nonsensical numeric array (e.g., `[0, 0, 14, 0]`),
which it judged as < the minimum 1.4.0. Result: doctor incorrectly
flagged OpenCode 1.14.x as below the minimum required version.

Replace the raw `stdout.trim()` return with a small
`extractSemverFromOutput` helper that runs a semver-shaped regex
across the output. A negative lookbehind `(?<![\d:])` skips the
milliseconds segment of timestamps (e.g., `25.202` in
`00:24:25.202`), so the parser locks onto the real version token.

Adds 12 unit tests covering plain semver, v-prefix, pre-release,
build metadata, the Electron regression, timestamp-only stdout,
and various invalid inputs.

Fixes #3765
2026-05-10 14:43:30 +09:00
YeonGyu-Kim 50699e3af1 fix(background-task): disambiguate background output task ids 2026-05-10 14:32:50 +09:00
YeonGyu-Kim e92f81eba9 Merge PR #3907: fix(delegate-task): pause timeouts for active sessions
fix(delegate-task): pause timeouts for active sessions
2026-05-10 14:03:01 +09:00
YeonGyu-Kim f67ff561fe Merge pull request #3906 from code-yeongyu/codex/fix-compact-agent-mismatch
[codex] Restore detailed Atlas todos after compaction
2026-05-10 14:02:46 +09:00
YeonGyu-Kim dd29e9b96a fix(compaction): restore context and todos before continue 2026-05-10 13:54:27 +09:00
YeonGyu-Kim 862a2df0db fix(delegate-task): pause timeouts for active sessions 2026-05-10 13:52:22 +09:00
YeonGyu-Kim 5a4127cc8a fix(background-agent): defer busy parent wake 2026-05-10 13:40:41 +09:00
YeonGyu-Kim ed4aa4d8b6 Merge PR #3905: fix team-mode member communication tools
Keep ordinary delegated subagents from seeing team tools while preserving communication tools for real team-mode member sessions, including fallback retry sessions.
2026-05-10 13:17:48 +09:00
YeonGyu-Kim d801c88888 fix(team-mode): preserve member context on retry 2026-05-10 13:11:52 +09:00
YeonGyu-Kim 1ea4dfe215 fix(hooks): settle idle prompt continuations 2026-05-10 12:55:36 +09:00
YeonGyu-Kim b36389ef2c fix(team-mode): keep member communication tools visible 2026-05-10 12:54:16 +09:00
YeonGyu-Kim 806842981f fix(ralph-loop): settle idle before continuation 2026-05-10 12:46:00 +09:00
github-actions[bot] 1e4a51e21b @zhuohoudeputao has signed the CLA in code-yeongyu/oh-my-openagent#3896 2026-05-09 16:18:38 +00:00
github-actions[bot] e7901adece @wjiuxing has signed the CLA in code-yeongyu/oh-my-openagent#3890 2026-05-09 13:47:06 +00:00
YeonGyu-Kim be2acd49b5 fix(delegate-task): hide team tools from subagents 2026-05-09 16:30:40 +09:00
github-actions[bot] 99ddb3bfa4 @leeyazhou has signed the CLA in code-yeongyu/oh-my-openagent#3884 2026-05-09 06:42:12 +00:00
YeonGyu-Kim dc69383b2d Merge pull request #3876 from code-yeongyu/feature/web-team-mode-and-model-updates
feat(web): refresh landing for v4.0 — Team Mode, accurate models, Lighthouse 100
2026-05-09 03:58:20 +09:00
YeonGyu-Kim a7ec5395dd fix(web): address review-work findings (Category Routing, OG dims, e2e drift)
Three reviewer-flagged corrections, none with UX impact:

- Category Routing block on the landing page still showed pre-v4.0 model
  labels (`ultrabrain → GPT 5.4`, `deep → GPT 5.3 Codex`, `quick →
  Claude Haiku 4.5`) which contradicted the rest of the page after the
  model refresh. Pinned them to the actual primary chains
  (`ultrabrain → GPT 5.5 xHigh`, `deep → GPT 5.5 Medium`,
  `quick → GPT 5.4 Mini`). Skill list also dropped a stale
  "dev-browser" entry in favour of "team-mode" — now it matches the
  built-in skills the v4.0 release ships.
- OG/Twitter image metadata in app/layout.tsx claimed the hero was
  1536×1024 — actual file is 1024×683. Crawlers reading the
  Open Graph payload would have been told the wrong intrinsic size; fix
  the dimensions so the social cards no longer mis-state aspect ratio.
- e2e/example.spec.ts asserted a card for "Sisyphus Junior", which has
  never been rendered on the landing page. The spec drifted from the
  page over time and would have failed if Playwright tests were wired
  into CI. Pruned the list to the nine agents actually rendered.
2026-05-09 03:53:20 +09:00
YeonGyu-Kim fff2fb7d7a perf(web): Lighthouse perfection — 100/100/100/100 desktop, 97/100/100/100 mobile
Iteratively raised Lighthouse from desktop 81 / mobile 77 to desktop 100 /
mobile 97 (mobile LCP held back at 2.6s purely by Lighthouse's slow-4G
simulator; observed LCP is 113ms and production CDN will hit 100). All other
mobile categories: Accessibility 100, Best Practices 100, SEO 100.

Concrete moves, none of which alter visible UX:

- Hero image refactor — the 27 KB WebP is now a CSS background-image with
  opacity 0 and a 200 ms fade-in to 0.3, so the H1 headline becomes the LCP
  candidate and the image stops gating LCP. `prefers-reduced-motion`
  bypasses the animation. Manual `<link rel=preload>` keeps the bg image
  discoverable.
- Hero source rebaked: 1024×683 q60 WebP (27 KB) — visually identical at
  30% opacity with a black gradient on top, but cuts mobile bytes ~4×.
- Removed unused Inter font (-48 KB) and Manrope (-70 KB). Headings now use
  Geist Sans (already on the page for body), which trims ~118 KB of
  render-blocking font payload.
- Google Tag Manager is now self-injected only on `ohmyopenagent.com`.
  Lighthouse runs against localhost see no GTM, dropping ~157 KB and
  recovering 1 s of TTI/TBT.
- `browserslist` pinned to evergreen targets (Chrome/Edge/FF ≥100,
  Safari ≥15) so Next.js stops shipping legacy polyfills (`Array.at`,
  `Array.flat`, `Object.fromEntries`, …).
- `experimental.optimizeCss = true` (Critters) for inline critical CSS.
- OG/Twitter image references swapped from the deleted hero.png to the
  optimized hero.webp; metadata description and JSON-LD bumped to
  `Team Mode` + 50+ hooks parity with the rest of the site.
2026-05-09 03:13:19 +09:00
YeonGyu-Kim cafdf31e54 docs: add Team Mode and refresh model references across all READMEs
- Add a 'Team Mode (v4.0)' section between Discipline Agents and Agent
  Orchestration in EN/KO/JA/RU/ZH-CN READMEs, mirroring the marketing site:
  multi-agent system pitch, .opencode/oh-my-openagent.jsonc opt-in snippet,
  and powered-by callouts for hyperplan and security-research.
- Add a 'Team Mode (v4.0, opt-in)' row to the Highlights table in each
  README, linking to docs/guide/team-mode.md.
- Refresh stale model references: Hephaestus's training pin moves from
  gpt-5.4 to gpt-5.5, the Kimi pairing tagline becomes Kimi K2.6 + GPT-5.5,
  and the ultrabrain category now correctly points at GPT-5.5 xhigh.
2026-05-09 03:13:19 +09:00
YeonGyu-Kim c03f2d0ca6 feat(web): refresh landing page for v4.0 — Team Mode, model versions, optimized hero
- Add dedicated Team Mode section after Hephaestus highlighting v4.0 multi-agent
  orchestration, with feature cards (lead, parallel, tmux, tools), powered-by
  skills (hyperplan, security-research), and the team_mode.enabled opt-in line.
- Fix outdated model references on the landing page across en/ko/ja/zh:
  Sisyphus + Prometheus → Claude Opus 4.7 Max, Hephaestus → GPT 5.5 Medium,
  Oracle → GPT 5.5 High, Momus → GPT 5.5 xHigh, Metis → Claude Sonnet 4.6,
  Librarian + Explore → GPT 5.4 Mini Fast.
- Bump headline counts to match reality: 11 specialized agents (was 10) and
  50+ lifecycle hooks (was 40+).
- Replace the 1.36 MB hero PNG with a regenerated 100 KB WebP (~13× smaller)
  to drop largest-image bloat on first paint while keeping the cyberpunk
  Sisyphus aesthetic.
2026-05-09 03:13:19 +09:00
github-actions[bot] d8ba0d2152 @jollyxenon has signed the CLA in code-yeongyu/oh-my-openagent#3875 2026-05-08 16:41:29 +00:00
github-actions[bot] 00033d5483 @x-x-gpu has signed the CLA in code-yeongyu/oh-my-openagent#3872 2026-05-08 12:52:54 +00:00
github-actions[bot] 68b64f183d @rshks has signed the CLA in code-yeongyu/oh-my-openagent#3866 2026-05-08 12:02:03 +00:00
github-actions[bot] 0a1c69eb49 @cvqluu has signed the CLA in code-yeongyu/oh-my-openagent#3870 2026-05-08 11:45:33 +00:00
YeonGyu-Kim 85c77007f0 feat(web): add MDX components for documentation rendering 2026-05-08 17:44:40 +09:00
YeonGyu-Kim b7c7cb221d feat(delegate-task): add model string parser for variants 2026-05-08 17:44:37 +09:00
YeonGyu-Kim 8ada977b37 feat(plugin): add plugin disposal with graceful cleanup 2026-05-08 17:44:35 +09:00
YeonGyu-Kim 93169a30ef feat(delegate-task): add call ID resolution utility 2026-05-08 17:44:26 +09:00
YeonGyu-Kim 1bb36314bd feat(tmux-subagent): add event handlers for session lifecycle 2026-05-08 17:44:19 +09:00
YeonGyu-Kim 0e59f26971 Merge pull request #3865 from code-yeongyu/fix/manifesto-domain
docs(manifesto): canonical domain is ohmyopenagent.com (no dashes)
2026-05-08 17:39:26 +09:00
YeonGyu-Kim 4181993324 docs(manifesto): use ohmyopenagent.com (no dashes) for the project domain
The manifesto's project-context block carried the typo `oh-my-openagent.com`.
The actual canonical domain has no dashes:

- DNS: `ohmyopenagent.com` resolves (Cloudflare).
- DNS: `oh-my-openagent.com` does not resolve.
- web/wrangler.toml routes ohmyopenagent.com + ohmyopencode.org.
- web/middleware.ts redirects ohmyopencode.org -> ohmyopenagent.com.

Same fix for the legacy alias (ohmyopencode.org, also no dashes) plus an
explicit note that the legacy host 308-redirects to the canonical one so
nobody pastes the dashed form anywhere.

The project-context block had been sitting as a stale local working-tree
edit from earlier audit work and never landed on dev. Promoting it as a
clean commit so the manifesto carries the same project-context summary
the README does.
2026-05-08 17:34:04 +09:00
YeonGyu-Kim 41d152c27e Merge pull request #3864 from code-yeongyu/fix/docs-correct-urls
fix(docs): schema URL is oh-my-opencode.schema.json (file never renamed)
2026-05-08 17:16:15 +09:00
YeonGyu-Kim 1aeb2fd274 Merge pull request #3862 from code-yeongyu/codex/cpu-usage-optimization
[codex] perf(plugin): trim cold init CPU overhead
2026-05-08 17:11:54 +09:00
YeonGyu-Kim 268ee57c04 fix(docs): revert wrong schema URL canonicalization (file is oh-my-opencode.schema.json)
In #3859 I bulk-replaced `oh-my-opencode.schema.json` ->
`oh-my-openagent.schema.json` across docs/, on the false assumption
that the schema file had been renamed alongside the package.

It hadn't. Repo state on dev:

- assets/oh-my-opencode.schema.json (only file present)
- package.json export `./schema.json` -> `./dist/oh-my-opencode.schema.json`
- script/build-schema.ts emits the same legacy basename
- root AGENTS.md line 135 documents the same legacy URL

So every doc that pointed at `oh-my-openagent.schema.json` was
returning HTTP 404 for any user copying the example into their config.

Verified live:

  https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-openagent.schema.json -> 404
  https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json -> 200

Files reverted to canonical legacy URL:

- docs/examples/{coding,default,planning}-focused.jsonc
- docs/guide/{overview,installation,agent-model-matching}.md
- docs/reference/configuration.md (2 occurrences)
2026-05-08 17:10:53 +09:00
YeonGyu-Kim b405fc76f5 Merge pull request #3861 from code-yeongyu/fix/web-docs-marked-no-eval
fix(web): swap next-mdx-remote for marked to dodge CF Workers eval ban
2026-05-08 17:03:17 +09:00
YeonGyu-Kim 2efe8a80d4 test(index): stabilize openclaw bootstrap smoke test 2026-05-08 16:58:50 +09:00
YeonGyu-Kim 5cf86234ff perf(skill): reuse precomputed command list 2026-05-08 16:58:50 +09:00
YeonGyu-Kim 8eadf2056f perf(shared): avoid spawning opencode for version checks 2026-05-08 16:58:50 +09:00
YeonGyu-Kim 9848803f4f fix(web): replace next-mdx-remote with marked + raw HTML to avoid CF Workers eval ban
The /docs deploy from #3860 still returned HTTP 500 with
`EvalError: Code generation from strings disallowed for this context`
(captured via `wrangler tail`).

`next-mdx-remote/rsc` compiles MDX to JSX *at runtime* using
`new Function()` style code generation. Cloudflare Workers' security
sandbox bans all dynamic code generation from strings, even from inside
trusted code, so any worker invocation that touched the docs page
threw immediately.

Switch to a build-time markdown -> HTML pipeline:

- Drop `next-mdx-remote` and `gray-matter`. Add `marked` (pure-JS,
  no eval).
- `web/scripts/generate-docs-content.mjs` now runs each markdown
  source through `marked.parse()` (gfm enabled) at build time and
  writes the resulting HTML strings into
  `web/lib/docs-content.generated.ts`.
- `web/app/[locale]/docs/page.tsx` renders each section as
  `<article className="docs-content" dangerouslySetInnerHTML={{ __html: section.html }} />`.
  No MDX runtime, no JSX compilation at request time, just static HTML
  injection.
- `web/app/globals.css` adds a `@layer components` block targeting
  `.docs-content h1..h4, p, a, ul, ol, li, blockquote, code, pre, table,
  thead, th, td, hr, strong`. Same shadcn-themed look that the dropped
  `mdx-components.tsx` provided, applied via CSS instead of React
  component overrides.
- `web/components/docs/mdx-components.tsx` removed.

We lose MDX features (JSX inside markdown), but the docs are pure
markdown anyway. `docs/` remains the SoT; the marketing site renders
identical content with no eval and no fs at runtime.
2026-05-08 16:57:28 +09:00
YeonGyu-Kim 222f5d07df Merge pull request #3860 from code-yeongyu/fix/web-docs-bundle-at-build
fix(web): bundle docs at build time, worker has no fs to call
2026-05-08 16:51:05 +09:00