Skip to content

[release] v0.100.9#4504

Merged
bekossy merged 102 commits into
mainfrom
release/v0.100.9
Jun 2, 2026
Merged

[release] v0.100.9#4504
bekossy merged 102 commits into
mainfrom
release/v0.100.9

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

New version v0.100.9 in

  • web
    • web/oss
    • web/ee
  • services
  • api
  • sdks
    • sdks/python
  • clients
    • clients/python
    • clients/typescript
  • kubernetes
    • kubernetes/helm

ardaerzin added 30 commits May 29, 2026 13:25
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.
…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.
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.
@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:XS This PR changes 0-9 lines, ignoring generated files. labels Jun 1, 2026
…-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
bekossy and others added 5 commits June 1, 2026 14:55
- 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
bekossy and others added 3 commits June 1, 2026 19:46
…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.
ardaerzin and others added 2 commits June 1, 2026 20:55
- 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
@dosubot dosubot Bot added size:XL This PR changes 500-999 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Jun 2, 2026
@dosubot dosubot Bot added the lgtm This PR has been approved by a maintainer label Jun 2, 2026
@bekossy bekossy merged commit 7ae6a21 into main Jun 2, 2026
28 of 30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm This PR has been approved by a maintainer size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants