Skip to content

career-ops: v1.19.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 11:23
c553fb2

1.19.0 (2026-07-13)

Features

  • batch: apply compensation reliability checks to batch workers (#1588) (d6cbb2a)
  • browser-extract: configurable jd-mode text cap via --max-chars (#1810) (7b13dc9)
  • calibration: funnel-velocity.mjs — own funnel vs market benchmarks (#1693, part 1) (#1694) (ff6a022)
  • cv: fact validator — block invented metrics in generated CVs (#682) (b9decee)
  • dashboard: add Spanish (es) locale to the i18n catalog (#1783) (2ddb9ce), closes #1764
  • dashboard: discard reason picker with learning loop (#1465) (7845b11), closes #1380
  • dashboard: i18n extraction for the Go TUI (split from #1666) (#1672) (3b5ef4f)
  • email: ATS-broken fallback scenario — recover a stuck application (#1741) (#1745) (4caabf0)
  • i18n: add Traditional Chinese (zh-TW) modes (#1371) (#1760) (d9c338d)
  • i18n: Chinese salary reliability checks — zh mirror of the compensation tiers (#1589) (5771478)
  • img-to-pdf: convert a screenshot into a PDF for ATS uploads (#1730) (#1731) (6b3b4e8)
  • interview-prep: URL entry path for a role that was never evaluated (#1817) (b9b54b8), closes #1816
  • invite-match: fuzzy-match interview-invite emails to tracker entries (#1495) (10de9d4)
  • language.output preference — output language decoupled from market modes (#1035) (4f512fb)
  • latex: opt-in latex-tex in-place tailoring of user-owned .tex CVs (#695) (d7128ad)
  • make CLAUDE.md a thin @AGENTS.md wrapper — single canonical agent spec (#272) (09528a3)
  • modes: wire the opt-in CLI extractor into the oferta + auto-pipeline JD paths (#1804) (3cb7c5b)
  • oferta: Block G signal 7 — AI-buzzword vs infrastructure mismatch (#1683) (#1685) (7dda430)
  • oferta: company-type + compensation-reliability tiers in evaluations (#1587) (160093c)
  • openrouter: prompt-cache the static system prefix via cache_control (#1766) (4dacfc8)
  • pdf: deterministic HTML CV renderer to cut PDF-step token burn (#557) (#1681) (1e08297)
  • pdf: JD skill-gap checker before CV generation, zero-LLM (#1559) (8afdf0b), closes #1558
  • pipeline: openai-tailor.mjs — headless CV tailoring for the no-agent path (#1669) (#1671) (4abce71)
  • providers: 4dayweek auto-detect with spoof-safe host matching (#1657 follow-up) (333d620)
  • providers: add LaraJobs zero-auth RSS provider (0f046b5)
  • providers: add Meituan careers provider (#1818) (0f6b096)
  • providers: add Tencent careers zero-auth provider (#230) (95ba35c)
  • registry: register serper and theirstack provider plugins (#1645, #1697) (2958a2c)
  • registry: split plugins-registry.json into per-plugin files (#1401) (6d08316)
  • reply-watch: paste-reply.mjs manual input path for users without Gmail (#1803) (4f9e924), closes #1802
  • scan: data/blacklist.md — user-owned do-not-apply list (#1742) (#1748) (9867d0e)
  • scan: opt-in max_posting_age_days freshness gate (#1578) (8b60a8c)
  • scan: persist provider postedAt to pipeline and scan-history (#1578) (300b6cb)
  • scan: suppress duplicate roles via company aliases (#1750) (b203ea4)
  • spend_tier config for model-agnostic model routing + batch pre-screen gate (#1007) (4dec7eb)
  • templates: config-selectable CV and cover-letter templates (#1690) (#1691) (7576cfd)
  • tracker: assessment-log.mjs — skills-assessment events with staleness signal (#1684) (#1687) (d1be88b)
  • tracker: recognize "—"/"-" as valid score-cell N/A sentinels (#1800) (7280df2), closes #1799
  • upskill: aggregate skill-gap analysis from tracked reports (#1520, phase 1) (fd1f3c9)
  • upskill: targeted single-posting mode with SSRF-guarded fetch (#1796) (72e5983), closes #1739

Bug Fixes

  • analyzer: resolve report paths relative to the tracker file (#1679) (568025c)
  • cover: resolve the cover-letter template through the shared resolver (#1777) (7e1775c)
  • gitignore data/active-interviews.md (user interview data) (267dfb7)
  • ignore logo cache directory (#1577) (f51b948)
  • liveness: treat off-posting redirects as uncertain, not active (c1cd458)
  • load profile and custom rules deterministically in all mode paths (#1736) (#1759) (738a5c7)
  • merge-tracker: preserve empty interior cells in tracker-row parsing (#1824) (a477638)
  • pdf: clean temporary HTML when browser launch fails (#1786) (2c17f04)
  • pdf: render markdown bold in CV summary as (ATS-safe) (b12cf41)
  • portals: validator accepts provider-plugin ids like the runtime does (#1756) (eee7ec0)
  • providers: support explicit api: override for ashby/lever with host-pinned guards (6e010fe)
  • reserve-report-num: support report numbers past 999 (#1785) (e53b08e)
  • scan: restore browser-like headers on Workday CXS requests (#1813) (14022de), closes #1811
  • templates: allowlist the template format to prevent path traversal (#1776) (54fc973)
  • test: normalize CRLF at read time for doc assertions (#1771) (#1772) (b7a1ea1)
  • tests: close CodeQL command-injection findings in the test harness (9cd6dbc)
  • tests: skip web-reader tests when web/ is absent on core-only installs (#1675) (32dde78)
  • tracker: detect and prevent duplicate tracker # numbers (#1704) (d9cc272)
  • update-system: add .claude/hooks/ to USER_PATHS (#1676) (e9bacc4)
  • update-system: keep the updater self-loading to survive old→new re-exec (#1706) (ce72879)