Skip to content

feat(frontend): redesign the sign-in screen for the agent workspace positioning - #5386

Merged
mmabrouk merged 3 commits into
release/v0.105.7from
feat/signin-redesign
Jul 20, 2026
Merged

feat(frontend): redesign the sign-in screen for the agent workspace positioning#5386
mmabrouk merged 3 commits into
release/v0.105.7from
feat/signin-redesign

Conversation

@mmabrouk

@mmabrouk mmabrouk commented Jul 18, 2026

Copy link
Copy Markdown
Member

The problem

The sign-in / sign-up screen still pitched the old product. The heading said "Welcome to Agenta AI", the sub-line read "Your All-In-One LLM Development Platform. Collaborate on prompts, evaluate, and monitor LLM apps with confidence", the marketing panel talked about "Build Robust AI Applications", and the browser tab said "Agenta: The LLMOps platform." Everything a new or returning user saw first contradicted the new positioning: the open-source workspace for building and running agents.

This is a visual restyle plus one small client-side feature (remembering the last-used sign-in method). No auth behavior changed.

Before / after

Before After
before after

The flow

qa gif

States

The screen now serves new and returning users from one layout: auth form left, marketing panel right. Three states, driven entirely client-side by a remembered last-used method.

First visit (2a) Returning · last used OAuth (2b) Returning · last used email (3a)
2a 2b 3a
Dark mode Mobile (~390px)
dark mobile

What changed

  • Copy. Headline "Welcome to Agenta" (returning: "Welcome back"), sub-line "Sign in or create an account." on first visit only. Marketing panel: "Build agents that automate your work" plus three feature rows — describe the work in chat, connect the apps you use, run them in the background on a schedule or event. "Open source · GitHub" chip links to the repo. All LLMOps / "Agenta AI" naming removed.
  • Page title (global, stale everywhere): "Agenta: The LLMOps platform." → "Agenta – the open-source workspace for building and running agents". Changed in both the OSS GlobalScripts and the EE CloudScripts title strings.
  • Last-used method memory (new, client-side only). After a successful auth we write localStorage.lastAuthMethod ("email" for email flows, otherwise the OIDC provider id). Presence flips the screen into the "Welcome back" state and promotes the last-used method with a yellow keycap + "Last used" tag; absence is the first-visit state. Written through the single shared handleAuthSuccess funnel (covers email password, OTP, and the OAuth callback, where the provider id is derived from the callback path). Generalizes to any configured provider, not just Google/GitHub. Small helper module assets/lastAuthMethod.ts with a unit test.
  • Region pills. The data-residency selector is restyled as the design's pills. Behavior is unchanged: it renders only on cloud hostnames (shouldShowRegionSelector()) and clicking the other region navigates to the sibling host exactly as before. No "Last used" tag on the pills, and no new region state.
  • One yellow element per screen — always the last-used (or default email) action: email Continue in 2a/3a, the promoted provider button in 2b.

Display font

Headlines render in Inter by default on every install — weighted (600) with slightly tighter tracking so they read as an intentional choice, not a fallback. Nothing decorative ships in the repo.

An optional display font is a deploy-time setting: point NEXT_PUBLIC_AGENTA_DISPLAY_FONT_URL (same dynamicEnv / __env.js route as the other frontend config, wired through entrypoint.sh) at a woff2 and the auth page injects an @font-face for the "Agenta Display" family and switches the headlines to the lighter display treatment (weight 300). Unset, the family falls through to Inter and no font request is made. Proof that the injection path works, with a font served locally (not committed):

display font proof

Flows preserved unchanged (reskinned only)

Email-first discovery (POST /auth/discover → reveal password / OTP / SSO), SSO buttons + auto-redirect, invite flows + the invite-email-mismatch warning, the auth_error=upgrade_required alert + org switcher (social still shown, email hidden), Turnstile, and the passwordless-demo pre-sent-OTP jump. These change appearance where they surface, not behavior.

QA

Verified live on the EE dev stack at 1440×900 in the default (Inter, no font URL) state:

  • First visit (2a), returning-OAuth (2b), returning-email (3a) — light and dark, plus mobile at 390px (panel drops, form centers).
  • Config path proven: with the font URL set, the root gets data-display-font="serif", an @font-face is injected, the woff2 loads (200), and the headlines compute to weight 300 in the display family. With it unset: no data attribute, no @font-face, no font request, no console error.
  • Real end-to-end login (from a prior run, unaffected by this change): a genuine email/password signup landed in the app and wrote localStorage.lastAuthMethod = "email"; after sign-out the screen showed the returning "Welcome back" + promoted-email state.
  • Email discovery still reveals the password method end to end (/auth/discover → 200).

Follow-ups / notes

  • Dark mode is implemented (the auth page participates in the app theme), not deferred.
  • Returning-OAuth (2b) real round-trip is untested headlessly — a real OAuth redirect isn't possible in this harness. The 2b state was verified by seeding lastAuthMethod, and its write path is the same shared handleAuthSuccess funnel the email path uses (verified live).
  • OSS email-only degradation was verified by code path (the OSS and EE auth page is one shared component; with no OAuth configured socialAvailable is false, leaving residency + email only).
  • No docs page screenshots or describes the auth screen, so nothing to update there.

@dosubot dosubot Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label Jul 18, 2026
@vercel

vercel Bot commented Jul 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agenta-documentation Ready Ready Preview, Comment Jul 20, 2026 12:53pm

Request Review

@mmabrouk

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The PR redesigns the authentication experience, remembers the last successful authentication method, promotes returning sign-in options, adds scoped auth styling and display-font configuration, and updates document titles.

Changes

Authentication redesign

Layer / File(s) Summary
Remembered authentication method
web/oss/src/components/pages/auth/assets/lastAuthMethod.ts, web/oss/src/components/pages/auth/assets/lastAuthMethod.test.ts
Adds SSR-safe localStorage helpers for reading, writing, and identifying the last authentication method, with Vitest coverage.
Authentication success metadata
web/oss/src/hooks/usePostAuthRedirect.ts, web/oss/src/components/pages/auth/EmailPasswordAuth/index.tsx, web/oss/src/components/pages/auth/EmailPasswordSignIn/index.tsx, web/oss/src/components/pages/auth/SendOTP/index.tsx, web/oss/src/pages/auth/callback/[[...callback]].tsx
Email, OTP, and callback success paths pass authentication metadata to post-auth handling, which persists it.
Redesigned authentication components
web/oss/src/components/pages/auth/{EmailFirst,SocialAuth,RegionSelector,SideBanner}/*, web/oss/src/components/pages/auth/assets/types.d.ts, web/oss/src/styles/auth.css, web/oss/src/styles/globals.css
Replaces selected Ant Design controls with native controls, adds promoted and last-used states, updates region semantics, refreshes the side banner, and introduces scoped light/dark auth styling.
Returning-visit auth page
web/oss/src/pages/auth/[[...path]].tsx, web/oss/src/lib/helpers/dynamicEnv.ts, web/entrypoint.sh
Reads the remembered method, promotes the matching provider or email flow, reorganizes entry rendering, and exposes display-font configuration through runtime environment values.

Branding titles

Layer / File(s) Summary
Updated document titles
web/ee/src/components/Scripts/assets/CloudScripts.tsx, web/oss/src/components/Scripts/GlobalScripts.tsx
Changes the rendered document title to the new open-source workspace wording.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Visitor
  participant AuthPage
  participant Storage
  participant AuthProvider
  participant PostAuth
  Visitor->>AuthPage: Open authentication page
  AuthPage->>Storage: Read last authentication method
  Storage-->>AuthPage: Return email or provider id
  AuthPage->>AuthProvider: Render promoted authentication option
  Visitor->>AuthProvider: Complete authentication
  AuthProvider->>PostAuth: Submit authMethod
  PostAuth->>Storage: Persist last authentication method
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main change: redesigning the sign-in screen for the agent workspace positioning.
Description check ✅ Passed The description is detailed and directly matches the auth screen redesign, last-used method memory, and display-font changes.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/signin-redesign

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (1)
web/oss/src/components/pages/auth/RegionSelector/index.tsx (1)

50-50: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Replace static inline icon sizes with Tailwind utilities.

  • web/oss/src/components/pages/auth/RegionSelector/index.tsx#L50-L50: replace style={{fontSize: 14}} with className="text-sm".
  • web/oss/src/components/pages/auth/SideBanner/index.tsx#L22-L22: replace style={{fontSize: 13}} with className="text-[13px]".

As per coding guidelines, “Prefer Tailwind utility classes over CSS-in-JS, separate CSS files, inline styles, react-jss, or styled-components.”

Source: Coding guidelines


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c91b865e-4ec2-49cf-83dc-00be5171d3c6

📥 Commits

Reviewing files that changed from the base of the PR and between 3b0c0cb and e077dbe.

⛔ Files ignored due to path filters (14)
  • web/ee/public/assets/fonts/Fraunces-VF.woff2 is excluded by !**/*.woff2
  • web/ee/public/assets/logos/Agenta-logo-full-dark-accent.svg is excluded by !**/*.svg
  • web/ee/public/assets/logos/Agenta-logo-full-dark.svg is excluded by !**/*.svg
  • web/ee/public/assets/logos/Agenta-logo-full-light.svg is excluded by !**/*.svg
  • web/ee/public/assets/logos/Agenta-symbol-dark-accent.svg is excluded by !**/*.svg
  • web/ee/public/assets/logos/Agenta-symbol-dark.svg is excluded by !**/*.svg
  • web/ee/public/assets/logos/Agenta-symbol-light.svg is excluded by !**/*.svg
  • web/oss/public/assets/fonts/Fraunces-VF.woff2 is excluded by !**/*.woff2
  • web/oss/public/assets/logos/Agenta-logo-full-dark-accent.svg is excluded by !**/*.svg
  • web/oss/public/assets/logos/Agenta-logo-full-dark.svg is excluded by !**/*.svg
  • web/oss/public/assets/logos/Agenta-logo-full-light.svg is excluded by !**/*.svg
  • web/oss/public/assets/logos/Agenta-symbol-dark-accent.svg is excluded by !**/*.svg
  • web/oss/public/assets/logos/Agenta-symbol-dark.svg is excluded by !**/*.svg
  • web/oss/public/assets/logos/Agenta-symbol-light.svg is excluded by !**/*.svg
📒 Files selected for processing (19)
  • web/ee/public/assets/fonts/OFL.txt
  • web/ee/src/components/Scripts/assets/CloudScripts.tsx
  • web/oss/public/assets/fonts/OFL.txt
  • web/oss/src/components/Scripts/GlobalScripts.tsx
  • web/oss/src/components/pages/auth/EmailFirst/index.tsx
  • web/oss/src/components/pages/auth/EmailPasswordAuth/index.tsx
  • web/oss/src/components/pages/auth/EmailPasswordSignIn/index.tsx
  • web/oss/src/components/pages/auth/RegionSelector/index.tsx
  • web/oss/src/components/pages/auth/SendOTP/index.tsx
  • web/oss/src/components/pages/auth/SideBanner/index.tsx
  • web/oss/src/components/pages/auth/SocialAuth/index.tsx
  • web/oss/src/components/pages/auth/assets/lastAuthMethod.test.ts
  • web/oss/src/components/pages/auth/assets/lastAuthMethod.ts
  • web/oss/src/components/pages/auth/assets/types.d.ts
  • web/oss/src/hooks/usePostAuthRedirect.ts
  • web/oss/src/pages/auth/[[...path]].tsx
  • web/oss/src/pages/auth/callback/[[...callback]].tsx
  • web/oss/src/styles/auth.css
  • web/oss/src/styles/globals.css

Comment thread web/oss/src/components/pages/auth/EmailFirst/index.tsx Outdated
Comment thread web/oss/src/pages/auth/[[...path]].tsx
Comment thread web/oss/src/pages/auth/[[...path]].tsx Outdated
Comment thread web/oss/src/styles/auth.css Outdated
Comment thread web/oss/src/styles/auth.css
@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Railway Preview Environment

Status Destroyed (PR closed)

Updated at 2026-07-20T14:51:05.042Z

@mmabrouk

Copy link
Copy Markdown
Member Author

Updated per review: removed the vendored display font entirely (no decorative font ships in the repo). Headlines now render in Inter by default (weighted so they look intentional), and the display font is an optional deploy-time setting — set NEXT_PUBLIC_AGENTA_DISPLAY_FONT_URL to a woff2 and the page injects an @font-face for the Agenta Display family + switches to the lighter treatment. New commit 0820a5d on the same lane; after images + GIF now show the Inter default. @coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

The first Comment image shows the prior light, split-panel sign-in page: “Welcome to Agenta AI” and Google/email controls on the left, plus “Build Robust AI Applications” with a product mockup on the right. The second Comment image shows the updated Inter-based design: a compact “Welcome to Agenta” form, yellow Continue button, and a bordered marketing panel with the “Open source · GitHub” chip, “Build agents that automate your work” headline, and three feature rows.

@mmabrouk, I’ll review commit 0820a5d, focusing on complete removal of the vendored font, the optional NEXT_PUBLIC_AGENTA_DISPLAY_FONT_URL loading path, and the updated Inter-default rendering.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (3)
web/oss/src/styles/auth.css (1)

12-34: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Prefer Tailwind utility classes over separate CSS classes.

As per coding guidelines, prefer Tailwind utility classes over CSS-in-JS, separate CSS files, or inline styles. Consider migrating these typography styles directly to the React components using Tailwind utility classes (e.g., font-[...] text-[34px] leading-[40px] font-semibold).

Source: Coding guidelines

web/oss/src/pages/auth/[[...path]].tsx (2)

439-445: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Render the <style> content as children.

React can safely handle string children inside <style> tags. This approach clears the static analysis warning by avoiding dangerouslySetInnerHTML.

♻️ Proposed refactor
-            {displayFontUrl && (
-                <style
-                    dangerouslySetInnerHTML={{
-                        __html: `@font-face{font-family:"Agenta Display";src:url("${displayFontUrl}");font-weight:300;font-display:swap;}`,
-                    }}
-                />
-            )}
+            {displayFontUrl && (
+                <style>{`@font-face{font-family:"Agenta Display";src:url("${displayFontUrl}");font-weight:300;font-display:swap;}`}</style>
+            )}

Source: Linters/SAST tools


429-431: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Condense in-code comments to a single line.

As per coding guidelines, keep in-code comments to at most one short line; use longer comments only for genuinely surprising constraints. Please condense or remove these comments if the code is self-explanatory.

  • web/oss/src/pages/auth/[[...path]].tsx#L429-L431: Condense the entry screen logic comment.
  • web/oss/src/lib/helpers/dynamicEnv.ts#L109-L110: Condense the display font URL comment.

Source: Coding guidelines


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 81ebd0eb-b3e9-46c0-9069-05d296dc6571

📥 Commits

Reviewing files that changed from the base of the PR and between e077dbe and 0820a5d.

📒 Files selected for processing (5)
  • web/entrypoint.sh
  • web/oss/src/components/pages/auth/SideBanner/index.tsx
  • web/oss/src/lib/helpers/dynamicEnv.ts
  • web/oss/src/pages/auth/[[...path]].tsx
  • web/oss/src/styles/auth.css
🚧 Files skipped from review as they are similar to previous changes (1)
  • web/oss/src/components/pages/auth/SideBanner/index.tsx

@mmabrouk
mmabrouk changed the base branch from main to release/v0.105.6 July 19, 2026 14:53

@mmabrouk mmabrouk left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm. should go in the same release with the ui improvements

@ashrafchowdury

Copy link
Copy Markdown
Contributor

I really loved the design; it looks refreshing.

However, I think it's designed for tech users; you know, the moment they see this they will understand, but what about the non-tech users?? I feel like the jargon will not click for non-tech users. "Build" is a tech word = something that you have to build, something like that

Maybe something like this, here the points are still scoped for workspace, if we can go creative on a point that would be helpful.

Creative, I mean, like workflow for maybe marketing or for finance people
image

- EmailFirst: bind the Input directly to the named Form.Item so the form
  captures typed email (relative wrapper moved outside for the Last used tag)
- auth page: gate the promoted-provider divider so it only renders when
  something follows
- auth page: drop the undeclared icon prop from the SSO buttons and simplify
  the redundant ssoProvidersToShow copy
- RegionSelector/SideBanner: inline font-size styles to Tailwind classes
- auth page: font-face style via plain <style> child; condense comments

Claude-Session: https://claude.ai/code/session_01LxYUNUysinF3egoKB1CH69
@mmabrouk
mmabrouk force-pushed the feat/signin-redesign branch from 0820a5d to df0e487 Compare July 20, 2026 12:51
@mmabrouk

Copy link
Copy Markdown
Member Author

Addressed the CodeRabbit review in df0e487. The real bug is fixed: the email Form.Item now wraps the Input directly, so Ant Design binds the field and submission uses what the user typed rather than only the seeded value. I also gated the promoted-provider "or" divider so it renders only when something follows, and dropped the undeclared icon prop from the SSO buttons (simplifying away the redundant ssoProvidersToShow copy). The palette suggestion is declined: the auth screen intentionally uses a self-contained, auth-scoped brand token set rather than the shared product theme, so those marketing-only colors should not go into palette.ts. The Tailwind-vs-CSS nitpick is partially applied — the one-off inline fontSize styles are now Tailwind classes, but the scoped auth.css token block stays as the deliberate brand system.

@mmabrouk

Copy link
Copy Markdown
Member Author

@ashrafchowdury thanks for the feedback. I think however our first ICP is actually technical / semi-technical. They need to understand what an agent it, what automation is, etc.. We might go in the long run to less technical audience, but for the moment we expect a minimum knownledge. This especially true for early adopters, which can't by definition be your lambda users who never used agents. The should ot the minimum have used claude or openai cowork and a parallel platform to be able to navigate ours. Especially since it is still unpolished to some degree, and has technical parts.

Second, this is obviously the signup page. The user would have read the website / github readme copy before coming here, and hopefully they are not making the decision at this moment.

Thanks again for the feedback, keep it coming. I like btw the copy Automate work by simply describing it I will certainly reuse it in many other places.

@mmabrouk
mmabrouk changed the base branch from release/v0.105.6 to release/v0.105.7 July 20, 2026 14:49
@mmabrouk
mmabrouk merged commit b95a3ce into release/v0.105.7 Jul 20, 2026
57 of 60 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

frontend size:XXL This PR changes 1000+ lines, ignoring generated files. ui ux

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants