Repository navigation
Releases: ebarti/JobCtrl
Release list
JobCtrl v0.3.1
JobCtrl v0.3.1
JobCtrl v0.3.1 repairs native update activation and rollback, and adds accepted DOCX exports, optional source-cited company briefings, reviewed offer records and communications, posting-history source proposals, and evidence review milestones.
Updates and rollback
- Fix the launcher rejecting the new release's readiness start as an unfinished update. Internal startup and its detached supervisor remain bound to the exact signed release and durable update record; ordinary commands cannot bypass an unfinished update.
- Let a new candidate complete its sealed database migration when an older updater skips it using its own schema version. This supports the schema-v11 database from 0.2.1 through the existing exact-v14 migration, without running the application against an intermediate schema.
- Restore the previous application and its paired application/Temporal database backup while retaining a compatible recovery launcher. Rollback no longer depends on executing the older launcher's broken transition guard.
- Preserve an explicit rollback in Homebrew until the user deliberately requests another update. Status, version and start commands do not immediately reinstall the newer formula's application.
- Let the corrected installer or formula upgrade an installation that has never been started. Initialize its older runtime before taking a coherent backup; refuse an incomplete database/history pair or orphaned SQLite sidecars before changing selection.
- Fix Homebrew acquisition without changing Homebrew's sandbox. Verify strict Developer ID signatures during formula installation, then require live notarization at the normal-user bootstrap and full-payload installer boundaries before activation.
- Gate stable publication on real released 0.1.0, 0.1.1, 0.2.0, 0.2.1 and 0.3.0 executables upgrading to the signed candidate, with injected readiness failure, interrupted recovery, paired rollback, and another update after rollback. Separately recover a workspace left by the broken released 0.2.1-to-0.3.0 update.
Accepted documents and company research
- Export accepted resume and cover-letter DOCX documents from the web and CLI, preserving the accepted revision and its download history.
- Preview the exact cover-letter PDF with bounded layout settings and content/settings identity. Accepted-version checks and failed-render handling preserve the last accepted document.
- Request optional company briefings with recorded sources and evidence. The shared briefing can be read from the job, interview and digest surfaces; research requires a configured provider and budget.
Reviewed outcomes and stronger evidence
- Record actual offers and review offer-related communication drafts with their supporting sources. Drafting does not send messages, accept an offer or contact an employer.
- Propose Discovery sources from saved posting history for review. Proposals do not silently enable a source or override a previous rejection or disabled selection.
- Compare demand from explicitly selected jobs with profile evidence, and record review milestones. Unknown evidence and unsupported personal claims remain explicit.
Reliability and maintenance
Apply now owns the complete session and approval handoff. Job-detail projections have one TypeScript writer, enrichment retry resets have one owner, and tailoring policy and artifact writes have clearer boundaries. API/RPC typing and generated-type enforcement are tighter. Test setup and expensive suites are more efficient without changing their required outcomes.
Upgrade and recovery notes
jobctrl updateThis acquires and activates the current signed release. Homebrew installations use the formula's authenticated cache; bundled-installer installations use the signed channel. The installer remains limited to Apple-silicon macOS 15 or newer.
Fresh 0.3.1 installations and upgrades from 0.3.0 use schema v14. Upgrading from 0.2.x uses the existing sealed migration to v14: application data and Temporal history are backed up together before activation. Profiles, canonical jobs, historical sources and accepted material files are retained. Historical heuristic-derived determinations are not promoted to model-verified evidence; affected results require a fresh determination with a ready provider and available budget. See the 0.3.0 migration notes for those data effects.
If an older updater reports a failed candidate and cannot restart its previous release, run jobctrl rollback through the corrected launcher. Recovery restores the saved pair and starts the previous application. An explicit rollback restores the snapshot associated with that release; data added after the snapshot is not carried backward. A compatible recovery launcher remains installed, and jobctrl update explicitly requests another upgrade.
Homebrew's sandbox can deny the macOS service required by live notarization verification. This release keeps the formula's strict Developer ID checks inside the sandbox and performs live notarization checks at the normal-user bootstrap and installer boundaries. It requires no global Homebrew permission patch and does not disable signature or notarization verification.
Provider-backed research and generation still require configuration and budget. Review generated documents and communications before use. The release does not add automatic application submission or automatic employer messaging.
Full changelog: v0.3.0...v0.3.1
JobCtrl v0.3.0
JobCtrl v0.3.0
JobCtrl v0.3.0 brings a native interview-preparation library, reusable reviewed screening answers, and source-linked resume and cover-letter translations. It also makes job evidence easier to inspect and refresh, replaces semantic shortcuts with recorded model determinations, and improves Discovery recovery and application-target safety.
Interview preparation you can keep and revisit
- Explore the installed question catalog in Interviews, with question guidance, sources, rubrics, and a focused inspector.
- Prepare selected questions from Job Detail using the captured posting and explicitly selected canonical profile evidence. Personal claims must be supported by those sources; an empty selection produces gaps instead of invented experience.
- Keep versioned preparation history and save your own notes separately for each job and question. Regenerating preparation preserves those notes and earlier accepted work. The catalog is available offline; generation needs a configured provider and budget. This release does not add validated interview grading.
Reviewed answers and translated materials
- Capture application questions deliberately, draft or edit answers, inspect their supporting facts and model receipts, and approve immutable reusable answers. Reusing an answer checks it against the current question, job, destination, and selected facts, then requires a fresh human review.
- Keep application-specific question, review, and manual-use history. Sensitive facts need explicit selection and consent. Copying or recording an answer does not fill or submit an application.
- Generate locale variants of accepted resumes and cover letters in English, Spanish, French, German, Italian, Portuguese, or Catalan. Source-bound verification and separate terminology and formatting reviews gate acceptance; accepted revisions export to TXT, HTML, PDF, and DOCX. Original materials and prior accepted exports remain available.
Clearer evidence, profiles, and Job Detail
- Inspect recorded verification sources and model authority for generated material. Semantic decisions use source-bound model determinations; invalid output, unavailable providers, and budget denial remain explicit instead of falling back to keyword or similarity rules. Failed refreshes retain accepted artifacts.
- Review evidence-backed target-search suggestions and get configured-model coaching for required profile bullets. Suggestions remain reviewable and do not silently turn inferred claims into confirmed profile facts.
- Read Job Detail in a collapsible single-column layout, with explanations beside unfamiliar fields and clearer artifact chronology. Improve company-name overflow and compensation-evidence refresh behavior.
- Filter Jobs across multiple stages with combined totals and server-side pagination. Search and sorting select the requested page in SQLite, and the browser requests one bounded page instead of reconstructing lists. The rebuildable query index leaves the canonical database schema unchanged.
More reliable Discovery and posting refresh
- Explicitly recheck whether saved postings are active, closed, or unknown, with freshness and failed-attempt visibility. Revalidation preserves reviewed materials and approval boundaries.
- Refresh posting evidence and the canonical application destination together with stale-source and concurrent-write fences.
- Honor Ashby listing visibility and secondary locations. Improve saved-search controls, resumable board capture, enrichment ownership, SQLite transaction recovery, and cancellation so interrupted work does not silently overwrite newer results.
- Clarify
jobctrl doctorintegration diagnostics and missing-npxguidance. Strengthen API/RPC boundary coverage, rendered documentation checks, and required pull-request CI. Update the lockedpypdfandurllib3dependencies.
Upgrade notes
Update an existing bundled installation with:
jobctrl updateFor a Homebrew installation, refresh the formula with brew update and follow the update guide.
This release advances the application database from the schema v11 shipped in v0.2.1 to exact schema v14. The native updater stops the runtime, backs up the application database and Temporal history together, verifies a separate migration candidate, activates it, and checks readiness. Profiles, canonical jobs, historical source records, and accepted material files are retained. Legacy heuristic-derived determinations are cleared rather than presented as model-verified evidence; affected semantic results need a fresh determination using a configured provider and available lane budget.
Imported bullet evidence that was automatically marked confirmed by the old fallback returns to draft; independently confirmed evidence remains intact. Older unfinished Discovery query plans require recomputation, so restart affected searches after upgrading. Compensation estimates and pending Gmail-derived outcome suggestions can require refreshing; their raw sources remain available.
A failed migration or readiness check restores the saved database/history pair. An explicit jobctrl rollback also restores the snapshot paired with the previous release: data added after that snapshot is not carried backward. Source-development installations must use the documented stopped-runtime migration rather than opening an older database directly with the new runtime.
Fresh installations create schema v14 directly. The bundled distribution supports Apple-silicon macOS 15 or newer; see installation instructions. The public demo marks private worker-backed features unavailable. Review generated materials and application actions before approving them.
This release incorporates the development and documentation changes merged after v0.2.1. Design documents merged in that range describe future work; portable workspaces, Leadership Practice, filtered candidate review, reusable contact identity, and quiet outcome review are not shipped capabilities.
Full changelog: v0.2.1...v0.3.0
JobCtrl v0.2.1
JobCtrl v0.2.1
JobCtrl v0.2.1 adds daily LLM token budgets by product lane, saved Discovery source views, reviewed vCard contact imports, and native credential storage. It also simplifies release verification while preserving signed updates and recovery safeguards.
Highlights
- Track LLM usage and enforce token budgets by product lane, with global totals that retain historical usage.
- Save source-review views in Discovery to return to useful filter and sort combinations.
- Import vCard contacts with preview, explicit review, and retained provenance.
- Store supported provider credentials in native credential stores and migrate supported legacy plaintext environment entries through the guided command.
- Strengthen verification of enrichment leases and live worker workflow status, and add a reproducible local-scale performance baseline.
- Remove redundant ZIP reconstruction and byte comparisons, repeated GitHub asset downloads, and the extra Homebrew verification job. Signing, notarization, installer lifecycle checks, and immutable-release verification remain in place.
Upgrade notes
Existing installations update with:
jobctrl updateThis release advances the application database from exact schema v10 to v11. The updater stops the runtime, backs up the application database and Temporal history together, verifies a separate migration candidate, and checks readiness after activation. Existing spend records are preserved in the legacy lane and remain included in global totals. Jobs, profiles, and saved materials are retained.
An explicit jobctrl rollback restores the database snapshot paired with the previous release; data added since that snapshot is not carried backward. Source-development installations must use the documented stopped-runtime migration rather than opening a v10 database directly with the v11 runtime.
For supported legacy environment credentials, use jobctrl credentials migrate; see the configuration guide for its scope and behavior.
Fresh installations create v11 directly. Install on Apple-silicon macOS 15 or newer with the bundled installer or Homebrew. JobCtrl is publicly available early-access software; review generated materials and application actions before approving them.
Full changelog: v0.2.0...v0.2.1
JobCtrl v0.2.0
JobCtrl v0.2.0
JobCtrl v0.2.0 refreshes the application, documentation, and public demo with a Swiss timetable-inspired interface; makes Jobs lifecycle triage a single filterable table; strengthens resumable discovery and preparation; and preserves profile, materials, and Gmail evidence more reliably.
Highlights
One Jobs table for lifecycle triage
- Filter Active, Deleted, and Hidden records from the Job state column, including combined states. The default view remains Active only, while pipeline Stage and Stage state stay separate.
- Apply lifecycle filtering on the server before totals and pagination. Hidden takes precedence over Deleted when both tombstones exist, and legacy deleted or closed links keep working.
- Preserve the filter in URLs and saved views, reset paging and selection when it changes, and keep mixed-state and all-matching actions limited to eligible jobs.
- Use the same filter and mutation rules in the browser-local public demo.
Swiss interface, guide, and demo
- Refresh the web app, documentation site, and public demo with the shared Swiss timetable visual system: compact typography, monochrome surfaces, square geometry, stronger section rules, and restrained status color.
- Improve Jobs density, route-level job evidence, responsive Apply Review gates, profile and settings inputs, pipeline controls, and narrow-screen layouts.
- Update the synthetic screenshot gallery and Product Tour to match the shipped interface. No personal workspace or application data is used in these assets.
Discovery that resumes and explains its work
- Prefer a selected, connected browser extension for Discovery and Enrichment, with anonymous public acquisition when it is disconnected. A site failure does not silently switch transport.
- Keep LinkedIn search listing-first, fetching detail early only when a sparse card needs duplicate resolution.
- Resume unfinished JobStreaming query, location, and board units with durable checkpoints and visible progress, and recover eligible public fetch failures through bounded destination rechecks without weakening private-network protections.
- Recover interrupted enrichment, scoring, and material preparation within their existing ownership, retry, and safety limits.
Profile, materials, and outcome evidence
- Let people reorder individual experience bullets while preserving required selections and achievement evidence; keep canonical field identity and newer edits intact across overlapping saves.
- Keep structured profile and Apply Review drafts stable through cache reconciliation, saves, reloads, and failed refreshes.
- Withhold unsupported compensation, distinguish accepted material availability from application prerequisites, and preserve the last accepted employer analysis when a refresh fails.
- Carry canonical job identity through Gmail outcome scans and store linked message evidence, suggestions, and events atomically after Gmail I/O.
Maintenance and runtime
- Resolve all 42 dependency alerts reported before this release, including the affected source and packaged dependency locks.
- Raise the source-development Node.js contract to
>=22.13.0 || >=24. Signed installations include their managed Node runtime, so installed users do not need Node, pnpm, Corepack, Python, uv, or Temporal onPATH.
Upgrade notes
Existing installations can update while preserving local state:
jobctrl updateThe application database advances to exact schema v10. During an installed update, JobCtrl stops the local runtime, creates a paired backup of jobctrl.db and Temporal state, builds and verifies the v10 candidate, and restores the prior pair if migration or readiness fails. V10 moves the canonical application URL from the legacy jobs column to enrichment-owned storage and retains historical application locators for unambiguous lookup.
For a fresh install on an Apple-silicon Mac running macOS 15 or newer:
curl -fsSL https://jobctrl.dev/install.sh | sh
# or
brew install ebarti/tap/jobctrlJobCtrl remains Beta early-access software. Review the getting-started guide, data and safety boundary, and supervised Apply controls before connecting providers or enabling application capabilities.
Full changelog: v0.1.1...v0.2.0
JobCtrl v0.1.1
JobCtrl v0.1.1 is an early-access patch release focused on faithful resume editing and PDF export, safer tailoring, clearer provider failures, auditable compensation evidence, and more reliable pipeline recovery.
Highlights
Resume editing and PDF export
- Export a PDF from every production Plate-backed resume surface: Profile baseline, Preferences template preview, and Apply Review.
- Preserve browser-rendered typography, Unicode glyphs, spacing, page geometry, and line wrapping while keeping exported PDFs searchable and extractable.
- Avoid editor and audit controls, blank trailing pages, and text clipping at page boundaries in exported documents.
- Keep direct Plate edits synchronized with the canonical profile, including inserting new bullets without replacing existing achievements.
- Reorder experience entries with accessible move controls or newest-first ordering. The saved order now drives baseline and tailored text, HTML, and PDF output.
- Add optional position summaries, compact experience and date controls, improved spacing for roles without bullets, and an institution-and-year-first education layout.
- Show resume text size as a clear percentage.
Safer, more concise tailoring
- Treat per-role bullet limits as a ceiling and select the smallest evidence-backed set that covers the target role.
- Bind every tailored bullet and numeric claim to its exact source achievement, preventing metrics from being borrowed across achievements.
- Re-run provenance, fabrication, quality, and judge checks after voice edits so accepted artifacts preserve the meaning of their sources.
Better failure diagnostics and recovery
- Show privacy-safe provider failure counts and diagnostic dimensions in run details, clearly separated from JSON parsing failures.
- Recover terminal pipeline failures from Temporal history, reset exhausted stages correctly on retry, and honor saved internal concurrency.
- Present clearer progress, waiting and failure states, bounded source-family completion estimates, and targeted Tailor and Cover repair guidance.
Job import and compensation evidence
- Import a public job posting by URL from the Jobs page. Successful imports enter the normal score, tailor, cover-letter, and PDF preparation flow while Apply remains separate and explicit.
- Reject private, loopback, credential-bearing, and ambiguous destinations, and route blocked or paywalled pages to Manual Capture.
- Parse employer-posted salary ranges from descriptions and keep them distinct from market estimates.
- Add automatically refreshed, auditable compensation benchmarks with visible source lineage, confidence, sample support, freshness, geography adjustments, and formula inputs.
Upgrade notes
- Candidate Profile storage advances additively to schema 9. Existing supported databases migrate through the normal paired-backup, validation, rollback, and interruption-recovery path.
- There is no launcher protocol or signed-distribution schema change in this release.
Existing installations can update while preserving local data:
jobctrl updateFor a fresh install on an Apple-silicon Mac running macOS 15 or newer:
curl -fsSL https://jobctrl.dev/install.sh | sh
# or
brew install ebarti/tap/jobctrlMaintenance
- Simplified CI to native path-filtered GitHub Actions workflows with locked Python dependency testing.
- Added complete Dependabot coverage with a bounded update cadence.
- Updated
pypdfto 6.15.0 and Mermaid to 11.16.1.
Selected pull requests
- Plate editing, experience ordering, and PDF export
- Achievement fidelity in resume tailoring
- Privacy-safe provider failure diagnostics
- Public job import by URL
- Compensation evidence and benchmark lineage: #789, #793, #794, #795, #796, and #801
- Pipeline recovery and progress improvements: #806, #807, #808, #809, #810, and #812
Full changelog: v0.1.0...v0.1.1
JobCtrl remains Beta early-access software. Before connecting providers or enabling application capabilities, review the getting-started guide, data and safety boundary, and supervised-apply controls.
JobCtrl v0.1.0
JobCtrl v0.1.0 resets the public application version from the withdrawn pre-launch 2.0.x numbering to an early-access version that better reflects product maturity. This is a version-signaling correction, not a downgrade of product behavior, data, schema, protocols, build identity, or release security.
What the reset means
- Only the public application SemVer changes to 0.1.0.
- The SQLite schema remains version 7 and the launcher protocol remains version 1.
- The signed stable channel advances from sequence 2 to sequence 3; the minimum-safe sequence remains 2.
- The v2.0.7 build remains revoked. The v2.0.8 build is a safe historical artifact and is not revoked solely because of the numbering reset.
- Existing v2.0.7 and v2.0.8 tags, signatures, releases, and immutable artifacts remain preserved.
What ships
- The local JobCtrl web application and TypeScript API
- Python automation workers coordinated through durable Temporal workflows
- Evidence-backed scoring and audited resume tailoring
- Dry-run and explicit approval gates around browser-assisted application workflows
- Signed and notarized managed runtime dependencies for Apple-silicon macOS
Install
On an Apple-silicon Mac running macOS 15 or newer:
curl -fsSL https://jobctrl.dev/install.sh | sh
# or
brew install ebarti/tap/jobctrlThen run:
jobctrl start
jobctrl setup
jobctrl doctorJobCtrl remains Beta early-access software. Review the getting-started guide, data and safety boundary, and supervised-apply controls before connecting providers or enabling application capabilities.