Releases
career-ops-v1.19.0
Compare
Sorry, something went wrong.
No results found
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 )
You can’t perform that action at this time.