career-ops-v1.33.0
career-ops-hq/career-opscareer-ops-v1.33.0Sep 16, 2026by github-actions[bot]
Upgrading?
AI Summary
A substantial release introducing new job board providers (Gem Job Board, Collage HR, Telegram), enhanced scanning capabilities (ATS integration, location awareness), and significant improvements to CV rendering, batch evaluation, and data management. It also resolves numerous bugs related to path resolution, data extraction, and provider reliability.
Key Highlights
- New job providers: Gem Job Board REST API, Collage HR, and Telegram channel support.
- Browser-extract feature to read Job Descriptions (JDs) from Greenhouse, Lever, and Ashby public APIs.
- CV enhancements including rendering of education entry locations and contact rows.
- Batch evaluation support for multi-CLI evaluation using the `--cli` flag.
- Enhanced scanning with location-aware company+role deduplication and Workday facet recovery.
New Features
- Batch evaluation with --cli flag for multi-CLI evaluation (opencode, gemini, qwen).
- Browser-extract reading JDs from Greenhouse, Lever, and Ashby public APIs.
- CV rendering of education entry locations.
- New job board provider: Gem Job Board REST API.
- Telegram channel support via t.me/s/ (zero-auth).
- Collage HR public job provider.
- Scan summary machine-findable markers.
- Per-company title filter overrides for scan-ats-full.mjs.
- WTTJ server-side Algolia filters for exhaustive scanning.
Full Release Notes
## [1.33.0](https://github.com/career-ops-hq/career-ops/compare/career-ops-v1.32.0...career-ops-v1.33.0) (2026-09-16) ### Features * **batch:** add --cli flag for multi-CLI batch evaluation (opencode, gemini, qwen) ([6255cc2](https://github.com/career-ops-hq/career-ops/commit/6255cc200be7aabe45bf1d5c2ec2e6f52337fd7f)) * **browser-extract:** read Greenhouse, Lever and Ashby JDs from their public APIs, and add fetch-jd.mjs ([#3654](https://github.com/career-ops-hq/career-ops/issues/3654)) ([1923ee1](https://github.com/career-ops-hq/career-ops/commit/1923ee14b2edc635e6ea59a447d0f4fbce02ad48)), closes [#2582](https://github.com/career-ops-hq/career-ops/issues/2582) * **cv:** render an education entry's location on the HTML CV ([#3776](https://github.com/career-ops-hq/career-ops/issues/3776)) ([8e5c65d](https://github.com/career-ops-hq/career-ops/commit/8e5c65dfaedfe5d10d31926a72d79c0d9fef4a10)), closes [#3773](https://github.com/career-ops-hq/career-ops/issues/3773) * **oferta/pdf:** enforce JD archival in every report ([4726e05](https://github.com/career-ops-hq/career-ops/commit/4726e05312e40a1a9e2d61b2e4ccf6851fbd5a4e)) * **portals:** audit board content, not just reachability ([#3610](https://github.com/career-ops-hq/career-ops/issues/3610)) ([9b896b5](https://github.com/career-ops-hq/career-ops/commit/9b896b50a426dd4c07b342f7b79253296aeea684)) * **providers:** add the Gem Job Board REST API as a verified-URL mode alongside the GraphQL provider ([#3783](https://github.com/career-ops-hq/career-ops/issues/3783)) ([0e5a95c](https://github.com/career-ops-hq/career-ops/commit/0e5a95c57d5a6fd40057d1ff7717e509c3524036)) * **providers:** telegram-channel, public channel posts via t.me/s/ (zero-auth) ([#3668](https://github.com/career-ops-hq/career-ops/issues/3668)) ([ab4e5e4](https://github.com/career-ops-hq/career-ops/commit/ab4e5e4821ced4464f468b7a4f7687234d3c4e31)) * **scan:** add Collage HR public job provider ([#3787](https://github.com/career-ops-hq/career-ops/issues/3787)) ([bf2b647](https://github.com/career-ops-hq/career-ops/commit/bf2b64779d659f19df24d82ccd768ab09432d389)) * **scan:** one machine-findable marker line above every scan summary ([#3747](https://github.com/career-ops-hq/career-ops/issues/3747)) ([339ee57](https://github.com/career-ops-hq/career-ops/commit/339ee57e5ac8e31baeb1ea09a12bab1ce3c1d6f6)), closes [#3560](https://github.com/career-ops-hq/career-ops/issues/3560) * **scan:** per-company title_filter_overrides for scan-ats-full.mjs ([#3710](https://github.com/career-ops-hq/career-ops/issues/3710)) ([5fb18d7](https://github.com/career-ops-hq/career-ops/commit/5fb18d7cd2c2f3aa6d5c836eb1416be1d0d3cf5a)), closes [#3708](https://github.com/career-ops-hq/career-ops/issues/3708) * **web:** opt-in origin allowlist for the local dashboard API ([#3597](https://github.com/career-ops-hq/career-ops/issues/3597)) ([0754973](https://github.com/career-ops-hq/career-ops/commit/075497329a55d7c1e5184cfffb21fd0efeaf13ba)) * **wttj:** server-side Algolia filters so a scan can be exhaustive ([#3757](https://github.com/career-ops-hq/career-ops/issues/3757)) ([c1df875](https://github.com/career-ops-hq/career-ops/commit/c1df875c768071369045caaf8c79f06a2fbf3059)) ### Bug Fixes * **analysis:** funnel-velocity, calibrate and weekly-digest read the configured data root ([#3715](https://github.com/career-ops-hq/career-ops/issues/3715)) ([d7ff406](https://github.com/career-ops-hq/career-ops/commit/d7ff4062269f4f1afa38c6615561288ff314f343)), closes [#3714](https://github.com/career-ops-hq/career-ops/issues/3714) * **analyze-patterns:** parse report headers written in French ([#3808](https://github.com/career-ops-hq/career-ops/issues/3808)) ([29f065f](https://github.com/career-ops-hq/career-ops/commit/29f065f1bed9872574c8999343b0102e698b25f4)), closes [#3807](https://github.com/career-ops-hq/career-ops/issues/3807) * **analyze-patterns:** read archetype headers from every localized mode ([#3866](https://github.com/career-ops-hq/career-ops/issues/3866)) ([9d182a9](https://github.com/career-ops-hq/career-ops/commit/9d182a9c2360fbabcfbb9e043fa96b359ef9255e)), closes [#3865](https://github.com/career-ops-hq/career-ops/issues/3865) * **check-jd-archive:** credit jds/ captures named by a tracker row ([5bcaddc](https://github.com/career-ops-hq/career-ops/commit/5bcaddc7fb2cceed869780b4fe36e2786a42e7d3)) * **check-jd-archive:** credit jds/ captures named by a tracker row ([3f9a3fc](https://github.com/career-ops-hq/career-ops/commit/3f9a3fc846ffcbb5b06b5c79e1e61d312ad5681a)) * **check-jd-archive:** reject login-wall/404/paywall/JS-shell text as non-content ([#3837](https://github.com/career-ops-hq/career-ops/issues/3837)) ([3834b91](https://github.com/career-ops-hq/career-ops/commit/3834b91843b903734447633f66fdefd41a42a3d1)), closes [#3829](https://github.com/career-ops-hq/career-ops/issues/3829) * **cli:** validate analyze-patterns flags through lib/cli-flags.mjs ([#3848](https://github.com/career-ops-hq/career-ops/issues/3848)) ([4d82beb](https://github.com/career-ops-hq/career-ops/commit/4d82beb4d3fc40baaef5a1f5d5817b9f797879a8)), closes [#2979](https://github.com/career-ops-hq/career-ops/issues/2979) * **cv:** render the ATS template's contact row ([#3838](https://github.com/career-ops-hq/career-ops/issues/3838)) ([e1aebed](https://github.com/career-ops-hq/career-ops/commit/e1aebed5bb6fd6d55e1cf47808bded623a0e4b48)), closes [#3775](https://github.com/career-ops-hq/career-ops/issues/3775) * **dashboard:** serve:dashboard respects CAREER_OPS_DATA_DIR ([#3929](https://github.com/career-ops-hq/career-ops/issues/3929)) ([b4bd6aa](https://github.com/career-ops-hq/career-ops/commit/b4bd6aa27582f1659085a5804f3c8cd5751eff18)), closes [#3924](https://github.com/career-ops-hq/career-ops/issues/3924) * **discover-ats:** a refused redirect is an answer, not a status to re-run ([#3804](https://github.com/career-ops-hq/career-ops/issues/3804)) ([80885c9](https://github.com/career-ops-hq/career-ops/commit/80885c9c45d288e3a86fa043db635d755afb1630)) * **doctor:** detect project-scoped Playwright MCP plugin installs ([#3711](https://github.com/career-ops-hq/career-ops/issues/3711)) ([719d1a4](https://github.com/career-ops-hq/career-ops/commit/719d1a4c64735fec4eb6f5f4b1616db4d181476c)) * **doctor:** keep git's "not a git repository" off stderr in --json ([#3722](https://github.com/career-ops-hq/career-ops/issues/3722)) ([8058eba](https://github.com/career-ops-hq/career-ops/commit/8058ebac18f248a36efa1dedcfac0a8ea9779b99)), closes [#3721](https://github.com/career-ops-hq/career-ops/issues/3721) * **doctor:** make CLI-resolution tests hermetic against a repo .env ([#2617](https://github.com/career-ops-hq/career-ops/issues/2617)) ([95225c1](https://github.com/career-ops-hq/career-ops/commit/95225c1be267116f44d5758b85e20c029602d33b)) * **eval:** parse the score in gemini-eval instead of concatenating it ([#3799](https://github.com/career-ops-hq/career-ops/issues/3799)) ([eedc6d9](https://github.com/career-ops-hq/career-ops/commit/eedc6d921c2988cfc26fca930044f731292db2c0)), closes [#3707](https://github.com/career-ops-hq/career-ops/issues/3707) * **eval:** persist openai/ollama evaluations as tracker additions ([#3797](https://github.com/career-ops-hq/career-ops/issues/3797)) ([090c2b4](https://github.com/career-ops-hq/career-ops/commit/090c2b4b89b762e32b53e191da06883d82e1f559)) * **followup-cadence:** accept --json, the flag both web follow-up routes pass ([#3862](https://github.com/career-ops-hq/career-ops/issues/3862)) ([57de2ea](https://github.com/career-ops-hq/career-ops/commit/57de2ea1c9dd9d891959926d5e00c2411c05ff60)) * four defects invisible in the maintainer's own checkout ([7f72883](https://github.com/career-ops-hq/career-ops/commit/7f72883d3965430db6aacb264a18be77c5e8358d)) * **garena:** route id encoding through _safe-url so one bad posting drops, not the page ([7bee848](https://github.com/career-ops-hq/career-ops/commit/7bee8480f4a3571d47fd9b2ba888122a21e52c0c)) * **gemini-eval:** write the **URL:** report header so its rows reach the URL dedup key ([#3876](https://github.com/career-ops-hq/career-ops/issues/3876)) ([f8e9201](https://github.com/career-ops-hq/career-ops/commit/f8e9201f2cd0f55f82291482ca57ea313037a8c5)), closes [#3795](https://github.com/career-ops-hq/career-ops/issues/3795) * **gitignore:** ignore the tracker and follow-ups file in the legacy root layout ([#3718](https://github.com/career-ops-hq/career-ops/issues/3718)) ([fc8ee60](https://github.com/career-ops-hq/career-ops/commit/fc8ee60419a56804924f00e7cde7f040a4effc41)), closes [#3717](https://github.com/career-ops-hq/career-ops/issues/3717) * **icims:** read every jobLocation entry when picking the location ([#3728](https://github.com/career-ops-hq/career-ops/issues/3728)) ([d5a5bc9](https://github.com/career-ops-hq/career-ops/commit/d5a5bc90a84e128ad095ad0775535187c73dcf05)), closes [#3727](https://github.com/career-ops-hq/career-ops/issues/3727) * **invite-match:** extract company names in any script, not just ASCII ([#3864](https://github.com/career-ops-hq/career-ops/issues/3864)) ([48513e7](https://github.com/career-ops-hq/career-ops/commit/48513e7951765161ce9ea5c51bc5d43222abd33a)), closes [#3861](https://github.com/career-ops-hq/career-ops/issues/3861) * **invite-match:** resolve set-status.mjs from the code root, not the data root ([cfc6b01](https://github.com/career-ops-hq/career-ops/commit/cfc6b0190eac5a1c919aefeb28a008a97b4d8864)) * **invite-match:** resolve set-status.mjs from the code root, not the data root ([5c65257](https://github.com/career-ops-hq/career-ops/commit/5c652575fd43e818ee0f1be7dc0aff646a3e773e)) * **jd-skill-gap:** resolve cv.md against the data root ([680f847](https://github.com/career-ops-hq/career-ops/commit/680f847d9c58486240141c8b5002b26797ea7e2d)) * **jd-skill-gap:** resolve cv.md against the data root ([#4209](https://github.com/career-ops-hq/career-ops/issues/4209)) ([4795dc1](https://github.com/career-ops-hq/career-ops/commit/4795dc19b8b9a232860c29d8c89210f2efa97277)) * **linkedin-join:** use the real people-search route ([#3811](https://github.com/career-ops-hq/career-ops/issues/3811)) ([b2aa0a9](https://github.com/career-ops-hq/career-ops/commit/b2aa0a976926952e874e7f5bf264ad3e3bdce072)) * **liveness:** stop reusing the headed page after its browser closes ([0baa692](https://github.com/career-ops-hq/career-ops/commit/0baa692755d2d3c1aa3d747910853683dcfbd0f9)) * **liveness:** stop reusing the headed page after its browser closes ([17d83e9](https://github.com/career-ops-hq/career-ops/commit/17d83e942502e90a41abe459f5b86f65ef747114)), closes [#4176](https://github.com/career-ops-hq/career-ops/issues/4176) * **merge-tracker:** --help exits early and post-merge hooks resolve from the code root under an external data root ([#3761](https://github.com/career-ops-hq/career-ops/issues/3761)) ([7a75b99](https://github.com/career-ops-hq/career-ops/commit/7a75b994cb1136513c1353403cd571e30cca9f69)) * **merge-tracker:** a corporate-form merge keeps the row's employer name and prefers an exact company match ([#3812](https://github.com/career-ops-hq/career-ops/issues/3812)) ([fd6cf93](https://github.com/career-ops-hq/career-ops/commit/fd6cf935776fcf8b15be0ad94475747aac55053e)) * **meta:** point CITATION.cff and package.json at career-ops.org, and stop the blurb drifting across five files ([2c76ca4](https://github.com/career-ops-hq/career-ops/commit/2c76ca434555dee6bf6236573225f257bbbdca24)) * **ollama-eval:** stream the response and make num_ctx configurable via OLLAMA_NUM_CTX ([#3922](https://github.com/career-ops-hq/career-ops/issues/3922)) ([fe06051](https://github.com/career-ops-hq/career-ops/commit/fe06051ba57c78934b89355bebe2c67f3a5cdb14)) * **pdf:** recognize Chinese section titles in SECTION_ALIASES ([#3803](https://github.com/career-ops-hq/career-ops/issues/3803)) ([49b6586](https://github.com/career-ops-hq/career-ops/commit/49b6586e5212e7d5e8553e6189f8978484a05387)), closes [#3658](https://github.com/career-ops-hq/career-ops/issues/3658) * **plugin-install:** add --help and reject unknown flags ([#3857](https://github.com/career-ops-hq/career-ops/issues/3857)) ([45f11b7](https://github.com/career-ops-hq/career-ops/commit/45f11b7b9058ec035a3bf3ba251322a2d9fdb392)) * **providers:** a lone surrogate in one id/slug no longer aborts the whole page ([7cdd684](https://github.com/career-ops-hq/career-ops/commit/7cdd6845278948b4d8379fb2fcebf39304e54994)) * **providers:** a lone surrogate in one id/slug no longer aborts the whole page ([d76bea0](https://github.com/career-ops-hq/career-ops/commit/d76bea0e1c3f9a8f3aab20ce583812774ceda23c)) * **providers:** apply default headers case-insensitively ([b12016b](https://github.com/career-ops-hq/career-ops/commit/b12016be15aeddf780ffc30a0010371a140c4319)) * **providers:** coerce before the try; drop tkms encode of the config locale ([94eebce](https://github.com/career-ops-hq/career-ops/commit/94eebced04e524572e201ee65df275a60f370771)) * **providers:** pin accept-encoding so zstd bodies are not truncated ([2049537](https://github.com/career-ops-hq/career-ops/commit/2049537c420e396d08425c6950203718cc55567c)) * **providers:** pin accept-encoding so zstd bodies are not truncated ([3b3a80d](https://github.com/career-ops-hq/career-ops/commit/3b3a80dfdbc14be9be17dd869b036c1a42537e6f)) * **providers:** radancy stops trusting totalResults, cache-busts JSON, retries every fetch ([#3839](https://github.com/career-ops-hq/career-ops/issues/3839)) ([4086d45](https://github.com/career-ops-hq/career-ops/commit/4086d4546b16b00d1de7b0b320933a83c7355835)) * **providers:** route feishu-jobs and mokahr id encoding through _safe-url ([fd3966a](https://github.com/career-ops-hq/career-ops/commit/fd3966aa50fbe8e2b603cf6a226c8b8ae777f3e1)) * **rejection-latency:** report placeholder-employer applications instead of dropping them silently ([#3712](https://github.com/career-ops-hq/career-ops/issues/3712)) ([d9fe917](https://github.com/career-ops-hq/career-ops/commit/d9fe9174d051a551dfd8b26ac4ece5445a509849)) * **rheinmetall:** guard the slug-fallback decode against a malformed percent-escape ([6efda1c](https://github.com/career-ops-hq/career-ops/commit/6efda1c1003188d70a1323685d44fd3882e6c3ed)) * **scan:** opt-in location-aware company+role dedupe ([#3751](https://github.com/career-ops-hq/career-ops/issues/3751)) ([ae97912](https://github.com/career-ops-hq/career-ops/commit/ae979122628b3c3b1746213c29af3a91f1b7f8ce)), closes [#3750](https://github.com/career-ops-hq/career-ops/issues/3750) * **scan:** prioritize configured locations in Workday facet recovery ([#3851](https://github.com/career-ops-hq/career-ops/issues/3851)) ([efede1c](https://github.com/career-ops-hq/career-ops/commit/efede1ce24257411629c37084e5e6c44428bf4e5)), closes [#3850](https://github.com/career-ops-hq/career-ops/issues/3850) * **templates:** make the CV template's second hardcoded color themeable ([#3699](https://github.com/career-ops-hq/career-ops/issues/3699)) ([351f7f5](https://github.com/career-ops-hq/career-ops/commit/351f7f5240b8ef1e7231cee7f906a583b7073834)), closes [#3695](https://github.com/career-ops-hq/career-ops/issues/3695) * **test-all:** discovered-suite guards ignore calls mentioned only in comments ([363b990](https://github.com/career-ops-hq/career-ops/commit/363b990eed503dca486c0e54b79358ebaa37ef2c)) * **test-all:** discovered-suite guards ignore calls mentioned only in comments ([e5c985d](https://github.com/career-ops-hq/career-ops/commit/e5c985d7d6f1dbf47f89bf4432bda890b117288f)) * **tests:** guard subtree-anchored walkers against nested checkouts ([#3792](https://github.com/career-ops-hq/career-ops/issues/3792)) ([5726853](https://github.com/career-ops-hq/career-ops/commit/5726853924fd5d2885413667fbbc0d06809cc3e9)) * **tests:** pass --confirm to apply in the local-paths regression leg ([#3755](https://github.com/career-ops-hq/career-ops/issues/3755)) ([e979d4e](https://github.com/career-ops-hq/career-ops/commit/e979d4e04c35807a3905ebfb3cc87f8d621192ce)) * **tests:** skip nested checkouts by marker, not by the name .git ([#3681](https://github.com/career-ops-hq/career-ops/issues/3681)) ([35a7cdb](https://github.com/career-ops-hq/career-ops/commit/35a7cdb22cd25fcb0ad59795606dfe660baf91c5)), closes [#3499](https://github.com/career-ops-hq/career-ops/issues/3499) * **tkms:** re-encode the config locale, hoisted out of the row loop to fail loud ([5b8f1f0](https://github.com/career-ops-hq/career-ops/commit/5b8f1f0d6cf5900c1cc557bd9c391239801fe4ff)) * **token-tracker:** add MiniMax-M3 and MiniMax-M2.7 rates ([#3800](https://github.com/career-ops-hq/career-ops/issues/3800)) ([8aef9e0](https://github.com/career-ops-hq/career-ops/commit/8aef9e057472972987edca0e3b36fd23c865e283)) * **tracker:** carry the tracker layout through the export round-trip ([#3794](https://github.com/career-ops-hq/career-ops/issues/3794)) ([4f12d84](https://github.com/career-ops-hq/career-ops/commit/4f12d845ed347766a808a1995f2a8bfdf1e6b48e)), closes [#3703](https://github.com/career-ops-hq/career-ops/issues/3703) * **tracker:** map "fecha" to the date column ([#3767](https://github.com/career-ops-hq/career-ops/issues/3767)) ([843d179](https://github.com/career-ops-hq/career-ops/commit/843d179624e09c5b9bc9ec372a2b21dd338ef94e)), closes [#3705](https://github.com/career-ops-hq/career-ops/issues/3705) * **tracker:** resolve addition columns by name so score and status cannot transpose ([00b0296](https://github.com/career-ops-hq/career-ops/commit/00b0296c6071eb955f38404e60a10ceaccad45b5)) * **tracker:** strip invisible control characters at the cell sanitizer ([#3902](https://github.com/career-ops-hq/career-ops/issues/3902)) ([dadc8f6](https://github.com/career-ops-hq/career-ops/commit/dadc8f645388678ae64e38300363586fd3a9fc24)), closes [#3892](https://github.com/career-ops-hq/career-ops/issues/3892) * **triage:** weights sum to 1.00 and a test pins prose against the formula ([#3831](https://github.com/career-ops-hq/career-ops/issues/3831)) ([6a8e876](https://github.com/career-ops-hq/career-ops/commit/6a8e8762168f1302daaa6928460dd027a7c06596)), closes [#3738](https://github.com/career-ops-hq/career-ops/issues/3738) * **update:** resolve preserved files before staging so :(exclude) never reaches --literal-pathspecs ([#3742](https://github.com/career-ops-hq/career-ops/issues/3742)) ([bbfae51](https://github.com/career-ops-hq/career-ops/commit/bbfae511a84964177022bcf44cf7d93aa385390e)), closes [#3740](https://github.com/career-ops-hq/career-ops/issues/3740) * **url-key:** preserve existing fragment comparison params ([02e632e](https://github.com/career-ops-hq/career-ops/commit/02e632e634280ef7224ec268279adbbe9f0650ce)) * **url-key:** preserve hash-route posting identity ([52f314c](https://github.com/career-ops-hq/career-ops/commit/52f314cd268bd0b2de56b71ba236ce288138dac0)) * **url-key:** preserve hash-route posting identity ([965fff3](https://github.com/career-ops-hq/career-ops/commit/965fff30149eff1da2f6b1a937ca3738260b9a2e)) * **verify-cv-facts:** a proposed plan horizon is not a metric claim ([#3656](https://github.com/career-ops-hq/career-ops/issues/3656)) ([ad2e6e8](https://github.com/career-ops-hq/career-ops/commit/ad2e6e8cc41329855645bc5f2a07f6f3af0d49e3)) * **verify-cv-facts:** require a real word, not a bare capital letter, for a title claim ([#3909](https://github.com/career-ops-hq/career-ops/issues/3909)) ([914cac3](https://github.com/career-ops-hq/career-ops/commit/914cac3605dd2473d7765c31a7add127c3a1781d)), closes [#3907](https://github.com/career-ops-hq/career-ops/issues/3907) * **verify-cv-facts:** stop flagging ordinary prose as tool claims ([#3643](https://github.com/career-ops-hq/career-ops/issues/3643)) ([6043ef8](https://github.com/career-ops-hq/career-ops/commit/6043ef811f2c3449ddfe1e658419526fe7aaeda2)), closes [#3639](https://github.com/career-ops-hq/career-ops/issues/3639) * **verify-cv-facts:** tell a disabled fact gate apart from one that ran clean ([#3901](https://github.com/career-ops-hq/career-ops/issues/3901)) ([60f0146](https://github.com/career-ops-hq/career-ops/commit/60f014696822c1744794816c12e51f1bc1d840f2)), closes [#3894](https://github.com/career-ops-hq/career-ops/issues/3894) * **web:** detect a real tailored CV/cover on disk, not just the tracker flag ([0fb2080](https://github.com/career-ops-hq/career-ops/commit/0fb2080db1a5c90b3655bff7fdf74593026adf04)) * **web:** don't let a failed fetch become a scored report ([#3826](https://github.com/career-ops-hq/career-ops/issues/3826)) ([10ede60](https://github.com/career-ops-hq/career-ops/commit/10ede60522f1abd71dfd8c93266f9176180213ac)) * **web:** fence agent CLIs at the spawn boundary ([1d2cb1e](https://github.com/career-ops-hq/career-ops/commit/1d2cb1e125ea3034ff01b464e9a5e2628c0e315f)) * **web:** give grok a parser, and make the token fold per-CLI ([#2689](https://github.com/career-ops-hq/career-ops/issues/2689)) ([c7549fb](https://github.com/career-ops-hq/career-ops/commit/c7549fb3593f9ee456d7118beb80b0ee6e76747c)) * **web:** identify the verdict block by its heading, not by the letter ([#3502](https://github.com/career-ops-hq/career-ops/issues/3502)) ([0ef1bfb](https://github.com/career-ops-hq/career-ops/commit/0ef1bfbe2385551af415e05858900710d0aadd23)) * **web:** parseCliJson misses set-status.mjs's pretty-printed success ([#3602](https://github.com/career-ops-hq/career-ops/issues/3602)) ([848ca44](https://github.com/career-ops-hq/career-ops/commit/848ca440fb2d243ae08205ab3d0bc12903a36c65)) * **web:** resolve the tailored cover for THIS application, not the company's newest ([8fc2bb4](https://github.com/career-ops-hq/career-ops/commit/8fc2bb41db2aad7bf50902ad8a26e726c9637eec)) * **workday:** tag a split whose chosen facet under-covers the board ([#3874](https://github.com/career-ops-hq/career-ops/issues/3874)) ([51a45d9](https://github.com/career-ops-hq/career-ops/commit/51a45d9c3802b0d8ab0de052dc723b2afd33df06))
Related Repositories
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
The library for web and native user interfaces.
Node.js JavaScript runtime ✨🐢🚀✨
Agent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
A fancy self-hosted monitoring tool