Models coordinate subagents through send_message, interrupt_agent, list_agents,
and Team task owners, but every one of those addressed a member by a
36-character Session id. Each new child now has a name, unique among its
creator's children, recorded as a field of the subagent/catalog entry the
creator already appends (payload version 3).
The Session id stays the only execution identity for routing, authorization,
persistence, task ownership, and navigation. A name is a model-facing
reference: 1-32 lower-case letters, digits, or hyphens starting with a letter,
never `lead`, so a UUID never parses as one. Omission selects the first free
`agent-N`; an explicit duplicate or invalid name fails before startup. The
creator reserves the name synchronously at admission and releases it when the
catalog entry commits or startup fails, so no second write, rollback protocol,
or optional naming service exists.
The root is `lead`, and a descendant's full name is its path from the root
without a `lead/` prefix, such as `reviewer/checker`. Sibling-unique segments
make full names tree-unique without a root registry, and cold resume rebuilds
a member's path from the catalogs along its creation chain. A member below an
unnamed historical creator keeps its Session id as its name. resolveName()
reads only the catalogs along the path and grants no authority.
Tools, runtime-authored text, and the Web client consume names: delegation
takes an optional name and returns { kind, subagentId, name }; send_message and
interrupt_agent take `agent`; list_agents rows carry name, status, and
description; Team task results report the owner's name while storage keeps
ownerId; identity runtime context, message framing, and settlement notices use
full names. Recorded sessions, CLI and Web expectations, the Python runtime
snapshots, bilingual docs, an upgrade guide, and an Agent Note follow.
* feat(schedule): unify task creation and editing
* refactor(schedule): remove obsolete editor helper exports
* fix(schedule): address unified editor review
* fix(schedule): avoid a conflict notice during save refresh
* test(schedule): use unified editor in zoom picker checks
* fix(schedule): preserve drafts through conflict recovery
* docs(schedule): match the linked-session control labels
* fix(schedule): restore the latest linked session after conflicts
* docs(schedule): clarify unsaved draft lifetime
* fix(schedule): align conflict feedback with the detail layout
* fix(schedule): fit editors to pane width and guide empty fields
* fix(schedule): preserve task list and complete field examples
* fix(schedule): keep required-field feedback in the editor
* fix(schedule): align editor content and action gutters
* fix(schedule): wrap localized actions in narrow editors
Revert PR #4484 (merge b9bdd062c8f), retaining later Windows-path and GFM changes. Its display-dollar rules are replaced by upstream math parsing with bounded invalid-block recovery in the next commit.
* perf(session): send one projection frame per committed event
* fix(session): deliver keys changed before a drive failure; address review
* perf(session): carry projection frame changes as key and val entries
* fix(ui-conversation): keep the docked composer seat stable
The active composer seat now keeps one stacking rank (z-index 9) in every
state, a direct compositing reason (will-change: transform), the scroll
floor without relying on a View to fill the column (margin-top: auto), and
no scroll-anchoring role. Composer tooltips portal to the body because the
seat is the containing block for fixed descendants. The width handle keeps
z-index 0 while dragging.
The docked statistics row reserves one reading's height before its
projections arrive, and the header without a Session keeps the blank
Session's 40px row on every platform so both Hero states center the input
card at the same height.
Fixes#7590
* docs(ui-conversation): state the composer fixed-overlay contract
Composer-hosted slots now document that fixed overlays must portal to the
document body, because the docked composer is their containing block; the
client slot catalog is regenerated from that JSDoc. The README also records
that gutter tables cover a captured width-handle drag and that the
composer's backdrop blur is verified only in Chromium. Local comments note
the grayscale text antialiasing of the permanent composer layer, why the
statistics row uses a minimum height, why the sessionless header keeps an
empty title row, and that the Hero offset test assumes the default plugins.
Refs #7590
* docs(ui-conversation): state the back-to-bottom offset as geometry
The composer and back-to-bottom stacking comments now state the resting
16px gap instead of claiming the control never overlaps the input card.
Refs #7590
Composer-hosted slots now document that fixed overlays must portal to the
document body, because the docked composer is their containing block; the
client slot catalog is regenerated from that JSDoc. The README also records
that gutter tables cover a captured width-handle drag and that the
composer's backdrop blur is verified only in Chromium. Local comments note
the grayscale text antialiasing of the permanent composer layer, why the
statistics row uses a minimum height, why the sessionless header keeps an
empty title row, and that the Hero offset test assumes the default plugins.
Refs #7590
* fix(ui-primitives): keep tall menus inside the mobile viewport
* fix(client): anchor model picker with Floating UI
Use Floating UI for fixed model-menu placement and automatic viewport updates. Preserve top-end alignment and defer automatic focus until placement is ready. Guard asynchronous results across updates and menu teardown.
* fix(client): preserve menu blur under pinned group titles
Keep the current provider title outside the native scroll viewport so
model rows cannot bleed through during fast scrolling. Preserve the
enclosing menu fill and backdrop filter, and update both model pickers,
lifecycle tests and ARIA goldens.
Validation: doc-sync, full build, final type checks, focused lint and
all 12 model-picker browser checks pass. The full unit run has 42,597
passing tests and four failures in unchanged gateway, third-party-
notices and Inspector tests. The Inspector case passes in isolation.
* fix(client): stabilize floating panels during browser zoom
* fix(client): keep portal menus aligned during Safari zoom
* fix(client): commit floating menu positions before paint
* fix(client): unify floating panel positioning
* fix(client): validate grouped menu headings
* fix(client): hide inactive pinned menu headings
* test(client): await floating menu layout across consumers
* test(ui-chat): await folded reply menu positioning
* test(client): align current consumers with asynchronous panel layout
* fix(client): prevent mobile model search focus zoom
* refactor(client): inject mobile device state from layout
* fix(client): keep anchored panel layout synchronous
* fix(client): address panel review coverage and documentation
* fix(client): keep viewport changes focused on iOS zoom
* fix(client): cover anchored panel lifecycle and scrollbar colors
* fix(client): preserve zoomed model menu scrolling and alignment
* fix(client): hide empty model menus and stabilize viewport pan tests
* test(web): use native wheel input for zoomed viewport panning
* fix(client): keep automation pickers scrollable when zoomed
* fix(client): allow horizontal gestures across clock columns
* fix(client): ellipsize overflowing floating-panel labels
* test(web): make clock overflow fixture independent of system fonts
---------
Co-authored-by: Zrs000 <[email protected]>
The active composer seat now keeps one stacking rank (z-index 9) in every
state, a direct compositing reason (will-change: transform), the scroll
floor without relying on a View to fill the column (margin-top: auto), and
no scroll-anchoring role. Composer tooltips portal to the body because the
seat is the containing block for fixed descendants. The width handle keeps
z-index 0 while dragging.
The docked statistics row reserves one reading's height before its
projections arrive, and the header without a Session keeps the blank
Session's 40px row on every platform so both Hero states center the input
card at the same height.
Fixes#7590
A new Agent Note owns the shipped defaults and the original apply_patch note
keeps its opt-in decision with a supersession link; the policy README, the
tool-catalog note, the filesystem page, and the fs group README state the
current defaults without evaluation figures. The PTC overlay sets
`applyPatch: false` so the SDK and Desktop PTC tool sets match without a
parity exception; the fixed-budget compaction scenarios pin the tool set in
their live patches too; the apply-patch composition drops its no-op override.
The upgrade guide scopes the change to base-backed profiles, the README
refusal example is one every composition can produce, the integration suite
names its deployments by guard, and the keyless SDK smoke edits a file the
model never read through the shipped profile.