94 KiB
94 KiB
Changelog
1.18.0 (2026-07-07)
Features
- classify application replies and generate review digest (#1620) (f33f9e7), closes #1585
- dashboard: Hired canonical status + job-landed celebration flow (58736bc)
- i18n: add German translations of interview modes (#1610) (a6b6180)
- i18n: add Hindi language support with dedicated modes and documentation (7463d75)
- i18n: add Indonesian (id) modes (#1474) (6262d53)
- interview-prep: structured Panel Intel table (#1502) (72b1d5e)
- interview: company red-flag detector from transcript signal (0f4f16f)
- match employer reply candidates to application tracker (#1607) (30df267), closes #1584
- oferta: employment classification risk signal in Block G (#1631) (1d084a2), closes #1630
- offer-prep mode — contract reading companion at Offer stage (#1634) (4490c4b), closes #1608
- offer-prep: negotiation reply-draft step — draft-only email from Items to raise (0e79229)
- patterns: per-agency advance-rate analysis from the Via channel (b6ce551)
- pdf: allow intentional CV section reordering via --allow-reorder (1a615d9)
- providers: add Lever EU instance (jobs.eu.lever.co) (#1571) (bd81e37)
- providers: Cornerstone OnDemand (csod) + Rheinmetall (#1549) (ffbbf41)
- providers: EchoJobs zero-auth JSON aggregator provider (#1655) (9509882)
- providers: Phenom People (phenom) + Radancy TalentBrew (radancy) (#1554) (e638fed)
- providers: TKMS, Heckler & Koch, and Deutsche Bahn providers (#1555) (1422846)
- registry: add career-ops-plugin-markdown v0.1.0 (708fa8b)
- salary: mode wiring — advertised_comp + observation appends (f0414ec)
- salary: salary-gap.mjs — append-only compensation observation analyzer (8c6dcdd)
- scan: JD-content fingerprinting — flag agency+direct cross-listings (#1601) (52154fd), closes #1597
- scan: opt-in CLI page extractor (browser-extract.mjs) (557a97d)
- scan: persist per-run scan counters to data/scan-runs.tsv (#1606) (d0d9bd0)
- scan: scope content_filter per title-category via by_title_keyword (9c5791b)
- scoring: culture-screen dimension with structural capping (dc2a8d8)
- stats: lifetime pipeline stats aggregator (#1605) (1b23baa)
- titles mode — suggest adjacent job titles from the CV (#1637) (2d7bb04), closes #1632
- tracker: set-status.mjs — canonical CLI for tracker status updates (#1460) (1750e4c), closes #1428
- tracker: Via channel — end employer vs recruiter/agency intermediary (#1599) (b66c0b4)
Bug Fixes
- dashboard: duplicate tracker headers resolve last-occurrence to match JS reader (#1602) (edbfd8d)
- deps: update npm dependencies (#1593) (253c571)
- modes: enforce modes/_custom.md overrides across mode files (#1621) (1d87f1e), closes #1618
- modes: wire modes/_custom.md into the read path — house rules were write-only (76b45a8)
- pdf: explain the agentic HTML flow in generate-pdf.mjs usage output (7ae6eb0)
- prevent role-matcher from collapsing different seniorities (#1622) (dd45bcb), closes #1616
- scan-ats-full: reject unrecognized CLI flags with usage help (#1635) (06fa92b)
- tracker: retrofit remaining positional readers onto the shared header-aware parser (#1598) (369a5ff)
- update: raise local git timeout default 30s -> 120s for cloud-evicted trees (a7b5dfd)
- web: 44px tap-targets at the component level (#1629) (388542f)
- web: contrast tokens — AA across both themes (#1627) (ee89bea)
- web: portals copy + analytics semantics (#1628) (f8daa19)
- web: ux-audit cleanup — CostBadge global CSS + last sub-44 stragglers (#1648) (786b960)
1.17.0 (2026-07-05)
Features
- add the opt-in experimental web UI surface (web/) — isolated versioning, CI and packaging (432c3c5)
- add: /career-ops add — fetch a project/paper/role into cv.md and article-digest.md (#1476) (933c353)
- agent-inbox: queue requests for the next session (#1472) (182554d)
- apply: pre-scan forms for knock-out questions before drafting (#1463) (05a85b8)
- contacto: short-greeting variant for chat-style outreach (#1477) (8cf19a7)
- email: formal application email drafts — draft-only, never sends (#1515) (f7dfb88)
- experimental local-first web UI (opt-in alpha) (#1451) (1791dc4)
- find: resolve a company/role/number query to its full pipeline identity (#1439) (3fd0a06)
- followup: seed a pinned first follow-up when a row turns Applied (#1468) (ea6f608)
- i18n: add Korean career-ops modes (#1457) (ced5f74)
- i18n: translate interview modes to French (#1526) (53f77a0), closes #1489
- i18n: translate interview modes to Spanish (#1523) (3657bf0), closes #1490
- oferta: flag 'remote' location contradicted by JD-body signals (#1459) (74b8fcb)
- patterns: recruiting-process friction signal at company level (#1467) (dde05bc)
- patterns: transcript-driven targeting correction (Step 1b) — closes #960 (#961) (ed497fb)
- pipeline: optional per-offer note in the pipeline writer (#1483) (6435b1a)
- portals: probe non-ATS boards through the provider layer (#1529) (ba83606)
- profile: candidate contact-channel preference for outreach CTAs (#1557) (03a17b5), closes #1556
- providers: add Get on Board (getonbrd) zero-auth provider (#1442) (c53a61c)
- providers: Amazon (amazon.jobs) and Avature zero-token providers (#1480) (494e947)
- providers: avature self-heals jobOffset→offset pagination (#1547) (7f1a171)
- providers: beesite (milch & zucker) + softgarden providers (#1551) (220288e)
- providers: Dassault Systèmes zero-token provider (Exalead XML) (#1498) (46c0e89)
- providers: honour api: on workday and smartrecruiters (#1496) (f77f846)
- providers: SAP SuccessFactors (RMK) zero-token provider (#1475) (67253c4)
- providers: SuccessFactors CSB strategy + bounded health-probe budget (#1548) (81ab0ed)
- registry: add startup boards plugin (#1413) (f2e1d08)
- reserve-report-num: --count N contiguous range reservation (#1454) (a70dd61)
- scan: report unreachable boards with error classification + doctor sweep (#1455) (fd3635f)
- verify: detect duplicate and orphan reports (#1425) (#1441) (5c42df3)
- web: Config microcopy humanized (P1.5) (#1538) (8ae3475)
- web: cost affordance — CostBadge muted (P1.6) (#1536) (b212bb3)
- web: dedupe bug reports at write — stable fingerprint + click-gated similar-issue search (#1473) (e13a4f3)
- web: empty-state free-scan button (P0.1) (#1534) (28f12e3)
- web: extract cleanChips to a tested module + tab/CR paste delimiter (#1516) (7e676f4)
- web: inbox triage — Abundance → Triage → Shortlist → Opt-in Score (#1569) (f1e6cc0)
- web: mobile tap-targets ≥44px + FAB clearance (#1542) (7f6fd1c)
- web: orange hierarchy — brand-soft Mark-applied + inbox cost legend (P1.4) (#1537) (85d8290)
- web: report progressive disclosure (P0.3+P1.8) (#1535) (30fa1d1)
- web: richer bug-report diagnostics — data-shape fingerprint, core version, API errors (#1469) (6a13d8a)
Bug Fixes
- correctness sweep across tracker, providers, and eval reporting (#1528) (bd2a44f), closes #1527
- dedup: require exact company+role match so distinct same-company roles survive (#1458) (4f387f0)
- infra: exempt web/ from the SYSTEM_PATHS coverage guard (isolation contract) (8a23564)
- merge-tracker: detect TSV score/status column order by header (#1517) (423fc1f), closes #1427
- merge-tracker: guard tier-3 fuzzy dedup with req/job number (#1525) (fdb4376), closes #1524
- onboarding: auto-copy template seeds in doctor --json (#782, #1369) (#1369) (3c06b46)
- paths: prefer cygpath over wslpath in toBashPath() (#1503) (b4f5a83)
- pdf: use CSS @page setup for margins (#1563) (d057218)
- plugins: harden manifest path containment against symlink traversal (#1532) (9d0be62)
- prevent notion plugin from mangling slash-formatted scores (#1414) (#1417) (6ea2e5f)
- providers: avature parser tolerates two live tenant markup variants (#1541) (1f59f2b)
- providers: harden workday pagination against 429s, API caps, and dateless tenants (#1419) (13f80d5)
- providers: update Glints API to v2-alc/searchJobsV3, document Jobstreet GraphQL migration (#1173) (cf863f7)
- providers: workday honors ctx.maxPages so the liveness probe stops cleanly (#1553) (39216f0)
- scan: load .env credentials via optional dotenv import (#1507) (5066b28)
- update: make updater timeout budgets configurable (#1564) (525c9c0)
- update: preserve local CLAUDE.md additions during /career-ops update (#1446) (e5f5d25)
- updater: add .claude/settings.json to USER_PATHS (#1471) (aa8000d), closes #1408
- web: bump FOLLOW-UPS DUE tap-targets to 44px on mobile (#1568) (f5e8362)
- web: pin turbopack.root to prevent Windows postcss OOM (#1530) (8560153)
- web: point the 'Get one free' link at the free-AI-engine guide (#1540) (8369b40)
- web: restore the report-a-bug kit lost between the RC branch and main (#1456) (b11231f)
1.16.0 (2026-07-02)
Features
- add interview skill modes — plan, practice, debrief (#956) (e17a829)
- apply: ATS auto-fill for Greenhouse / Ashby / Lever — prepare, don't submit (#1248) (215e6d1)
- discovery: seed company universe from VC portfolios (YC / a16z)… (#1375) (9a816f5)
- patterns: ATS channel yield analysis — algorithmic-monoculture aware (#1405) (c3b5d9a)
- plugins: seed/successor model — community plugins can supersede a bundled reference (fa61b0c)
- providers: add HigherEdJobs RSS provider (#1350) (d280a7d)
- providers: add JibeApply provider (#1400) (311ed4a)
- providers: add NoDesk provider (#1330) (7fca4dd)
- providers: add Teamtailor zero-auth RSS provider (#1376) (eea80e9)
- registry: add career-ops-plugin-obsidian v0.1.0 (#1399) (1b26648)
- registry: add career-ops-plugin-tavily v0.1.0 (#1348) (b5aa464)
- registry: add google-calendar plugin v0.1.0 (#1347) (1ebc81f)
- scan: add seniority-tier classifier with optional skip_tiers fi… (#1361) (db6cbce)
Bug Fixes
- cv-template: keep role titles from orphaning at page breaks (#1366) (cbde5c4)
- dashboard: map tracker columns by header name (#1327) (#1328) (8257f69)
- followup-cadence: schedule first responded follow-up with responded_initial (#1352) (e30dd0b)
- liveness: add Ashby API rung so live jobs.ashbyhq.com postings aren't false-expired (#1372) (b7bc6f3)
- pdf: anchor the output path-traversal guard to the repo root, not cwd (5ba3c83)
- pdf: keep a right gutter so right-aligned CV content isn't clipped (#1341) (#1351) (37c0703)
- pdf: thread manifest metadata through render options (#1367) (c7e2439)
1.15.0 (2026-06-29)
Features
- add opt-in plugin system (engine + supply-chain governance + registry) (5ae518a)
- add optional profile photo support for resume template (#264) (#1221) (ec18624)
- dashboard: add cover letter hotkey to report viewer (#994) (8a5cc51)
- dashboard: hotkeys to view (d) and regenerate (D) the CV PDF (#797) (07e4014)
- OpenRouter runner — free models, auto-blacklist, no Claude CLI required (#53) (bf380c7)
- providers: add 4 Day Week provider (public zero-auth API) (#1318) (575da5f)
- providers: add Arbeitnow provider (#1301) (c018bfa)
- providers: add Hacker News "Who is hiring?" provider (Algolia API) (#1309) (011aeb4)
- providers: add Himalayas provider (#1249) (1a6f13a)
- providers: add Jobicy provider (#1260) (5a5782e)
- providers: add Jobspresso provider (#1320) (dd06e76)
- providers: add Landing.jobs provider (#1307) (c60c1eb)
- providers: add Pinpoint ATS provider (#1287) (38271b2)
- providers: add Rippling ATS provider (#1303) (922ec5f)
- providers: add The Hub provider (#1305) (19f221f)
- providers: add The Muse provider (#1283) (e0db3d7)
- scan: add detect-reposts.mjs repost detection from scan-history.tsv (#1212) (112f632)
- scan: add JustJoin and NoFluffJobs providers (#989) (7d1ca07)
- scan: persist compensation to pipeline.md (#1017) (8a4567d)
- scripts: add build:dashboard and serve:dashboard npm scripts (#796) (51f6ee4)
- updater: structural SYSTEM_PATHS coverage check (#1190) (cc44f78)
Bug Fixes
- deps: update dependency playwright to v1.61.1 (#1296) (88ebcf9)
- eval: bound research budget to a single-pass query cap (#1262) (771577c)
- scan: tighter company matching and dedup order for cooldown filter (#1201) (7d76fc7)
- security: harden batch tmpfile, PDF output path, and tracker cells (#1315) (ec3023b)
- tracker: share header-name column mapping across all readers (#1293) (c54ba3b)
1.14.0 (2026-06-28)
Features
- add modes/_custom.md for user custom instructions (#1198) (3cc8844)
- apply: ATS behavioural question matcher from story-bank.md (#1228) (9d79931)
- archive: add archive-posting.mjs to save live job postings as PDF (#697) (571b114)
- batch: add --limit flag + budget guide (0607ee5)
- cli: add first-class Codex support (#1269) (43a7d0e)
- cli: add Grok Build CLI support (0a89381)
- cli: register Kimi as a supported CLI host (#1193) (d3d34f3)
- cv: add opt-in profile photo for DACH/European CVs (fcccd58)
- eval: add openai-eval.mjs for any OpenAI-compatible endpoint (#1278) (5838391)
- modes: add Danish (da) locale (5407811)
- modes: add EU SWE application calibration mode (f024317)
- modes: add recruiter-side application heuristics (2ea0814)
- ollama: add local interactive Ollama evaluator (#681) (1b44790)
- providers: add Comeet ATS provider (#1222) (f5af817)
- providers: add Personio ATS provider (#1223) (f25570b)
- providers: add WeWorkRemotely RSS provider (#1243) (39ea2d4), closes #1241
- scan: add early trust validation and job trust metadata (#985) (ef07461)
- scan: preserve job location in pipeline.md (#1015) (7671517)
Bug Fixes
- batch: single-worker lock fallback + exit-127 shim-swap retry (#910) (9a6e2ce)
- modes: bound subagent delegation to prevent research fan-out (#1268) (1cf34a9), closes #1235
- plugin: drop non-schema skills/permissions keys from plugin.json (5ff910c)
- scan: trim title-filter keywords before the length check (#1261) (0842bbf)
- template: scope break-inside to atomic units to prevent CV pagination breaks (7ef8182)
- updater: resolve self-reexec checkout from the import closure (#1267) (0a830b5), closes #1245
1.13.0 (2026-06-25)
Features
- arbeitsagentur: config-driven remoteMatch + server-side homeoffice filter (#1189) (a463308)
- batch: add --skip-pdf flag to batch-runner.sh (#1182) (256a289)
- dashboard: add in-viewer status picker overlay (#1195) (cc53485)
- dashboard: customizable columns with column picker (#979) (9d1404f)
- dashboard: recognize EUR/GBP/CHF pay and international cities in pipeline derive (#1157) (a1c7ce2)
- liveness: zero-token ATS API check before Playwright (closes #574) (#1181) (44f9e64)
- modes: add Polish (pl) locale modes (#1129) (51711b3)
- modes: optional voice-dna.md writing guardrail (#998) (018eb0f)
- portals: add verify-portals.mjs ATS slug validator (#1016) (7aeb016)
- providers: add BambooHR provider (#1141) (39bb6b2)
- providers: add Breezy HR scanner provider (#1185) (6249bcb)
- scan: add --json output, --include-undated, and --shuffle to scan-ats-full (#1199) (12206f7)
- tracker: add
delete --num Nto remove an application row safely (#1200) (a644392)
Bug Fixes
- auto-create data/pipeline.md and harden Playwright doctor check (#1059) (188cf76)
- batch: harden status score handling (#1133) (fbce3f2)
- batch: use awk instead of bc for score math (#735) (afa74c2)
- contract: expand interview-prep/* coverage in DATA_CONTRACT (#1060) (d19db79)
- dashboard: rewrite only the Status cell on status update (#1186) (b1cba0f)
- images not rendering in PDF output due to about:blank origin (#1165) (81752df)
- normalize report links from data files (#1134) (6ae011f)
- providers: harden lever/ashby/workday against SSRF via redirect (950aad5)
- recruitee: keep offer URLs on tenant custom domains (#1116) (7c7fd99)
- scan: guard title-filter keyword normalization against malformed config (#1187) (68c0cdf)
- scan: match short acronym title-filter keywords on word boundaries (#1102) (424f864)
- template: emit mailto:/tel: links for email and phone in CV header (#1167) (7a4b3b6)
- templates: disable fi/fl ligatures for ATS-clean PDF text extraction (#1175) (#1176) (51ef241)
1.12.0 (2026-06-18)
Features
- batch: add --status and --watch progress monitoring to batch-runner.sh (#922) (#966) (802552f)
- cli: add Antigravity CLI compatibility (61de18d)
- i18n: add Chinese language modes for China-market job seekers (#934) (#965) (207f960)
- pdf: render Japanese CVs with a lang="ja" CJK font fallback (#1053) (d0d57d1)
- providers: add Jobstreet and Glints providers for the Indonesian market (728d547), closes #1085
- providers: add RemoteOK, Remotive, Working Nomads, IBM board providers (349bacc), closes #1075
- providers: port Arbeitsagentur to an in-process provider (#1095) (504a2f0)
- scan: add content/description filter for providers (#974) (21d6c86)
Bug Fixes
- ashby: include secondaryLocations so EU-eligible roles surface (a84d3f5), closes #1073
- batch: reconcile pipeline.md inbox after batch runs (#712) (34c3d0e)
- dashboard: archetype regex matches English and Spanish reports (#977) (d619d3b)
- dashboard: open Windows targets without shell (#987) (6dc36fb)
- dashboard: report last-contact in calendar days, not hours-since-midnight (#1057) (4e05cfd)
- followup: resolve report path relative to tracker directory (752f3b9), closes #1070
- followup: use the real application date from notes, not the eval date (#1096) (#1097) (53785c8)
- gemini: validate evaluation report shape (#819) (a0aa264)
- latex: language-agnostic section validation + CJK guard (#1054) (b147504)
- merge-tracker: require company match for number-based dedup (2bb514f), closes #912
- pdf: auto-install Playwright chromium after update (eb504ad)
- pdf: use ATS-safe system fonts for clean CV text extraction (17033e8), closes #1074
- pipeline: add batch liveness sweep for unconfirmed entries (#750) (#973) (e9eba87)
- scan: sanitize external metadata before writes (#1098) (61bad36)
- security: harden local-parser against command/arg injection and scan-ats against SSRF (721f1a8)
- tracker: preserve notes column when rewriting rows without a trailing pipe (#1004) (0569518)
- update: materialize skill entrypoints without symlinks (#1067) (3ef63c8)
- updater: git-safety on abort + preserve user files on safety-violation rollback (#915) (#1099) (deef636)
1.11.0 (2026-06-15)
Features
- add first-class OpenCode support alongside Claude Code (#707) (2710fbe)
- cover: add optional salutation/greeting to cover letters (#1010) (99346c1)
- cover: load _profile.md so personalization governs the letter (#1012) (dff56d3)
- doctor: warn when Playwright MCP tools are not configured (#938) (0222224)
- tracker: map tracker columns by header name (#954) (57b34c0)
- tracker: SQLite derived index over applications.md — phase 1 (#919) (5465f16)
Bug Fixes
- cv: align certification org column width across rows (#931) (e27b051)
- deps: update npm dependencies to v1.61.0 (#1023) (5407247)
- eval: gate dead links before evaluation in oferta and auto-pipeline (#937) (ebf9a13)
- generate-pdf: inline local fonts as data: URLs so they actually embed (#952) (08d1e9a)
- merge-tracker: serialize concurrent tracker merges with a filesystem lock (#941) (0d57994)
- pdf: wait for load instead of networkidle during render (#929) (fd2ce04)
- remove story-bank.md from git tracking (#944) (67662b9)
- skill: surface latex mode in command menus (#928) (2803348)
- tests: run tracker-mutating scripts with --dry-run in script checks (#925) (1acf27d)
- tracker: prevent dedup from deleting distinct same-company roles (#950) (98b32a4)
- update: distribute missing runtime paths (#991) (85ae717)
- update: match Release Please component-prefixed tags in version check (#926) (6f0e289)
- update: rebuild dashboard binary after Go source changes (#953) (5382d37)
- update: use target updater manifest during apply (#983) (539e47b)
1.10.0 (2026-06-11)
Features
- apply: add preflight liveness and role-match gate (#887) (42bb9ab)
- batch: pause batch runner on Claude session limits (#874) (ae6beec)
- cover: add cover letter generation mode (#807) (493f822)
- cv: add build-cv-latex.mjs structured JSON to LaTeX renderer (#905) (b4af01f)
- dashboard: keep discard reason visible in pipeline preview (#914) (3200dfe)
- dashboard: sortable Location, Pay, and Last-contact columns in pipeline view (#798) (265a95b)
- dockerize project for hosts blocked from native Playwright install (#625) (66404a8)
- doctor: adopt doctor --json as the single onboarding state source (#888) (35e2124)
- followup: read cadence settings from profile.yml (#889) (8050c37)
- i18n: add full Arabic language support and modes (#764) (333bb81)
- modes: add interactive interview onboarding subcommand (#909) (46a5c59)
- scan: add --rediscover-404 fallback for moved tracked postings (#808) (7096dbc)
- scan: add configurable salary filtering to the zero-token scanner (#677) (a6ea02e)
- scan: add portals.yml schema validator (#886) (3340695)
- scan: add scan-ats-full.mjs — reverse-discover jobs from public ATS APIs (#746) (7801dc7)
- scan: add scan-history TTL and recheck policy (#895) (1db4cf2)
- scan: add SolidJobs provider and job_boards support (#853) (79862a9)
Bug Fixes
- apply: preserve form field contracts (#821) (2b38fd0)
- batch: append profile context to worker prompts (#815) (4989afc)
- batch: isolate workers from inherited MCP to prevent parallel deadlock (#809) (c8c0dbd)
- batch: stop after min-score skip instead of falling through to completed (#873) (888ca31)
- dashboard: resolve tracker-relative report links against the tracker directory (#780) (858fc93), closes #779
- doctor: single source of truth for onboarding state via doctor --json (#765) (eb536c4)
- flake: declare systems so the devShell resolves on macOS (#848) (e5f0903), closes #334
- liveness: stop false-expiring postings behind anti-bot walls (#783) (a667c33)
- merge-tracker: require company match on exact entry-number dedup (#867) (10ad2de)
- merge-tracker: use token-union ratio in roleFuzzyMatch to stop cross-role dedup (#793) (cfa7505), closes #751
- patterns: parse header-style and Detected-archetype formats in analyze-patterns (#723) (abf603c)
- pdf: reject CV section ordering that diverges from cv.md source (#817) (9f6acc2)
- pipeline: atomic report-number reservation for parallel workers (#803) (c42368c)
- release: auto-sync VERSION via release-please generic extra-file (214f5f8)
- release: sync VERSION file to 1.9.0 (461e3d9)
- security: close SSRF guard bypasses in liveness-browser (#917) (1f525c4)
- update: bootstrap tracker-links.mjs and scaffolder/ for v1.8.x to v1.9.0 upgrades (#921) (1d3a18b)
- update: run curl version checks concurrently in check() (#896) (8f0ed38)
- update: use curl in check() so updates work inside the Claude Code sandbox (#802) (8cac7f3), closes #754
1.9.0 (2026-06-09)
Features
- add npx career-ops scaffolder for one-command install (#856) (ce4fa58), closes #855
- add structured machine summaries to evaluations (#444) (19a1820)
- add Ukrainian language and market support (#323) (06d70d3)
- batch: add --model flag to batch-runner.sh (#504) (44def35)
- dashboard: /-key live search across pipeline rows (#526) (433f34f)
- i18n: add Turkish (TR) language modes (#341) (e87eb57)
- interview-prep: split prep by interviewer audience (#489) (d86b86c)
- make PDF auto-generation configurable via auto_pdf_score_threshold (#715) (fdbf4e1)
- scan: add --verify flag to drop expired postings before pipeline append (#487) (82f0c2e)
- scan: add local-parser provider and agent skip rules (#595) (b3ef0ae)
- scan: add optional always_allow tier to location_filter (#652) (d152da3), closes #650
- scan: add Workable, SmartRecruiters, Recruitee ATS parsers (#653) (ea7b2a6), closes #651
Bug Fixes
- batch: wait and retry batch workers on rate limits (#816) (f498ccf), closes #505
- dashboard: width-aware Markdown rendering with table wrapping in viewer (#513) (dc3a247)
- gemini: auto-merge Gemini evals into the tracker instead of a manual-edit reminder (#820) (6efac1a)
- make tracker report links relative to the tracker file (#760) (#761) (c0d42cd)
- pdf: don't spell out ambiguous ¥ currency symbol (4c415a9)
- pdf: normalize arrows, middots, and currency symbols for ATS extraction (#731) (f164eba), closes #730
- register the career-ops skill in Claude Code via user_invocable key (#801) (3ddb00c), closes #763
- release: sync VERSION file to 1.8.0 (541917f)
- scaffolder: don't pre-create user config so agent onboarding triggers (#858) (cd827be), closes #855
- scan: bootstrap providers/ on update + harden greenhouse detect() (#696) (4b12081)
- scan: raise Ashby provider timeout + add backoff retry (#755) (1aa6c63)
- scan: surface websearch-handoff companies in the run summary (#814) (137c7b3), closes #747
- scope npm package as @santifer/career-ops (#857) (87ef561)
- update-system: add tracker-links.mjs to SYSTEM_PATHS (8287cf4)
- update-system: apply() safety violation reverts cleanly and releases lock (#484) (980153c)
- update-system: bootstrap liveness-browser.mjs for v1.7→v1.8 upgrades (#725) (1ea95f2), closes #704
- update-system: rollback() removes paths absent from backup branch (#483) (f94a3be)
- update: distribute missing modes, locales and CLI configs via update-system (#868) (03b2c94)
- update: timestamp backup branches and roll back to the newest (#813) (1717f9c), closes #733
1.8.0 (2026-05-15)
Features
Bug Fixes
- batch: workers read modes/_profile.md and config/profile.yml (#537) (150e223), closes #534
- deps: update dotenv to v17 (#499) (ce1330e)
- gemini-eval: include profile.yml and _profile.md in evaluation (#618) (73dc603), closes #617
- gemini-eval: redact API key from error logs, harden summary parsing (#582) (fdca4de)
- gemini-eval: switch default model to non-deprecated endpoint, surface 429 guidance (#615) (dd3e036), closes #614
- manifest: align plugin.json skills field with Claude Code plugin schema (#612) (a77d3f6)
- merge-tracker: preserve short specialty acronyms, require non-baseline overlap (#634) (5ed3b3d), closes #633
- modes: make /career-ops deep respect user language, not JD language (#568) (e5f0508)
- portals: update Weights & Biases entry to CoreWeave acquisition (#493) (1411cdc)
- release: sync VERSION file to 1.7.1 (2ebfcab)
- scan: validate Greenhouse URL hostname against allowlist to prevent SSRF (#602) (988f7bb)
- templates: align CV certification rows on a 3-column grid (#638) (082cd11)
- update-system: allow writing-samples/README.md as system-owned file (#562) (207fd07)
- update-system: bootstrap .agents/ for v1.6→v1.7 migration (#654) (4714504)
- update-system: defensive VERSION parsing for release-please marker (#547) (bf84886)
1.7.1 (2026-05-12)
Bug Fixes
- release: sync VERSION file to 1.7.0 (8e554cc)
- update-system: include .agents/ in SYSTEM_PATHS (#600) (3a71469)
1.7.0 (2026-05-06)
Features
- adapt contacto mode by contact type (recruiter/HM/peer/interviewer) (9fd5a90)
- add --min-score flag to batch runner (#249) (cb0c7f7)
- add {{PHONE}} placeholder to CV template (#287) (e71595f)
- add Block G — posting legitimacy assessment (3a636ac)
- add Claude Code plugin manifests (path-stable) (62b767d)
- add follow-up cadence tracker mode (4308c37)
- add Gemini CLI native integration and evaluator script (#349) (0853486)
- add Gemini CLI native integration and evaluator script (closes #344) (0853486)
- add GitHub Actions CI + auto-labeler + welcome bot + /run skill (2ddf22a)
- add LaTeX/Overleaf CV export mode with pdflatex compilation (#362) (b824953)
- add LaTeX/Overleaf CV export mode with pdflatex compilation (closes #47) (b824953)
- add Nix flake devshell with Playwright support (c579fcd)
- add OpenCode slash commands for career-ops (#67) (93caaed)
- add scan.mjs — zero-token portal scanner (8c19b2b)
- add writing-samples folder for AI-detection-evading voice calibration (9ae201d)
- cv: add cv.output_format to route between html and latex generation (b82bb5f)
- dashboard: add Catppuccin Latte light theme with auto-detection (ff686c8)
- dashboard: add manual refresh shortcut (#246) (4b5093a)
- dashboard: add progress analytics screen (623c837)
- dashboard: add rejected and discarded pipeline tabs (7d05967)
- dashboard: add vim motions to pipeline screen (#262) (d149e54)
- dashboard: aligned tables and markdown syntax rendering in viewer (dbd1d3f)
- dashboard: show tracker IDs in pipeline list (8d289c6)
- expand portals.example.yml with 8 dev-tools companies + 23 search queries (#140) (b7f555d)
- i18n: add Japanese README + language modes for Japan market (20a2c81)
- latex: add tectonic engine auto-detect with pdflatex fallback (4b71b2c)
- multi-CLI support via open agent skill standard (#572) (7605a5e)
- portals: add Canada/Vancouver and automation companies to example template (590ba6e)
Bug Fixes
- 10 bug fixes — resource leaks, command injection, Unicode, navigation (cb01a2c)
- add data/ fallback to UpdateApplicationStatus (#55) (3512b8e)
- add stopword filtering and overlap ratio to roleMatch (#248) (4da772d)
- align portals.example.yml indentation for new companies (26a6751)
- ci: correct first-interaction@v3 input names (c5196a8)
- ci: gracefully handle missing dependency graph in dependency-review (#343) (7c5fecb)
- ci: gracefully handle missing dependency graph in dependency-review workflow (#352) (7c5fecb)
- ci: use pull_request_target for labeler on fork PRs (#260) (2ecf572)
- correct _shared.md → _profile.md reference in CUSTOMIZATION.md (closes #137) (a91e264)
- correct dashboard launch path in docs (#80) (2b969ee)
- dashboard: show dates in pipeline list (#298) (e5e2a6c)
- ensure data/ and output/ dirs exist before writing in scripts (#261) (4b834f6)
- filter expired WebSearch links before they reach the pipeline (#57) (ce1c5a3)
- improve default PDF readability (#85) (10034ec)
- liveness checks ignore nav/footer Apply text, expired signals win (3a3cb95)
- liveness: detect closed postings with applications-closed banner variants (7f8217e)
- merge-tracker: filter seniority and location stopwords + require overlap ratio in roleFuzzyMatch (7821113)
- pt: restore diacritical marks in PT-BR modes (#358) (3a4c596)
- pt: restore diacritical marks in PT-BR modes (#359) (3a4c596)
- release: sync VERSION and package.json via release-please-config (6a3dc22)
- remove wellfound, lever and remotefront from portals.example.yml (#286) (ecd013c)
- replace grep -P with POSIX-compatible grep in batch-runner.sh (637b39e)
- test-all.mjs scans only git-tracked files, avoids false positives (47c9f98)
- update-system: cross-check GitHub Releases API when VERSION file is stale (b0ee6eb)
- update-system: expand SYSTEM_PATHS to cover all language modes and current scripts (34fe3fb)
- use candidate name from profile.yml in PDF filename (7bcbc08)
- use execFileSync to prevent shell injection in test-all.mjs (c99d5a6)
- use fileURLToPath for cross platform compatible paths in tracker scripts (#32) (#58) (ab77510)
- use hi@santifer.io in English README (5518d3d)
Performance Improvements
- compress hero banner from 5.7MB to 671KB (dac4259)
1.6.0 (2026-04-26)
Features
- add Gemini CLI native integration and evaluator script (#349) (0853486)
- add Gemini CLI native integration and evaluator script (closes #344) (0853486)
- add LaTeX/Overleaf CV export mode with pdflatex compilation (#362) (b824953)
- add LaTeX/Overleaf CV export mode with pdflatex compilation (closes #47) (b824953)
- cv: add cv.output_format to route between html and latex generation (b82bb5f)
- dashboard: add rejected and discarded pipeline tabs (7d05967)
- dashboard: show tracker IDs in pipeline list (8d289c6)
- latex: add tectonic engine auto-detect with pdflatex fallback (4b71b2c)
- portals: add Canada/Vancouver and automation companies to example template (590ba6e)
Bug Fixes
- ci: correct first-interaction@v3 input names (c5196a8)
- ci: gracefully handle missing dependency graph in dependency-review (#343) (7c5fecb)
- ci: gracefully handle missing dependency graph in dependency-review workflow (#352) (7c5fecb)
- liveness: detect closed postings with applications-closed banner variants (7f8217e)
- merge-tracker: filter seniority and location stopwords + require overlap ratio in roleFuzzyMatch (7821113)
- pt: restore diacritical marks in PT-BR modes (#358) (3a4c596)
- pt: restore diacritical marks in PT-BR modes (#359) (3a4c596)
- update-system: cross-check GitHub Releases API when VERSION file is stale (b0ee6eb)
- update-system: expand SYSTEM_PATHS to cover all language modes and current scripts (34fe3fb)
1.5.0 (2026-04-14)
Features
- add --min-score flag to batch runner (#249) (cb0c7f7)
- add {{PHONE}} placeholder to CV template (#287) (e71595f)
- dashboard: add manual refresh shortcut (#246) (4b5093a)
Bug Fixes
- add stopword filtering and overlap ratio to roleMatch (#248) (4da772d)
- dashboard: show dates in pipeline list (#298) (e5e2a6c)
- ensure data/ and output/ dirs exist before writing in scripts (#261) (4b834f6)
- remove wellfound, lever and remotefront from portals.example.yml (#286) (ecd013c)
1.4.0 (2026-04-13)
Features
- add GitHub Actions CI + auto-labeler + welcome bot + /run skill (2ddf22a)
- dashboard: add Catppuccin Latte light theme with auto-detection (ff686c8)
- dashboard: add progress analytics screen (623c837)
- dashboard: add vim motions to pipeline screen (#262) (d149e54)
- dashboard: aligned tables and markdown syntax rendering in viewer (dbd1d3f)
Bug Fixes
- ci: use pull_request_target for labeler on fork PRs (#260) (2ecf572)
- correct _shared.md → _profile.md reference in CUSTOMIZATION.md (closes #137) (a91e264)
- replace grep -P with POSIX-compatible grep in batch-runner.sh (637b39e)
- test-all.mjs scans only git-tracked files, avoids false positives (47c9f98)
- use execFileSync to prevent shell injection in test-all.mjs (c99d5a6)