Repository navigation
Frontend redesign: new UI across every screen - #23
Merged
Merged
Conversation
…mponents, sidebar Colour tokens as CSS variables with a dark set under .dark, wired into Tailwind. Geist and Geist Mono load from the bundled fonts; an inline script applies the saved theme (light, dark or system) before first paint. Shared pieces for the screens: buttons, cards, chips, status chips, fit ring, risk bar, company mark, fact and date tiles, tabs, slide-over and step tracker, plus stroke icons that replace the Unicode glyphs. The new sidebar adds Agent review (with a count of applications waiting), the persona strength card, the user row and the theme switch. A small shared cache lets the sidebar and pages share API reads.
Greeting with what needs attention, the paused-before-submit card for applications waiting for review, follow-ups due this week (applied a week ago and still no reply), four KPI cards with a ten-week history, the pipeline by stage, AI exposure of your skills and the top matches from the feed. The old quick-action cards are gone; the sidebar covers them. Agent activity and the next-interview strip wait on data the API doesn't keep yet.
A paste-a-link field in the top bar replaces the Analyze toggle. The search band takes role or skill, location, experience asked and a two-thumb salary range. Filters move to a column of real checkboxes and radios (sponsorship, work setting, level, degree, clearance), behind a Filters button on narrower screens. Each card shows the match ring, sponsorship and requirement chips, and the salary. Beside the list, a preview of the selected job: fact tiles, match, sponsorship and AI exposure, with Start application, Full details and Not for me (tracked as Discarded, so it leaves the feed). The fit analysis is an LLM call, so it runs only on Check my fit and is kept for the session. Salary, hybrid and clearance are matched on the loaded page until the API takes them. Fetching, discovery polling and infinite scroll are unchanged.
The job page gets a header card with the posting link, Save, Discard and four fact tiles (salary, setting, experience asked, visa sponsorship), and a five-step tracker over the existing flow: fit analysis, tailored CV, cover letter, agent fills form, you review and submit. Done steps can be revisited. The document editor becomes collapsible section cards beside the paper preview, with Regenerate and Download PDF. The agent's browser now opens inline at step five: a browser frame around the live screenshot (takeover works as before), the agent's notes as a timeline, and a sticky bar with Skip, I submitted it myself and Submit, which send skip, done and submit. Leaving the page warns first, and unmounting cancels the stream so the agent's browser closes. The right rail holds the fit card, the sponsorship card (with They sponsor and They don't), and the role's AI exposure. Below the steps, About the role has Description and Company tabs. Previous and Next match walk the feed's order. A cached Check my fit result from the feed is reused instead of re-running.
A new /review page lists the applications the agent filled and stopped on (Pending Review) as tabs, with how long the oldest has waited. The API keeps no browser sessions between page loads, so the page reopens the job workspace to run the agent again, and records Skip (Discarded) or I submitted it myself (Applied) directly. The review layout and browser frame are shared with step five of the job workspace.
Applications become a board of six stage columns (Rejected and Discarded show on request), with drag and drop between columns to change status, a search box, and Needs attention quick filters: needs review, follow-up due (applied 7 to 13 days ago, no change since) and no reply in 14+ days. Applied cards show how long they have sat there, amber past two weeks. A card opens a slide-over (focus trapped, Esc closes) with the status select as the keyboard alternative to dragging, facts, a timeline from the dates the tracker keeps, notes, gaps to prepare for and the posting link. The table view lists the same rows with status chips.
Three summary cards (your skill mix on a Low / Medium / High scale, the first target role, the most resilient skill), a skill-by-skill table with level filters, persona skill groups and the reason for each score, and the roadmap as six numbered cards with a Start with box. Rescore my skills re-runs the scoring; the last roadmap is kept in this browser per account so it survives a reload. Target roles themselves aren't scored by the API yet, and the card says so.
Digital Twin Persona becomes Persona. The single long form is split into thirteen sections in a left list, each marked complete, needs attention or optional, with the open section kept in the URL hash. Edits save themselves (a debounced PUT /persona, queued so saves never overlap, flushed when you leave); the top bar shows the save state and holds the Export menu. Roles, education, projects, certifications and STAR stories are cards with Edit and Remove (with undo); skills are groups of removable chips. The header shows persona strength with the top two things to add, scored on the client, and the page closes with what the AI never sees. The professional summary, which the old form had no field for, is now editable under Identity.
Sign in and sign up share a split screen: the form on the left, what Windrush does on the right. Sign up asks for a name too and saves it to the new persona (the signup endpoint takes only email and password). Forgot password stays hidden until there is a reset flow. Onboarding gets a top bar with three-step progress and Finish later. Step one is a PDF drop zone that turns into a result card once the CV is read (file name, counts of roles, skills, degrees and projects, Use a different file). Step two is the job-board login; step three takes job titles and locations as chips, a work setting and whether you need visa sponsorship. It now starts from the saved persona, so finishing never wipes existing data.
Selectors follow the new screens (labelled fields, filter checkboxes, the experience select, Clear all), and every signed-in page now mocks the persona and applications the sidebar reads. New tests: the persona autosaves comma-typed titles and locations as lists, a status change in the application panel is saved and Esc closes it, the review queue records an application you sent yourself, and the theme switch applies and remembers dark mode.
Only ask for target titles when the persona has none; otherwise say discovery will look again.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Rebuilds the Next.js frontend to the new design (warm-neutral ground, white cards, one teal accent, Geist and Geist Mono), screen by screen, following the build order in the design handoff. The API is unchanged; where a screen needs data the API doesn't return yet, it uses a documented fallback.
/review): the applications waiting for review. With no session registry in the API, it reopens the workspace to run the agent again, or records Skip / I submitted it myself.Notes
.eslintrc.json(next/core-web-vitals), sonpm run lintruns without prompting.Testing
npm run buildandnpm run lintpass with no warnings.