Files
deepseek-harness/apps/web/tests/expected/stats-paged-history/ui.expected.md
T
5ff29190ed feat(ui): add navigation entry customization (#6247)
* fix(ui): avoid tooltip trigger overlap when a side fits

* feat(ui): add navigation entry customization

* fix(test): keep tooltip geometry independent of JSX types

* fix(ui): align customization catalogs and integration fixtures

* test(ui): complete customization lifecycle and release integration coverage

* fix(ui): return entry discovery to the installed plugin list

* docs: refresh module graph for entry customization

* build: refresh workspace links for the moved entry customization package

* docs: regenerate catalogs and pairing hashes for the moved entry customization package

* test(web): cover default-loaded entry customization in the Web e2e

* test(ui): describe entry customization as a browser plugin in the host entry spec

* build: order entry customization publication files as workspace constraints require

* test(release): drop the moved entry customization package from the experimental family list

* style(ui): use the shared focus ring color on entry customization triggers

* test(web): re-record goldens for the default-loaded More navigation menus

* test(web): add the More conversation views trigger to the remaining CI-reported goldens

* docs: record region-owned pins for plugin entry customization

* refactor(ui): rebuild entry customization on region-owned pins and More menus

- Each navigation region (left sidebar, Conversation header, right sidebar
  guide) persists its own unpinned list under
  dsh.slot.manual-order.<list slot key>.v1, filters its own launchers, and
  draws its own More button and Menu around its actions slot.
- ui-entry-customization only registers the shared menu rows (entries with
  pin buttons, Browse other plugins, Create your plugin) into the three
  actions slots and keeps no state.
- Remove ctx.layout.entryVisibility, the plugin store, left-sidebar drag
  reordering, and agentPresetNavigation; ui-layout and ui-agent-preset match
  release/dsh-0.2.1 again.
- Keep the release <nav> and Conversation tab-bar visibility conditions.
- Move the More glyph into ui-primitives as IconAppsAddOutline{Regular,Medium}.

* docs: compile the entry customization owner props example

* docs(ui): describe the wrapping Conversation tab row in the header comment

* fix(ui): return New Session to the Workspace blank and its unsent draft

- New Session (startSession without options) takes the blank-reuse path
  again instead of creating a fresh Session on every call, which hid the
  previous blank and its unsent draft since a5c9c2aaeef (#5775).
- A request that names an Agent preset skips blanks listing a different
  preset, so Creator entries no longer take over an ordinary draft.
- Record the change in a v0.2.1-rc.2 upgrade guide; the Host refresh of a
  stale loaded blank stays deferred (see the Agent Note).

* docs: regenerate the Cordis inspect catalog for New Session blank reuse

* fix(ui): keep the selected entry visible while unpinned

- Left-sidebar rows and View tabs keep the selected entry, with aria-current or aria-selected, until another entry is selected.
- Entry menu Creator action takes no region argument; the registration's region selects the prompt.
- Document the 2px panel-row and 32px View-tab gaps; drop commit hashes from the New Session Agent Note.

* fix(ui): leave a blank of another preset unstaged when starting Creator

startCreatorDraft stages cordis only when the main blank lists no preset or already lists cordis; navigation opens a separate Creator blank otherwise, so a Standard draft blank keeps its preset.

* feat(ui): choose whether a draft prompt replaces, appends to, or keeps an existing draft

- DraftInitializationOptions gains whenDraftExists ('replace' | 'append' | 'keep', default 'keep'); clearPreviousDraft stays and maps to 'replace' only when whenDraftExists is omitted.
- Append adds the prompt as new paragraphs after the existing text and references; attachments stay in every mode.
- The three Create your plugin entries append their regional prompt.

* test(web): align e2e with New Session blank reuse and the visible selected entry

* refactor(ui): share the draft paragraph writer between setDraft and appendDraft

---------

Co-authored-by: Yif <877193178@qq.com>
Co-authored-by: imccyu <276526105+imccyu@users.noreply.github.com>
2026-10-20 15:17:13 +08:00

8.2 KiB

  • banner:
    • navigation "Session hierarchy": {{workspace}}
    • button "More actions"
    • button "Open right sidebar"
    • tablist:
      • tab "Chat" [selected]
      • tab "Trajectory"
    • button "More conversation views"
  • navigation "Turn navigation":
    • button "Jump to turn 1"
    • button "Jump to turn 2"
    • button "Jump to turn 3"
    • button "Jump to turn 4"
    • button "Jump to turn 5"
    • button "Jump to turn 6"
    • button "Jump to turn 7"
    • button "Jump to turn 8"
    • button "Jump to turn 9"
    • button "Jump to turn 10"
    • button "Jump to turn 11"
    • button "Jump to turn 12"
    • button "Jump to turn 13"
    • button "Jump to turn 14"
    • button "Jump to turn 15"
    • button "Jump to turn 16"
    • button "Jump to turn 17"
    • button "Jump to turn 18"
    • button "Jump to turn 19"
    • button "Jump to turn 20"
    • button "Jump to turn 21"
    • button "Jump to turn 22"
    • button "Jump to turn 23"
    • button "Jump to turn 24"
    • button "Jump to turn 25"
    • button "Jump to turn 26"
    • button "Jump to turn 27"
    • button "Jump to turn 28"
  • text: m1 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r1
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m2 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r2
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m3 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r3
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m4 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r4
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m5 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r5
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m6 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r6
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m7 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r7
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m8 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r8
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m9 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r9
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m10 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r10
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m11 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r11
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m12 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r12
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m13 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r13
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m14 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r14
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m15 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r15
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m16 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r16
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m17 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r17
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m18 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r18
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m19 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r19
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m20 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r20
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m21 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r21
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m22 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r22
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m23 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r23
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m24 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r24
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m25 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r25
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m26 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r26
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m27 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r27
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}} m28 7/25 {{clock}}
  • button "Copy"
  • status: Completed
  • button "Completed in {{duration}}" [disabled]
  • paragraph: r28
  • button "Copy"
  • button "Good response"
  • button "Bad response"
  • button "Branch into a new conversation"
  • text: 7/25 {{clock}}
  • button "Back to bottom"
  • textbox "Message or run a task, / commands, @ files or sessions"
  • button "Add files or run commands"
  • 'button "Access mode, current: Workspace Write"': Workspace Write
  • button "Select model, current DeepSeek-V4-Flash": DeepSeek-V4-Flash
  • button "Send message" [disabled]
  • button "28 turns 28 steps"