career-ops-v1.17.0

career-ops-hq/career-opscareer-ops-v1.17.0Jul 5, 2026by github-actions[bot]

AI Summary

This release introduces the opt-in experimental Web UI, expands internationalization with Korean and French, and adds new job providers like Amazon and Avature. It also introduces new CLI hosts and improves the tracking and scanning capabilities.

Key Highlights

  • Launch of the isolated Web UI (opt-in alpha).
  • New CLI hosts (Codex, Grok, Kimi).
  • Expanded language support (Korean, French).
  • New ATS providers (Amazon, Avature, SAP SuccessFactors).

New Features

  • Opt-in experimental web UI surface.
  • /career-ops add command to fetch projects/roles.
  • Agent-inbox queue for next session.
  • ATS pre-scan forms for knock-out questions.
  • Short-greeting variant for chat-style outreach.
  • Formal application email drafts.
  • Find command to resolve company/role queries.
  • Seed pinned first follow-up on status change.
  • Korean career-ops modes.
  • French translations of interview modes.
  • Remote location contradiction flag.
  • Recruiting-process friction signal.
  • Optional per-offer note in pipeline writer.
  • Probe non-ATS boards via provider layer.
  • Candidate contact-channel preference.
  • Get on Board (getonbrd) provider.
  • Amazon (amazon.jobs) and Avature providers.
  • Beesite + softgarden providers.
  • Dassault Systèmes zero-token provider.
  • SAP SuccessFactors (RMK) provider.
  • Startup boards plugin.
  • Contiguous range reservation for report numbers.
  • Report unreachable boards with error classification.
  • Web UI microcopy humanization.
  • Bug report diagnostics (data-shape fingerprint).

Full Release Notes

## [1.17.0](https://github.com/santifer/career-ops/compare/career-ops-v1.16.0...career-ops-v1.17.0) (2026-07-05)


### Features

* add the opt-in experimental web UI surface (web/) — isolated versioning, CI and packaging ([432c3c5](https://github.com/santifer/career-ops/commit/432c3c523a13bf0a5053b5d1f3c28c17ef1296eb))
* **add:** /career-ops add — fetch a project/paper/role into cv.md and article-digest.md ([#1476](https://github.com/santifer/career-ops/issues/1476)) ([933c353](https://github.com/santifer/career-ops/commit/933c3536959f29534769fcb92af37c3a60551475))
* **agent-inbox:** queue requests for the next session ([#1472](https://github.com/santifer/career-ops/issues/1472)) ([182554d](https://github.com/santifer/career-ops/commit/182554d1401f0be91b8474df9918dfaf5491c684))
* **apply:** pre-scan forms for knock-out questions before drafting ([#1463](https://github.com/santifer/career-ops/issues/1463)) ([05a85b8](https://github.com/santifer/career-ops/commit/05a85b8bb1b32991a6bed16c19080e47f19a414b))
* **contacto:** short-greeting variant for chat-style outreach ([#1477](https://github.com/santifer/career-ops/issues/1477)) ([8cf19a7](https://github.com/santifer/career-ops/commit/8cf19a76ad381eeebfb7d35abd9d282006c24214))
* **email:** formal application email drafts — draft-only, never sends ([#1515](https://github.com/santifer/career-ops/issues/1515)) ([f7dfb88](https://github.com/santifer/career-ops/commit/f7dfb88f4d18a598db3d1d327648194d98807ef9))
* experimental local-first web UI (opt-in alpha) ([#1451](https://github.com/santifer/career-ops/issues/1451)) ([1791dc4](https://github.com/santifer/career-ops/commit/1791dc4e3a14aeb10decd852c927bb636aefe00d))
* **find:** resolve a company/role/number query to its full pipeline identity ([#1439](https://github.com/santifer/career-ops/issues/1439)) ([3fd0a06](https://github.com/santifer/career-ops/commit/3fd0a06c14481633d28db5a47f9c9317205e9a7d))
* **followup:** seed a pinned first follow-up when a row turns Applied ([#1468](https://github.com/santifer/career-ops/issues/1468)) ([ea6f608](https://github.com/santifer/career-ops/commit/ea6f6086696c68d5437cf6c5007c4a90b161b011))
* **i18n:** add Korean career-ops modes ([#1457](https://github.com/santifer/career-ops/issues/1457)) ([ced5f74](https://github.com/santifer/career-ops/commit/ced5f74b0eadde187e7de76e70f9ab1ce7918d64))
* **i18n:** translate interview modes to French ([#1526](https://github.com/santifer/career-ops/issues/1526)) ([53f77a0](https://github.com/santifer/career-ops/commit/53f77a09000c3437285a77d3ad86e5e1c619a596)), closes [#1489](https://github.com/santifer/career-ops/issues/1489)
* **i18n:** translate interview modes to Spanish ([#1523](https://github.com/santifer/career-ops/issues/1523)) ([3657bf0](https://github.com/santifer/career-ops/commit/3657bf0e8eb0cb2dc922ad43a94c7365c54250dc)), closes [#1490](https://github.com/santifer/career-ops/issues/1490)
* **oferta:** flag 'remote' location contradicted by JD-body signals ([#1459](https://github.com/santifer/career-ops/issues/1459)) ([74b8fcb](https://github.com/santifer/career-ops/commit/74b8fcb1d0bdf0ae6b8563ff805a7b814919b9c1))
* **patterns:** recruiting-process friction signal at company level ([#1467](https://github.com/santifer/career-ops/issues/1467)) ([dde05bc](https://github.com/santifer/career-ops/commit/dde05bc9427e0752723be0c07ae3621aa46ed67d))
* **patterns:** transcript-driven targeting correction (Step 1b) — closes [#960](https://github.com/santifer/career-ops/issues/960) ([#961](https://github.com/santifer/career-ops/issues/961)) ([ed497fb](https://github.com/santifer/career-ops/commit/ed497fb71d67bc1ad03c57d466e1463e205a4fc7))
* **pipeline:** optional per-offer note in the pipeline writer ([#1483](https://github.com/santifer/career-ops/issues/1483)) ([6435b1a](https://github.com/santifer/career-ops/commit/6435b1a4dc93a9d441df8768e481d878e3309ae3))
* **portals:** probe non-ATS boards through the provider layer ([#1529](https://github.com/santifer/career-ops/issues/1529)) ([ba83606](https://github.com/santifer/career-ops/commit/ba836064cea7a99873fc383b254c32a59d07f4dc))
* **profile:** candidate contact-channel preference for outreach CTAs ([#1557](https://github.com/santifer/career-ops/issues/1557)) ([03a17b5](https://github.com/santifer/career-ops/commit/03a17b5874578aab54e2ef9d36702e9c73ba6cf7)), closes [#1556](https://github.com/santifer/career-ops/issues/1556)
* **providers:** add Get on Board (getonbrd) zero-auth provider ([#1442](https://github.com/santifer/career-ops/issues/1442)) ([c53a61c](https://github.com/santifer/career-ops/commit/c53a61c7998f7cdfbf59500deb27493ad3d4ce18))
* **providers:** Amazon (amazon.jobs) and Avature zero-token providers ([#1480](https://github.com/santifer/career-ops/issues/1480)) ([494e947](https://github.com/santifer/career-ops/commit/494e9476cf215e336c255ac5a06fab231a2b256a))
* **providers:** avature self-heals jobOffset→offset pagination ([#1547](https://github.com/santifer/career-ops/issues/1547)) ([7f1a171](https://github.com/santifer/career-ops/commit/7f1a171c23c8f57096223fdf8220e274f2f5c1bc))
* **providers:** beesite (milch & zucker) + softgarden providers ([#1551](https://github.com/santifer/career-ops/issues/1551)) ([220288e](https://github.com/santifer/career-ops/commit/220288e93753933ceafe12f7bcb71ae6788bdeb0))
* **providers:** Dassault Systèmes zero-token provider (Exalead XML) ([#1498](https://github.com/santifer/career-ops/issues/1498)) ([46c0e89](https://github.com/santifer/career-ops/commit/46c0e894daf93d3ac1c683f98fb3bd27e8b1da24))
* **providers:** honour api: on workday and smartrecruiters ([#1496](https://github.com/santifer/career-ops/issues/1496)) ([f77f846](https://github.com/santifer/career-ops/commit/f77f8465a5dc79faed00c6e9510eea3fba76a4ca))
* **providers:** SAP SuccessFactors (RMK) zero-token provider ([#1475](https://github.com/santifer/career-ops/issues/1475)) ([67253c4](https://github.com/santifer/career-ops/commit/67253c49638ef565a32a4aa9f98ef2c895adee5b))
* **providers:** SuccessFactors CSB strategy + bounded health-probe budget ([#1548](https://github.com/santifer/career-ops/issues/1548)) ([81ab0ed](https://github.com/santifer/career-ops/commit/81ab0ede1ac8592ced56b7904627f588092f837e))
* **registry:** add startup boards plugin ([#1413](https://github.com/santifer/career-ops/issues/1413)) ([f2e1d08](https://github.com/santifer/career-ops/commit/f2e1d080ca9eaa8022a53cc91eef313071892aa7))
* **reserve-report-num:** --count N contiguous range reservation ([#1454](https://github.com/santifer/career-ops/issues/1454)) ([a70dd61](https://github.com/santifer/career-ops/commit/a70dd61391d6ee4c7706b9d001dcd833b84547a9))
* **scan:** report unreachable boards with error classification + doctor sweep ([#1455](https://github.com/santifer/career-ops/issues/1455)) ([fd3635f](https://github.com/santifer/career-ops/commit/fd3635f67fc4a83be922306c7d18fb6fb74a296e))
* **verify:** detect duplicate and orphan reports ([#1425](https://github.com/santifer/career-ops/issues/1425)) ([#1441](https://github.com/santifer/career-ops/issues/1441)) ([5c42df3](https://github.com/santifer/career-ops/commit/5c42df3613c4839055a769f81be595677a973c74))
* **web:** Config microcopy humanized (P1.5) ([#1538](https://github.com/santifer/career-ops/issues/1538)) ([8ae3475](https://github.com/santifer/career-ops/commit/8ae347502b8380692a5f80f490bc59f20d1c8491))
* **web:** cost affordance — CostBadge muted (P1.6) ([#1536](https://github.com/santifer/career-ops/issues/1536)) ([b212bb3](https://github.com/santifer/career-ops/commit/b212bb3591de4c374347dec40fc400c4d6ab9bda))
* **web:** dedupe bug reports at write — stable fingerprint + click-gated similar-issue search ([#1473](https://github.com/santifer/career-ops/issues/1473)) ([e13a4f3](https://github.com/santifer/career-ops/commit/e13a4f37d6df9d21c0acca1d1716993df036e01d))
* **web:** empty-state free-scan button (P0.1) ([#1534](https://github.com/santifer/career-ops/issues/1534)) ([28f12e3](https://github.com/santifer/career-ops/commit/28f12e39e3e41104bb7a1f3650a0a508701f82fe))
* **web:** extract cleanChips to a tested module + tab/CR paste delimiter ([#1516](https://github.com/santifer/career-ops/issues/1516)) ([7e676f4](https://github.com/santifer/career-ops/commit/7e676f403e16c84231bb08669c79218615a88c83))
* **web:** inbox triage — Abundance → Triage → Shortlist → Opt-in Score ([#1569](https://github.com/santifer/career-ops/issues/1569)) ([f1e6cc0](https://github.com/santifer/career-ops/commit/f1e6cc0ef2dae1f134e9d6bbb152611107a36308))
* **web:** mobile tap-targets ≥44px + FAB clearance ([#1542](https://github.com/santifer/career-ops/issues/1542)) ([7f6fd1c](https://github.com/santifer/career-ops/commit/7f6fd1c8f34fd0137a995bd2bb4b1f295c8a9303))
* **web:** orange hierarchy — brand-soft Mark-applied + inbox cost legend (P1.4) ([#1537](https://github.com/santifer/career-ops/issues/1537)) ([85d8290](https://github.com/santifer/career-ops/commit/85d829018c7b7225a1bbd547c53b817fd165924d))
* **web:** report progressive disclosure (P0.3+P1.8) ([#1535](https://github.com/santifer/career-ops/issues/1535)) ([30fa1d1](https://github.com/santifer/career-ops/commit/30fa1d19d00bf9a269adcef6778c52a1627d668c))
* **web:** richer bug-report diagnostics — data-shape fingerprint, core version, API errors ([#1469](https://github.com/santifer/career-ops/issues/1469)) ([6a13d8a](https://github.com/santifer/career-ops/commit/6a13d8a7a5448c5f488cac1631a1da471c070335))


### Bug Fixes

* correctness sweep across tracker, providers, and eval reporting ([#1528](https://github.com/santifer/career-ops/issues/1528)) ([bd2a44f](https://github.com/santifer/career-ops/commit/bd2a44f4ee1ea6c6def70200d7750969e67ebadf)), closes [#1527](https://github.com/santifer/career-ops/issues/1527)
* **dedup:** require exact company+role match so distinct same-company roles survive ([#1458](https://github.com/santifer/career-ops/issues/1458)) ([4f387f0](https://github.com/santifer/career-ops/commit/4f387f04e44253c43462c5083e298cfb09a3c844))
* **infra:** exempt web/ from the SYSTEM_PATHS coverage guard (isolation contract) ([8a23564](https://github.com/santifer/career-ops/commit/8a235649881dc5fa5f4511accf154355da155ade))
* **merge-tracker:** detect TSV score/status column order by header ([#1517](https://github.com/santifer/career-ops/issues/1517)) ([423fc1f](https://github.com/santifer/career-ops/commit/423fc1f45ed9e6a5b6e1ed623e14a67a028ccea7)), closes [#1427](https://github.com/santifer/career-ops/issues/1427)
* **merge-tracker:** guard tier-3 fuzzy dedup with req/job number ([#1525](https://github.com/santifer/career-ops/issues/1525)) ([fdb4376](https://github.com/santifer/career-ops/commit/fdb4376f39051db7102bf48eb0ec8d73cafb7ef9)), closes [#1524](https://github.com/santifer/career-ops/issues/1524)
* **onboarding:** auto-copy template seeds in doctor --json ([#782](https://github.com/santifer/career-ops/issues/782), [#1369](https://github.com/santifer/career-ops/issues/1369)) ([#1369](https://github.com/santifer/career-ops/issues/1369)) ([3c06b46](https://github.com/santifer/career-ops/commit/3c06b461903ce2d8c935862b433a1ff2b65039dc))
* **paths:** prefer cygpath over wslpath in toBashPath() ([#1503](https://github.com/santifer/career-ops/issues/1503)) ([b4f5a83](https://github.com/santifer/career-ops/commit/b4f5a83618de4ef90c26ea2130c0bb6dc44d2a85))
* **pdf:** use CSS [@page](https://github.com/page) setup for margins ([#1563](https://github.com/santifer/career-ops/issues/1563)) ([d057218](https://github.com/santifer/career-ops/commit/d057218e0aa1124002b38134e277e8c76e575b38))
* **plugins:** harden manifest path containment against symlink traversal ([#1532](https://github.com/santifer/career-ops/issues/1532)) ([9d0be62](https://github.com/santifer/career-ops/commit/9d0be62f20c45d3b4892a54f780f28a0baf399f0))
* prevent notion plugin from mangling slash-formatted scores ([#1414](https://github.com/santifer/career-ops/issues/1414)) ([#1417](https://github.com/santifer/career-ops/issues/1417)) ([6ea2e5f](https://github.com/santifer/career-ops/commit/6ea2e5f63a172d00e5e64712bc8fb72d6562b680))
* **providers:** avature parser tolerates two live tenant markup variants ([#1541](https://github.com/santifer/career-ops/issues/1541)) ([1f59f2b](https://github.com/santifer/career-ops/commit/1f59f2b6ade03883372e4acb011e8194e43e7a2a))
* **providers:** harden workday pagination against 429s, API caps, and dateless tenants ([#1419](https://github.com/santifer/career-ops/issues/1419)) ([13f80d5](https://github.com/santifer/career-ops/commit/13f80d5643f360b1702d40d449ca330a07752b0d))
* **providers:** update Glints API to v2-alc/searchJobsV3, document Jobstreet GraphQL migration ([#1173](https://github.com/santifer/career-ops/issues/1173)) ([cf863f7](https://github.com/santifer/career-ops/commit/cf863f721585bba32ee6409d708a59afe37b1631))
* **providers:** workday honors ctx.maxPages so the liveness probe stops cleanly ([#1553](https://github.com/santifer/career-ops/issues/1553)) ([39216f0](https://github.com/santifer/career-ops/commit/39216f0661b861d78c5d6700d864a0b9b83e6478))
* **scan:** load .env credentials via optional dotenv import ([#1507](https://github.com/santifer/career-ops/issues/1507)) ([5066b28](https://github.com/santifer/career-ops/commit/5066b284400cbc51b246eeff64c42af9f34e5c43))
* **update:** make updater timeout budgets configurable ([#1564](https://github.com/santifer/career-ops/issues/1564)) ([525c9c0](https://github.com/santifer/career-ops/commit/525c9c0cbc8b6ab5b23a0e612537c75cab83b114))
* **update:** preserve local CLAUDE.md additions during /career-ops update ([#1446](https://github.com/santifer/career-ops/issues/1446)) ([e5f5d25](https://github.com/santifer/career-ops/commit/e5f5d2517ef598350065af1d2475e08bb28c02da))
* **updater:** add .claude/settings.json to USER_PATHS ([#1471](https://github.com/santifer/career-ops/issues/1471)) ([aa8000d](https://github.com/santifer/career-ops/commit/aa8000d84c397145196f8f494beefe86777e1090)), closes [#1408](https://github.com/santifer/career-ops/issues/1408)
* **web:** bump FOLLOW-UPS DUE tap-targets to 44px on mobile ([#1568](https://github.com/santifer/career-ops/issues/1568)) ([f5e8362](https://github.com/santifer/career-ops/commit/f5e836268c8a16707566becb51675d0b52a670dd))
* **web:** pin turbopack.root to prevent Windows postcss OOM ([#1530](https://github.com/santifer/career-ops/issues/1530)) ([8560153](https://github.com/santifer/career-ops/commit/8560153ad8aa37a3993418d32f951f25c868c6c4))
* **web:** point the 'Get one free' link at the free-AI-engine guide ([#1540](https://github.com/santifer/career-ops/issues/1540)) ([8369b40](https://github.com/santifer/career-ops/commit/8369b4001ba63be78818240b9dbc3aa94aebe2e8))
* **web:** restore the report-a-bug kit lost between the RC branch and main ([#1456](https://github.com/santifer/career-ops/issues/1456)) ([b11231f](https://github.com/santifer/career-ops/commit/b11231ffc77dfbd36b745b35df0b6ded3bb73720))