[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-739":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":24,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},739,"codex-plusplus","b-nnett\u002Fcodex-plusplus","b-nnett","Codex++ tweak system for the Codex desktop app",null,"JavaScript",3016,141,5,222,0,113,448,1605,339,108.46,"MIT License",false,"main",true,[],"2026-06-12 04:00:05","# Codex++\n\n[Join the Discord Community!](https:\u002F\u002Fdiscord.gg\u002F6bY6gGX36H)\n\nA tweak system for the [Codex](https:\u002F\u002Fchatgpt.com\u002Fcodex) desktop app. Inject custom features, fix UI bugs, and add a tweak manager — without rebuilding the app.\n\n> **Status:** ~~alpha~~ Beta! Confirmed working on both macOS & Windows. Expect bugs, especially around auto-updating and new Codex updates. PRs welcome.\n\n\u003Cimg width=\"1413\" height=\"1016\" alt=\"Screenshot 2026-04-28 at 19 42 56\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fea0b2ffc-c30d-4f68-ae12-dd8d6a997b2f\" \u002F>\n\n## What it does\n\n`codex-plusplus` patches your local Codex.app installation so a small **loader** runs on startup. The loader pulls a **runtime** from your user directory, which discovers and loads **tweaks** (small ESM modules with a manifest + `start\u002Fstop` lifecycle). The runtime injects a \"Tweaks\" tab into Codex's settings UI so you can enable, disable, and configure tweaks in-app.\n\nEverything beyond the one-time install patch lives **outside** the app bundle, so iterating on tweaks is just save-and-reload.\n\n## Install\n\nAgentic Install (via Codex):\n\n```sh\nInspect & install this for me: https:\u002F\u002Fgithub.com\u002Fb-nnett\u002Fcodex-plusplus, tell me where you install it and send me the local path for me to add new tweaks.\n```\n\nBun:\n\n```sh\nbun install -g github:b-nnett\u002Fcodex-plusplus\ncodexplusplus install\n```\n\nSource bootstrap (macOS \u002F Linux):\n\n```sh\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fb-nnett\u002Fcodex-plusplus\u002Fmain\u002Finstall.sh | bash\n```\n\nWindows PowerShell:\n\n```powershell\nirm https:\u002F\u002Fraw.githubusercontent.com\u002Fb-nnett\u002Fcodex-plusplus\u002Fmain\u002Finstall.ps1 | iex\n```\n\nThat's it. The installer:\n\n1. Locates your Codex.app (`\u002FApplications\u002FCodex.app`, `%LOCALAPPDATA%\u002Fcodex\u002F...`, etc.).\n2. Backs it up to `~\u002F.codex-plusplus\u002Fbackup\u002F`.\n3. Patches `app.asar` to require our loader.\n4. Recomputes the asar header SHA-256 and writes it into `Info.plist` (`ElectronAsarIntegrity`).\n5. Flips `EnableEmbeddedAsarIntegrityValidation` in the Electron Framework binary as a belt-and-suspenders.\n6. Re-signs the app ad-hoc on macOS (`codesign --force --deep --sign -`).\n7. Installs a launch agent \u002F login item that detects app updates and re-runs `repair --quiet`.\n8. Installs the default tweak set from their latest GitHub releases unless `--no-default-tweaks` is passed.\n\nThe watcher also runs hourly through the GitHub-installed local CLI. If a newer Codex++ GitHub release is available, it downloads the release, rebuilds the local CLI\u002Fruntime, and runs `repair` so the runtime in your user directory is refreshed without replacing tweak code. You can turn this off from Settings → Codex Plus Plus → Config.\n\nAfter source-bootstrap install, the installer adds `codexplusplus` and `codex-plusplus`\nto a writable PATH directory when possible. Use `codexplusplus` for day-to-day commands:\n\n```sh\ncodexplusplus status\ncodexplusplus repair\ncodexplusplus update\n```\n\n`codexplusplus update` downloads the latest Codex++ GitHub release, rebuilds it, and runs\n`repair`. If the command is not on PATH yet, rerun the source bootstrap once.\nUse `codexplusplus update --ref main` only when you intentionally want the current development branch instead of the latest release.\n\nTo revert:\n\n```sh\ncodexplusplus uninstall\n```\n\nOther commands: `status`, `doctor`, `repair`, `tweaks list`, `tweaks open` (opens user tweaks dir).\n\n### Updating Codex on macOS\n\nCodex++ modifies and ad-hoc signs `Codex.app`, so Sparkle cannot safely install an\nofficial Codex update while the app is patched. Use:\n\n```sh\ncodexplusplus update-codex\n```\n\nThis restores a Developer ID signed Codex.app for the official updater. After\nCodex updates and restarts, the watcher re-applies Codex++ to the new app.\n\nDefault tweaks currently installed on first run:\n\n- `co.bennett.custom-keyboard-shortcuts` from `b-nnett\u002Fcodex-plusplus-keyboard-shortcuts`\n- `co.bennett.ui-improvements` from `b-nnett\u002Fcodex-plusplus-bennett-ui`\n\n## Writing a tweak\n\nA tweak is a folder under `\u003Cuser-data-dir>\u002Ftweaks\u002F` with:\n\n```\nmy-tweak\u002F\n├── manifest.json\n└── index.js            # or .mjs \u002F .ts (transpiled by runtime)\n```\n\n```json\n{\n  \"id\": \"com.you.my-tweak\",\n  \"name\": \"My Tweak\",\n  \"version\": \"0.1.0\",\n  \"githubRepo\": \"you\u002Fmy-tweak\",\n  \"author\": \"you\",\n  \"description\": \"Adds a button.\",\n  \"minRuntime\": \"0.1.0\"\n}\n```\n\n```ts\nimport type { Tweak } from \"@codex-plusplus\u002Fsdk\";\n\nexport default {\n  start(api) {\n    api.settings.register({\n      id: \"my-tweak\",\n      title: \"My Tweak\",\n      render: (root) => {\n        root.innerHTML = `\u003Cbutton>hi\u003C\u002Fbutton>`;\n      },\n    });\n    api.log.info(\"started\");\n  },\n  stop() {},\n} satisfies Tweak;\n```\n\nSee [`docs\u002FWRITING-TWEAKS.md`](.\u002Fdocs\u002FWRITING-TWEAKS.md) for the full API.\n\n## Tweak updates\n\nEvery tweak manifest must include `githubRepo` in `owner\u002Frepo` form. Codex++ checks GitHub Releases for each installed tweak at most once per day and shows **Update Available** in Settings → Tweaks when a newer semver release exists.\n\nCodex++ does **not** auto-update tweaks. The manager links to the GitHub release so users can review the diff, release notes, and repository before manually replacing local tweak files.\n\nSee [`SECURITY.md`](.\u002FSECURITY.md) for the security model and reporting policy.\n\n## How it works (TL;DR)\n\n| Thing | Location |\n|---|---|\n| Loader stub | `Codex.app\u002FContents\u002FResources\u002Fapp.asar` (entry replaced with `loader.cjs`) |\n| Runtime | `\u003Cuser-data-dir>\u002Fruntime\u002F` (auto-installed, hot-reloadable) |\n| Tweaks | `\u003Cuser-data-dir>\u002Ftweaks\u002F` |\n| Config | `\u003Cuser-data-dir>\u002Fconfig.json` |\n| Backup | `\u003Cuser-data-dir>\u002Fbackup\u002F` |\n\n`\u003Cuser-data-dir>` per-OS:\n\n- macOS: `~\u002FLibrary\u002FApplication Support\u002Fcodex-plusplus\u002F`\n- Linux: `$XDG_DATA_HOME\u002Fcodex-plusplus\u002F` (default `~\u002F.local\u002Fshare\u002Fcodex-plusplus\u002F`)\n- Windows: `%APPDATA%\u002Fcodex-plusplus\u002F`\n\nSee [`docs\u002FARCHITECTURE.md`](.\u002Fdocs\u002FARCHITECTURE.md) for details.\n\n## Legal\n\nThis is an unofficial project. Not affiliated with OpenAI. Modifying Codex.app violates its code signature; on macOS you may need to allow the re-signed app on first launch. Auto-updates from Sparkle overwrite the patch, so `codex-plusplus` installs a watcher that re-applies it.\n\nUse at your own risk.\n\nMIT.\n","Codex++ 是一个针对 Codex 桌面应用程序的调整系统，允许用户注入自定义功能、修复界面错误并添加调整管理器，而无需重新构建整个应用。该项目使用 TypeScript 编写，通过在启动时运行一个小加载器来拉取用户目录中的运行时，进而发现和加载调整模块。这些调整模块是带有启动\u002F停止生命周期的小型 ESM 模块，并且会在 Codex 的设置界面中添加一个“Tweaks”标签页，方便用户启用、禁用和配置调整项。由于所有调整都位于应用包之外，因此迭代非常便捷。Codex++ 适用于希望对 Codex 应用进行个性化定制或解决特定问题的开发者和高级用户，在 macOS 和 Windows 平台上均可使用。",2,"2026-06-11 02:38:59","CREATED_QUERY"]