Repository navigation
v0.44.0
Changed
-
Vendors
@artooi/ag-ui-web-component0.39.0, and renders the signed-in
user's name asuser-name. UnderPLACEMENT="page", an empty conversation
now greets the user as Hello, {name} with the composer centred beneath it,
and the composer slides to its usual place when the first message is sent.
The name is the one the admin's own header welcomes them by --
get_short_name(), elseget_username()-- so the page never greets
somebody differently from the header above it. It is presentation only: the
component never sends it and scopes nothing by it, unlikeuser-key. The
default floating panel,"sidebar"and"embedded"show no greeting, so for
them the attribute changes nothing.What else 0.39.0 changes in the admin, with nothing to configure:
- Every tool call gets an answer before the next request. A call cut off by
Stop, or naming a tool the page does not have, used to go out with no
result, which some model providers refuse; it is now answered as not
finished, and its card says so rather than claiming it was done. (A call
cut off by a run error was already answered by django-ag-ui.) - A reload while a tool call waits for approval restores that card as not
finished, where it showed a spinner that never stopped. - The conversation list slides over the transcript at every width, where a
wide"page"panel used to dock it beside the transcript and push the
conversation sideways. - Under
"sidebar"and"page", the corners inside the panel stay round
while its frame stays square. - Focus moves into the composer on New chat, and into the conversation list
or the checkpoints panel when either opens.
A project overriding
noResultinSTRINGSshould move that text to
callNotFinished. 0.39.0 no longer drawsnoResult, so the override is
silently unused;toolInterruptedandinterruptedLabellabel the new card
status. - Every tool call gets an answer before the next request. A call cut off by
-
django-ag-uiis floored at>=0.60(was>=0.59) and
django-pydantic-agentat>=0.23(was>=0.21), so a refused tool from
AdminAgentServer(drf_mcp_server=...)renders as failed. That server's tools
reach the agent through django-pydantic-agent's in-process bridge, and below
0.23 the bridge returned a refused call as the tool's value, which pydantic-ai
records as a success:TOOL_CALL_RESULTcarried nooutcome, and the vendored
card settled the call to done. 0.23 raisesToolFailedwith the server's
sentence and the refusal's code, so the card shows it failed. django-ag-ui
0.60 floors django-pydantic-agent at 0.23 and holds this with a test. The
configuration page now says that the failed call's text is the server's own
and thatTOOL_FAILURE.INCLUDE_DETAILdoes not redact it, where its note on
refusal reasons had said every non-permission refusal withholds its reason by
default. The floor stated inREADME.md,CLAUDE.md,docs/installation.md
and the upstream-drift workflow moves with it. -
The
[mcp]extra is floored atdjangorestframework-mcp-server>=0.45(was
>=0.37). Below 0.44, once a bridged server's specs declared drf-services
affordances, a chain tool ran a step whose service's own affordances refuse it
and reported success, and theoutputSchemahanded to the model as its return
schema left out theaffordancesobject each rendered item carries. 0.45
serves a refusal'scode, which the bridge appends to the failed call's text,
and resolves a chain tool'sRETRIEVEstep to its row before the object-level
permission judges it: below it a selector returning a queryset skipped that
check, and a chain step rendered without an output serializer answered with
the text of the row the rule refuses. It also refuses amany=Trueservice
spec at registration. 0.45 floorsdjangorestframework-servicesat 0.52.1 in
turn. The floor stated inCLAUDE.md,docs/installation.mdand the
upstream-drift workflow moves with it.