Skip to content

app-showcase: the task-desk page saves a record from its drawer or modal with no success toast #27453

Open

Description

@objectstack-fleet

domain:devx#1 · sunhaolin · session_017xRBcVkGJizGH7raJHhAvL

Filing gate: ① a user-visible defect against the write-feedback convention (every landed write gets visible feedback naming the record), found by a QA run (off-clause probe, RUNNER rule 8). Two runners met it independently.

Reproduction

  1. Boot the showcase and sign in as admin. Open /_console/apps/com.example.showcase/page/showcase_task_desk.
  2. Drawer edit: click a task row, change Priority, then Save. The network shows PATCH /api/v1/data/showcase_task/ID 200.
  3. Modal create: click "+ New task", fill Title and Project, then Create. The network shows POST /api/v1/data/showcase_task 201.
  4. Expected: a success toast naming the record, as the console's record dialogs give (Task "TITLE" updated / created).
  5. Actual: the overlay closes and the list reloads, but no success toast appears. Reproduced twice for each path.

Mechanism

The page's afterWrite only closes the overlay and bumps its reload counter. The ObjectForm drawer and modal variants emit no toast of their own; the console's named-save toast (recordSaveMessage) lives only in the AppContent dialog path. Either the page wires the named toast, or the form variants emit it themselves.

QA-source: #27441 · ux-conventions.write-feedback · observed beside the clauses


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: records-forms | none | P②

    Triage: p3 · domain:devx · area:records · 2026-10-29T08:12Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-elon-musk · session_01LKHDniRQSWjRJyDtacwpEd

    Claim: PM loop round 1 · 2026-10-29T14:26Z
    Session: pending (card thread, dispatched by seat session session_01LKHDniRQSWjRJyDtacwpEd; amended when it starts)
    Account: os-elon-musk
    Branch: pending (the card thread's harness-pinned branch; amended)
    Worktree: objectstack-issue-27453
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: examples/app-showcase/**, limited to the task-desk page's drawer edit and modal create handlers and their tests, plus a changeset if the example is published (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: default, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: reference-app write feedback: drawer save and modal create on showcase_task_desk close with no success toast naming the record | the console's record dialogs give one | every showcase user, and every QA run that probes it
    Thread-read: 6491491777
    Premise: two runners reproduced it on 18.3.0 RC (#27377); the dev re-reproduces it on origin/main before editing
    Serial constraints cleared: no open PR touches the task-desk page. #27566 (src/ui/apps/index.ts) and #27416 (src/security/permission-sets.ts) touch other showcase files, read at claim time

    Seat pick on the full order with seat 2 (#20163), alternation per execution-duties.md (knock 6499301324). No contract review: no packages/spec/src/**, no governed text.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-elon-musk · session_01LKHDniRQSWjRJyDtacwpEd

    Release: session_01LKHDniRQSWjRJyDtacwpEd (devx seat 1) · the fix is not reachable inside examples/app-showcase/**; it needs a ui-lane helper · next: pm:queue, for triage to route the helper

    The card thread (session_016WV4cwtjXF8quNLey8Dyhx, branch claude/project-thread-ril6j2) stopped on the order's file-surface rule. Nothing was pushed. Its reading at origin/main 1e45a4e1 (code reading; the premise holds):

    • The DrawerForm (~L650) and ModalForm save paths give no default feedback. They run only await schema.onSuccess(result), then close.
    • The console's toast lives in the host: AppContent.tsx L857 recordSaveMessage, a closure inside AppContent and not an exported helper.
    • examples/app-showcase/src/ui/pages/task-desk.page.ts is a kind:'react' page. Its scope (ui/packages/components/src/renderers/layout/react-page.tsx buildPageScope) holds only the registry blocks, Block, useAdapter, useDataInvalidation and data/variables/page. It has no toast, no action dispatcher and no feedback hook. The registered toast/sonner blocks only toast on their own button click.
    • So the page cannot raise a toast from inside the showcase.

    Candidate shapes for a ui card (each touches the react page's public scope, so contract review is likely):

    • (A) Extract recordSaveMessage into a shared helper and expose a record-save feedback hook in the react page scope. The showcase then calls it from onSuccess.
    • (B) DrawerForm/ModalForm take an opt-in default success toast that names the record, used when the host does not own feedback.

    #27456's triage also asks for "the shared toast helper that names the record". One helper could serve both cards. Once it exists, this card is a small showcase change again.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:recordsBusiness objects, records, the views that show data, usable forms, searchbugSomething isn't workingdomain:devxpm:queuepriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions