Skip to content

[release] v0.127.2 - #7910

Merged
mmabrouk merged 108 commits into
mainfrom
release/v0.127.2
Oct 30, 2026
Merged

mmabrouk merged 108 commits into
mainfrom
release/v0.127.2

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

https://entire.com/gh/agenta-ai/-/trails/71/changes/agenta/71

New version v0.127.2 in

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

Final QA

Deploy steps

  • [feat] Channel limits: choose where an agent answers and whom it answers #7890 Migration oss000000055 (data only) runs with the normal migration job on each stage and region. No manual step. It copies each installation's allowed_senders to its agent bindings. It was checked on a throwaway local database: it works on empty tables, a second run changes nothing, and the downgrade removes only audience. A rollback loses people lists changed after the upgrade. The next release must remove the rollout write of allowed_senders. See the PR for details.

ashrafchowdury and others added 30 commits October 26, 2026 01:19
Comment mode no longer forces the Pages layout, whose text is too small to tap on a phone. The DOCX renderer tags each Word body paragraph and table with its python-docx number, so a comment anchors to the same block in Reflow and in Pages, and the agent reads "paragraph 12" or "table 2". Paragraphs inside content controls stay untagged, as python-docx does not count them. Rebuilds the office viewer bundles.
…e, Alt+M, open a comment from its tile

- Hold the picker while a note is open: no highlight, and a click or Esc in the frame closes the note.
- Alt+M turns comment mode on and off, also from inside a commentable frame; Esc no longer loses to an open tooltip.
- A composer tile opens its file in the Files pane, scrolls to the comment and opens its pin card.
- Staged quotes are square tiles in the same row as attachment cards, named by their file.
…ard dismissal

A send's echo lived in the conversation component's state, so switching
sessions while the first turn warmed up threw it away: coming back showed
the run working with no message until the saved row landed. Echoes now
live in a per-session store outside React, cleared with the session.

Typing over a connection or question card awaited the dismissal before
steering, so the run resumed with the message nowhere on screen. The
steer now takes the dismissal as a precondition: the echo shows at once,
the request waits, and a failed dismissal takes the echo back.
…topped

Typing over a parked card steers past the resumed run, and the runner
ends it with the same cancelled done a Stop produces, so the transcript
said "Stopped" for a run the user never stopped. The runner cannot tell
the two apart; the cancel command can. A Steer's own cancel carries the
key steer:{input id}, so the record ingest stamps cancelledBy: steer on
that turn's cancelled done. The transcript then shows no label and adds
no empty row. A Steer that bound to a Stop already open keeps the Stop's
key and still reads as stopped.
…run from the send

The fold took every agent text except the last as a thinking step, and
held even the last one while the run was open. A message followed by a
call or a card ("I'll wait", "connect Linear below") was never shown.
The split now folds only reasoning and calls; all of the agent's
messages show below the fold, in order. The single-answer machinery
(findAnswer, holdClosedText, endsOnClosedText) existed only to pick the
one text that left the fold, so it is gone.

The turn clock started at the first visible step, so warm-up and the
model's first output were never counted, and any brief stop of the clock
read as a gate, which threw the local count away at settle ("Worked"
with no time). User rows now carry the server's createdAt and the clock
counts from it; a stop is a gate only when the run waited on the
reader.
- Anchor scroll to the final message only once the run is over, so an
  interim message no longer pins the view while work goes on.
- Say "Answering" only while a message is being written, not between
  calls once one exists.
- Mark a gate even when the wait begins after the clock already stopped;
  useTurnClock takes its options as an object.
- Clear a session's echoes on rewind instead of guessing a rewind from a
  falling user-row count, which deleted echoes on a remount.
- A failed card dismissal is not reported as a failed send, and steer
  handles the dismissal promise as soon as it receives it.
- Share steer_cancel_key between the router and the cause check; share
  one opening-turn search for the run id and run start.
useAgentChatQueue now keys its echoes by session; the desktop app's call
was the one caller left without it, which broke the agenta-web build.
…e is open

The outside-press guard swallowed every grid press that closed a note,
so Shift+click no longer extended from the anchor cell.
…teps

With agent messages out of the fold, a turn whose only step was its
lead-in text had an empty fold and lost its waiting status. A run parked
on the reader now keeps its header. The parked-question tests now expect
the lead-in on screen, which is the new layout.
A failed connect can keep its row (Not signed in) while the list never
fetched it, so the table missed it until a page reload.
Group the fields in one panel with a single intro line, a compact
callback field, client ID and secret side by side, and shorter scope help.
…et row after the messages

A server the project has no endpoint for showed the gateway's raw text
("MCP endpoint not found: custom/loops check the endpoint
configuration") in a loud banner above the turn. The notice now
classifies endpoint_not_found and says "<server> isn't set up yet, so
its tools were skipped." It renders as a quiet row after the agent's
messages, like a tool outcome; an expired sign-in keeps its wording and
Reconnect action.
Drop the panel box and the side-by-side client fields; one column reads cleaner in the sheet.
Leading settings icon, trailing caret that turns when open.
…screen

The presets only filled Send as, Name and Prefix, which the fields below
already set; Bearer is the default. Tests now set the fields directly.
Drop the divider above Cancel/Connect and use the modal's footer band without its top border.
Refresh the list only when the journey touched a row, keep the footer
a right-aligned row on phones, restore the Advanced toggle's 44px reach,
link the client fields to the intro help, and drop a dead import and a
redundant wrapper.
… new notice

Open the reconnect journey from the row menu, and read the own-app notice from its constant.
A release now holds its headline features plus improvements and fixes.
A generator builds the in-app changelog.json from the docs entries, so the
dialog no longer drifts from the docs. The dialog is larger, scrolls its
body, and renders each feature's summary as markdown. Docs entries render
improvements and fixes from frontmatter. Seen state moves to a new key so
the switch to version ids does not reopen the dialog for everyone.
…og list

The list page showed only the headline, so an entry read as the whole
release. One quiet line now gives the counts of improvements and fixes
and links to the full lists on the entry page.
Lists the most important user-facing improvements and fixes from the last
10 GitHub releases in each entry's frontmatter. Patch releases go into the
entry of their minor version. v0.122.11 had no entry, so it gets a short
one. The body Fixes sections move into frontmatter so they show once. The
in-app release data is regenerated.
…s New

Each section has a filled header with a square icon, and each item has an
area pill with a coloured dot. The rail keeps a light thread line with
small dots, and shows the version and date above a one-line title, in one
font at normal weight.
…e underline

The version chip now matches inline code: a flat tint, no border, in the
text colour. Read more loses its underline and dims on hover instead.
…e changelog

An entry page shows its version chip next to the date, so the footer Tags
row is gone. The paginator puts an All releases link on the left and the
next entry on the right.
Adds the Cloudflare Stream video to the summary and the full write-up of
seven entries. The release generator now strips video and line-break
markup from the in-app text, and the regenerated data carries the video
ids for the releases in range.
Agenta Product Agent and others added 28 commits October 29, 2026 19:23
…event hint

- Spec scenarios for one pill alone (stored as a text part) and an array field.
- The builder reference no longer mentions include_event in its checklist.
- The automation reference says older deliveries, not this change.

Entire-Checkpoint: 01M64EES9720X73QN7003JMT27
Event automations get a pill composer over the instruction, field cards
from the catalog payload schema, an include-event checkbox and a preview
of the message the agent gets. Run now sends the preview text.

Entire-Checkpoint: 01M64ERHZ1AV2Q0Y69M85VKGA1
… the EE spec

Entire-Checkpoint: 01M64EX794ZT4M492N6GHXCF64
… the preview rules in the spec

Entire-Checkpoint: 01M64GTB160EB5N60Z2PAN9B8M
…n box

The field cards took too much room. Each field is now a small tag that looks like the
pill it adds, in one wrapping row inside the instruction box. The provider's description
moves into a tooltip on hover and keyboard focus. The header row above the cards is gone.
The field list is flat, because the group headers it fed are gone.

Entire-Checkpoint: 01M64J8KYFT5DFYVC0JHZNTXBB
On Kubernetes nothing adds an init process, so tsx is PID 1 and every pi or
pi-acp whose parent exits stays a zombie for the life of the pod. Install tini
in both runner images and make it the ENTRYPOINT. -s keeps it working under
compose's init: true.

Entire-Checkpoint: 01M64JG63C6FPQW2N3PWCG2CGB
…ditor props

The selector-to-label map always gave the same label as the selector itself, so the
preview, the composer and Run now now call selectorLabel(selector). The placeholder and
disabled props had no caller. Helpers only used inside @agenta/entities are no longer
exported.

Entire-Checkpoint: 01M64JVY0KT8REGGPFMXC27ASN
…form

The backend's JSONPath parser rejects a dot step such as $.event.attributes.123, so
that pill reached the agent as empty text while the preview showed the value.

Entire-Checkpoint: 01M64K7G4QDY1MDFDG0Q8HN5VV
… does not add it

The dispatcher adds the event only to a messages list or to empty inputs. For an agent
whose instruction goes under another input key, the preview showed an event block that the
agent never got. addsEventText states the backend rule once for the preview.

Entire-Checkpoint: 01M64KF40JAPC6T01N2ENE1DAX
…eturn null on failure

includesEvent states that a subscription saved without the key reads as on; the draft and
Run now both call it. runNowText now logs a failed deliveries call and returns null, so the
detail button and the list menu no longer each wrap it in the same try/catch. It also uses
addsEventText, the same rule the preview uses.

Entire-Checkpoint: 01M64KRZFD3CMT8B8G8X8GVR3V
Copy put only the visible text on the clipboard, so a pasted pill came back as plain
label text and stopped filling in. Copy and cut now also write the template under an
application/x-agenta-template entry, and paste rebuilds the pills from it. Other apps
still get readable text, with each pill as its label.

Entire-Checkpoint: 01M64M6FWS6FC0RJ9RYQ9AHWW3
…mpty

A pill alone on a field the newest event lacks resolves to empty text. Run now then
opened a new session with nothing to send. Both Run now entry points now start only
when there is text.

Entire-Checkpoint: 01M64MGGKB8YJ6M3GWX7AKZZGC
fix(runner): run the runner under tini so orphaned children get reaped
A search answer that arrived after Refresh could put the old directory state
back and stop the polling. Refresh now moves the search counter, so that late
answer is dropped.
[fix] fix(frontend): Send signed-out visitors to the /m sign-in so new users get the new onboarding
fix(api): include the event in the agent's message for event automations
…icker

feat(frontend): pick event fields for an event automation's instruction
[feat] Channel limits: choose where an agent answers and whom it answers
fix(frontend): channel settings and event automation fixes from v0.127.2 QA

@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.127.2 production deploy went green in US (workflow 29 run 41031806277) and EU (run 41034227538), with the production live check passing in both regions.

@mmabrouk
mmabrouk merged commit b887ac6 into main Oct 30, 2026
92 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.

2 participants