Skip to content

career-ops: v1.23.0

Latest

Choose a tag to compare

@github-actions github-actions released this 28 Jul 10:23
0d5b795

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