v1.97.0
[1.97.0] — 2026-07-05
Dassault Systèmes scanner source + a three-front quality sweep.
- New scan source — Dassault Systèmes (parent career-ops parity, #1498).
server/lib/sources/dassault.mjs+server/lib/portals/adapters/dassault.mjsmirror the parent's zero-token Exalead "card search" provider (the public feed behind3ds.com/careers/jobs). It's a single global endpoint, so it's provider-selected (provider: dassault) or auto-detected from a3ds.comhost, SSRF host-pinned towww.3ds.comwithredirect:'error'. The XML is parsed without a DOM (per-<Hit><Meta>maps), city/country pulled from the localized category string, and postings are kept only when their public URL is on*.3ds.com. The registry now ships 46 adapters (41 EN + 5 RU);ALL_ADAPTERScount, sorted-id and/api/scan/sourcesEN-set assertions bumped 40 → 41. Suitetests/sources-dassault.test.mjs(10 cases). - Ported parent robustness fixes. Avature parser now tolerates two live tenant markup variants (
article--resultwith a position-index suffix + a classless JobDetail title anchor, #1541); Get on Board guards a0/negativepublished_at(no more bogus 1970 dates); SuccessFactors caps the last page so it can't overshootMAX_JOBS(#1528). - Server audit fixes.
safe-fetchno longer hangs on an over-cap response — the size-cap path now settles the promise directly instead of waiting for an'end'event a destroyed stream never emits (fixes large-page/api/pipeline/preview+ auto-pipeline fetches). SSEstream.*activity-logging is reachable again (the/api/stream/check moved above the blanket "skip GET" guard). - SPA audit fixes. The
#/statstab switcher guards against an async render race — a slow tab's result can no longer clobber a newer tab the user already switched to. The mock-interview and networking delete confirms now pass a proper title + body (no more empty-bodied dialog). - Translation fixes. Untranslated dictionary values corrected — Ukrainian
config.modes*(Adaptive Framing / Exit Narrative / Location Policy), Russianeval.jdLbl("Job Description"), Italiandash.quick.contactoSub("referral" → "segnalazione") — plus the English**16 locales**boilerplate localized in the ru/uk/ja/ko/zh-CN/zh-TW CHANGELOGs.
New: server/lib/sources/dassault.mjs; server/lib/portals/adapters/dassault.mjs.