Skip to content

Career Ops UI

v1.69.0 Feature

This release adds 1 notable feature for engineering teams evaluating rollout.

Published 1mo Productivity & Wikis
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

airbnb-style ashby ats career-ops claude-code cv
+11 more
express greenhouse-api hh-ru job-application job-search lever local-first no-telemetry resume self-hosted sse

Summary

AI summary

Auto‑discovery of plug‑in scanners by dropping .mjs files in server/lib/sources/.

Changes in this release

Feature Medium

Adds auto-discovery for plug-in scanners in `server/lib/sources/`.

Adds auto-discovery for plug-in scanners in `server/lib/sources/`.

Source: llm_adapter@2026-06-13

Confidence: high

Feature Low

Requires each adapter to export a self‑describing `meta` block with `value`, `label`, `region`, and optional `configKey`.

Requires each adapter to export a self‑describing `meta` block with `value`, `label`, `region`, and optional `configKey`.

Source: llm_adapter@2026-06-13

Confidence: high

Feature Low

Adds comprehensive test suite `tests/sources-registry-discovery.test.mjs` covering discovery, malformed meta rejection, and ordering.

Adds comprehensive test suite `tests/sources-registry-discovery.test.mjs` covering discovery, malformed meta rejection, and ordering.

Source: llm_adapter@2026-06-13

Confidence: high

Bugfix Low

Validates `meta` exports and logs a single warning per malformed adapter file.

Validates `meta` exports and logs a single warning per malformed adapter file.

Source: llm_adapter@2026-06-13

Confidence: high

Refactor Low

Replaces static source list with dynamic `readdirSync` + dynamic import at module boot.

Replaces static source list with dynamic `readdirSync` + dynamic import at module boot.

Source: llm_adapter@2026-06-13

Confidence: high

Full changelog

[1.69.0] — 2026-06-12

feat(scan): P-14 plug-in scanner auto-discovery — drop a .mjs in server/lib/sources/ to register a new source. Pre-v1.69 the source list in server/lib/sources/registry.mjs was a static hand-maintained array — adding a new adapter required editing both <id>.mjs AND registry.mjs. Closes the partial half of the roadmap item P-14 (docs/ROADMAP.md). Now every *.mjs in server/lib/sources/ is auto-loaded at module boot; each adapter contributes its identity via a self-describing export const meta = { value, label, region, configKey? } block. The 12 shipped adapters (ashby / greenhouse / lever / rss / smartrecruiters / workable / workday + geekjob / getmatch / habr / hh / trudvsem) each grew a meta export; registry.mjs now uses readdirSync + dynamic import() resolved at module-eval via top-level await (Node 18+ ESM standard). The public API (SOURCES, SOURCES_BY_REGION, RU_CONFIG_KEYS, getRegionalSources) is unchanged — every existing import keeps working. Validation rejects malformed meta (missing value/label/region, RU without configKey, region outside 'en'|'ru') and logs a single console.warn per offending file so half-migrated branches stay diagnostic-friendly. The bundled registry.mjs is excluded from self-import. New tests/sources-registry-discovery.test.mjs adds 14 cases covering shipped-adapter coverage, drop-in adapter discovery, helper-module skip, malformed-meta rejection, self-import exclusion, missing-directory tolerance, and deterministic ordering. Suite 1065 → 1079.


Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Career Ops UI

Get notified when new releases ship.

Sign up free

About Career Ops UI

All releases →

Related context

Beta — feedback welcome: [email protected]