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
The local market picker now lists only markets Applye can actually serve: Germany, USA, Russia, Ukraine and Poland. United Kingdom, Spain and France are gone from the list - picking one enabled nothing, because no built-in source serves them, and left whichever market was picked before it still scanning. They come back the moment a source for them is added; jobs from those countries are still correctly excluded from the other five markets' results in the meantime.
Discover now tells you when your market has changed since the results on screen were scanned, and offers a one-click Refresh. Refresh clears the old unsaved results and runs a new scan for the current market; saved jobs and dismissed jobs are never touched by it. Ignoring the banner leaves everything exactly as it was.
Local markets: search by country instead of by continent. "Where to look for openings" only ever offered whole continents, so a job seeker in Poland had to search all of Europe and sift out the rest. Settings' Job search section now offers Local market underneath: Germany, USA, Russia, Ukraine and Poland, and you can pick several. The two are alternatives, not layers - picking a market switches the search to those countries and the regions above step aside (they grey out and say so, and clicking one switches straight back); clearing the last market returns you to Worldwide, exactly like clearing the last region already did. Picking a market also narrows the Discover Sources drawer to boards for those countries plus worldwide ones, with everything else behind a "show all sources" toggle. Sources you added yourself are never narrowed, and a source you have switched on always stays listed whatever your market - it keeps being scanned, so it must stay somewhere you can see it and switch it off. Remote postings still come through in either mode: a remote job is not "somewhere else". Picking a market now also offers to switch the right sources on: choose Ukraine and Applye asks once whether to turn on DOU.ua and Djinni.co and turn off the boards for other markets, listing the exact hosts it would contact, and changes nothing until you say yes. Worldwide sources stay on and are filtered instead: a job from one of them has to name your market or be open to anyone, so "Remote - US only" no longer counts as a Ukrainian job on the strength of the word "Remote". A board that is itself national vouches for its own postings, because those feeds routinely carry no location field at all.
Seven new built-in Discover sources, all shipped disabled like every other built-in - no request reaches any of them until you turn one on. Four cost zero new parser code, being standard RSS: DOU.ua and Djinni.co (Ukraine), Habr Career (Russia), Jobicy (a remote-first board weighted toward the US). Three needed a new JSON parser each, all probed live before being added: TrudVsem (opendata.trudvsem.ru, the Russian federal labor service's open-data API, 540k+ postings), Arbeitnow (a German-market board), and No Fluff Jobs (a Polish IT board). Every endpoint above is public and needs no key.
Fixed
No Fluff Jobs postings now show their full content in Discover - required skills, nice-to-have skills, the requirements text, the day-to-day responsibilities and the salary - instead of a three-word category/technology/seniority summary. No Fluff Jobs' list endpoint carries no description, so the scan now fetches each posting's detail page (GET /api/posting/{slug}), the same pattern already used for the German federal agency (Arbeitsagentur), under the same shared per-scan detail budget. Every other Discover source already stored a real description, so this was a No Fluff Jobs-specific gap, not a general one. Because the old three-word stub was the only text the detail description, the salary line, skill detection and the raw keyword score all read from, fixing it restores all four at once. Złoty (PLN) salaries are also now detected - the salary extractor previously recognised only euro, pound, dollar, EUR, USD and GBP, and silently missed every PLN posting.
Region-mode "Europe" no longer drops Ukrainian jobs. Ukraine was missing from the list of European countries the region filter matches against, so picking the Europe region silently excluded every Ukrainian posting. Ukraine is on that list now. This is a plain filtering fix, independent of the local markets work above.
With a local market selected, a job with no location at all is now dropped instead of shown. A worldwide source occasionally carries a job with no location field whatsoever, and with no location there is nothing to tie it to your market, so it is filtered out. Sources for the market itself are exempt from this, because their feeds often omit the field entirely and a national board already vouches for its own postings.
An AI request could hang forever with no error and no way out. Every API-mode call used an HTTP client with no timeout of any kind, so a connection that was accepted and then went quiet - a dropped wifi link, a laptop that slept mid-request, a stalled provider - was waited on indefinitely. Nothing downstream could recover: the request never returned, so the screen that was waiting on it sat on "Generating…" or "Scoring…" permanently, with no error to explain it and nothing to retry. This affected every AI feature in API mode (CV tailoring, cover letters, scoring, interview prep), and it is what made Interview Prep's generation appear to hang. Requests now have a bounded budget: 15 seconds to connect, so an unreachable provider is reported in seconds rather than never, and 10 minutes overall to match what CLI bridge mode already enforced - long enough for a genuinely slow answer, finite either way. The same missing timeout was found and fixed in paste-from-link, where a stalled job board could hang the import the same way.
Buttons that sat alone in a Settings card stretched across its full width. "Re-run onboarding" was the visible case. The card is a stretch-aligned column, so any button dropped straight into one filled it; "Send a test prompt" only looked right because it carried a one-off override. Fixed for every such button at once, so a new one cannot inherit the bug.
Built-in sources could silently fail to install if you had added your own sources first. Every built-in-source migration (including Bundesagentur fuer Arbeit, added earlier) hardcoded a low row id and depended on it being free. sources.id is an ordinary autoincrementing column that your own added sources use too, so on an install with a few of those already, a new built-in's id could already be taken - the insert then silently did nothing instead of adding the source, with no error anywhere. Found live against a real database with four custom sources: Bundesagentur fuer Arbeit had never actually been installed despite shipping weeks ago, and the same bug was about to repeat for four of the seven local-market sources above. New built-in sources are now inserted without a fixed id (same as one you add yourself gets) and de-duplicated by URL instead, so this can't recur. Existing installs get Bundesagentur fuer Arbeit and any local-market sources that were silently skipped backfilled automatically on next launch - nothing to do on your end.