Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
efabcaa
docs: design native main profile switching
luvs01 Aug 1, 2026
549c81d
test: model native profile crash recovery
luvs01 Aug 1, 2026
0408dfd
feat(codex): add encrypted native main profiles
luvs01 Aug 1, 2026
6f0f41d
fix(codex): harden native profile transitions
luvs01 Aug 2, 2026
9e9c7f7
docs: normalize native profile validation
luvs01 Aug 2, 2026
474ecab
fix(codex): harden native profile staging locks
luvs01 Aug 2, 2026
884c88a
test: cover native profile route admission
luvs01 Aug 2, 2026
c252de9
ci: verify release audit and OS keyring
luvs01 Aug 2, 2026
5ba1936
fix(codex): gate native main startup recovery
luvs01 Aug 2, 2026
a56136d
test(codex): cover native profile crash matrix
luvs01 Aug 2, 2026
8f71207
fix(codex): guard native profile recovery state
luvs01 Aug 2, 2026
1f7fa2d
fix(ci): harden native profile platform checks
luvs01 Aug 2, 2026
047a7a2
fix(codex): address native profile CLI review
luvs01 Aug 2, 2026
31ce02f
test(codex): harden native profile review coverage
luvs01 Aug 2, 2026
e80f29f
fix(codex): harden native profile recovery invariants
luvs01 Aug 2, 2026
db67801
fix(codex): harden profile startup lifecycle
luvs01 Aug 2, 2026
f3c2e9e
fix(codex): keep manual profile recovery gated
luvs01 Aug 2, 2026
57ebab0
fix(codex): release gate after converged switch error
luvs01 Aug 2, 2026
fac61c4
fix(server): bound restart drain by one deadline
luvs01 Aug 2, 2026
ba53f1d
fix(codex): close profile journal and cleanup gaps
luvs01 Aug 2, 2026
f63139d
fix(server): cap restart cleanup orchestration
luvs01 Aug 2, 2026
50e0d3e
fix(codex): close profile bounded-read races
luvs01 Aug 2, 2026
766071c
fix(codex): reconcile stale recovery gate
luvs01 Aug 2, 2026
7a9a17e
fix(codex): preflight profile switch layouts
luvs01 Aug 2, 2026
2708396
fix(codex): zeroize early native profile errors
luvs01 Aug 2, 2026
405181f
fix(restart): hand off deadline restarts
luvs01 Aug 2, 2026
e05a717
fix(codex): close main gate for retained recovery
luvs01 Aug 2, 2026
f3b81b2
fix(codex): scope native main profile drain
luvs01 Aug 2, 2026
8a79d73
fix(codex): zeroize doctor and keyring secrets
luvs01 Aug 2, 2026
e68b63b
fix(codex): close native main drain bypasses
luvs01 Aug 2, 2026
f280a54
fix(codex): fence main quota priming
luvs01 Aug 2, 2026
3989010
test(ci): cover keyring job timeout
luvs01 Aug 2, 2026
6d4f9c5
fix(native-profile): validate recovery journal invariants
luvs01 Aug 2, 2026
6e96aff
fix(native-profile): publish recovery gate before drain release
luvs01 Aug 2, 2026
b854883
test(native-profile): prove scoped recovery fence ordering
luvs01 Aug 2, 2026
929aed9
fix: claim native main credential lifetimes
luvs01 Aug 2, 2026
2469fb5
fix(server): retain sideband admission through upstream close
luvs01 Aug 2, 2026
d317934
test: align startup journal timestamps
luvs01 Aug 2, 2026
3ef3881
test: validate startup journal fixtures
luvs01 Aug 2, 2026
58dee5d
fix(codex): clean staged auth on finish failure
luvs01 Aug 2, 2026
48fdc3c
fix(codex): share native profile metadata by home
luvs01 Aug 3, 2026
a80f18b
fix(codex): retain native-main process ownership
luvs01 Aug 3, 2026
fbe4362
fix(cli): report effective Codex home for profile mutations
luvs01 Aug 3, 2026
05bea5a
fix(cli): use configured Codex runtime for profile login
luvs01 Aug 3, 2026
1d811b8
test(codex): accept removed scrubbed stage auth
luvs01 Aug 3, 2026
88e3cb7
test(codex): await native-main server lifecycle
luvs01 Aug 3, 2026
fca17cd
fix(codex): scrub crashed auth write residues
luvs01 Aug 3, 2026
1205668
fix(codex): lease native login staging writers
luvs01 Aug 3, 2026
9d6ae74
test(codex): pass stage writer token in takeover
luvs01 Aug 3, 2026
31951a8
fix(codex): await startup convergence on release
luvs01 Aug 3, 2026
897809b
test(server): budget multi-harness stream retry case
luvs01 Aug 3, 2026
26a0f43
fix(codex): reject ambiguous native profile selectors
luvs01 Aug 3, 2026
46750d8
fix(codex): reconcile stale recovery gates after switch
luvs01 Aug 2, 2026
5931ea8
fix(server): retain sideband lease until upstream closes
luvs01 Aug 2, 2026
0491004
docs(codex): clarify process-exit recovery scope
luvs01 Aug 3, 2026
074344f
fix(codex): make native process probe nonblocking
luvs01 Aug 3, 2026
c7203bd
test(codex): pin native process probe contract
luvs01 Aug 3, 2026
161a163
fix(codex): fence native-main metadata reads
luvs01 Aug 3, 2026
9273337
fix(codex): close final integration gate gaps
luvs01 Aug 3, 2026
ce62501
Merge remote-tracking branch 'upstream/dev' into fix/863-9273-followup
luvs01 Aug 3, 2026
0f24f31
fix(native-main): address review follow-ups
luvs01 Aug 3, 2026
5a7d53a
Merge remote-tracking branch 'upstream/dev' into fix/863-9273-followup
luvs01 Aug 3, 2026
6cf016f
fix(native-main): address final review follow-ups
luvs01 Aug 3, 2026
a2d2524
Merge upstream dev into feat/656-native-main-profiles
luvs01 Aug 3, 2026
7e6bcc1
fix(gui): update brace-expansion security override
luvs01 Aug 3, 2026
42d63ef
Merge upstream dev into feat/656-native-main-profiles
luvs01 Aug 3, 2026
2736ae1
fix(native-main): address latest review feedback
luvs01 Aug 3, 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
66 changes: 65 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,70 @@ jobs:
- name: CLI help smoke
run: bun run src/cli/index.ts help

# Keep every OS credential-store check on a disposable GitHub-hosted machine.
# A force-cancelled process cannot run its in-process finally cleanup, so no
# keyring matrix leg may use the persistent self-hosted Windows runner.
keyring-smoke:
name: keyring ${{ matrix.name }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 8
strategy:
fail-fast: false
matrix:
include:
- name: ubuntu
runner: ubuntu-latest
- name: windows
runner: windows-latest
- name: macos
runner: macos-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
persist-credentials: false

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

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

# Linux hosted runners do not provide an unlocked desktop keyring session.
# Run Secret Service with temporary state instead of skipping Linux.
- name: Install Secret Service dependencies (Linux)
if: matrix.name == 'ubuntu'
shell: bash
run: |
set -euo pipefail
sudo apt-get update
sudo apt-get install --yes --no-install-recommends dbus-x11 gnome-keyring

- name: OS keyring create/read/delete smoke
shell: bash
run: |
set -euo pipefail
if [ "$RUNNER_OS" != "Linux" ]; then
bun run scripts/keyring-smoke.ts
exit 0
fi

keyring_home="$(mktemp -d)"
runtime_dir="$(mktemp -d)"
cleanup() { rm -rf -- "$keyring_home" "$runtime_dir"; }
trap cleanup EXIT
chmod 700 "$keyring_home" "$runtime_dir"
HOME="$keyring_home" XDG_RUNTIME_DIR="$runtime_dir" dbus-run-session -- bash -euo pipefail -c '
# Create and unlock the isolated login keyring without putting its
# ephemeral password in argv, the environment, or the job log.
od -An -N32 -tx1 /dev/urandom |
tr -d "[:space:]" |
gnome-keyring-daemon --unlock --components=secrets >/dev/null
bun run scripts/keyring-smoke.ts
'
Comment thread
coderabbitai[bot] marked this conversation as resolved.

Comment thread
coderabbitai[bot] marked this conversation as resolved.
npm-global-smoke:
name: npm-global ${{ matrix.os }}
needs: changes
Expand Down Expand Up @@ -507,7 +571,7 @@ jobs:
# direct dependencies only, so a failing `select-windows-runner` would
# otherwise reach this gate as nothing at all while its dependents report
# `skipped` — which the gate is required to read as a deliberate skip.
needs: [changes, select-windows-runner, test, gates, platform-macos, platform-windows, npm-global-smoke]
needs: [changes, select-windows-runner, test, gates, platform-macos, platform-windows, keyring-smoke, npm-global-smoke]
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
Expand Down
17 changes: 10 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
exit 1
fi

# opencodex is bun-native (the prepublishOnly GUI build + typecheck run under bun).
# opencodex is bun-native (the prepublishOnly audit, GUI build, and typecheck run under bun).
- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
Expand Down Expand Up @@ -92,6 +92,9 @@ jobs:
- name: Install dependencies
run: bun install --frozen-lockfile

- name: Dependency audit (high severity)
run: bun run audit:high

- name: Verify version matches package.json
env:
RELEASE_VERSION: ${{ inputs.version }}
Expand All @@ -103,6 +106,8 @@ jobs:
exit 1;
}

# The exact-SHA CI gate includes the hosted Linux, Windows, and macOS
# keyring smoke matrix. Do not duplicate its Linux bootstrap here.
- name: Require successful Cross-platform CI for this commit
env:
GH_TOKEN: ${{ github.token }}
Expand Down Expand Up @@ -138,17 +143,15 @@ jobs:
fi

ci_url="$(
# shellcheck disable=SC2016
# `$branch` is a jq variable bound by --arg, not a shell variable, so
# the filter must stay single-quoted.
gh run list \
--workflow ci.yml \
--branch "${GITHUB_REF#refs/heads/}" \
--commit "$GITHUB_SHA" \
--event push \
--status success \
--limit 10 \
--json conclusion,headSha,url,workflowName,event,headBranch \
--jq --arg branch "${GITHUB_REF#refs/heads/}" \
'map(select(.event == "push" and .headBranch == $branch)) | .[0].url // ""'
--json url \
--jq '.[0].url // ""'
)"

if [ -z "$ci_url" ]; then
Expand Down
27 changes: 27 additions & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading