{"id":48555840,"url":"https://github.com/agisilaos/xctide","last_synced_at":"2026-04-08T11:01:38.759Z","repository":{"id":339838719,"uuid":"1162720417","full_name":"agisilaos/xctide","owner":"agisilaos","description":"Human-first CLI wrapper for xcodebuild with clean build/run UX and machine-readable output.","archived":false,"fork":false,"pushed_at":"2026-02-21T20:54:43.000Z","size":266,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-22T01:17:14.992Z","etag":null,"topics":["automation","cli","developer-tools","golang","ios","simulator","swift","xcodebuild"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agisilaos.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-20T16:01:46.000Z","updated_at":"2026-02-21T20:54:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/agisilaos/xctide","commit_stats":null,"previous_names":["agisilaos/xctide"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/agisilaos/xctide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agisilaos%2Fxctide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agisilaos%2Fxctide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agisilaos%2Fxctide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agisilaos%2Fxctide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agisilaos","download_url":"https://codeload.github.com/agisilaos/xctide/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agisilaos%2Fxctide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31551891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","cli","developer-tools","golang","ios","simulator","swift","xcodebuild"],"created_at":"2026-04-08T11:01:37.963Z","updated_at":"2026-04-08T11:01:38.737Z","avatar_url":"https://github.com/agisilaos.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xctide\n\nA small TUI wrapper around `xcodebuild` for a cleaner, local build experience.\n\n## Install\n\n### Homebrew\n\n```bash\nbrew tap agisilaos/tap\nbrew install xctide\n```\n\nUpgrade:\n\n```bash\nbrew update\nbrew upgrade xctide\n```\n\n### Local build\n\n```bash\ngo build -o xctide\n```\n\n### Shell completion\n\n```bash\n# bash\nxctide completion bash \u003e /usr/local/etc/bash_completion.d/xctide\n\n# zsh\nmkdir -p ~/.zsh/completions\nxctide completion zsh \u003e ~/.zsh/completions/_xctide\n\n# fish\nxctide completion fish \u003e ~/.config/fish/completions/xctide.fish\n```\n\n## Usage\n\n```bash\nxctide\nxctide build\nxctide run --destination \"platform=iOS Simulator,id=\u003cUDID\u003e\"\nxctide diagnose build --scheme Subsmind\nxctide plan --scheme Subsmind -- test\nxctide doctor\nxctide destinations --scheme Subsmind\nxctide destinations --scheme Subsmind --platform \"iOS Simulator\" --name \"iPhone 17\" --latest --limit 10\nxctide xcrun simctl list devices available\nxctide xcrun xctrace list templates\nxctide xctest -h\nxctide completion zsh \u003e ~/.zsh/completions/_xctide\nxctide --scheme \"Subsmind\" --destination \"platform=iOS Simulator,name=iPhone 16\"\nxctide --plain -- -showBuildSettings\nxctide --progress plain -- test\nxctide --progress json -- test\nxctide --progress ndjson -- test\nxctide --json -- test\n```\n\n## Flags\n\n- `--scheme` (auto-detected if omitted)\n- `--workspace` / `--project` (auto-detected if omitted)\n- `--configuration` (default: `Debug`)\n- `--destination` (optional)\n- `--platform` (destination filter for `xctide destinations`)\n- `--name` (destination name contains filter for `xctide destinations`)\n- `--os` (destination OS contains filter for `xctide destinations`)\n- `--limit` (max destination rows to return for `xctide destinations`)\n- `--latest` (keep latest OS per destination name for `xctide destinations`)\n- `--simulator-only` / `--device-only` (destination filters for `xctide destinations`)\n- `--progress` (`auto|tui|plain|json|ndjson`; default `auto`)\n- `--result-bundle` (optional)\n- `--details` (expanded plain output sections)\n- `--quiet` (passes `-quiet` to `xcodebuild`)\n- `--verbose` (wrapper diagnostics to stderr)\n- `--plain` (disable TUI, stream raw output)\n- `--json` (print structured summary to stdout)\n- `--no-input` (disable interactive selection prompts)\n- `--no-color` (disable color output)\n- `--version`\n\n## Subcommands\n\n- `build`: default behavior, runs `xcodebuild` with resolved config.\n- `run`: build then launch app on simulator (requires simulator `id=` destination).\n- `diagnose build`: run doctor + config resolution + command preview to check build readiness.\n- `plan`: resolve config and print exact `xcodebuild` command without executing.\n- `doctor`: validate local build prerequisites (`xcodebuild`, `xcrun`, simulators, project context).\n- `destinations`: list valid `xcodebuild` destinations for the resolved scheme.\n- `xcrun`: explicit passthrough to `xcrun` for simulator/runtime tooling flows, including `xctrace`.\n- `xctest`: explicit passthrough to `xcrun xctest` for direct test runner use.\n\n## Exit codes\n\n- `0`: success\n- `1`: runtime/internal failure\n- `2`: invalid usage\n- `3`: config resolution failure (project/workspace/scheme)\n- `4`: build/test failure from `xcodebuild`\n- `130`: interrupted\n\n## Environment variables\n\n- `XCTIDE_SCHEME`\n- `XCTIDE_WORKSPACE`\n- `XCTIDE_PROJECT`\n- `XCTIDE_CONFIGURATION`\n- `XCTIDE_DESTINATION`\n- `XCTIDE_PROGRESS`\n- `NO_COLOR`\n\nPrecedence: flags \u003e env \u003e auto-detect/defaults.\n\n## Notes\n\n- Pass additional `xcodebuild` args after `--`.\n- When stdout/stderr is not a TTY, `xctide` automatically falls back to plain output.\n- Plain progress mode starts with an `Invocation` block that shows the resolved `xcodebuild` command.\n- Plain progress mode defaults to compact summaries; pass `--details` for expanded `Completed`/`Dependencies`/`Executed` sections.\n- Compact plain summaries include a short preview of slow dependency targets when available.\n- `xctide run` performs build + simulator launch + install + app launch (requires simulator destination with `id=`).\n- Preflight docs for `doctor` and `plan`: `docs/doctor-and-plan.md`.\n- Build readiness preflight docs: `docs/diagnose.md`.\n- Tool passthrough docs for `xcrun`/`xctest` and `xctrace` usage: `docs/tooling-passthrough.md`.\n- Destination discovery docs: `docs/destinations.md`.\n- Real-machine validation matrix notes: `docs/validation-matrix.md`.\n- Release check and dry-run results: `docs/release-validation.md`.\n\n## Progress Event Model (v1)\n\n`xctide` emits one internal event stream used by all progress renderers (`tui`, `plain`, `json`):\n\n- `run_started`\n- `step_started`\n- `step_finished` (`done`, `failed`, `skipped`)\n- `diagnostic` (`warning`, `error`)\n- `completed_item`\n- `diagnostic_summary`\n- `action_finished` / `action_failed`\n- `run_finished`\n\nIn `--progress json`, events are returned in `events[]`, phase order in `phase_timeline`, completion rows in `completed[]`, execution rows in `executed[]`, and summary errors in `top_errors`.\nIn `--progress ndjson`, each event is emitted as one JSON object per line in real time (including `completed_item` and `diagnostic_summary`), with `run_finished` emitted last.\nMachine payloads include `schema_version` and per-event `seq` for stable consumer parsing/replay.\nFormal contract: `docs/machine-contract.md`.\n\nWhen available, plain output includes a `Dependencies` section with slow non-primary build targets (typically SPM/package targets), and JSON includes `dependency_targets[]`.\n\n## Release\n\n1. `make release-check VERSION=vX.Y.Z`\n2. `make release-dry-run VERSION=vX.Y.Z`\n3. `make release VERSION=vX.Y.Z`\n\nRelease scripts:\n\n- `scripts/release-check.sh`\n- `scripts/release.sh`\n\nRelease readiness checklist: `docs/release-readiness.md`\n\n## Docs\n\n- `docs/doctor-and-plan.md`\n- `docs/diagnose.md`\n- `docs/tooling-passthrough.md`\n- `docs/destinations.md`\n- `docs/validation-matrix.md`\n- `docs/release-validation.md`\n- `docs/release-readiness.md`\n- `docs/architecture.md`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagisilaos%2Fxctide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagisilaos%2Fxctide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagisilaos%2Fxctide/lists"}