Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
830aae0
docs: document maintainers and review ownership
Ingwannu Jul 22, 2026
340ec48
feat: add Tencent Coding Plan and SiliconFlow
Ingwannu Jul 22, 2026
04a52ec
feat(gui): add optional PostHog EU analytics CHE-785
OnlineChef Jul 23, 2026
82cfac4
fix(gui): sanitize PostHog $current_url to known hash route only
Jul 23, 2026
1419a34
feat(providers): add OmniRoute as first-class provider (#3)
OnlineChef Jul 24, 2026
b6f4733
feat(codex): round-robin pool rotation + jittered request pacing (fre…
OnlineChef Jul 24, 2026
f763dfa
docs(fleet): pin joep host OpenCodex at 2.7.31
OnlineChef Jul 22, 2026
a75ad51
fix(oauth): force Cursor account picker on Add account / reauth
OnlineChef Jul 22, 2026
bada509
feat(claude): add desktop family profiles
lidge-jun Jul 11, 2026
b866dc5
docs(claude): explain desktop family routing
lidge-jun Jul 11, 2026
fabf35f
fix(claude): protect unavailable desktop routes
lidge-jun Jul 11, 2026
6fcbad0
feat(gui): add Claude Desktop family editor
lidge-jun Jul 11, 2026
bcfc47f
fix(claude): stabilize desktop apply and legacy aliases
lidge-jun Jul 11, 2026
31a9dbd
feat(claude): desktop applied-state fingerprint + transactional write…
lidge-jun Jul 21, 2026
69f0c33
feat(claude): desktop client surface discrimination in request logging
lidge-jun Jul 21, 2026
4fac15a
feat(claude): desktop auto-apply + health monitoring
lidge-jun Jul 21, 2026
68b7d95
feat(gui): desktop status bar + effort transparency + health display
lidge-jun Jul 21, 2026
20c935b
feat(claude): desktop prefer1m + Claude-shaped alias guard (Luna rese…
lidge-jun Jul 21, 2026
f55fcb5
feat(gui): Dutch localization + provider workspace + quota bars
OnlineChef Jul 22, 2026
08add2a
fix(claude): drop stray conflict marker and complete desktop i18n for…
OnlineChef Jul 24, 2026
05d8801
fix(gui): respect locale, persist theme, honor legacy deep-link targets
OnlineChef Jul 24, 2026
2a9c3e5
test(gui): reconcile merged-in upstream tests with this host's intent…
OnlineChef Jul 24, 2026
e1e1ee7
fix(gui): satisfy eslint react-hooks/react-refresh/i18n rules on the …
OnlineChef Jul 24, 2026
4033284
fix(gui): address review comments on theme state, locale detect, quot…
OnlineChef Jul 24, 2026
628a736
Merge pull request #13 from OnlineChefGroep/fleet/pin-2.7.31
SoulWayy Jul 24, 2026
b28ce89
Merge pull request #6 from OnlineChefGroep/agent/document-maintainers
SoulWayy Jul 24, 2026
91bab8b
Merge pull request #5 from OnlineChefGroep/agent/add-tencent-siliconf…
SoulWayy Jul 24, 2026
e5d59fe
Merge pull request #2 from OnlineChefGroep/CHE-785-posthog-opencodex
SoulWayy Jul 24, 2026
c66cc0e
chore: merge dev branch with feature work (combos, aliases, responses…
OnlineChef Jul 25, 2026
1e61c0f
feat(claude): add Claude Desktop integration
OnlineChef Jul 25, 2026
aa074b9
chore: detach from upstream and establish independent fork
OnlineChef Jul 25, 2026
640889c
chore: update package.json to reflect fork identity and repo URLs
OnlineChef Jul 25, 2026
ebf0541
chore: update release workflow for fork branch model + add ROADMAP
OnlineChef Jul 25, 2026
b516fea
chore: update translated READMEs for fork status
OnlineChef Jul 25, 2026
89c0198
fix: replace all upstream (lidge-jun) references with OnlineChefGroep…
OnlineChef Jul 25, 2026
37d0f8f
chore: remove all upstream (lidge-jun) references from codebase
OnlineChef Jul 25, 2026
e9f592b
chore(release): bump to v1.0.0-alpha.1 — first independent fork release
OnlineChef Jul 25, 2026
baadc83
feat: add server-side PostHog, budget alerts, latency stats, ocx stat…
OnlineChef Jul 25, 2026
2b8287f
docs: reconcile fork roadmap and release state (#15)
OnlineChef Jul 25, 2026
056a83c
fix(responses): repair missing terminal item IDs (#14)
OnlineChef Jul 25, 2026
2693d7d
ci: enforce high-severity dependency audit (#16)
OnlineChef Jul 25, 2026
42dd009
Merge upstream/main into origin/main: keep OnlineChefGroep fork featu…
OnlineChef Jul 28, 2026
ae6efe6
fix(tests): reconcile provider registry parity expectations with Omni…
OnlineChef Jul 28, 2026
a20daf9
feat(providers): generalize account UI and per-provider fallback
OnlineChef Aug 1, 2026
63c6e7b
feat(provider-security): ChefVault client, in-memory slots, degraded …
OnlineChef Aug 1, 2026
02bc847
feat(provider-security): ChefVault client, slots, and degraded mode
OnlineChef Aug 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Dependabot configuration
# See: https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
timezone: "Europe/Amsterdam"
open-pull-requests-limit: 10
labels:
- "dependencies"
- "automated"
versioning-strategy: increase
groups:
minor-patch:
applies-to: version-updates
update-types:
- "minor"
- "patch"

- package-ecosystem: "npm"
directory: "/gui"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
timezone: "Europe/Amsterdam"
open-pull-requests-limit: 10
labels:
- "dependencies"
- "automated"
- "gui"
versioning-strategy: increase
groups:
minor-patch:
applies-to: version-updates
update-types:
- "minor"
- "patch"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
labels:
- "dependencies"
- "automated"
- "ci"
4 changes: 2 additions & 2 deletions .github/scripts/issue-quality.test.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -742,7 +742,7 @@ describe("validateIssue - documentation", () => {
"### Documentation problem type",
"Incorrect documentation",
"### Documentation location",
"https://lidge-jun.github.io/opencodex/providers/",
"https://github.com/OnlineChefGroep/opencodex",
"### What is wrong or missing?",
"The page says kimi uses /v1/chat/completions but it actually uses /v1/responses.",
"### What should the documentation explain instead?",
Expand Down Expand Up @@ -893,7 +893,7 @@ describe("shouldReopen", () => {
state: "closed",
closed_at: "2026-07-20T10:00:00Z",
state_reason: "not_planned",
closed_by: "lidge-jun",
closed_by: "OnlineChefGroep",
};
assert.equal(shouldReopen(baseBotState, issue, false), false);
});
Expand Down
57 changes: 57 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,60 @@ jobs:

- name: ocx help via bundled bun
run: ocx help

security:
name: Security audit
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7

- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: 1.3.14

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Generate Bun audit report
id: bun-audit
continue-on-error: true
shell: bash
run: |
set +e
# Full JSON evidence: `bun audit --json` ignores --audit-level, so this
# captures findings at every severity for the uploaded artifact.
bun audit --json > bun-audit.json
# Gate decision: bun audit only honors --audit-level in non-JSON mode,
# so derive the pass/fail from the human-readable run (high/critical only).
bun audit --audit-level=high
status=$?
echo "exit_code=$status" >> "$GITHUB_OUTPUT"
exit 0

- name: Upload Bun audit report
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: bun-audit
path: bun-audit.json
retention-days: 7

- name: Enforce Bun audit
if: steps.bun-audit.outputs.exit_code != '0'
run: |
cat bun-audit.json
exit 1

lint-github-actions:
name: Lint GitHub Actions
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7

- name: Lint workflows
uses: raven-actions/actionlint@3d39aea434753780c3b3d4a1a31c854b4dbf49d7 # v2.2.0
2 changes: 1 addition & 1 deletion .github/workflows/enforce-issue-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1040,7 +1040,7 @@ jobs:
"",
guidanceList,
"",
"See the [Contributing guide](https://lidge-jun.github.io/opencodex/contributing/) for details.",
"See the [README](https://github.com/OnlineChefGroep/opencodex) for details.",
"",
"Once the report passes the automated checks, it will be reopened automatically unless a maintainer has changed its state.",
].join("\n"));
32 changes: 15 additions & 17 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,32 +110,30 @@ jobs:
run: |
set -euo pipefail

# All releases run from main. Stable versions (no pre-release suffix) get dist-tag "latest".
# Pre-release versions (e.g. 1.0.0-alpha.1) get dist-tag "preview".
case "$GITHUB_REF" in
refs/heads/main)
expected_tag="latest"
if [[ "$RELEASE_VERSION" == *-* ]]; then
echo "::error::main releases must use a stable semver version; got ${RELEASE_VERSION}"
exit 1
fi
;;
refs/heads/preview)
expected_tag="preview"
if [[ "$RELEASE_VERSION" != *-preview.* ]]; then
echo "::error::preview releases must use a preview prerelease version; got ${RELEASE_VERSION}"
exit 1
# Pre-release version — must use "preview" dist-tag
if [ "$NPM_DIST_TAG" != "preview" ]; then
echo "::error::Pre-release versions (${RELEASE_VERSION}) must use dist-tag 'preview', got '${NPM_DIST_TAG}'"
exit 1
fi
else
# Stable version — must use "latest" dist-tag
if [ "$NPM_DIST_TAG" != "latest" ]; then
echo "::error::Stable releases (${RELEASE_VERSION}) must use dist-tag 'latest', got '${NPM_DIST_TAG}'"
exit 1
fi
fi
;;
*)
echo "::error::Release must run from main or preview; got ${GITHUB_REF}"
echo "::error::Release must run from main; got ${GITHUB_REF}"
exit 1
;;
esac

if [ "$NPM_DIST_TAG" != "$expected_tag" ]; then
echo "::error::${GITHUB_REF#refs/heads/} releases must publish with npm dist-tag '${expected_tag}', got '${NPM_DIST_TAG}'"
exit 1
fi

ci_url="$(
gh run list \
--workflow ci.yml \
Expand Down Expand Up @@ -320,7 +318,7 @@ jobs:
# Preview builds must be marked prerelease so GitHub "latest" keeps pointing at the
# stable channel (matching npm dist-tags); see issue #64.
prerelease_flag=""
if [[ "$RELEASE_VERSION" == *-preview.* ]]; then
if [[ "$RELEASE_VERSION" == *-* ]]; then
prerelease_flag="--prerelease"
fi

Expand Down
78 changes: 78 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Changelog

All notable changes to the OnlineChefGroep fork of **opencodex** are documented here.

**Repository:** [OnlineChefGroep/opencodex](https://github.com/OnlineChefGroep/opencodex)
**Package:** `@bitkyc08/opencodex`

> This fork uses **independent semantic versioning** starting at `v1.0.0-alpha.1`.
> See [VERSIONING.md](./VERSIONING.md) for details.

---

## [1.0.0-alpha.1] — Planned inaugural fork pre-release

Prepared as the first independent fork release, fully detached from upstream release numbering.

### Added

- **Claude Desktop integration** — full Claude Desktop profile management via GUI and CLI
- **Combo rename & public aliases** — rename combos and expose public aliases
- **Output defaults & web-search replay markers** — custom output defaults
- **Response item ID repair** — opt-in repair for unstable passthrough IDs
- **Cursor context usage** — accurate context usage reporting across tool turns
- **Cursor cache telemetry** — clarify missing cache telemetry with GUI indicators
- **Native effort clamp** — gate native effort clamp by route identity
- **Dutch GUI localization** — full Dutch translation for the dashboard
- **Provider workspace shell** — dedicated dashboard panel for per-provider workspace
- **Quota bars** — visual quota display in the dashboard

### Changed

- **Independent versioning** — detached from upstream version numbers with the fork's own semver scheme
- **CI pipeline** — enhanced with CodeQL, Dependabot, security audit, workflow linting, and cross-platform package smoke tests
- **Canonical fork references** — active project, release, documentation, and support URLs point to OnlineChefGroep; historical upstream links remain where attribution or tracking requires them
- **Release workflow** — adapted for the fork's main-branch release model and prerelease tags

### Fixed

- Theme state: properly read `ocx-theme` from localStorage
- Stale theme button: React state now updates on theme selection
- Legacy hash links: restore `#combos`, `#subagents`, `#debug`, `#usage` routing
- Merge conflict markers removed from Claude Desktop i18n files

### Integrated since fork

- **Claude Desktop integration** — full Claude Desktop profile management via GUI and CLI, family
editor, health monitoring, auto-apply, and effort transparency.
- **Combo rename & public aliases** — rename combos and expose public aliases for model routing.
- **Output defaults & web-search replay markers** — custom output defaults and hide web-search
replay markers.
- **Response item ID repair** — opt-in repair for unstable passthrough IDs.
- **Cursor context usage** — accurate context usage reporting across tool turns.
- **Cursor cache telemetry** — clarify missing cache telemetry with GUI indicators.
- **Native effort clamp** — gate native effort clamp by route identity.
- **Native OpenAI slugs in combo resolution** — include native OpenAI slugs in combo member
resolution.
- **Adaptive thinking headroom** — preserve adaptive thinking output headroom for Anthropic.
- **Sidecar auth fixes** — verify direct helper auth origin, explicit ChatGPT auth intent.
- **Dutch GUI localization** — full Dutch translation for the dashboard.
- **Provider workspace shell** — dedicated dashboard panel for per-provider workspace.
- **Quota bars** — visual quota display in the dashboard.
- **Theme state fix** — properly read `ocx-theme` from localStorage.
- **Stale theme button fix** — update React state on theme selection.
- **Legacy hash link targets** — restore `#combos`, `#subagents`, `#debug`, `#usage` routing.

### Infrastructure

- **Independent versioning** — fully detached from upstream release numbering.
- **Enhanced CI** — added security audit, CodeQL analysis, GitHub Actions linting, and package-install smoke coverage.
- **Dependabot** — automated weekly dependency updates.
- **Release documentation** — `VERSIONING.md` and `RELEASE_PROCESS.md` for repeatable releases.

---

## Earlier versions (upstream tracking)

Versions `v2.7.26` through `v2.7.39` (and earlier) track the upstream
[lidge-jun/opencodex](https://github.com/lidge-jun/opencodex) releases.
50 changes: 50 additions & 0 deletions RELEASE_PROCESS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Release Process

## Quick start

```bash
# 1. Bump version in package.json
npm version patch # or minor / major

# 2. Update CHANGELOG.md with the new version + notes

# 3. Create a release commit + tag
git commit -m "chore(release): v$(node -p 'require("./package.json").version')"
git tag -a "v$(node -p 'require("./package.json").version')" -m "v$(node -p 'require("./package.json").version')"

# 4. Push
git push origin main --follow-tags

# 5. Dispatch the Release workflow from GitHub Actions
# → https://github.com/OnlineChefGroep/opencodex/actions/workflows/release.yml
# Enter version, dist-tag (latest/preview), dry-run (set false to publish)
```

## Automated release

The [Release workflow](.github/workflows/release.yml) uses Trusted Publishing (OIDC) to authenticate
with npmjs.org — no tokens or secrets needed. It:

1. Verifies `package.json` version matches the workflow input.
2. Builds the GUI bundle.
3. Runs `npm publish` with provenance attestation.
4. Creates a GitHub Release with release notes.
5. Pushes the version tag back to the repository.

## Manual release (local)

```bash
npm run build:gui
npm pack # verify the tarball contents
npm publish --dry-run # one last check
npm publish # actual publish
git tag -a v$(node -p 'require("./package.json").version') -m "v$(node -p 'require("./package.json").version')"
git push origin --tags
```

## Important notes

- Always run `bun test --isolate tests/` before releasing.
- Update `CHANGELOG.md` before the release commit.
- The `latest` dist-tag is for stable releases; use `preview` for beta/experimental builds.
- Never release from a working branch — always from `main`.
41 changes: 41 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Roadmap

**Independent OnlineChefGroep fork** of [opencodex](https://github.com/lidge-jun/opencodex)

## Vision

A fully self-sufficient fork with our own release cadence, feature set, and quality bar —
not dependent on upstream decisions or timelines, while retaining a deliberate intake path for
relevant security and compatibility fixes.

## Short term (done)

- [x] **Independent versioning** — fully detached from upstream version numbers, with our own semver scheme
- [x] **Integrated inherited branch work** — Dutch GUI, Claude Desktop, combo/alias, Cursor fixes, and related stacked work reconciled into `main`
- [x] **Enhanced CI** — CodeQL, Dependabot, security audit, workflow linting, and cross-platform package smoke tests
- [x] **Release process** — `VERSIONING.md`, `RELEASE_PROCESS.md`, and `CHANGELOG.md`
- [x] **Fork identity documentation** — canonical repository links and translated README fork notices updated

## Near term (next)

- [ ] **Publish first fork release (`v1.0.0-alpha.1`)** — tag, run the guarded release workflow, verify npm install, and record release evidence
- [ ] **Canonical npm ownership** — migrate the package to an OnlineChefGroep-controlled npm scope and retain a compatibility path for `@bitkyc08/opencodex`
- [ ] **Clean up old tags** — remove or archive stale upstream tags that do not identify fork releases
- [ ] **Dependency audit hardening** — review root and GUI dependencies, then make high-severity audit failures enforceable instead of informational
- [ ] **TypeScript strict mode** — enable `strict` in `tsconfig` and fix all violations
- [ ] **Upstream intake policy** — document how security, protocol, and client-compatibility fixes are evaluated and imported without restoring release dependence

## Medium term

- [ ] **Custom provider: OnlineChef AI gateway** — first-party provider integration
- [ ] **Performance benchmarks** — proxy latency regression tests in CI
- [ ] **Improved documentation** — deploy docs to GitHub Pages for the fork
- [ ] **Automated dependency upgrades** — Dependabot auto-merge for verified non-breaking updates
- [ ] **Smoke test suite** — end-to-end tests that start the proxy and exercise real provider-compatible requests

## Long term

- [ ] **Own GUI theme** — custom branding for the dashboard
- [ ] **Plugin system** — third-party provider adapters
- [ ] **Service mode improvements** — better systemd/launchd integration
- [ ] **Multi-host fleet management** — centralized config across machines
Loading
Loading