You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Interview Prep AI generation is no longer offered in the UI. The "Generate" button and the prep panel it opened hung on "Generating..." in native testing. Interview prep is going to become its own larger section later, so rather than patch this surface twice the generation button, panel, and the component state behind it are removed for now. Nothing server-side changed: the list_interview_prep / save_interview_prep_batch commands, the interview_prep table, and the interview-hr / interview-technical / star-r skills stay in place for that future section.
Gemini CLI is no longer offered for CLI bridge mode. Google shut it down for personal accounts on 18 June 2026 - Google AI Pro, AI Ultra and free accounts all stopped being served, leaving only enterprise Code Assist licences and API keys. That is exactly the opposite of who this mode is for, so keeping it would only have offered a provider that cannot work. Claude Code and Codex CLI are unaffected. If your settings still pointed at Gemini they move to Claude Code automatically, and Gemini remains listed for API mode where it is unaffected.
Added
Onboarding can now set up CLI bridge mode. The AI step only ever offered "paste an API key", with a note promising subscription sign-in was "coming soon" - which had been shipping for a while by then. It now starts with a choice: paste an API key, or use a CLI you already pay for. Picking the CLI route lists Claude Code, Codex CLI and Gemini CLI with what is actually on your machine, and offers an Install button for any that are missing or broken so you never have to open a terminal to get started. The button runs npm for you and tells you plainly when it cannot - if Node.js is missing entirely it says so and links to nodejs.org rather than failing with a wall of output. Installing a CLI does not sign you in, and the wizard says so rather than letting you find out at your first real task.
The same Install and Repair buttons are in Settings, so a CLI that breaks later can be fixed without going back through onboarding.
Onboarding now shows exactly how to set up the CLI you chose - the two commands, in order: one to install it, one to sign in. A CLI that already runs gets a line instead, because running is not the same as being signed in: if a task later fails with an authentication or plan error, the command to fix it is right there.
Your profile now stores a first name and a last name, not just the full name. Generated documents and future job-board autofill need the parts, not just the whole - so your profile now keeps both alongside the display name you already had. When a resume parse cannot tell where the name splits, the onboarding review step asks you to check it, without blocking you from moving on. If you saved your profile before this change, the first and last name are filled in from your display name the next time you open it.
Fixed
Onboarding now remembers which AI provider you picked. It saved your API key but never the choice itself, so picking OpenAI or DeepSeek and pasting that key still left the app set to Claude - and every task failed with "no key stored for claude". The provider and the mode are now saved when you finish the wizard.
Switching AI mode no longer leaves you with an unusable model setting. Going to CLI mode clears the model boxes on purpose (so the CLI picks its own), but switching back to API mode left them empty and every request was rejected. Coming back now restores your provider's models.
The health check tells the truth in CLI bridge mode. It reported "no stored key needed - OK" without ever checking whether the CLI it would call actually works, so a missing or broken CLI still showed a clean bill of health. It now runs the CLI and reports the version, or fails with the reason.
Settings no longer claims a broken CLI is ready to use. The CLI bridge checked only that a command with the right name existed, so a half-finished install showed a green tick and then failed on the first real task. These CLIs are small wrappers around a platform binary, and an interrupted install leaves the wrapper behind with the binary missing. Applye now actually runs the CLI to check it, and shows one of three things: working (with its version), found but broken (with the exact reinstall command and the error it printed), or not installed. "Send a test prompt" is only enabled for a CLI that genuinely runs.
You can now pick a CLI model from a list instead of typing its name. CLI mode used free-text model fields, which assumed you knew what your CLI calls its models - and a leftover name from API mode could be sent to a CLI that does not recognise it. Each CLI now offers a dropdown: CLI default, which is the recommended choice and simply lets the signed-in CLI pick whatever your subscription covers; the model names that CLI accepts; and Other, which reveals a text field for anything not listed. Claude Code offers sonnet / opus / haiku and Codex its gpt-5.x names; Gemini CLI publishes no list that can be read without signing in, so it offers the default and a text field rather than names that might be wrong.
The bottom of long pages keeps its breathing room. Scrolling to the very end of a page (your Profile, for one) could leave the last card pressed against the window edge; every scrolling page now keeps a consistent gap at the bottom.
The welcome screen fits a window that is not maximised. Its spacing was fixed rather than proportional, so on a half-height window the very first screen you ever see arrived with a scrollbar and the health check pushed off the bottom. The layout now scales with the window: a large screen looks exactly as before, a smaller one tightens up instead of scrolling.
The Profile header no longer clips its buttons. On a narrow window the status text and the Save / Re-run onboarding buttons could run off the right edge; the row now wraps instead.
Dashboard attention cards read more clearly. The needs-attention cards used a thin colored stripe down one edge; they now use a full colored border with a subtle tint, easier to read and consistent with the rest of the interface.
Consistent dashes across the interface. Every user-facing string and separator now uses a plain hyphen, in line with the project's typography rule.
Added
CLI bridge mode works. Settings has offered a "CLI bridge (coming soon)" mode since the first AI release, but choosing it returned "not implemented yet". It is now real: if you already pay for Claude Code, Codex CLI or Gemini CLI, Applye runs that CLI for its AI work and stores no API key at all. Settings shows which of the three it can find on your machine, with the path it resolved, and a Re-check button - a GUI app does not inherit your shell's PATH, so Applye also looks in the standard install locations itself. Each run is a one-shot subprocess with a fixed argument list (never a shell), the prompt goes in over stdin rather than the command line, the working directory is a scratch folder rather than your own files, Codex additionally runs in its read-only sandbox, and a CLI that hangs is stopped after 10 minutes. Model names in CLI mode are free text passed straight through; leave them empty and the CLI picks its own default.
Changed
The ATS check is now a measurement, not an opinion. It used to be a single true/false the scoring model emitted alongside a one-line note - so it read as a number while actually being a guess, it never looked at the CV that would be uploaded, and it could disagree with itself on identical input. It is now computed locally in Rust at zero token cost, and gives the same answer every time. The result is a 0-100 score built from two halves: keyword coverage (60 points) matches the posting's own requirement terms against your tailored CV, weighting terms inside a requirements block double because that is where a recruiter's filter comes from, and matching whole words so "Java" no longer counts as covered by "JavaScript"; and parsability (40 points), which flags the things that actually lose information in a parser - no findable email or phone, table layouts, missing section headings or creative ones a parser will not recognise, no years to compute tenure from, an export that came out suspiciously short, and a photo only in markets where a photo is a liability (a Bewerbungsfoto is normal in DE/AT/CH and is not flagged there). Every finding is shown with the reason attached, and the missing keywords are listed so you can decide rather than trust a number. Requirement headings are recognised in English and German. The model's own ATS remark is still shown, now clearly below the computed result as advice.
Date ranges in exported documents use a plain hyphen. A CV or cover letter exported from Applye wrote its date ranges with an en dash ("2020 - 2023" was actually "2020 - 2023"). Some applicant tracking systems and older parsers mis-read that character, and it was inconsistent with the rest of the app. Exports now use a plain hyphen throughout. Documents you exported earlier are unaffected until you export them again.
The first launch now welcomes you. The first time you open Applye it greets you with an animated screen: the logo, a one-line summary of what the app does, and two clear choices - take a short guided setup, or skip it and fill things in yourself. The 0-token health check stays on the same screen so you can confirm everything is set up. Skipping never blocks you, and the empty-profile hint still nudges you from inside the app. The animation stands down when your system asks for reduced motion.
The top-bar buttons use the shared button styles. The theme toggle and Paste Job button had their own one-off styling; they now use the same design-system buttons as the rest of the app, so sizing, focus rings and hover states match everywhere.