web-v0.15.0
career-ops-hq/career-opsweb-v0.15.0Oct 16, 2026by career-ops-release[bot]
Upgrading?
AI Summary
This release focuses on enhancing the web dashboard and reporting capabilities. It introduces a generated documents dashboard, interview prep packs, and a CV studio for tailored resumes. Additionally, it improves report views with ATS keyword coverage, company evidence cards, and the ability to compare pipeline rows side-by-side.
Key Highlights
- Interview prep packs and generated documents dashboard
- CV studio with edit model and API for tailored CVs
- ATS keyword coverage and company evidence cards on reports
- Compare two or three selected pipeline rows side-by-side
- Expanded analytics and progress tracking features
New Features
- Assessment lifecycle and follow-up status controls
- Allow users to turn off follow-ups
- Test-all improvements: run inline sections alongside discovered suites
- Upskill: show requirements behind recent skips
- Add interview prep pack to each report
- Add generated documents dashboard
- Add CV studio edit model and API for tailored CVs
- ATS keyword coverage on the report view
- Company evidence card on the report
- Compare two or three selected pipeline rows side-by-side
- Draft a cover letter from the report page
- Expand Analytics into progress and search stats
- Fill modes/_profile.md from the assistant
- Give each today card the evaluator's call and reason
- List watched companies on the portals page
- Rank today's decisions by score with an apply next link
- Recurring skill gaps on the CV page
- Set one status on several tracker rows from the pipeline table
- Show the posting URL in the tracker view
Full Release Notes
## [0.15.0](https://github.com/career-ops-hq/career-ops/compare/web-v0.14.0...web-v0.15.0) (2026-10-15) ### Features * add Assessment lifecycle and follow-up status controls ([#4317](https://github.com/career-ops-hq/career-ops/issues/4317)) ([8cb0161](https://github.com/career-ops-hq/career-ops/commit/8cb0161f73d1e6012976bdf2ba79dee6b91f40d1)) * **followups:** let users turn off follow-ups ([#5164](https://github.com/career-ops-hq/career-ops/issues/5164)) ([0a388c8](https://github.com/career-ops-hq/career-ops/commit/0a388c87ab647140e10fe36a2db0c9ae3956ed97)) * **test-all:** run the inline sections alongside the discovered suites ([#5146](https://github.com/career-ops-hq/career-ops/issues/5146)) ([#5150](https://github.com/career-ops-hq/career-ops/issues/5150)) ([9a2f8d2](https://github.com/career-ops-hq/career-ops/commit/9a2f8d2c5e594cb99f19178adcfa87a4c6994daa)) * **upskill:** show the requirements behind your recent skips ([#5242](https://github.com/career-ops-hq/career-ops/issues/5242)) ([f541063](https://github.com/career-ops-hq/career-ops/commit/f54106321286e0af1331577c6858ed1c57d08065)) * **web:** add an interview prep pack to each report ([#5216](https://github.com/career-ops-hq/career-ops/issues/5216)) ([4c94be4](https://github.com/career-ops-hq/career-ops/commit/4c94be42e63815df71e72df6e0f46e02d8b9a8e0)) * **web:** add generated documents dashboard ([#4856](https://github.com/career-ops-hq/career-ops/issues/4856)) ([#4958](https://github.com/career-ops-hq/career-ops/issues/4958)) ([ca7d047](https://github.com/career-ops-hq/career-ops/commit/ca7d047448aa5bf5b8adffb158315c20e1b66d00)) * **web:** add the cv studio edit model and api for tailored cvs ([#5232](https://github.com/career-ops-hq/career-ops/issues/5232)) ([1fcd8d1](https://github.com/career-ops-hq/career-ops/commit/1fcd8d1586fa506610c3bc6cf3fa4d7f90afb2c6)) * **web:** ATS keyword coverage on the report view ([#4579](https://github.com/career-ops-hq/career-ops/issues/4579)) ([886b834](https://github.com/career-ops-hq/career-ops/commit/886b834a9989e449587cf1ae9ae2ab39e50cab1e)) * **web:** company evidence card on the report (and fix the data root it reads from) ([#4581](https://github.com/career-ops-hq/career-ops/issues/4581)) ([bcfdcdc](https://github.com/career-ops-hq/career-ops/commit/bcfdcdcb37691a921e5c4a3bebb66366d16d3a1e)) * **web:** compare two or three selected pipeline rows side by side ([#5223](https://github.com/career-ops-hq/career-ops/issues/5223)) ([d396b19](https://github.com/career-ops-hq/career-ops/commit/d396b1961c79eb5f59e002fa97abad77b2f3a716)) * **web:** draft a cover letter from the report page ([#5258](https://github.com/career-ops-hq/career-ops/issues/5258)) ([49e14d4](https://github.com/career-ops-hq/career-ops/commit/49e14d4315c0af88b39241687c03a72ff050ea96)) * **web:** expand Analytics into progress and search stats ([#4310](https://github.com/career-ops-hq/career-ops/issues/4310)) ([6e0cd23](https://github.com/career-ops-hq/career-ops/commit/6e0cd23ac6b27faf22e39c16705e1da58316892e)) * **web:** fill modes/_profile.md from the assistant, confirm-gated, with a live onboarding panel ([#4256](https://github.com/career-ops-hq/career-ops/issues/4256)) ([93d1853](https://github.com/career-ops-hq/career-ops/commit/93d1853a971f84465efa00d9b1c83456b35b9d96)) * **web:** give each today card the evaluator's call and reason ([#5215](https://github.com/career-ops-hq/career-ops/issues/5215)) ([4ef7ade](https://github.com/career-ops-hq/career-ops/commit/4ef7adea15392876eea6eda2d5e3f855ba5692ce)) * **web:** list watched companies on the portals page before a health check ([#5220](https://github.com/career-ops-hq/career-ops/issues/5220)) ([b4864ee](https://github.com/career-ops-hq/career-ops/commit/b4864ee4fd5adc15559ca12cebf473e8dfbec82d)) * **web:** rank today's decisions by score with an apply next link ([#5235](https://github.com/career-ops-hq/career-ops/issues/5235)) ([9296142](https://github.com/career-ops-hq/career-ops/commit/92961425af10ab47c55e17a55e4c7113813176f0)) * **web:** recurring skill gaps on the CV page ([#4583](https://github.com/career-ops-hq/career-ops/issues/4583)) ([85fdac2](https://github.com/career-ops-hq/career-ops/commit/85fdac23d93ecb9e2c0246e03ffec5d0a52aeba3)) * **web:** set one status on several tracker rows from the pipeline table ([#5187](https://github.com/career-ops-hq/career-ops/issues/5187)) ([d319b4a](https://github.com/career-ops-hq/career-ops/commit/d319b4a5eeb1c711c64e3a5d85ab108dd1049e7c)) * **web:** show the posting url in the tracker view ([#5130](https://github.com/career-ops-hq/career-ops/issues/5130)) ([d79024c](https://github.com/career-ops-hq/career-ops/commit/d79024c32d7004c88db68d64da52047a3bfca960)) ### Bug Fixes * **analytics:** count only in-flight rows as active applications ([#5186](https://github.com/career-ops-hq/career-ops/issues/5186)) ([ed10c7a](https://github.com/career-ops-hq/career-ops/commit/ed10c7aaa391d8a1784830904515541b50b9d095)) * **scheduler:** preserve the original recurrence anchor ([#5006](https://github.com/career-ops-hq/career-ops/issues/5006)) ([1884acf](https://github.com/career-ops-hq/career-ops/commit/1884acff0162755a2c8d0c69b9f5455f56f04463)) * **test-harness:** link the dependency tree a worktree inherits, in both suites ([#5055](https://github.com/career-ops-hq/career-ops/issues/5055)) ([b528fe5](https://github.com/career-ops-hq/career-ops/commit/b528fe59fc139769d22f537b2dd25012d263ad76)) * **test-harness:** run the suite against a scratch data root and guard the real one ([#5137](https://github.com/career-ops-hq/career-ops/issues/5137)) ([2bebe32](https://github.com/career-ops-hq/career-ops/commit/2bebe32826d6f504652fb473c22e4df7124972a3)) * **web/scheduled:** a lock whose stat fails is not stale ([#5013](https://github.com/career-ops-hq/career-ops/issues/5013)) ([7f30002](https://github.com/career-ops-hq/career-ops/commit/7f300029b4bdcf798a500d953f0114610c600675)) * **web/scheduled:** retry Windows EPERM/EACCES on the lock mkdir instead of crashing ([#4917](https://github.com/career-ops-hq/career-ops/issues/4917)) ([291d53b](https://github.com/career-ops-hq/career-ops/commit/291d53babf306bd8440076447211b8578ecbccef)) * **web:** answer 400, not 500, when a JSON body is not an object ([#5188](https://github.com/career-ops-hq/career-ops/issues/5188)) ([9abcad3](https://github.com/career-ops-hq/career-ops/commit/9abcad356f5bc1e916ab355b39e5032b91bc78a9)) * **web:** attach the tailored cv to localized resume upload fields ([#5162](https://github.com/career-ops-hq/career-ops/issues/5162)) ([e632866](https://github.com/career-ops-hq/career-ops/commit/e632866aacef4ad89198f424663605a45760498d)) * **web:** deny Write/Bash when evaluating untrusted JDs ([#3629](https://github.com/career-ops-hq/career-ops/issues/3629)) ([a98717e](https://github.com/career-ops-hq/career-ops/commit/a98717ebaa75ace696db58cc7e77e94f9c8c856a)) * **web:** keep Assistant keyboard focus through open, send and close ([#5123](https://github.com/career-ops-hq/career-ops/issues/5123)) ([b5b136b](https://github.com/career-ops-hq/career-ops/commit/b5b136b01a9bbefcc9d8a169147f4c7109ae9bb3)) * **web:** keep colon location and pay cells in the inbox ([#5120](https://github.com/career-ops-hq/career-ops/issues/5120)) ([e6ed41e](https://github.com/career-ops-hq/career-ops/commit/e6ed41e8e6d052538fabf442f4d88095fbf86fe1)) * **web:** keep Discover running when the URL updates ([#3628](https://github.com/career-ops-hq/career-ops/issues/3628)) ([c78e14c](https://github.com/career-ops-hq/career-ops/commit/c78e14cdfd52f18a92e4a67694efab7ddef59385)) * **web:** keep failed inbox undo actions retryable ([#5050](https://github.com/career-ops-hq/career-ops/issues/5050)) ([63ec2fc](https://github.com/career-ops-hq/career-ops/commit/63ec2fcacc4becf883adce3eebee7409228db93a)) * **web:** keep places like Idaho Falls in the location breakdown ([#5153](https://github.com/career-ops-hq/career-ops/issues/5153)) ([cf26d04](https://github.com/career-ops-hq/career-ops/commit/cf26d04dd6ce7714566bee00dc418449a2e86af7)) * **web:** label application review fields and confirmation hints ([#4996](https://github.com/career-ops-hq/career-ops/issues/4996)) ([cdcd8c4](https://github.com/career-ops-hq/career-ops/commit/cdcd8c42c318cf8ea234dc98b507a3024877b8fc)) * **web:** label padded application numbers in assistant actions ([#5157](https://github.com/career-ops-hq/career-ops/issues/5157)) ([09f1399](https://github.com/career-ops-hq/career-ops/commit/09f139916433a474e3aaa4b3ce3b928d26b8f8b7)) * **web:** link an unscored inbox row to its posting ([#5122](https://github.com/career-ops-hq/career-ops/issues/5122)) ([662ca5c](https://github.com/career-ops-hq/career-ops/commit/662ca5cf649f22e20fc7004877e87c1ca66159ca)) * **web:** match admin as a word when bucketing archetypes ([#5154](https://github.com/career-ops-hq/career-ops/issues/5154)) ([9174770](https://github.com/career-ops-hq/career-ops/commit/917477029a0e134946190bcfdc4abefd68a268d1)) * **web:** name every explore filter field for screen readers ([#5222](https://github.com/career-ops-hq/career-ops/issues/5222)) ([523a205](https://github.com/career-ops-hq/career-ops/commit/523a205460ed1981a92955a6dfe2323e2a309b52)) * **web:** never inherit a stale console on Windows, and stop the doctor reporting a failed probe as all set up ([#4253](https://github.com/career-ops-hq/career-ops/issues/4253)) ([4e590f2](https://github.com/career-ops-hq/career-ops/commit/4e590f29bb7cec86885803a7bcd18287bd16fe8d)), closes [#3809](https://github.com/career-ops-hq/career-ops/issues/3809) * **web:** open the inbox score on the saved report ([#2968](https://github.com/career-ops-hq/career-ops/issues/2968)) ([6a45392](https://github.com/career-ops-hq/career-ops/commit/6a45392563755fbd22244e1048afb12df82e0587)) * **web:** persist Today snoozes and confirm status writes ([#4106](https://github.com/career-ops-hq/career-ops/issues/4106)) ([a0bb5f0](https://github.com/career-ops-hq/career-ops/commit/a0bb5f03d5c29f1cf6eb2221cccf38552bbb0792)) * **web:** point an empty inbox at the roles already tracked ([#5171](https://github.com/career-ops-hq/career-ops/issues/5171)) ([4d1d57a](https://github.com/career-ops-hq/career-ops/commit/4d1d57a91e7e2bb464b16d38ac59b3c4a53a9b78)) * **web:** preserve company evidence scope and source certainty ([#5007](https://github.com/career-ops-hq/career-ops/issues/5007)) ([33c927c](https://github.com/career-ops-hq/career-ops/commit/33c927ca63fb4aea1e3f924444a74f0e3c3bc244)) * **web:** preserve context and focus for assistant confirmations ([#5017](https://github.com/career-ops-hq/career-ops/issues/5017)) ([d0a9bb5](https://github.com/career-ops-hq/career-ops/commit/d0a9bb5303348f1ab742ec09d7ea3588ed094f5b)) * **web:** preserve Pipeline filters when returning from a report ([#5049](https://github.com/career-ops-hq/career-ops/issues/5049)) ([4468aac](https://github.com/career-ops-hq/career-ops/commit/4468aacdfa1b49bc8be8a1a6df2ff31a38686b5a)) * **web:** preserve report identity when generating tailored PDFs ([#4104](https://github.com/career-ops-hq/career-ops/issues/4104)) ([a8b3340](https://github.com/career-ops-hq/career-ops/commit/a8b334080677580e813317172080d00d4c56ffbd)) * **web:** preview table-only report sections as fields, not separator residue ([#5218](https://github.com/career-ops-hq/career-ops/issues/5218)) ([5fe9b88](https://github.com/career-ops-hq/career-ops/commit/5fe9b886add73bd4ed9f17a74fbee1eb3fbb9555)) * **web:** recover interrupted application fills without losing answers ([#4109](https://github.com/career-ops-hq/career-ops/issues/4109)) ([2810471](https://github.com/career-ops-hq/career-ops/commit/281047155e8d5932bf24122be3f189776bbc8119)) * **web:** refuse submit buttons labeled in every shipped locale ([#5158](https://github.com/career-ops-hq/career-ops/issues/5158)) ([56867bd](https://github.com/career-ops-hq/career-ops/commit/56867bd59c0739e83898160612319f15a5f493ea)) * **web:** reject private URLs in Apply session ([#3627](https://github.com/career-ops-hq/career-ops/issues/3627)) ([3444fdd](https://github.com/career-ops-hq/career-ops/commit/3444fddf20307e7f7ef15c42493871594a12c719)) * **web:** say where cli evaluations go on the workers page ([#5172](https://github.com/career-ops-hq/career-ops/issues/5172)) ([6bf0667](https://github.com/career-ops-hq/career-ops/commit/6bf06676810013b89d7f291e162dac8defdd3dab)) * **web:** serve cv and cover pdfs whose filenames are not ascii ([#5163](https://github.com/career-ops-hq/career-ops/issues/5163)) ([6b55711](https://github.com/career-ops-hq/career-ops/commit/6b557110c762a38e137b02ae2957de54ed89dd5b)) * **web:** show inbox rows that are only a URL ([#3626](https://github.com/career-ops-hq/career-ops/issues/3626)) ([87ecfa2](https://github.com/career-ops-hq/career-ops/commit/87ecfa248deec495e7effc4ef6c283424aed3f96)) * **web:** show no success rate when no scan has run ([#5121](https://github.com/career-ops-hq/career-ops/issues/5121)) ([0756f03](https://github.com/career-ops-hq/career-ops/commit/0756f0317b443ddf6bfd5d37c64a6524de763fc4)) * **web:** show the "report left on disk" notice when deleting a tracker row ([#5067](https://github.com/career-ops-hq/career-ops/issues/5067)) ([ae9fdeb](https://github.com/career-ops-hq/career-ops/commit/ae9fdeb26f6dc05207b828f61542d6659a17bd4f)) * **web:** show the verdict reason without raw markdown markers ([#5169](https://github.com/career-ops-hq/career-ops/issues/5169)) ([ffebb75](https://github.com/career-ops-hq/career-ops/commit/ffebb7577839dc9ddd2856f130005f9be51ee523)) * **web:** show upcoming follow-ups on the follow-ups page ([#5129](https://github.com/career-ops-hq/career-ops/issues/5129)) ([685221f](https://github.com/career-ops-hq/career-ops/commit/685221faf953e1160f9d56cc5032f1732a0a57fc)) * **web:** show why a tailored cv was not generated next to the button ([#5240](https://github.com/career-ops-hq/career-ops/issues/5240)) ([8680fb7](https://github.com/career-ops-hq/career-ops/commit/8680fb7bc733beee98641a81f196272f01351fef)) * **web:** start each agent message on a new line so the cv envelope parses ([#5239](https://github.com/career-ops-hq/career-ops/issues/5239)) ([cc56d48](https://github.com/career-ops-hq/career-ops/commit/cc56d48faf282da8126982db005f0aeb91d7bded)) * **web:** stop calling a flagged posting recommended in the verdict card ([#5219](https://github.com/career-ops-hq/career-ops/issues/5219)) ([849a8b5](https://github.com/career-ops-hq/career-ops/commit/849a8b528f1c6c6aca457486ba6fe4677939b37f)) * **web:** stop the apply fill clicking a combobox option that only contains the answer ([#5160](https://github.com/career-ops-hq/career-ops/issues/5160)) ([b05b700](https://github.com/career-ops-hq/career-ops/commit/b05b7002cc7efc55513f0e3c42d243b310aa5d42)) * **web:** stop the sankey screen-reader table widening analytics on phones ([#5217](https://github.com/career-ops-hq/career-ops/issues/5217)) ([6899c17](https://github.com/career-ops-hq/career-ops/commit/6899c17f483b790826b260bfc75901961bc112cb)) * **web:** update source-map-js to 1.2.2 ([#5009](https://github.com/career-ops-hq/career-ops/issues/5009)) ([012c782](https://github.com/career-ops-hq/career-ops/commit/012c782b3bad67a1bbc963ba0afe085b3c93da46))
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