Releases
career-ops-v1.23.0
Compare
Sorry, something went wrong.
No results found
1.23.0 (2026-07-28)
Features
batch: add batch-tailor.mjs for bulk CV tailoring of high-scoring roles (#1882 ) (d5384ef ), closes #1836
cli: add Cursor as a supported CLI host (#2115 ) (119d75c )
cv: support declarative section HTML partials from disk (#2184 ) (aefed14 ), closes #2183
dashboard: add a RESPONDED filter tab to the pipeline screen (#2000 ) (eff33e6 ), closes #1999
dashboard: build the pay-span regex from an explicit currency list (#2201 ) (37f20ab )
eval: token-budget-aware context compression for the Gemini and OpenAI evaluators (#2060 ) (4a9281b ), closes #2077
i18n: add Dutch (nl) modes (#1970 ) (0099c42 )
latex-tex: support resumeItemWithoutTitle bullets and resumeSubItem skills (#2120 ) (0d4fa4d )
oferta: flag explicit no-sponsorship as a hard blocker (#2017 ) (933aa01 ), closes #2016
pdf: dynamic CSS theming from a profile.yml style block (#1862 ) (6271e6d ), closes #1837
providers: add Flowxtra board-wide job provider (c9671e0 )
providers: add VDAB zero-auth provider (#2084 ) (6164384 )
scan: discover-ats.mjs — resolve a company list to scannable ATS boards (#1865 ) (50874d1 ), closes #1864
skills: extract the shared skill tokenizer into skill-extract.mjs (#2003 ) (c110825 )
upskill: learning plan on the aggregate gap heatmap (#2217 ) (f20d3e2 ), closes #1740
Bug Fixes
agentic-jobs: replace the broken HTML scraper with the documented REST API (#2167 ) (3aee274 ), closes #2143
agents: compress AGENTS.md ~20% with zero semantic loss (#2094 ) (bd7b377 )
batch: update Claude tier mapping to the current model lineup (867e374 )
cv: add GitHub contact link to the HTML CV pipeline (38efd59 )
dashboard: persist status changes from viewer Discard/SKIP and stale rows (#1849 ) (3f4f947 )
dedup: merge notes from removed entries instead of dropping them (#1883 ) (a91aebf ), closes #1833
deps: update dependency next to v16.2.11 [security] (#2198 ) (b6d1c87 )
deps: update module golang.org/x/sys to v0.47.0 (#2194 ) (f8bac6e )
doctor: treat missing user prerequisites as non-fatal setup warnings (#2083 ) (a3cf654 )
funnel-velocity: count non-canonical Applied rows in the waiting backlog (#2152 ) (1e38216 )
jd-skill-gap: recognize real-world requirement headers, stop at benefits (3ce5718 )
liveness: normalize typographic punctuation and accents before matching (#2163 ) (105ec60 ), closes #2162
liveness: treat the SPA "has been filled" phrasing as expired (#2212 ) (112298c ), closes #2211
match-star: tokenize tag matches so short tokens do not substring-collide (#2153 ) (360bb8c )
normalize-statuses: use header-mapped columns instead of fixed indices (cf0bf4f )
opencode: add missing /career-ops command router (#2204 ) (74bd6f2 ), closes #2191
patterns: recognize the canonical Hired status in analyze-patterns (#2145 ) (283b2a0 )
pdf: apply the CV section-order check to non-English CVs (#2088 ) (9a82618 )
pipeline: lock appendToPipeline() against concurrent read-modify-write (#2189 ) (3c04b43 ), closes #2188
plugin: mirror plugin.json at .github/plugin/ for the awesome-copilot validator (11fd356 )
providers: guard decodeEntities against out-of-range code points (#2150 ) (0448748 )
reply-matcher: decide rejections before offers to stop mis-typing (#2151 ) (1d56897 )
reply-matcher: sanitize domains harvested from tracker notes (#2135 ) (adc04fb ), closes #2134
restore empty-Certifications section stripping lost in the v1.22.0 refactor (#2119 ) (708c53d ), closes #2118
restore the Kimi SKILL.md entrypoint as a real symlink (82e86a0 )
role-matcher: stop collapsing leveled variants into the bare title (fd8f721 )
role-matcher: strip the "Member of Technical Staff" prefix before tokenizing (#1933 ) (a113766 ), closes #1965
role-matcher: treat 'product' as a baseline token so PM sibling specialties stay distinct (#2164 ) (37c0e99 )
salary-gap: parse US ranges with the currency symbol on both bounds (#2200 ) (9d77fd4 ), closes #2190
scan: keep body consumption inside the fetch timeout window (#2138 ) (643478f ), closes #2136
scan: lowercase the path in normalizeUrlForDedup to catch cross-source duplicates (#2089 ) (9c05638 )
scan: recover Greenhouse office cities when location.name is a work model (#2104 ) (b24b99f )
scan: word-boundary location keywords + URL location fallback (#2087 ) (8a1ba8a )
set-status: fail closed when a lone company row contradicts --role (#2108 ) (c05ce51 ), closes #2009
skill: routing drift + discoverable metadata across the agent surface (8ac6261 )
successfactors: preserve brand path for multi-brand RMK tenants (#2099 ) (b623271 ), closes #2010
sync the PDF and scan summary output (#2213 ) (c47094b )
test: make the SYSTEM_PATHS coverage guard actually run in CI (#2240 ) (b2f3fda )
tracker: set SQLite busy_timeout to avoid SQLITE_BUSY under concurrent access (#2206 ) (696a3a8 ), closes #1957
tracker: sync the PDF column from data/pdf-index.tsv (#1969 ) (85a894c ), closes #1429
update-system: rollback removes additions left behind under a directory pathspec (#2110 ) (fc0cf74 ), closes #2015
update-system: verify the target manifest materialized instead of reporting success (#2111 ) (e1fd205 ), closes #1998
verify-cv-facts: detect metric claims the pattern was silently missing (1bf9148 )
web: resolve nested postcss and sharp advisories via overrides (#2216 ) (ec02af8 )
Performance Improvements
scan: cache DNS lookups in-process to stop resolver floods (#2155 ) (bd7d1a8 ), closes #2154
You can’t perform that action at this time.