[release] v0.100.9#4504
Merged
Merged
Conversation
changePrimaryNode cleared all output connections when the primary app node was re-selected. Because the primary node is updated in place (its id is preserved), the app -> evaluator edge stayed valid, but clearing it orphaned the still-present evaluator node. connectDownstreamNode then no-ops on the existing evaluator, so the edge was never recreated and the evaluator silently stopped running after the first app-revision change. Preserve connections whose endpoints still reference existing nodes instead of clearing unconditionally.
…tocomplete for API key
…ects Switching projects while on an entity-scoped page (evaluation, playground, testset) kept the old entity id in the URL. Since that entity does not exist in the target project, the user landed on an empty screen. Preserve only the top-level section segment on project switch and drop nested entity ids. All top-level sections have index pages, so the truncated path always resolves. Logic extracted to a pure helper with regression tests.
…lity table The observability table's evaluator metric columns only carry a slug, but evaluatorReferenceAtomFamily resolved names solely through its id-based workflow-revision query. Slug-only callers fell through to a minimal reference that returned name=slug, leaking slugs into the table. Add a slug-resolution branch that matches the slug against the loaded app+evaluator union list (workflowsListQueryStateAtom) to surface the real name, deferring while the list loads. Mirrors appReferenceAtomFamily.
Render archived evaluators through the same single PageLayout as the active Evaluators page, with a Back arrow + title in the standard h-11 header row. Drops the ArchivedEntityLayout wrapper, which double-framed the page (extra p-4 + tall stacked Back/title/subtitle header) and pushed the table ~60-70px lower, causing a visible vertical shift when toggling between Evaluators and Archived.
Token-variable foundation + antd darkAlgorithm + hex codemod. - ThemeContextProvider: darkAlgorithm + brand seed (primary = logo yellow #f2f25c, dark button text); strips light color tokens from the antd config so they don't leak into dark. - theme-variables.css: :root/.dark CSS-variable layer for antd semantic tokens, zinc/gray/ag-gray scales, and codemod hex vars. Light values are byte-identical to the prior hardcoded values; only .dark differs. - tailwind.config: darkMode "selector"; named scales point at var(--ag-*). - Codemod routed ~165 files' arbitrary [#hex] + bg-white through CSS vars. - Dark variants for editor/code/eval CSS + globals; JSS literals -> theme.*; inline-style fixes; resize-handle + footer + workflow type chips. - FOUC inline script in _document; Light/System/Dark toggle in the top bar.
Enable antd v6 CSS-variable mode and derive the dark schema from antd's
design tokens, so the whole app tunes from one source.
- ThemeContextProvider: enable cssVar {key: "agenta"} (both modes) + add the
`agenta` root class on <html> so the global --ant-* tokens resolve app-wide.
- theme-variables.css: .dark values now reference var(--ant-color-*) (lossless;
the hand-authored dark values equalled antd's). :root/light untouched.
- Chip/badge palette maps routed to antd preset palette vars (var(--ant-*-1/6/3)),
which adapt to dark automatically: TypeChip, observability spanTypeStyles,
PRESET_COLOR_MAP (fixes PlaygroundHeader + evaluator label chips), and
referenceColors (mapped to nearest antd preset — minor light hue shift).
- Footer: add top border to separate it from content (colorBorderSecondary). - Breadcrumb top bar: borderBottom #eaeff5 -> colorBorderSecondary so the divider is subtle in dark instead of a bright white line. - "Have a question?" help cards: set color: colorText so the <a> text + icons stop inheriting antd's colorLink (blue in dark). - referenceColors: route reference-tag tones through per-tone CSS vars (light = exact Untitled-UI hex, dark = matching antd preset) — now light-lossless and dark-adaptive. - ThemeContextProvider: rename darkSeed -> DARK_TOKEN_OVERRIDES with guidance as the single dark-schema tuning knob.
Import-graph reachability analysis over oss/src + ee/src (from page entries) found these unreachable: - TestcasesTableNew/components/TestcaseEditDrawer/useTreeStyles.ts — orphan createUseStyles hook, imported by nothing. - TestcasesTableNew/components/TestcaseEditDrawerContent.tsx — backwards-compat re-export shim; the live consumer imports .../TestcaseEditDrawer/index directly.
Convert 15 small createUseStyles components to Tailwind classes (per the JSS-to-Tailwind inventory). Visual output preserved in light + dark: theme color tokens -> var-backed token classes (bg-colorBgContainer, text-colorText, border-colorBorder, etc.), antd token sizing -> exact Tailwind/arbitrary values, and `& .ant-*`/nth-child selectors -> arbitrary variants. 6 now-empty assets/styles.ts deleted. CustomTreeComponent skipped (pseudo-element tree connectors — Tier 2). tsc unchanged (541 src baseline); eslint clean.
23 of 29 Tier-2 createUseStyles components converted to Tailwind, preserving light + dark output: antd-component overrides -> `[&_.ant-*]:` arbitrary variants, prop-driven styles -> clsx conditionals, theme tokens -> var-backed token classes. 6 standalone assets/styles.ts deleted. Skipped (left as JSS, for a follow-up): SetupTracingModal, NewEvaluation, auth, DeploymentCard styles (reference antd tokens with no --ag-* var yet), app-management/assets (prop-driven non-token pair), CustomTreeComponent (::before tree-connector pseudo-elements). tsc unchanged (oss 541 / ee 541 baselines); eslint clean.
…ror-text/primary-text)
Clears the 4 Tier-2 files that were skipped for lack of a theme-aware token. - Add 5 missing --ag-* token vars (colorError, colorErrorBorder, colorBgContainerDisabled, colorInfoBg, controlItemBgActive) plus a var-backed boxShadowTertiary exposed as the shadow-tertiary utility. - Migrate SetupTracingModal, NewEvaluation, auth (SendOTP/ShowErrorMessage) and DeploymentCard from createUseStyles to Tailwind; delete 3 styles files. - SetupTracingModal exports its modal-chrome class constants; SetupEvaluationModal and GetStarted consume them instead of the removed useStyles. Light output preserved; oss tsc src baseline unchanged (541).
EnvironmentTag set its background/text/border via inline hex from environmentColors, so the pills stayed bright in dark mode. Route them through new --ag-env-* CSS vars (light = the same hex, dark = matching antd presets) so they adapt like the reference-tag chips. Light output unchanged.
The dark ConfigProvider passed only colorant Button overrides and dropped the ~60 per-component structural overrides from antd-themeConfig.json that light mode spreads into its token. Components fell back to derived globals, so tags, tabs, selects, badges etc. rendered smaller in dark than light (e.g. Tag at fontSizeSM 10 instead of the configured 12). Spread the same component overrides into the dark token, color-stripped per component, so structural sizing matches light while darkAlgorithm still owns dark colors.
CodeBlock hardcoded the github-light Shiki theme, whose per-token inline colors render as bright boxed tokens on the dark surface (e.g. the "How to use API" drawer and the endpoints page). Select github-dark when the app theme is dark and re-key the composer so Shiki re-tokenizes on toggle.
Follow-up to the previous commit: selecting github-dark for the CodeBlock was not enough because the Shiki tokenizer reads the theme from the CodeNode (getTheme()), not from the loaded registry. The node was created without a theme, so tokens kept the light palette — whose #fff background renders as the white boxes behind each token in dark mode. Pass the theme into $createCodeNode(language, theme) so tokenization uses it. Verified via shiki: github-light bg=#fff, github-dark bg=#24292e.
TokenNode paints placeholder chips ({{...}}, Jinja blocks/comments, invalid
state) via inline JS style, which the hex codemod can't reach, so the light
backgrounds (#e2e8f0, #fef2f2) stayed bright in dark mode. Route them through
--ag-c-* vars; add the four missing hexes (A855F7, FEF2F2, B91C1C, F87171) to
theme-variables.css with dark-adapted values. Light output unchanged.
In dark mode the sidebar and content area both resolved to ~#141414, so the layout read as one flat panel separated only by borders. Add a dedicated --ag-sidebar-bg (light #fff, unchanged; dark #0d0d0d, one step darker than the content surface) and point the Sider at it, so the nav rail recedes as chrome. Light mode untouched.
Follow-up to the darker sidebar: the antd Menu painted its own colorBgContainer (#141414), which now read as a lighter band against the #0d0d0d sidebar. Make the menu (and inline submenus) transparent so it inherits the sidebar surface. No-op in light mode (sidebar is white behind it).
Pre-auth routes render straight on <body>, which had no background, so in dark mode they showed white behind dark antd controls. Add a dark <body> background (scoped to .dark, so light is untouched) which covers all bare routes, and make the auth page's logo and panel shadow theme-aware (swap to the dark-accent logo and a neutral shadow in dark). Product-mockup/grid imagery stays light as intentional showcase art. Light mode unchanged.
New visitors now follow their OS color-scheme preference instead of always starting in light. Update both the useLocalStorage default in ThemeContextProvider and the pre-paint FOUC script in _document so they agree on the empty-storage case (no flash). Users who explicitly pick Light/Dark are unaffected.
…-table-shows-evaluator-slugs-instead-of-names [FE Fix]: Show evaluator names instead of slugs in observability table
…ge-layout-fix [FE Fix]: Align archived evaluators page layout with active page
…ts-keeps-evaluation-or-playground-in-url
- RunOverlay: the loading scrim used bg-white/90 with no dark handling, washing the panel white in dark. Add dark:bg-[#141414]/90. - Metric/Frequency chart tooltips: bg-white/95 with text-gray-900. gray-900 inverts to colorText (light) in dark, so the tooltip was a white box with invisible light text. Add dark elevated bg + subtle ring; the text then reads correctly. Light unchanged.
Crisp renders in a cross-origin iframe with no runtime light/dark API, so the chatbox theme can't be bound to our in-app toggle from code. Wire the one lever the SDK exposes — setColorTheme — to the app theme: a dark (Black) accent in dark mode, dashboard default in light, so the launcher/accent is less out-of-place. Includes a TODO to enable chatbox dark mode in the Crisp dashboard for the chat window itself (system-scheme based; not bindable to our toggle).
…jects-keeps-evaluation-or-playground-in-url [FE Fix]: Correctly handle project changes from entity scoped pages
…able-improvements [FE fix] Providers and models table improvements
…scroll diagnostics
- [P1] Restore web/{oss,ee} evaluators/playground/index.tsx (recovered from main).
Deleting them removed the /evaluators/playground route while live callers
(EvaluatorSection, useEvaluatorNavigation, annotation ConfigurationView) still
link to it, 404-ing automatic-evaluator references.
- [P3] Remove the two temporary console.warn scroll diagnostics in
InfiniteVirtualTable/useScrollConfig that would ship to production and spam the
console on every virtual-table mount/resize.
- New-testcase info banner used bg-green-50/border-green-200/text-green-700 (green isn't var-backed), so it was a glaring light box in dark. Add dark: green-tint + light text. - Evaluator-type tags (Exact Match/Regex Test/etc.) used static -100 hue pills (sky/orange/blue/violet/amber not var-backed) → light pills in dark. Add dark: dark-tint + light-text variants per hue. - Playground compare-mode Generations header used control-item-bg-active, which derives from colorPrimary (brand yellow in dark) → olive, inconsistent with the single-mode header. Fall back to the neutral single-mode surface in dark. All scoped dark: only; light unchanged.
…liability [FE Fix]: Keep evaluator chain connected on app-revision change
[FE Feat] Dark Mode
bekossy
approved these changes
Jun 2, 2026
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.
New version v0.100.9 in