Skip to content

[release] v0.128.8 - #8124

Merged
mmabrouk merged 77 commits into
mainfrom
release/v0.128.8
Nov 5, 2026
Merged

mmabrouk merged 77 commits into
mainfrom
release/v0.128.8

Conversation

@github-actions

@github-actions github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

New version v0.128.8 in

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

Final QA

Staging (EE) and oss ran api 7afeed2a, and web and web-mobile 07c28162. Services and runner stay on 5594f5ca. Every check below passed on both stages unless it says otherwise.

Known gaps, not blockers: with beta on, /w links to a prompt app overview, playground or registry open an empty /m Agent page. The hidden /m New Evaluation wizard shows a user id in the test set version picker.

Deploy steps

  • None in the application. There is no migration. Production must keep AGENTA_BETA_DEVELOPER_MODE unset (it is set only for staging and oss in agenta_cloud).

Agenta Product Agent and others added 26 commits November 4, 2026 21:31
Closing the drawer cleared revisionId even when the URL had none. That
navigation rebuilt the URL from the router query, which lacks the
?revisions= and #pgSnapshot that the playground writes itself, so a
reload lost the connected test set and the drafts. Clearing a param that
is not in the URL is now a no-op.
…ved edits

ConfigureEvaluator now calls useLocalDraftWarning, as the app playground
does.
PanelSessionInspectorButton read executionController.selectors.backendSessionId
inline. Its atom family keys on an object, so each render got a new atom,
and useAtomValue rendered again without end ("Maximum update depth
exceeded" 100 to 400 times per load). The atom is now memoized per panel.
The row menu (Radix) and the antd dialogs both trap the focus. Move,
Rename and Delete opened their dialog while the menu still trapped it,
and the two traps moved the focus back and forth until "Maximum call
stack size exceeded". These items now open the dialog on the next tick.
Retry ran the whole scan again and sent the traces that the failed run had
already added, which made duplicate scenarios in the queue. The hook now
keeps the ids each run added, skips them on Retry, lowers the per-run cap
by their number, and counts them in the toasts.
The tracing filter dropped condition fields it did not know with a log
warning. Live evaluation queries saved by /w and /m hold the trace filter
picker's field names, so a filtered live evaluation scored every trace.

- Read the picker fields as the traces page sends them: attributes.ag.*,
  custom, input_keys and output_keys as attribute keys, is_annotation as
  evaluator reference and feedback conditions, and has_annotation as an
  EXISTS on annotation traces that link to the span.
- Raise on any other field, answer 400 when a query is saved with one, and
  close a live run whose saved filter cannot be applied.
- Wrap the live query in an outer AND on invocation traces, and link a
  root span that arrives in a same-name list, so a live run never reads
  its own evaluator traces back.
A query object that is read page by page is parsed again on each page.
… everywhere

- A feedback field saved as a list (the any-evaluator picker) is one
  filter per field, never a key with brackets in it.
- All has_annotation rows of one AND must hold on the same annotation,
  as in the traces page's single annotation query.
- Analytics and query revision retrieval answer 400 for a filter that
  cannot be applied instead of an empty 200.
…session spans

Four vitest packages ran at once on a 4-CPU runner, each with one worker per CPU.
The render tests ran out of CPU and failed at random on their fixed waits and the
5s timeout. The session spans test also asserted a span count before the spans
had loaded.
… saved

Tracing queries and analytics calls keep today's behaviour: an unknown
condition field is logged and ignored, and analytics keeps its empty
default on a filtering error.

- parse_condition and the SQL filter log an unknown field again instead
  of raising.
- validate_filtering parses a copy and rejects an unknown field. Saving a
  query (create, edit and commit of a revision, simple query create and
  edit) uses it and answers 400. A live run whose saved filter fails it is
  still closed.
- The 400 decorator moves to apis/fastapi/queries/exceptions.py and is
  removed from the analytics routes and from query revision retrieval.
…ect in the /m playground

A chat playground keeps its conversation apart from the test case rows, so
Discard & disconnect left the edited conversation on screen and a later edit
copied it into the new local row. Clear the conversation with the discarded
test case. Also lock that a deselected row's unsaved edit does not come back
after a commit (already true on main: the commit marks hidden saved rows
deleted, and the save discards their drafts).
A new switch under Developer Mode in /m Settings > Preferences. With both on,
Developer Mode publishes no classic-mode gate cookie, so neither app sends the
user to /w, and every developer view is on for that user.
At 390 px the bar let the Evaluator button shrink below its own width, so
the Compare button covered half of it. Below sm both buttons now show their
icon only (the name stays for screen readers), the evaluator chips shrink and
scroll while the button keeps its width, and the app name truncates first.
The switch is now a shared Preferences row, shown under Developer Mode in both
apps while Developer Mode is on. In /w, turning it on clears the classic-mode
cookie and sends the user to the matching /m page.
@coderabbitai

coderabbitai Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration

  • Source mode: Auto
  • Repository: Agenta-AI/agenta
  • Branch: main
  • File: .coderabbit.yaml
  • Commit: f3c944d
  • Layers: Repository YAML (base), Organization UI (inherited)
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ee49768a-76a9-493f-be4d-5eca25df07ce

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

mmabrouk and others added 2 commits November 5, 2026 17:14
A saved query with a malformed id, a 'btwn' without two bounds, a dict operator
on attributes, or a 'not' group with several conditions passed validation. The
tracing query then returned no traces or dropped the condition. Saving such a
query now answers 400.
fix(frontend): web unit tests fail at random from CPU contention
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor Author

Website preview

Preview URL: https://pr-8124-agenta-website-preview.mahmoud-637.workers.dev

Built from 07c28162bce645ac94c3e0eb6ace5c14db307740. This comment updates in place on every push.

mmabrouk and others added 26 commits November 5, 2026 18:51
…load

A browser with no agenta-classic-mode cookie (a new device, or cleared
cookies) reaches /w before the cookie sync runs. The client redirect
acted only when Developer Mode was off, so a beta user stayed in /w on
that first load. It now also acts when beta developer mode is active.
Two failed runs of one evaluator now keep both messages. A failed step that no
column stands for shows its message with the scenario status. A step's error
shows even when the scenario's traces did not load, and the phone card names
the evaluator of each error. Review follow-up on #8125.
A column path with __proto__, constructor or prototype could write into
Object.prototype when Add row built the row; such a column is now left out.
A top-level column with a dot in its name stays one key. A dedup id typed in
the drawer's JSON or YAML view no longer replaces the saved one. Review
follow-up on #8125.
The address now names the trace as soon as the drawer opens and keeps the
asked span while the trace loads, so a reload during loading still restores
both. Back past the trace closes the drawer, and Back to another span of the
same trace shows that span. Review follow-up on #8125.
…ly when inactive

The combined errors of several evaluators now keep only what adds up (type,
sum, count), and their time series adds up per timestamp too. A live run reads
Paused only when its is_active flag is false; a run with no flag keeps its own
status. Review follow-up on #8125.
The user lookup compared members' profile ids with the session's login uid,
so the signed-in author lost the (you) label when the two differ. It now reads
the profile id. Review follow-up on #8125.
… shows it

With the read timeout, every stored read can fail. The save then said
"Annotations updated successfully" without seeing the writes. It now says
the annotations were saved and can take a moment to show. Review follow-up on
#8125.
The run-failure "Buy credits" link opens /w Settings on Billing with
buy_credits=1. The /m route map kept only the tab, and /m opens the pack
picker from Credits, so the picker never opened. Map that link to the
Credits tab with buy_credits=1.
fix(frontend): fix /m view bugs found in live QA
fix(frontend): keep beta developer mode users in /m from /w addresses
A key typed in the Input Key or Output Key row is now read below the
field's path (ag.data.inputs or ag.data.outputs), so a typed `country`
is saved as attributes.ag.data.inputs.country and matches the traces.
The /w live evaluation drawer now names an empty Is Annotation row in
plain words and hides the API's code names when the filters are refused.
When no read showed a save yet, closing the sheet dropped what it saved, and
opening it again could create the same annotation a second time. The writes
now stay known for that span until a read shows them, and the drawer
refreshes then.
The drawer split the row data with plain property writes, so a field named
__proto__ set the object's prototype and the update dropped it. The split now
builds its records with Object.fromEntries: the field stays row data and
Object.prototype is not touched.
Column extraction now carries each column's path segments. A new row under a
key with a dot, such as {"meta.lang": {source: "x"}}, gets
{"meta.lang": {source: ""}} instead of {meta: {lang: {source: ""}}}.
Unsafe path parts stay left out.
…Back

The address keeps an asked span only for the trace it belongs to. A span write
that changes nothing (the drawer showing a span Back restored) no longer pushes
a history entry, so Forward still works. Back to an address with no span
clears the selected span.
fix(frontend): match typed input keys in live evaluation filters
…live evaluation drawer

The drawer showed "Couldn't save the trace filters" for every failure of
the query create call. It now shows it only for a 400 or 422 answer with a
detail, and the generic create-failure text for network, permission and
server errors. The console keeps the detail.
Writes are now kept for the span as soon as the API takes them, not after the
first read gives up, so a sheet closed during that wait or after a partly
failed save still knows them. A read that shows a write drops it only when it
shows that same value, so an older read cannot drop a newer save.
collectColumnPaths called with a parent path and no segments gave paths that
started at the leaf. The segments now default to the parent path's parts.
With no span the drawer falls back to its first span and writes it to the
address. After Back to an address with no span, that write now replaces the
current entry instead of pushing one, so the Forward entry stays.
fix(frontend): show the filter message only for filter errors in the live evaluation drawer
…tring

collectColumnPaths now takes the keys above the object it walks instead of a
dotted parent path, so a caller that starts below the row cannot split a key
like meta.lang into two.
The replace for the drawer's fallback span write is now armed only when
clearing the span changes the span the drawer shows. When the drawer already
showed its first span, nothing is written, and the next pick pushes as usual.
fix(frontend): show the beta developer mode switch only when AGENTA_BETA_DEVELOPER_MODE is on
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor Author

📘 Docs preview

Status ✅ Ready
Preview https://pr-8124-agenta-docs-preview.mahmoud-637.workers.dev/docs/
Inspect Actions run
Commit 07c28162bce645ac94c3e0eb6ace5c14db307740

This comment updates in place on every push.

fix(frontend): follow-up fixes for /m view review comments

@mmabrouk mmabrouk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 The AI agent says: Approved on Mahmoud's instruction after the v0.128.8 production deploy went green in US (run 42108461482) and EU (run 42110396474), and the live checks passed in both regions.

@mmabrouk
mmabrouk merged commit 8d75125 into main Nov 5, 2026
91 of 94 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant