career-ops-v1.34.0
rust-lang/rustlingscareer-ops-v1.34.0Sep 24, 2026by career-ops-release[bot]
Upgrading?
AI Summary
This major update introduces significant improvements to job scanning including new providers, smarter liveness checks, domain-level aggregator detection, and improved update prompt behavior.
Key Highlights
- Update prompts only for actual new versions
- Fewer live offers marked as closed with improved liveness checks
- Domain-level detection of aggregator reposts
- New job providers: Python.org Jobs and generalist-world board
- Explicit Personio tenant pin support
New Features
- Update-system resolves to latest release tag by default
- Check posting URLs through public APIs (Greenhouse, SmartRecruiters, etc.)
- Domain-level aggregator repost detection
- Opt-in strict location filter
- Blacklist rows covering whole domains
- Warning when portal returns zero jobs
- Python.org Jobs scanner provider
- Generalist-world board provider
- Explicit Personio tenant pin
- README v2 with Sponsors section
Full Release Notes
<!-- co:release-notes:career-ops-v1.34.0 --> This is the first release since I started working on career-ops full time. The update prompt now shows up only when a new version is actually out. Until now, almost any change landing on `main` could trigger it, often every day. This release also carries work from 63 people, 43 of them contributing for the first time. ### Highlights - **Update prompts only for new versions.** `update-system.mjs` installs the latest published release instead of `main`, `check` asks only when a newer release exists, and saying no lasts until the next version instead of forever. Tracking `main` stays available with `--channel main`. Built on @obielin's release resolution in #3845. - **Fewer live offers marked as closed.** Liveness now checks company pages with a Greenhouse `gh_jid`, SmartRecruiters, Arbeitsagentur and We Work Remotely through their public APIs (#4444), and a careers page that loads its ATS in an iframe is no longer read as a dead posting (#4439), both by @luochen211. - **Sharper scans.** Domain-level detection of aggregator reposts by @vaishaldsouza (#4263), an opt-in strict location filter that fails closed on empty locations by @Zoubeir23 (#4033), blacklist rows that can cover a whole domain (#4169), and a warning when a portal returns zero jobs without a single successful response (#4441), both by @luochen211. - **New sources.** A Python.org Jobs provider by @lasithadilshan (#4173), a generalist-world board provider by @ConnorCloze (#4100) and an explicit Personio tenant pin by @duathron (#4001), all three first contributions. ### Updating Your agent offers this update at the start of your next session. If you declined an update prompt before, run this once to pick it up: ```bash node update-system.mjs apply --confirm ``` New installs: `npx @santifer/career-ops init`. ### Thank you This release carries 112 pull requests from 63 people, 43 of them contributing for the first time. - @luochen211: #4168, #4169, #4308, #4369, #4370, #4371, #4372, #4373, #4377, #4378, #4438, #4439, #4440, #4441, #4442, #4443, #4444, #4451 - @Zoubeir23: #4033, #4046, #4144, #4147, #4215, #4254, #4280, #4285 - @rubicon: #3995, #4009, #4072, #4095, #4116, #4405, #4419 - @abankar1: #3246, #3994, #3996, #4208 - @maxmilian: #3925, #4028, #4074 - @pmxlr8 (first contribution): #4270, #4283, #4305 - @AdilAzhariOmsan: #4235, #4259 - @ConnorCloze (first contribution): #4100, #4264 - @duathron (first contribution): #3999, #4001 - @ilyakanevskiy: #4238, #4252 - @jaybarrett34 (first contribution): #4064, #4065 - @jsmith7735 (first contribution): #4151, #4152 - @prasta1 (first contribution): #4174, #4324 - @rajatvarna (first contribution): #4145, #4146 - @Schlaflied: #3638, #4096 - @SulimanAbdulrazzaq (first contribution): #4240, #4288 - @Tedion (first contribution): #4247, #4248 - @TianHengZhuang (first contribution): #4244, #4376 - @aohl1986-ohlcenter (first contribution): #4048 - @aron-intframe (first contribution): #3944 - @artemtrofymenko: #4284 - @ashiwanikumar (first contribution): #4119 - @ayushi-wq (first contribution): #3190 - @BrianChung95 (first contribution): #4267 - @c020627 (first contribution): #4041 - @chshiv (first contribution): #4023 - @coolchigi: #4194 - @Duyanh090205 (first contribution): #3958 - @eliador90: #3974 - @evgenyponomarev (first contribution): #3814 - @Fayaz-jani-git (first contribution): #2964 - @felipe-NR: #4183 - @glenelkin (first contribution): #3436 - @harshkumar18-bzz (first contribution): #4293 - @JarnDev (first contribution): #4191 - @javimateo (first contribution): #4292 - @jduffey1990 (first contribution): #4066 - @JigarDPrajapati (first contribution): #4137 - @kellymmcgrath: #4296 - @L4XB (first contribution): #4142 - @lasithadilshan (first contribution): #4173 - @mbrow190: #4112 - @mcgalleg (first contribution): #4132 - @MicBun (first contribution): #3536 - @mkriegl (first contribution): #4156 - @Natchica (first contribution): #4291 - @nikitacometa: #3926 - @obielin: #3845 - @peppe1337 (first contribution): #3954 - @prateek942 (first contribution): #4239 - @Rayan-and-beyond (first contribution): #4122 - @rickvian (first contribution): #4282 - @Rkrijn (first contribution): #4258 - @sebastienfi: #4089 - @sloemo01 (first contribution): #4331 - @snuuym (first contribution): #4300 - @TapiocaQAQ (first contribution): #4075 - @tasmiarahmantanjin: #3161 - @Thibaultjaigu (first contribution): #4030 - @vaishaldsouza: #4263 - @vliggio: #3906 - @wajahathussain81 (first contribution): #2322 - @ZxlDragonDoctor (first contribution): #4051 <!-- /co:release-notes --> ## [1.34.0](https://github.com/career-ops-hq/career-ops/compare/career-ops-v1.33.0...career-ops-v1.34.0) (2026-09-24) ### Features * **cli:** add --help to cv-sync-check.mjs ([#4376](https://github.com/career-ops-hq/career-ops/issues/4376)) ([86a5cd3](https://github.com/career-ops-hq/career-ops/commit/86a5cd3300d5b826fd8b16f0b11101dc8dbeb8f3)), closes [#3565](https://github.com/career-ops-hq/career-ops/issues/3565) * **liveness:** check additional posting URLs through public APIs ([#4444](https://github.com/career-ops-hq/career-ops/issues/4444)) ([4bc53fc](https://github.com/career-ops-hq/career-ops/commit/4bc53fce68a89c420c0a68ec645ea6ad4523a4c7)) * **providers:** add generalist-world board provider ([e85ff79](https://github.com/career-ops-hq/career-ops/commit/e85ff797ad7a0c3d97fd895072ad81cf44a0330a)) * **providers:** add Python.org Jobs scanner provider ([24557b2](https://github.com/career-ops-hq/career-ops/commit/24557b2fbc713685b16071068601a61591eab319)) * **providers:** support explicit personio tenant pin ([a639b15](https://github.com/career-ops-hq/career-ops/commit/a639b15404b042be03e71851dbd2a46ba0856b43)) * **readme:** README v2 with a Sponsors section, welcoming SerpApi as sponsor ([6634b81](https://github.com/career-ops-hq/career-ops/commit/6634b81b2a57bd2bc1c1ec68df68d1ee1f98d2e4)) * **scan:** add domain-level aggregator repost detection ([#4263](https://github.com/career-ops-hq/career-ops/issues/4263)) ([fe53d0b](https://github.com/career-ops-hq/career-ops/commit/fe53d0b6bfeb161e3c124b78e752708e9e77b0f9)) * **scan:** opt-in location_filter.strict fails closed on empty locations ([#3276](https://github.com/career-ops-hq/career-ops/issues/3276)) ([#4033](https://github.com/career-ops-hq/career-ops/issues/4033)) ([98e62de](https://github.com/career-ops-hq/career-ops/commit/98e62de48483c61b06b8477cd7f63949d93e89c8)) * **stats:** suggest portal pruning from observed history ([#4373](https://github.com/career-ops-hq/career-ops/issues/4373)) ([dbaffdf](https://github.com/career-ops-hq/career-ops/commit/dbaffdf46f7b3bfc5ae1ef807681960e30735102)) * **update-system:** resolve to the latest release tag by default, not main ([#3845](https://github.com/career-ops-hq/career-ops/issues/3845)) ([ab18203](https://github.com/career-ops-hq/career-ops/commit/ab182031204794073beed66bee84da78e10c0517)) ### Bug Fixes * **agents:** stop quoting an injection example that blocks scanner-based hosts ([#4137](https://github.com/career-ops-hq/career-ops/issues/4137)) ([2f637a2](https://github.com/career-ops-hq/career-ops/commit/2f637a2a5d2279c96114ffe0826da80784d8f477)) * align global score instructions across evaluation paths ([#4451](https://github.com/career-ops-hq/career-ops/issues/4451)) ([f0f1b8e](https://github.com/career-ops-hq/career-ops/commit/f0f1b8e961951708e2077137fb7c549d43c95e23)) * **analyze-patterns:** an empty tracker is a new user, not a failed command ([727fae3](https://github.com/career-ops-hq/career-ops/commit/727fae3133f403b520f64ea370fb353fc9ed1c86)) * **apply:** hand off Ashby submission to system browser ([#4443](https://github.com/career-ops-hq/career-ops/issues/4443)) ([41b212a](https://github.com/career-ops-hq/career-ops/commit/41b212a4646e6357f6af091cbb5eab4b3276bcbc)) * **apply:** validate answers against live field limits ([#4442](https://github.com/career-ops-hq/career-ops/issues/4442)) ([77ec81b](https://github.com/career-ops-hq/career-ops/commit/77ec81bc71a003418ea00acd070020188c8779e7)) * **ashby:** read the salary range from compensationTiers[].components[] ([#4331](https://github.com/career-ops-hq/career-ops/issues/4331)) ([71563c7](https://github.com/career-ops-hq/career-ops/commit/71563c71e333e65c0798cca4a2cc50147d6ad23a)) * **audit-portals:** load providers/ from the checkout, not the data root ([#4240](https://github.com/career-ops-hq/career-ops/issues/4240)) ([88e2d93](https://github.com/career-ops-hq/career-ops/commit/88e2d93fefc170a180b8c444f0b04b49c3689b6a)), closes [#4171](https://github.com/career-ops-hq/career-ops/issues/4171) * **batch:** add adaptive rate-limit backoff ([#4370](https://github.com/career-ops-hq/career-ops/issues/4370)) ([0291477](https://github.com/career-ops-hq/career-ops/commit/029147719d5946fafdba7576cbb31dc869bccd82)) * **batch:** escape ampersands in offer URLs ([d2cd237](https://github.com/career-ops-hq/career-ops/commit/d2cd23785a3364ab49d69481ecf8fd04e82f0c0a)) * **batch:** give the worker a Windows-resolvable JD file path under Git Bash ([5d5729e](https://github.com/career-ops-hq/career-ops/commit/5d5729e4ccee258451c8a004a0084fcb51453d76)) * **batch:** give the worker a Windows-resolvable JD file path under Git Bash ([d4ce630](https://github.com/career-ops-hq/career-ops/commit/d4ce63022162b515fcc1b99754a0f8b56bd2a475)) * **batch:** parse scores locale-independently in batch-runner ([f24eac2](https://github.com/career-ops-hq/career-ops/commit/f24eac20c424aaaf11d038f9e00818ce6f6f631d)) * **batch:** reject explicit zero offer limits ([#4308](https://github.com/career-ops-hq/career-ops/issues/4308)) ([455c006](https://github.com/career-ops-hq/career-ops/commit/455c006f826c2c276d695716b5395f93eb6b9750)) * **batch:** require parent confirmation for delegated agency postings ([#4371](https://github.com/career-ops-hq/career-ops/issues/4371)) ([be0b54f](https://github.com/career-ops-hq/career-ops/commit/be0b54f35845d277aacf1cd87d83708c38590f4e)) * **browser-extract:** normalize JSON-LD length comparison, reset stale title, accept IRI `@type` ([27c3325](https://github.com/career-ops-hq/career-ops/commit/27c3325230a0f677d03755c750a4912ed89d76c4)) * **browser-extract:** read schema.org JobPosting when the DOM has no body ([5fefe46](https://github.com/career-ops-hq/career-ops/commit/5fefe460eb75084cccc4dac6cef0bdc4f3d5a146)) * **browser-extract:** read schema.org JobPosting when the DOM has no body ([8b5c5be](https://github.com/career-ops-hq/career-ops/commit/8b5c5bee657c41f63abefd27f89405cb0bc47980)) * **build-cv-html:** render each project bullets item as its own block ([#4300](https://github.com/career-ops-hq/career-ops/issues/4300)) ([39090cd](https://github.com/career-ops-hq/career-ops/commit/39090cdc703fe1c23824ba9d4c294e4a604c0332)) * **ci:** check out base before running labeler ([eaf10ad](https://github.com/career-ops-hq/career-ops/commit/eaf10adb3b34c79554f5b422c8bc9b9c5eaf23ac)) * **ci:** pr-triage workflow_run finds fork PRs by head owner:branch, skips main ([#4407](https://github.com/career-ops-hq/career-ops/issues/4407)) ([2dd0148](https://github.com/career-ops-hq/career-ops/commit/2dd0148ad7a7e4f5ab0e9907f6b383ffc602d45a)) * **clean-markers:** add -h/--help and reject unrecognized flags ([43f8dfb](https://github.com/career-ops-hq/career-ops/commit/43f8dfb003a5b103dd5e21268d0efc8d92c0fdd7)) * **cv-latex:** keep %, #, ~ and & in CV links, escaped for hyperref ([#4288](https://github.com/career-ops-hq/career-ops/issues/4288)) ([8790f97](https://github.com/career-ops-hq/career-ops/commit/8790f97ae8df254715222a4e617aa8bb5de9a724)) * **dashboard:** neutralize control characters in the help-bar flash ([ff2945c](https://github.com/career-ops-hq/career-ops/commit/ff2945c98dea92754b7d270bf03aea0bc53c6ac3)) * **dashboard:** stats panels overflow their column, and "evaluated" labels three different numbers ([#4075](https://github.com/career-ops-hq/career-ops/issues/4075)) ([e150d3a](https://github.com/career-ops-hq/career-ops/commit/e150d3a21c6b066115cbc5a63ca1e9602959346e)) * **dashboard:** surface open failures in the UI instead of stderr ([6ac8531](https://github.com/career-ops-hq/career-ops/commit/6ac8531a9013f04ad6c29170d9eef2cdd119eb13)) * **discover-ats:** SmartRecruiters' phantom empty board no longer outranks a real not-found ([cd72ef8](https://github.com/career-ops-hq/career-ops/commit/cd72ef83d1ef654b33eab7a1e278932b56fd686e)) * **doctor:** find scan extractor in code checkout ([#4438](https://github.com/career-ops-hq/career-ops/issues/4438)) ([2b92bab](https://github.com/career-ops-hq/career-ops/commit/2b92babea207b8e2f0c47ce4bb7cfb5d5912496e)) * **followup-cadence:** emit cadenceDefaults when the tracker is empty ([#4009](https://github.com/career-ops-hq/career-ops/issues/4009)) ([5c97c24](https://github.com/career-ops-hq/career-ops/commit/5c97c24e092871cd6374c2122ee7f021d69d3d6e)) * **gitignore:** cover reports/ subdirectories, not just the top level ([#4174](https://github.com/career-ops-hq/career-ops/issues/4174)) ([54c57ef](https://github.com/career-ops-hq/career-ops/commit/54c57ef9590ee8c60b0661140ded286f7fd2e0f7)) * **gitignore:** ignore node_modules whatever its file type ([#4419](https://github.com/career-ops-hq/career-ops/issues/4419)) ([47d731d](https://github.com/career-ops-hq/career-ops/commit/47d731d629e52ed775dc18ca7365e525b77d406d)) * **icims:** stop doubling the careers- prefix on iCIMS board hosts ([444fedd](https://github.com/career-ops-hq/career-ops/commit/444fedd9932581cc8844795118ad10d980b247ca)) * improve error message for missing cv.md ([602ac8b](https://github.com/career-ops-hq/career-ops/commit/602ac8b635ecf48b5c9068214666fa0c5c283ba2)) * **jd-archive:** ignore report reservation sentinels ([#4096](https://github.com/career-ops-hq/career-ops/issues/4096)) ([5c8b222](https://github.com/career-ops-hq/career-ops/commit/5c8b222a70ba41209c0907461431008bbea80b73)) * **jd-skill-gap:** improve error message for missing cv.md ([f783f0a](https://github.com/career-ops-hq/career-ops/commit/f783f0a64e1cf6b57db43dc36af762ec476b9e13)) * **jd-skill-gap:** recognize bolded and uncontracted requirements headings ([#4285](https://github.com/career-ops-hq/career-ops/issues/4285)) ([d459180](https://github.com/career-ops-hq/career-ops/commit/d4591808f0ea2b05282980be0b2afa071e54fd35)) * **liveness:** inspect embedded ATS before closing posting ([#4439](https://github.com/career-ops-hq/career-ops/issues/4439)) ([3bb6894](https://github.com/career-ops-hq/career-ops/commit/3bb68949e111d7109bbcb20871201b70337bde62)) * **liveness:** move bare "Job Expired" banner to a soft tier + guard closed-loop compounds ([5358534](https://github.com/career-ops-hq/career-ops/commit/535853476587795fdb0a14ec7691e3b3dcf85a45)) * **liveness:** recognize "role/position is closed" and bare "Job Expired" banners ([cb41016](https://github.com/career-ops-hq/career-ops/commit/cb4101614fa7701539a8faa0e1955710cccc3268)) * **pdf:** give paper size one owner so the CV body and the sheet agree ([#4405](https://github.com/career-ops-hq/career-ops/issues/4405)) ([56b69a2](https://github.com/career-ops-hq/career-ops/commit/56b69a269f98b5f5f2275dd84c6143fb5e0951c2)) * **pdf:** preserve template text reading order ([#4440](https://github.com/career-ops-hq/career-ops/issues/4440)) ([bce3656](https://github.com/career-ops-hq/career-ops/commit/bce3656e528f685156b35e9f4edd7b15da2e4bdf)) * **pipeline:** route CV output on cv.output_format instead of the PDF score gate ([#3944](https://github.com/career-ops-hq/career-ops/issues/3944)) ([1d4993d](https://github.com/career-ops-hq/career-ops/commit/1d4993dc1b7b1eb472455609a5e0425c7006ae34)) * **providers:** avature preserves facet filters across pages, flags broken parses ([#4252](https://github.com/career-ops-hq/career-ops/issues/4252)) ([0674308](https://github.com/career-ops-hq/career-ops/commit/0674308f55f240427386003466fa946066f6ab9c)) * **providers:** build SEEK job links per market host + opt-in appendWorkType ([#3436](https://github.com/career-ops-hq/career-ops/issues/3436)) ([8f345f3](https://github.com/career-ops-hq/career-ops/commit/8f345f38002bc58670208568fd9e4641c63f616b)) * **providers:** give the Lever board feed a 30s timeout, not the 10s default ([#4284](https://github.com/career-ops-hq/career-ops/issues/4284)) ([70f5a0a](https://github.com/career-ops-hq/career-ops/commit/70f5a0abf031f70eb4102e395731fdcebd875df5)), closes [#4177](https://github.com/career-ops-hq/career-ops/issues/4177) * **providers:** match inner class tokens and fail loud on unusable generalist-world cards ([#4264](https://github.com/career-ops-hq/career-ops/issues/4264)) ([4ef31bd](https://github.com/career-ops-hq/career-ops/commit/4ef31bdbb2c825eb6d55d4fa47a428d1f7cad894)) * **providers:** oraclecloud drops 12% of a board on a short middle page ([98380e7](https://github.com/career-ops-hq/career-ops/commit/98380e74b4baf59619a33ccf0b16ccfa640ffddb)) * **providers:** oraclecloud drops 12% of a board on a short middle page ([78d21e2](https://github.com/career-ops-hq/career-ops/commit/78d21e2d18a4963dafe063e5f301d687a1519c55)) * **providers:** pass redirect:'error' on deutschebahn requests ([74d7ab2](https://github.com/career-ops-hq/career-ops/commit/74d7ab2174323bdc6fae4145427efa7d6c0cbd73)) * **providers:** retry transient aborts in deutschebahn and manfred ([54b9bbb](https://github.com/career-ops-hq/career-ops/commit/54b9bbb33f877f3652e792f81962464a521d451e)) * **providers:** retry transient aborts in deutschebahn and manfred ([b4e9aa7](https://github.com/career-ops-hq/career-ops/commit/b4e9aa7a810c71186b08e9e35d5d7ceb01d13ae4)) * resolve MCP config from launch checkout ([#4377](https://github.com/career-ops-hq/career-ops/issues/4377)) ([e2e442c](https://github.com/career-ops-hq/career-ops/commit/e2e442cf680094717a9724f22515243ab9c2638e)) * **role-matcher:** split one-sided level with two-sided vocabulary gap ([#4058](https://github.com/career-ops-hq/career-ops/issues/4058)) ([1cd3633](https://github.com/career-ops-hq/career-ops/commit/1cd36333f4dd33e3bda5347bd03217d3a0172c89)) * run the web test suite on the minimum supported Node ([#4065](https://github.com/career-ops-hq/career-ops/issues/4065)) ([533a4a8](https://github.com/career-ops-hq/career-ops/commit/533a4a8dc0802fffc5a87afb3d380776bde6da14)) * **scaffolder:** do not report "ready" when npm install failed ([ca94dcc](https://github.com/career-ops-hq/career-ops/commit/ca94dccbc274a75cf16b8d0a65bf3e5501768171)) * **scaffolder:** do not report "ready" when npm install failed ([1b1cdcd](https://github.com/career-ops-hq/career-ops/commit/1b1cdcd65bc9cbd9068e950401712568da14a965)) * **scan:** distinguish unverified zero results ([#4441](https://github.com/career-ops-hq/career-ops/issues/4441)) ([05a9f5d](https://github.com/career-ops-hq/career-ops/commit/05a9f5dcad398b4af6bfc5085229e33dc4026e1d)) * **scan:** honor blacklist domain scope ([#4169](https://github.com/career-ops-hq/career-ops/issues/4169)) ([d0288b7](https://github.com/career-ops-hq/career-ops/commit/d0288b79aa79c559cfe601d32cad8f597b0f0cb0)) * **scan:** keep same-titled postings apart when their requisitions differ ([#4267](https://github.com/career-ops-hq/career-ops/issues/4267)) ([a0da806](https://github.com/career-ops-hq/career-ops/commit/a0da806a909684893a2c0945b6e40d4ce31cf801)) * **scan:** recheck_after_days frees a row, then pipeline.md pins it again ([#3958](https://github.com/career-ops-hq/career-ops/issues/3958)) ([8ef3a4e](https://github.com/career-ops-hq/career-ops/commit/8ef3a4e7beef12092aa99e375c70a50e8cf3e968)) * **scan:** warn about stale websearch targeting ([#4369](https://github.com/career-ops-hq/career-ops/issues/4369)) ([61414b6](https://github.com/career-ops-hq/career-ops/commit/61414b631b176748a39f04b62c730543602eb8d2)) * **set-status:** add --help/-h and list the canonical states in usage ([#4066](https://github.com/career-ops-hq/career-ops/issues/4066)) ([8c47fbc](https://github.com/career-ops-hq/career-ops/commit/8c47fbcc6c8175530b662dfde25d65fad7d78953)) * **templates:** honor profile styles in Chinese Minimal CVs ([#4112](https://github.com/career-ops-hq/career-ops/issues/4112)) ([efd4a8b](https://github.com/career-ops-hq/career-ops/commit/efd4a8b4081f09073becda38753c3cb2ebd05f4d)) * **test-all:** stop flagging 7 files that legitimately credit the maintainer ([#4144](https://github.com/career-ops-hq/career-ops/issues/4144)) ([a6c4057](https://github.com/career-ops-hq/career-ops/commit/a6c405747038343dce0bce3124fa1b6ab5c22fbc)) * **tests:** skip web-argv static half when web/ is not installed ([946b741](https://github.com/career-ops-hq/career-ops/commit/946b74180be0826eda3cca1b6667cf3261bc2a1e)) * **tests:** support core-only argv contract checks ([66eb559](https://github.com/career-ops-hq/career-ops/commit/66eb5592e887a2f95b984d9f895f75fd6db2f58a)) * **update-system:** exempt generated per-application CVs/covers from templates/ prune ([#3638](https://github.com/career-ops-hq/career-ops/issues/3638)) ([279bbf7](https://github.com/career-ops-hq/career-ops/commit/279bbf755d6b57e610484a267d1193d4dee60bd7)), closes [#3636](https://github.com/career-ops-hq/career-ops/issues/3636) * **update-system:** keep an upstream negation ahead of newly appended rules ([#4142](https://github.com/career-ops-hq/career-ops/issues/4142)) ([749950a](https://github.com/career-ops-hq/career-ops/commit/749950a8757200f1617671260ef8009d0a4c4f0e)) * **update-system:** never prune a file upstream has not shipped ([#3974](https://github.com/career-ops-hq/career-ops/issues/3974)) ([03908fe](https://github.com/career-ops-hq/career-ops/commit/03908fe4a7f28fad995f625fd2001905a9f50ccb)) * **updater:** drop SIGNATURES.md from SYSTEM_PATHS so a new signature stops reading as system drift ([#4074](https://github.com/career-ops-hq/career-ops/issues/4074)) ([2f10500](https://github.com/career-ops-hq/career-ops/commit/2f1050088a10ed473617fe6a849985a2963fd983)) * **verifiers:** resolve provider plugins like the scanner ([#4026](https://github.com/career-ops-hq/career-ops/issues/4026)) ([#4046](https://github.com/career-ops-hq/career-ops/issues/4046)) ([c8e595a](https://github.com/career-ops-hq/career-ops/commit/c8e595aead66411db8542c4e9ec785406baffeed)) * **verify-ats:** brace the escape for a character above the BMP ([#4305](https://github.com/career-ops-hq/career-ops/issues/4305)) ([3417faf](https://github.com/career-ops-hq/career-ops/commit/3417faf22c29ed0a3f20b79c1e276a67ab7f3f09)) * **verify-ats:** stop the shipped template's own CSS from docking 15 points ([#4270](https://github.com/career-ops-hq/career-ops/issues/4270)) ([eb9d5f1](https://github.com/career-ops-hq/career-ops/commit/eb9d5f161cb6676262be50528c6f7071638d1b85)) * **verify-ats:** trim CSS whitespace, so U+00A0 cannot hide a font name ([#4283](https://github.com/career-ops-hq/career-ops/issues/4283)) ([c9e00e6](https://github.com/career-ops-hq/career-ops/commit/c9e00e6c2d20289c8f87ef576b24670f24e54374)) * **verify-cv-facts:** also strip single-asterisk italic emphasis ([97932d0](https://github.com/career-ops-hq/career-ops/commit/97932d01c4331d4bf3cac059ad53ee8a92a46336)) * **verify-cv-facts:** consolidate markdown emphasis stripping (**, __, *) ([da5cc25](https://github.com/career-ops-hq/career-ops/commit/da5cc257279068b13c4d70de088dce08c588dd14)) * **verify-cv-facts:** recognize bolded metrics in stripMarkup ([f1ae257](https://github.com/career-ops-hq/career-ops/commit/f1ae2576ef57f5e822121b67a526acb9e0283a07)) * **verify-cv-facts:** revert boundary-guarded italic regex, it broke the LaTeX star-command test ([10cfbd2](https://github.com/career-ops-hq/career-ops/commit/10cfbd2ba3f59452d25321ea7a4fe890eeaf28de)) * **verify-cv-facts:** the fabrication gate read neither its sources nor its config from the data root ([#4208](https://github.com/career-ops-hq/career-ops/issues/4208)) ([dd18eb5](https://github.com/career-ops-hq/career-ops/commit/dd18eb5e516ea6e41e3733529795a3470b95c637)) * **verify-portals:** --help no longer falls through to the full network sweep ([#4254](https://github.com/career-ops-hq/career-ops/issues/4254)) ([e2baa19](https://github.com/career-ops-hq/career-ops/commit/e2baa1911da58ac014be23c755d4aaf321e771f9)) * **verify-portals:** reject a missing or swallowed --file operand ([#4280](https://github.com/career-ops-hq/career-ops/issues/4280)) ([bd4dc0d](https://github.com/career-ops-hq/career-ops/commit/bd4dc0da74fbb976a30e70a82b6cb9f286c8b702)) * **web/explore:** honest, configurable scan timeout with partial results ([#4191](https://github.com/career-ops-hq/career-ops/issues/4191)) ([220ecd8](https://github.com/career-ops-hq/career-ops/commit/220ecd876bcb49152068ecc098f55e5be0f8b542)) * **web:** a failed atomic write leaves a full copy of cv.md behind, unignored ([#3245](https://github.com/career-ops-hq/career-ops/issues/3245)) ([#3246](https://github.com/career-ops-hq/career-ops/issues/3246)) ([2d37f77](https://github.com/career-ops-hq/career-ops/commit/2d37f77fb6b29db1c43970e39df5f5f918ddc7e6)) * **web:** make CLI choices fully clickable ([977bb11](https://github.com/career-ops-hq/career-ops/commit/977bb1144fec223f98b66984a9dfeb508d73f08f)) * **workday:** resolve "N Locations" placeholders from the detail endpoint ([4e5a812](https://github.com/career-ops-hq/career-ops/commit/4e5a8123cc015b6af7372d4459c6927d183c4d27))
Related Repositories
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.
Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one