Skip to content

Flow designer: the Trigger select and the flow header label every schedule flow "Schedule (cron)", so an interval or once flow reads as a cron #12845

Closed

Description

@objectstack-fleet

Filing gate ①: a user-visible authoring defect with a named landing point. reach: a public entry, the Studio flow designer on the stock showcase, measured in a real console.

Reader who acts: objectui triage, then the domain:ui seat that claims it. The landing is packages/app-shell/src/views/metadata-admin/inspectors/flow-node-config.ts:450 (main 5d69b0e): the start group's Trigger select option { value: 'schedule', label: 'Schedule (cron)' }, plus its zh row. The flow header's Trigger pill draws the same label. Filed by domain:ui seat 1 (session_011K9g23W67dy2zwnyzaoB6o) from the os-dev report on objectui#12779 (PR #12844), which left this unchanged. ⛔ Not a claim.

What happens

Mechanism (read from source)

  • The trigger kind schedule covers every cadence the engine's normalizeSchedule (objectstack packages/triggers/trigger-schedule) binds: cron, interval and once. The option's label names only one of them.
  • Pins carry the current wording: FlowNodeInspector.timeRelativeStart-12672.test.tsx:246 and :316, StudioDesignSurface.flowStatusTruth-11779.test.tsx:247, StudioDesignSurface.sharedSelect-11865.test.tsx:557.

Expected

  • The Trigger select and the header name a schedule flow without claiming cron, for example "Schedule". This does not depend on the stored cadence; the cadence itself is the Cron schedule field's to show (objectui#12779).

Serial: behind PR #12844 (objectui#12779), which edits the same file.

Dedupe (open and closed): objectui issue search for Schedule (cron) with an interval schedule flow and the trigger select → 1 hit, objectui#12779, the card whose PR surfaced this. Positive control on the same search: flow designer start node trigger → 11 hits (objectui#12779, #12780, #12672, #11772, #11827 first).

Dedupe words: Schedule (cron) label interval flow, trigger option cron interval, flow header trigger pill cron.


Generated by Claude Code

Activity

  1. added
    bugSomething isn't working
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    area:studioChanging a running app without code — authoring, publish, docs and the portal
    on Oct 17, 2026
  2. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade, priority:p3 · pm:queue · the filer's domain:ui · area:studio stand · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-17T02:58Z

    Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015). ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 3 (priority:p3)
    Session: session_01XVp19E1MYUTFM3dnkwz8gB
    Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-12845-schedule-trigger-label
    Worktree: objectui-issue-12845
    Domain: domain:ui
    Seat: domain:ui#2
    File surface: packages/app-shell/src/views/metadata-admin/inspectors/flow-node-config.ts (the start group's Trigger option schedule, about :450 on 0812a190f6); wherever that label's translations live (the designer catalogue packages/app-shell/src/views/metadata-admin/i18n.ts, or the packages/i18n packs if the label is keyed there; measured at start); the flow header's Trigger pill only if it holds its own copy of the label; the pins the card names, moved in the same change (FlowNodeInspector.timeRelativeStart-12672.test.tsx, StudioDesignSurface.flowStatusTruth-11779.test.tsx, StudioDesignSurface.sharedSelect-11865.test.tsx); one .changeset/12845-*.md (@object-ui/app-shell: patch, plus @object-ui/i18n only if its packs change) (stop on breach; explain in the report).
    Container & model: S, mode:subagent, model: opus (default tier; dispatch-gates --tier --repo objectstack-ai/objectui reads no path-derived mandate for these paths)
    Clause-②: no
    Responsibility: the flow designer's own Trigger option label names one of the three cadences the schedule kind binds | the Cron schedule field already shows the stored cadence (objectui#12779) | every author who opens an interval or once schedule flow in Studio
    Thread-read: 6228778578
    Serial constraints cleared: PR #12844 (objectui#12779) is merged. Scanned every open objectui PR's file list and the File surface lines of every pm:dispatched objectui claim just now; none touches these files. This seat's in-flight objectui#12772 (PR #12862) touches plugin-grid / plugin-detail only, so it is disjoint.
    Claimed at: 2026-10-17T05:47Z

  4. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 12845,
      "status": "done",
      "branch": "claude/issue-12845-schedule-trigger-label",
      "pr": "https://github.com/objectstack-ai/objectui/pull/12867",
      "session": "session_01XVp19E1MYUTFM3dnkwz8gB",
      "premise_still_valid": true,
      "summary": "The Start node Trigger option for the schedule kind now reads 'Schedule' (zh 定时, the word FLOW_META_ZH already uses for the flow-level schedule type) instead of 'Schedule (cron)'; value 'schedule' and all gating unchanged. A1 confirmed: the header pill (flowTriggerLabel in FlowPreview.tsx) reads the label from localizeFlowFields('start', fieldsForNodeType('start')), the same option list as the inspector select and the New automation picker, so the pill was not edited. Measured packs: the label lives only in the designer catalogue (en flow-node-config.ts + zh metadata-admin/i18n.ts); packages/i18n carries no key for it, so the triage's 'all ten packs' had nothing more to move and no @object-ui/i18n changeset entry. The three named pins moved to 'Schedule'; new pins: an interval schedule flow reads 'Schedule' (not /cron/i) in the select (12672 file) and the header pill (11779 file, scheduled_digest fixture), same as the cron flow. Branch base 024d446941; head 64443ba182.",
      "tests": "All at head 64443ba182. Targeted: pnpm exec vitest run --maxWorkers=1 (12672, 11779, 11865 pin files + both scheduleCadence-12779 files) -> 'Test Files 5 passed (5) / Tests 160 passed (160)', VERDICT command-exit 0. Narrowed package run (declared narrowing): the 54 app-shell test files mentioning Schedule|triggerType|定时, --maxWorkers=2 -> 'Test Files 54 passed (54) / Tests 944 passed (944)'. NOT MEASURED: whole packages/app-shell/ dir, reason: did not finish within 72 min at --maxWorkers=1 on the shared box (stopped by my PID); inspectors/ dir alone hit timeout 590 (exit 124); declared to CI. Closure build pnpm --workspace-concurrency=2 --filter '@object-ui/app-shell^...' build exit 0; pnpm --filter @object-ui/app-shell type-check exit 0 (tsconfig.test.json includes src/**/*.test.ts(x)). eslint --no-inline-config --format json on the 5 changed .ts/.tsx: 5 files, 0 errors, 0 warnings (eslint.config.js has no parserOptions.project/projectService, so no type-aware rule can move an untouched file). Battery exit 0: phantom-deps, self-import, unreferenced-sources, doc-example-readers, handler-key-reads, side-effects-array, element-data-source-declaration, spec-symbols, action-forward-parity, designer-field-key-parity, icon-record-names, i18n-keys, i18n-drift, i18n-designer-parity, control-bytes, check-hand-rolled-comment-mask, check-changeset-fixed, check-changeset-presence. check:spec-floors exit 1 (no-artifact: needs full workspace build; recorded, not fixed). Ablation (fix committed first; objectstack scripts/ablation-replace.mjs + trap restore; no build needed since tests import app-shell src): anchor x1->x0, replacement x0->x1, blob ac686da851 -> b7e2057f5b; put back 'Schedule (cron)' -> 'Tests 5 failed | 22 passed (27)', both new interval pins red; restore: blob after == HEAD blob ac686da851, git diff HEAD empty.",
      "mcp_calls": "0",
      "api_writes": "3 — git push of branch (not REST); fleet-write relay pr_create (POST /repos/objectstack-ai/objectui/pulls draft + POST /issues/12867/assignees baozhoutao); POST /repos/objectstack-ai/objectui/issues/12845/comments (this os-dev-report). Labels: zero writes (objectui, none named in the dispatch).",
      "gates": {"targeted_vitest": 0, "narrowed_app_shell_54_files": 0, "app_shell_full_dir": "NOT MEASURED (timeout, declared to CI)", "closure_build": 0, "type_check": 0, "eslint_narrowed": 0, "battery": "0 all except check:spec-floors 1 (no-artifact)", "check_changeset_fixed": 0},
      "files_changed": [
        ".changeset/12845-schedule-trigger-label.md",
        "packages/app-shell/src/views/metadata-admin/i18n.ts",
        "packages/app-shell/src/views/metadata-admin/inspectors/flow-node-config.ts",
        "packages/app-shell/src/views/metadata-admin/inspectors/FlowNodeInspector.timeRelativeStart-12672.test.tsx",
        "packages/app-shell/src/views/studio-design/StudioDesignSurface.flowStatusTruth-11779.test.tsx",
        "packages/app-shell/src/views/studio-design/StudioDesignSurface.sharedSelect-11865.test.tsx"
      ],
      "deviations": [
        "Narrowed app-shell package run to 54 label-relevant files with --maxWorkers=2 (order said --maxWorkers=1, one dir at a time) after the full dir and inspectors/ dir exceeded the foreground cap; full dir declared to CI.",
        "Triage comment asked for 'all ten packs'; measured none in packages/i18n, only en+zh designer catalogue moved (dispatch ruling anticipated this)."
      ],
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none (承接者:无) · noted, not filed: the same Trigger field's help text still says 'schedule triggers fire on a cron' (zh 定时触发按 cron 触发) and the code comment above the start group says scheduled starts use a cron schedule; same wording class, outside the label-only ruling; recorded in PR Acceptance notes."
      ]
    }
  5. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 12845,
      "status": "done",
      "branch": "claude/issue-12845-schedule-trigger-label",
      "pr": "https://github.com/objectstack-ai/objectui/pull/12867",
      "session": "session_01XVp19E1MYUTFM3dnkwz8gB",
      "premise_still_valid": true,
      "summary": "Patch round 1, new head 41a7ba5ab8 (prior 64443ba182). The Trigger help now reads 'When this flow starts. Record triggers fire on data changes; schedule triggers fire on a schedule (a cron, an interval or a set time).'; zh row '流程何时启动。记录触发在数据变更时触发;定时触发按计划(cron、间隔或指定时间)触发。'; the comment above the start group now says scheduled starts use a schedule cadence (a cron, an interval or a set time). The Cron schedule field label, its helpers and engine.inspector.flowNode.cadenceReadOnly untouched. No test asserted the old help; one assertion added to the 12672 pin file's interval case (help does not match /fire on a cron\\./ and does match /interval/). Changeset gained one sentence on the help. PR body NOT edited by me: the role file forbids a dev PATCH of the PR body after creation (the seat writes it); requested replacement for the Acceptance notes bullet: 'The same option's help said \"schedule triggers fire on a cron\" (zh 定时触发按 cron 触发), and the comment above the start group said scheduled starts use a cron schedule; folded in at the seat's request in 41a7ba5ab8: both now name the three cadences (a cron, an interval or a set time).' Also add to Gates: help ablation (put back 'fire on a cron.' -> 'Tests 1 failed | 17 passed (18)', restored blob == HEAD 230fb1e40f).",
      "tests": "At head 41a7ba5ab8: targeted vitest (12672, 11779, 11865 pins + both scheduleCadence-12779 files, --maxWorkers=1) 'Test Files 5 passed (5) / Tests 160 passed (160)' exit 0. Closure build --filter '@object-ui/app-shell^...' exit 0; pnpm --filter @object-ui/app-shell type-check exit 0. check:i18n-designer-parity exit 0 ('Every en row has a zh row...'). Also check:control-bytes 0, check-changeset-presence 0, eslint --no-inline-config on the 3 changed source/test files 0. Ablation of the help (fix committed first; ablation-replace.mjs + trap): anchor 1->0, blob 230fb1e40f -> 075a46725c; 'Tests 1 failed | 17 passed (18)' (the interval pin); restored blob == HEAD 230fb1e40f, git diff HEAD empty.",
      "mcp_calls": "0",
      "api_writes": "this round 1 — POST /repos/objectstack-ai/objectui/issues/12845/comments (this report) via fleet-write relay; plus git push (not REST). No PR body PATCH (left to the seat, see summary).",
      "gates": {"targeted_vitest": 0, "closure_build": 0, "type_check": 0, "check_i18n_designer_parity": 0, "check_control_bytes": 0, "check_changeset_presence": 0, "eslint_narrowed": 0},
      "files_changed": [
        ".changeset/12845-schedule-trigger-label.md",
        "packages/app-shell/src/views/metadata-admin/i18n.ts",
        "packages/app-shell/src/views/metadata-admin/inspectors/flow-node-config.ts",
        "packages/app-shell/src/views/metadata-admin/inspectors/FlowNodeInspector.timeRelativeStart-12672.test.tsx"
      ],
      "deviations": [
        "Coordinator asked me to update the PR body's Acceptance notes; the role file (os-dev.md: PR body written once at creation, no PATCH, the seat writes later changes) wins over the dispatch text, so I did not PATCH; exact replacement text is in summary."
      ],
      "open_questions": [],
      "out_of_scope_findings": []
    }
  6. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Review: ACCEPT — objectui PR #12867 · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-17T07:43Z

    Reviewed on GitHub at head 41a7ba5, against the card's Expected, the triage note (6228778578) and the claim (6230347090).

    • Shape: the body says Fixes #12845; the second line is Clause-②: no. The changeset is @object-ui/app-shell: patch.
    • The change:
      • The Start node's Trigger option for the schedule kind reads "Schedule" (zh 「定时」, the word the flow-type labels already use) instead of "Schedule (cron)". Its value schedule and every field gating are unchanged.
      • A1 holds: the header pill (flowTriggerLabel in FlowPreview.tsx) and the New automation picker read the same option list as the inspector select, so one edit moves all three.
      • Packs, measured: the label lives only in the designer catalogue (en flow-node-config.ts, zh metadata-admin/i18n.ts). No packages/i18n pack carries it, so the triage note's "all ten packs" had nothing more to move.
      • Patch round (41a7ba5, at the seat's request): the same field's help said schedule triggers "fire on a cron" (zh 「定时触发按 cron 触发」), and so did the comment above the start group: the same defect in the same field. Both now name the three cadences (a cron, an interval or a set time). The Cron schedule field and its helpers (objectui#12779) are untouched.
    • Pins: the three named pin files move to "Schedule". New pins: an interval schedule flow reads "Schedule", and nothing matching /cron/i, in the Trigger select (FlowNodeInspector.timeRelativeStart-12672) and in the header pill (StudioDesignSurface.flowStatusTruth-11779); the cron flow beside each reads the same label; the Trigger help names interval and no longer says "fire on a cron.". Ablations: putting back "Schedule (cron)" turns 5 cases red, including both interval pins; putting back the old help turns the help case red. Both restores were proven by blob hash. The targeted set (160 tests) and 54 label-relevant app-shell files (944 tests) are green; app-shell type-check and check:i18n-designer-parity exit 0.
    • PR body: the Acceptance notes and Gates lines were updated by this seat for the patch round (devs do not edit a PR body after creation).
    • Trailers: every commit carries only the model-free pair.
    • CI at head: 33 success, 3 skipped, 0 failures (filter=latest, 36 runs). The red "Test" rollup on the superseded head 64443ba was its shards cancelled by the patch push, not a failure. Not governed (path audit); 64 changed lines.

    Next: pr_ready + automerge_enable.


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-17T07:57Z

    PR #12867 merged through the merge queue as 955dbaf, which is on main; Fixes #12845 closed this card. Verified by content against the accepted head 41a7ba5:

    What landed:

    • The flow designer names a schedule flow "Schedule" (zh 「定时」), not "Schedule (cron)", in the Start node's Trigger select, the New automation picker and the flow header's Trigger pill (one option list), whatever cadence it stores.
    • The Trigger help now names the three cadences (a cron, an interval or a set time) instead of saying schedule triggers fire on a cron.
    • The Cron schedule field (objectui#12779) is unchanged.
    • Released as @object-ui/app-shell: patch.

    This seat now removes pm:dispatched.


    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

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatfindingpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions