524 Commits

Author SHA1 Message Date
Mikey
5f75f67a27 security: pin all dependencies to exact versions
Removes caret (^) ranges from all 74 dependencies in package.json,
locking each to the exact version resolved in bun.lock.

Motivation: the axios supply chain attack of March 31 2026 demonstrated
that caret ranges are a live attack vector. axios@^1.14.0 would have
resolved to the trojanized 1.14.1 (bundled plain-crypto-js RAT, C2
sfrclak.com). Both 1.14.1 and 0.30.4 were unpublished within 24h.

Key pins:
  axios      ^1.14.0  → 1.14.0   (trojanized 1.14.1 blocked)
  undici     ^7.3.0   → 7.24.6   (7 CVEs between 7.3 and 7.24)
  yaml       ^2.7.0   → 2.8.3    (CVE-2026-33532 fix)
  ajv        ^8.17.0  → 8.18.0   (ReDoS fix)
  lodash-es  ^4.17.21 → 4.17.23  (prototype pollution fix)
  zod        ^3.24.0  → 3.25.76  (large range locked)

All 74 deps verified: integrity hashes match npm registry, no known
supply chain incidents, no postinstall scripts in lockfile.
2026-04-01 21:29:42 -07:00
Alex
f3ebd7d256 fix: convert max_tokens to max_completion_tokens for Azure OpenAI
Azure OpenAI API rejects the max_tokens parameter and requires
max_completion_tokens instead. This change ensures the conversion
is robust by validating that max_tokens is a positive number before
using it, preventing edge cases like null or "null" string values
from being incorrectly sent.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 12:01:01 +08:00
Kevin Codex
1a60509fdc Merge pull request #96 from gnanam1990/fix/startup-screen-version-display
fix: show correct version in startup screen
2026-04-02 11:43:42 +08:00
gnanam1990
47b19c9a00 fix: style version number in startup screen accent orange
Apply the existing ACCENT colour (rgb 240 148 100) to the version
string so it stands out against the dim label, matching the warm
orange used throughout the startup screen for stars and status text.

Requested in #95.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 09:11:12 +05:30
gnanam1990
8c6a10517f fix: show correct version in startup screen
StartupScreen.ts was reading the version via globalThis['MACRO_DISPLAY_VERSION']
which is never populated — the Bun bundler inlines it as MACRO.DISPLAY_VERSION
(dot notation), not as a globalThis key.

Result: startup screen always showed the hardcoded fallback 'v0.1.4' regardless
of the installed version.

Fix: use MACRO.DISPLAY_VERSION ?? MACRO.VERSION directly, consistent with
cli.tsx, main.tsx, and logoV2Utils.ts.

Fixes #95

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 09:05:00 +05:30
Kevin Codex
cb8973e99b chore: release 0.1.6 v0.1.6 2026-04-02 11:18:21 +08:00
Kevin Codex
085ba9206e Merge pull request #80 from gnanam1990/fix/azure-cognitive-services-endpoint
fix: support Azure Cognitive Services and Azure OpenAI endpoints
2026-04-02 11:08:19 +08:00
Kevin Codex
0f34a8eadb Merge pull request #93 from gnanam1990/fix/gemini-schema-required-validation
fix: make schema normalization provider-aware for Gemini compatibility
2026-04-02 11:08:02 +08:00
Kevin Codex
10a5444241 Merge pull request #94 from kevincodex1/feature/removed-telemetry-noise
removed telemetry noise, unnecessary packets sent to anthropic
2026-04-02 11:04:29 +08:00
Kevin Codex
42e614dfb3 removed telemetry noise, unnecessary packets sent to anthropic 2026-04-02 11:01:14 +08:00
gnanam1990
ab911d1ed1 fix: make schema normalization provider-aware for Gemini compatibility
Two bugs in convertTools() caused Gemini's OpenAI-compatible endpoint
to reject tool schemas with 400 "schema requires unspecified property":

1. The Agent tool patch unconditionally pushed 'message' into required[]
   even though 'message' is not a property of the Agent schema. Gemini
   strictly validates that every key in required[] exists in properties.

2. normalizeSchemaForOpenAI() added all property keys to required[] for
   OpenAI strict mode, but this conflicts with Gemini's stricter schema
   validation which rejects required keys absent from properties.

Fix:
- Agent tool patch now only adds a key to required[] if it exists in
  schema.properties (fixes the 'message' 400 error on Gemini)
- normalizeSchemaForOpenAI() accepts a strict flag: true for OpenAI
  (promotes all property keys into required[]), false for Gemini
  (filters required[] to only keys present in properties)
- convertTools() detects CLAUDE_CODE_USE_GEMINI and passes strict=false

Fixes #82

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 08:28:07 +05:30
Kevin Codex
e524be7e22 Merge pull request #50 from auriti/fix/status-panel-openai-provider
fix: show OpenAI/Gemini provider info in /status panel
2026-04-02 10:50:16 +08:00
gnanam1990
ac2ea6aeb2 test: align codexShim test with strict schema normalization
Update the stale test expectation to match current behavior where
normalizeSchemaForOpenAI() promotes all properties into required[]
and marks the schema as strict: true.

Same fix as PR #72 — included here so PR #80 passes CI independently.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 08:16:51 +05:30
Kevin Codex
8645dc4cce bump version 2026-04-02 09:39:44 +08:00
Kevin Codex
69f1d0b896 Merge pull request #34 from auriti/fix/macro-package-url
fix: define MACRO.PACKAGE_URL in build script to fix auto-update
2026-04-02 09:09:43 +08:00
Kevin Codex
36654c1f48 Merge pull request #45 from Vasanthdev2004/bun-version-note
docs: note minimum Bun version for Windows builds
2026-04-02 08:52:39 +08:00
Kevin Codex
546aee66d2 Merge pull request #85 from nusquama/fix/azure-openai-max-completion-tokens
fix: use max_completion_tokens instead of max_tokens for OpenAI-compatible APIs
2026-04-02 08:49:23 +08:00
nusquama
537ac24a9c fix: use max_completion_tokens instead of max_tokens for OpenAI-compatible APIs
Azure OpenAI and newer OpenAI models (o1, o3, o4...) reject `max_tokens`
with a 400 error and require `max_completion_tokens` instead.

Maps `params.max_tokens` → `max_completion_tokens` in the request body,
which is the current standard across OpenAI-compatible providers.
2026-04-02 08:36:01 +08:00
Kevin Codex
5fae22a8f2 Merge pull request #33 from auriti/fix/profile-file-permissions
fix: restrict .openclaude-profile.json to owner-only permissions (0600)
2026-04-02 08:30:01 +08:00
Kevin Codex
01246f98bd Merge pull request #51 from auriti/fix/proxy-wss-default-port
fix: use correct default port for wss:// in NO_PROXY matching
2026-04-02 08:29:39 +08:00
Kevin Codex
1ce19b9a39 Merge pull request #59 from Vasanthdev2004/gpt4o-max-tokens-test
test: cover OpenAI max token caps for gpt-4o and GPT-5.4
2026-04-02 08:24:25 +08:00
Kevin Codex
7ce7dc1c6e Merge pull request #72 from Vasanthdev2004/fix-pr-checks
test: align Codex strict schema expectation
2026-04-02 08:21:50 +08:00
Kevin Codex
2a8f6fc242 Merge pull request #75 from tunnckoCore/feat/disable-coauthor-and-openclaude-pr-branding
feat: support disabling commit co-author attribution
2026-04-02 07:51:02 +08:00
Kevin Codex
aa4a356f3b Merge pull request #81 from Vasanthdev2004/third-party-setup-fix
fix: skip Anthropic setup flow for third-party providers
2026-04-02 07:37:35 +08:00
Vasanthdev2004
fd6f4e6632 test: align Codex strict schema expectation 2026-04-02 01:37:30 +05:30
Vasanthdev2004
c22045e3e4 fix: skip Anthropic setup flow for third-party providers 2026-04-02 01:32:38 +05:30
gnanam1990
4c9b9f0d5d fix: support Azure Cognitive Services and Azure OpenAI endpoints
Azure endpoints require two changes vs standard OpenAI:
1. Auth header: `api-key: {key}` instead of `Authorization: Bearer {key}`
2. URL path: `/openai/deployments/{model}/chat/completions?api-version={version}`
   instead of `/chat/completions`

Detection is automatic when OPENAI_BASE_URL contains
`cognitiveservices.azure.com` or `openai.azure.com`.

The api-version defaults to `2024-12-01-preview` and can be overridden
via the AZURE_OPENAI_API_VERSION env var.

Handles all common Azure base URL formats:
- https://{resource}.cognitiveservices.azure.com/
- https://{resource}.cognitiveservices.azure.com/openai/v1
- https://{resource}.openai.azure.com/openai/v1
- https://{resource}.cognitiveservices.azure.com/openai/deployments/{model}/v1

Fixes #79

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 01:32:30 +05:30
tunnckoCore
8466fc138e test: align Codex strict schema expectation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 22:32:32 +03:00
tunnckoCore
6c0d2622c9 docs: document co-author attribution env var
Document OPENCLAUDE_DISABLE_CO_AUTHORED_BY in the README and clarify that it only affects commit trailers.
2026-04-01 21:46:52 +03:00
tunnckoCore
217a864ba0 feat: support disabling commit co-author attribution
Add an env var to suppress the default Co-Authored-By trailer and rebrand PR attribution text to OpenClaude.
2026-04-01 21:43:29 +03:00
Vasanthdev2004
936107f569 test: align Codex strict schema expectation 2026-04-02 00:11:42 +05:30
Kevin Codex
b204ae722f Merge pull request #71 from Vasanthdev2004/pr-checks
ci: add automated PR smoke and provider checks
2026-04-02 02:33:25 +08:00
Kevin Codex
80df0c57bd Merge pull request #48 from auriti/fix/empty-string-content-delta
fix: handle empty string delta.content in OpenAI streaming
2026-04-02 02:31:11 +08:00
Vasanthdev2004
9951da5397 ci: add PR smoke and provider test checks 2026-04-02 00:00:12 +05:30
Kevin Codex
18e24a75f1 Merge pull request #70 from gnanam1990/feat/gradient-startup-screen
feat: gradient startup screen with provider info
2026-04-02 02:30:00 +08:00
gnanam1990
9d464f3488 feat: add gradient startup screen and remove old OPEN box logo
Adds a new startup screen with filled-block text logo and sunset
gradient, printed to stdout before the Ink UI loads. Removes the
old OPEN box logo from the chat UI since the new screen replaces it.

Changes:
- src/components/StartupScreen.ts (NEW) — gradient OPEN CLAUDE logo
  with provider info box (Provider, Model, Endpoint). Auto-detects
  active provider from env vars (OpenAI, Gemini, DeepSeek, Ollama,
  Groq, Mistral, Azure, LM Studio, Anthropic). Skipped in CI and
  non-TTY environments.
- src/entrypoints/cli.tsx — calls printStartupScreen() at startup
  before Ink renders
- src/components/Messages.tsx — removes <LogoV2 /> from LogoHeader
  so the old OPEN box logo no longer appears in the chat UI

Addresses #55.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:57:45 +05:30
Vasanthdev2004
3491dc3cba fix: preserve Gemini thought signatures for tools 2026-04-01 23:54:17 +05:30
Kevin Codex
b78db9568a Merge pull request #63 from step325/fix/codex-multi-agent-compatibility
Fix/codex multi agent compatibility
2026-04-02 02:20:39 +08:00
Kevin Codex
f8d9dbeda9 Merge pull request #66 from tunnckoCore/fix/skills-menu-namespace-sort
fix: sort skills menu by namespace
2026-04-02 02:08:12 +08:00
Kevin Codex
43042ede56 Merge pull request #61 from Vasanthdev2004/ctrl-o-expand-crash
fix: guard ctrl-o transcript sandbox subscription
2026-04-02 02:05:41 +08:00
Charlike Mike Reagent
e8dd3d6289 fix: sort skills menu by namespace 2026-04-01 21:04:02 +03:00
Kevin Codex
e5db3033ad Merge pull request #65 from tunnckoCore/fix/skills-menu-nested-labels
fix: clarify nested skill labels in skills menu
2026-04-02 02:01:45 +08:00
Charlike Mike Reagent
1d82022978 fix: clarify nested skill labels in skills menu 2026-04-01 20:58:53 +03:00
step325
66f5981c45 fix(codex): Support Multi-Agent framework schemas for OpenAI/Codex endpoints
This commit addresses strict schema validation limitations when running subagents under OpenAI backend shims.

- Drops empty properties from payloads (like Record<string, string>) that break OpenAI's Structured Outputs validation.

- Handles edge cases for automated initial teams when subagents bypass standard creation routines.

- Aborts sending unsupported experimental backend parameters like temperature and top_p for GPT-5 derivatives.
2026-04-01 19:47:26 +02:00
Kevin Codex
4221b453c7 Merge pull request #32 from auriti/fix/tool-choice-none
fix: map tool_choice 'none' in OpenAI shim
2026-04-02 01:42:00 +08:00
Kevin Codex
d4b24483a6 Merge pull request #49 from auriti/fix/deepseek-context-window
fix: update DeepSeek context window from 64k to 128k
2026-04-02 01:41:10 +08:00
Kevin Codex
a26844ac7e Merge pull request #64 from tunnckoCore/feat/nested-skills-support
fix: support nested skill directories
2026-04-02 01:40:39 +08:00
Kevin Codex
732633cdf8 Merge pull request #62 from gnanam1990/fix/gemini-auth-login-screen
fix: add OpenAI and Gemini to /login 3rd-party platform screen
2026-04-02 01:32:07 +08:00
Charlike Mike Reagent
63adb95e8d fix: support nested skill directories
Load nested SKILL.md files from .claude/skills and namespace them with colons so category-based skill layouts work in Claude Code clients.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 20:20:13 +03:00
gnanam1990
802cb4ea36 fix: add OpenAI and Gemini to /login 3rd-party platform screen
The /login platform_setup screen only listed Amazon Bedrock,
Microsoft Foundry, and Vertex AI — OpenAI-compatible providers
and Gemini were completely absent, leaving users with no guidance
on how to use OpenClaude's main feature.

Changes:
- Selector label: "Amazon Bedrock, Microsoft Foundry, or Vertex AI"
  → "OpenAI, Gemini, Bedrock, Ollama, and more"
- Description updated to mention OpenAI-compatible providers and Gemini
- Added OpenAI and Gemini env var instructions to the docs list

Fixes #43 (login screen confusion for Gemini users).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 22:43:55 +05:30