[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74810":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},74810,"CodexMonitor","Dimillian\u002FCodexMonitor","Dimillian","An app to monitor the (Codex) situation","https:\u002F\u002Fwww.codexmonitor.app",null,"TypeScript",4032,392,10,78,0,15,54,212,45,29.78,"MIT License",false,"main",true,[27,28,29,30,31],"ai","codex","linux","macos","tauri-app","2026-06-12 02:03:28","# CodexMonitor\n\n[![gitcgr](https:\u002F\u002Fgitcgr.com\u002Fbadge\u002FDimillian\u002FCodexMonitor.svg)](https:\u002F\u002Fgitcgr.com\u002FDimillian\u002FCodexMonitor)\n\n![CodexMonitor](screenshot.png)\n\nCodexMonitor is a Tauri app for orchestrating multiple Codex agents across local workspaces. It provides a sidebar to manage projects, a home screen for quick actions, and a conversation view backed by the Codex app-server protocol.\n\n## Features\n\n### Workspaces & Threads\n\n- Add and persist workspaces, group\u002Fsort them, and jump into recent agent activity from the home dashboard.\n- Spawn one `codex app-server` per workspace, resume threads, and track unread\u002Frunning state.\n- Worktree and clone agents for isolated work; worktrees live under the app data directory (legacy `.codex-worktrees` supported).\n- Thread management: pin\u002Frename\u002Farchive\u002Fcopy, per-thread drafts, and stop\u002Finterrupt in-flight turns.\n- Optional remote backend (daemon) mode for running Codex on another machine.\n- Remote setup helpers for self-hosted connectivity (Tailscale detection\u002Fhost bootstrap for TCP mode).\n\n### Composer & Agent Controls\n\n- Compose with image attachments (picker, drag\u002Fdrop, paste) and configurable follow-up behavior (`Queue` vs `Steer` while a run is active).\n- Use `Shift+Cmd+Enter` (macOS) or `Shift+Ctrl+Enter` (Windows\u002FLinux) to send the opposite follow-up action for a single message.\n- Autocomplete for skills (`$`), prompts (`\u002Fprompts:`), reviews (`\u002Freview`), and file paths (`@`).\n- Model picker, collaboration modes (when enabled), reasoning effort, access mode, and context usage ring.\n- Dictation with hold-to-talk shortcuts and live waveform (Whisper).\n- Render reasoning\u002Ftool\u002Fdiff items and handle approval prompts.\n\n### Git & GitHub\n\n- Diff stats, staged\u002Funstaged file diffs, revert\u002Fstage controls, and commit log.\n- Branch list with checkout\u002Fcreate plus upstream ahead\u002Fbehind counts.\n- GitHub Issues and Pull Requests via `gh` (lists, diffs, comments) and open commits\u002FPRs in the browser.\n- PR composer: \"Ask PR\" to send PR context into a new agent thread.\n\n### Files & Prompts\n\n- File tree with search, file-type icons, and Reveal in Finder\u002FExplorer.\n- Prompt library for global\u002Fworkspace prompts: create\u002Fedit\u002Fdelete\u002Fmove and run in current or new threads.\n\n### UI & Experience\n\n- Resizable sidebar\u002Fright\u002Fplan\u002Fterminal\u002Fdebug panels with persisted sizes.\n- Responsive layouts (desktop\u002Ftablet\u002Fphone) with tabbed navigation.\n- Sidebar usage and credits meter for account rate limits plus a home usage snapshot.\n- Terminal dock with multiple tabs for background commands (experimental).\n- In-app updates with toast-driven download\u002Finstall, debug panel copy\u002Fclear, sound notifications, plus platform-specific window effects (macOS overlay title bar + vibrancy) and a reduced transparency toggle.\n\n## Requirements\n\n- Node.js + npm\n- Rust toolchain (stable)\n- CMake (required for native dependencies; dictation\u002FWhisper uses it)\n- LLVM\u002FClang (required on Windows to build dictation dependencies via bindgen)\n- Codex CLI installed and available as `codex` in `PATH` (or configure a custom Codex binary in app\u002Fworkspace settings)\n- Git CLI (used for worktree operations)\n- GitHub CLI (`gh`) for GitHub Issues\u002FPR integrations (optional)\n\nIf you hit native build errors, run:\n\n```bash\nnpm run doctor\n```\n\n## Getting Started\n\nInstall dependencies:\n\n```bash\nnpm install\n```\n\nRun in dev mode:\n\n```bash\nnpm run tauri:dev\n```\n\n## iOS Support (WIP)\n\niOS support is currently in progress.\n\n- Current status: mobile layout runs, remote backend flow is wired, and iOS defaults to remote backend mode.\n- Current limits: terminal and dictation remain unavailable on mobile builds.\n- Desktop behavior is unchanged: macOS\u002FLinux\u002FWindows remain local-first unless remote mode is explicitly selected.\n\n### iOS + Tailscale Setup (TCP)\n\nUse this when connecting the iOS app to a desktop-hosted daemon over your Tailscale tailnet.\nCanonical runbook: `docs\u002Fmobile-ios-tailscale-blueprint.md`.\n\n1. Install and sign in to Tailscale on both desktop and iPhone (same tailnet).\n2. On desktop CodexMonitor, open `Settings > Server`.\n3. Set a `Remote backend token`.\n4. Start the desktop daemon with `Start daemon` (in `Mobile access daemon`).\n5. In `Tailscale helper`, use `Detect Tailscale` and note the suggested host (for example `your-mac.your-tailnet.ts.net:4732`).\n6. On iOS CodexMonitor, open `Settings > Server`.\n7. Enter the desktop Tailscale host and the same token.\n8. Tap `Connect & test` and confirm it succeeds.\n\nNotes:\n\n- The desktop daemon must stay running while iOS is connected.\n- If the test fails, confirm both devices are online in Tailscale and that host\u002Ftoken match desktop settings.\n\n### Headless Daemon Management (No Desktop UI)\n\nUse the standalone daemon control CLI when you want iOS remote mode without keeping the desktop app open.\n\nBuild binaries:\n\n```bash\ncd src-tauri\ncargo build --bin codex_monitor_daemon --bin codex_monitor_daemonctl\n```\n\nExamples:\n\n```bash\n# Show current daemon status\n.\u002Ftarget\u002Fdebug\u002Fcodex_monitor_daemonctl status\n\n# Start daemon using host\u002Ftoken from settings.json\n.\u002Ftarget\u002Fdebug\u002Fcodex_monitor_daemonctl start\n\n# Stop daemon\n.\u002Ftarget\u002Fdebug\u002Fcodex_monitor_daemonctl stop\n\n# Print equivalent daemon start command\n.\u002Ftarget\u002Fdebug\u002Fcodex_monitor_daemonctl command-preview\n```\n\nUseful overrides:\n\n- `--data-dir \u003Cpath>`: app data dir containing `settings.json` \u002F `workspaces.json`\n- `--listen \u003Caddr>`: bind address override\n- `--token \u003Ctoken>`: token override\n- `--daemon-path \u003Cpath>`: explicit `codex-monitor-daemon` binary path\n- `--json`: machine-readable output\n\n### iOS Prerequisites\n\n- Xcode + Command Line Tools installed.\n- Rust iOS targets installed:\n\n```bash\nrustup target add aarch64-apple-ios aarch64-apple-ios-sim\n# Optional (Intel Mac simulator builds):\nrustup target add x86_64-apple-ios\n```\n\n- Apple signing configured (development team).\n  - Set `bundle.iOS.developmentTeam` and `identifier` in `src-tauri\u002Ftauri.ios.local.conf.json` (preferred for local machine setup), or\n  - set values in `src-tauri\u002Ftauri.ios.conf.json`, or\n  - pass `--team \u003CTEAM_ID>` to the device script.\n  - `build_run_ios*.sh` and `release_testflight_ios.sh` automatically merge `src-tauri\u002Ftauri.ios.local.conf.json` when present.\n\n### Run on iOS Simulator\n\n```bash\n.\u002Fscripts\u002Fbuild_run_ios.sh\n```\n\nOptions:\n\n- `--simulator \"\u003Cname>\"` to target a specific simulator.\n- `--target aarch64-sim|x86_64-sim` to override architecture.\n- `--skip-build` to reuse the current app bundle.\n- `--no-clean` to preserve `src-tauri\u002Fgen\u002Fapple\u002Fbuild` between builds.\n\n### Run on USB Device\n\nList discoverable devices:\n\n```bash\n.\u002Fscripts\u002Fbuild_run_ios_device.sh --list-devices\n```\n\nBuild, install, and launch on a specific device:\n\n```bash\n.\u002Fscripts\u002Fbuild_run_ios_device.sh --device \"\u003Cdevice name or identifier>\" --team \u003CTEAM_ID>\n```\n\nAdditional options:\n\n- `--target aarch64` to override architecture.\n- `--skip-build` to reuse the current app bundle.\n- `--bundle-id \u003Cid>` to launch a non-default bundle identifier.\n\nFirst-time device setup usually requires:\n\n1. iPhone unlocked and trusted with this Mac.\n2. Developer Mode enabled on iPhone.\n3. Pairing\u002Fsigning approved in Xcode at least once.\n\nIf signing is not ready yet, open Xcode from the script flow:\n\n```bash\n.\u002Fscripts\u002Fbuild_run_ios_device.sh --open-xcode\n```\n\n### iOS TestFlight Release (Scripted)\n\nUse the end-to-end script to archive, upload, configure compliance, assign beta group, and submit for beta review.\n\n```bash\n.\u002Fscripts\u002Frelease_testflight_ios.sh\n```\n\nThe script auto-loads release metadata from `.testflight.local.env` (gitignored).\nFor new setups, copy `.testflight.local.env.example` to `.testflight.local.env` and fill values.\n\n## Release Build\n\nBuild the production Tauri bundle:\n\n```bash\nnpm run tauri:build\n```\n\nArtifacts will be in `src-tauri\u002Ftarget\u002Frelease\u002Fbundle\u002F` (platform-specific subfolders).\n\n### Windows (opt-in)\n\nWindows builds are opt-in and use a separate Tauri config file to avoid macOS-only window effects.\n\n```bash\nnpm run tauri:build:win\n```\n\nArtifacts will be in:\n\n- `src-tauri\u002Ftarget\u002Frelease\u002Fbundle\u002Fnsis\u002F` (installer exe)\n- `src-tauri\u002Ftarget\u002Frelease\u002Fbundle\u002Fmsi\u002F` (msi)\n \nNote: building from source on Windows requires LLVM\u002FClang (for `bindgen` \u002F `libclang`) in addition to CMake.\n\n## Type Checking\n\nRun the TypeScript checker (no emit):\n\n```bash\nnpm run typecheck\n```\n\nNote: `npm run build` also runs `tsc` before bundling the frontend.\n\n## Validation\n\nRecommended validation commands:\n\n```bash\nnpm run lint\nnpm run test\nnpm run typecheck\ncd src-tauri && cargo check\n```\n\n## Codebase Navigation\n\nFor task-oriented file lookup (\"if you need X, edit Y\"), use:\n\n- `docs\u002Fcodebase-map.md`\n\n## Project Structure\n\n```\nsrc\u002F\n  features\u002F         feature-sliced UI + hooks\n  features\u002Fapp\u002Fbootstrap\u002F      app bootstrap orchestration\n  features\u002Fapp\u002Forchestration\u002F  app layout\u002Fthread\u002Fworkspace orchestration\n  features\u002Fthreads\u002Fhooks\u002FthreadReducer\u002F  thread reducer slices\n  services\u002F         Tauri IPC wrapper\n  styles\u002F           split CSS by area\n  types.ts          shared types\nsrc-tauri\u002F\n  src\u002Flib.rs        Tauri app backend command registry\n  src\u002Fbin\u002Fcodex_monitor_daemon.rs  remote daemon JSON-RPC process\n  src\u002Fbin\u002Fcodex_monitor_daemon\u002Frpc\u002F  daemon RPC domain handlers\n  src\u002Fshared\u002F       shared backend core used by app + daemon\n  src\u002Fshared\u002Fgit_ui_core\u002F      git\u002Fgithub shared core modules\n  src\u002Fshared\u002Fworkspaces_core\u002F  workspace\u002Fworktree shared core modules\n  src\u002Fworkspaces\u002F   workspace\u002Fworktree adapters\n  src\u002Fcodex\u002F        codex app-server adapters\n  src\u002Ffiles\u002F        file adapters\n  tauri.conf.json   window configuration\n```\n\n## Notes\n\n- Workspaces persist to `workspaces.json` under the app data directory.\n- App settings persist to `settings.json` under the app data directory (theme, backend mode\u002Fprovider, remote endpoints\u002Ftokens, Codex path, default access mode, UI scale, follow-up message behavior).\n- Feature settings are supported in the UI and synced to `$CODEX_HOME\u002Fconfig.toml` (or `~\u002F.codex\u002Fconfig.toml`) on load\u002Fsave. Stable: Collaboration modes (`features.collaboration_modes`), personality (`personality`), and Background terminal (`features.unified_exec`). Experimental: Apps (`features.apps`). Steering capability still follows Codex `features.steer`, but follow-up default behavior is controlled in Settings → Composer.\n- On launch and on window focus, the app reconnects and refreshes thread lists for each workspace.\n- Threads are restored by filtering `thread\u002Flist` results using the workspace `cwd`.\n- Selecting a thread always calls `thread\u002Fresume` to refresh messages from disk.\n- CLI sessions appear if their `cwd` matches the workspace path; they are not live-streamed unless resumed.\n- The app uses `codex app-server` over stdio; see `src-tauri\u002Fsrc\u002Flib.rs` and `src-tauri\u002Fsrc\u002Fcodex\u002F`.\n- The remote daemon entrypoint is `src-tauri\u002Fsrc\u002Fbin\u002Fcodex_monitor_daemon.rs`; RPC routing lives in `src-tauri\u002Fsrc\u002Fbin\u002Fcodex_monitor_daemon\u002Frpc.rs` and domain handlers in `src-tauri\u002Fsrc\u002Fbin\u002Fcodex_monitor_daemon\u002Frpc\u002F`.\n- Shared domain logic lives in `src-tauri\u002Fsrc\u002Fshared\u002F` (notably `src-tauri\u002Fsrc\u002Fshared\u002Fgit_ui_core\u002F` and `src-tauri\u002Fsrc\u002Fshared\u002Fworkspaces_core\u002F`).\n- Codex home resolves from workspace settings (if set), then legacy `.codexmonitor\u002F`, then `$CODEX_HOME`\u002F`~\u002F.codex`.\n- Worktree agents live under the app data directory (`worktrees\u002F\u003Cworkspace-id>`); legacy `.codex-worktrees\u002F` paths remain supported, and the app no longer edits repo `.gitignore` files.\n- UI state (panel sizes, reduced transparency toggle, recent thread activity) is stored in `localStorage`.\n- Custom prompts load from `$CODEX_HOME\u002Fprompts` (or `~\u002F.codex\u002Fprompts`) with optional frontmatter description\u002Fargument hints.\n\n## Tauri IPC Surface\n\nFrontend calls live in `src\u002Fservices\u002Ftauri.ts` and map to commands in `src-tauri\u002Fsrc\u002Flib.rs`. The current surface includes:\n\n- Settings\u002Fconfig\u002Ffiles: `get_app_settings`, `update_app_settings`, `get_codex_config_path`, `get_config_model`, `file_read`, `file_write`, `codex_doctor`, `menu_set_accelerators`.\n- Workspaces\u002Fworktrees: `list_workspaces`, `is_workspace_path_dir`, `add_workspace`, `add_clone`, `add_worktree`, `worktree_setup_status`, `worktree_setup_mark_ran`, `rename_worktree`, `rename_worktree_upstream`, `apply_worktree_changes`, `update_workspace_settings`, `remove_workspace`, `remove_worktree`, `connect_workspace`, `list_workspace_files`, `read_workspace_file`, `open_workspace_in`, `get_open_app_icon`.\n- Threads\u002Fturns\u002Freviews: `start_thread`, `fork_thread`, `compact_thread`, `list_threads`, `resume_thread`, `archive_thread`, `set_thread_name`, `send_user_message`, `turn_interrupt`, `respond_to_server_request`, `start_review`, `remember_approval_rule`, `get_commit_message_prompt`, `generate_commit_message`, `generate_run_metadata`.\n- Account\u002Fmodels\u002Fcollaboration: `model_list`, `account_rate_limits`, `account_read`, `skills_list`, `apps_list`, `collaboration_mode_list`, `codex_login`, `codex_login_cancel`, `list_mcp_server_status`.\n- Git\u002FGitHub: `get_git_status`, `list_git_roots`, `get_git_diffs`, `get_git_log`, `get_git_commit_diff`, `get_git_remote`, `stage_git_file`, `stage_git_all`, `unstage_git_file`, `revert_git_file`, `revert_git_all`, `commit_git`, `push_git`, `pull_git`, `fetch_git`, `sync_git`, `list_git_branches`, `checkout_git_branch`, `create_git_branch`, `get_github_issues`, `get_github_pull_requests`, `get_github_pull_request_diff`, `get_github_pull_request_comments`.\n- Prompts: `prompts_list`, `prompts_create`, `prompts_update`, `prompts_delete`, `prompts_move`, `prompts_workspace_dir`, `prompts_global_dir`.\n- Terminal\u002Fdictation\u002Fnotifications\u002Fusage: `terminal_open`, `terminal_write`, `terminal_resize`, `terminal_close`, `dictation_model_status`, `dictation_download_model`, `dictation_cancel_download`, `dictation_remove_model`, `dictation_request_permission`, `dictation_start`, `dictation_stop`, `dictation_cancel`, `send_notification_fallback`, `is_macos_debug_build`, `local_usage_snapshot`.\n- Remote backend helpers: `tailscale_status`, `tailscale_daemon_command_preview`, `tailscale_daemon_start`, `tailscale_daemon_stop`, `tailscale_daemon_status`.\n","CodexMonitor 是一个用于管理和监控多个 Codex 代理在本地工作区的应用程序。它基于 Tauri 框架开发，使用 TypeScript 编写，提供了一个侧边栏来管理项目、一个主页进行快速操作以及一个基于 Codex 应用服务器协议的对话视图。其核心功能包括工作空间和线程管理、代码编辑与代理控制、Git 和 GitHub 集成、文件和提示库等。特别适合需要跨多个项目或工作区高效协作的开发者使用，尤其是在涉及复杂代码审查、调试及文档编写时。此外，该工具还支持远程后端模式，允许用户在另一台机器上运行 Codex，并提供了丰富的自定义选项以适应不同需求。",2,"2026-06-11 03:50:56","high_star"]