Repository navigation
Conversation
peppescg
added this pull request to stack #2373
October 15, 2026 17:49
peppescg
added a commit
that referenced
this pull request
Oct 15, 2026
…er title sites) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
peppescg
force-pushed
the
refactor/studio-tooltips-2341-schedules
branch
from
October 16, 2026 12:24
6722f96 to
1cd4b89
Compare
kantord
approved these changes
Oct 16, 2026
kantord
left a comment
Member
There was a problem hiding this comment.
Thanks for the audit, the per-occurrence table was easy to check: I counted 14 non-test title= occurrences under features/schedules/ and the lines and elements match. Approving, with a few non-blocking nits:
- The guard test doesn't mount the loading, error, empty and not-found states, or a locked edit form. Its interactive selector also misses
menuitemcheckbox,menuitemradioandslider. I think the risk is low, but it is worth knowing about. .toHaveLength(3)on theddtitles breaks whenever aFactgains or loses a title.- The "14" counts one data flow twice (the
FactandFactGroupprops and the<dd>they reach), and the PR text calls the date cells<td>where the source hasTableCell. - Not a problem with this PR, but worth keeping visible: the exact next-run and last-run dates and the cron expression stay hover-only
titles on non-focusable text, which keyboard and touch users can't reach. That is the same question as on #2369.
Fully or partially written by an AI agent.
peppescg
force-pushed
the
refactor/studio-tooltips-2341-schedules
branch
from
October 16, 2026 19:51
1cd4b89 to
aeeb501
Compare
peppescg
force-pushed
the
refactor/studio-tooltips-2341-schedules
branch
from
October 16, 2026 19:56
aeeb501 to
14d5ccb
Compare
Audits every title= under features/schedules/ for #2341. No interactive control there carries a native title, so nothing moves to the Tooltip primitive. The remaining titles disclose full values on plain text: a date behind a relative time, a cron expression behind its description, and a status behind its dot. The rest are component props (headings). The guard renders the inventory and its menu, the create dialog, the detail page, its edit dialog and the transcript dialog, and fails when a title sits on an interactive element, or inside one other than the status dot, whose label is also visually hidden text. Refs #2341 Refs #2201 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… became text #2369's review fix shows the detail page's next and last run dates as text, so their `<dd>` titles are gone. The guard now names the one title left (the Repeat fact's raw cron) instead of counting three. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
peppescg
force-pushed
the
refactor/studio-tooltips-2341-schedules
branch
from
October 16, 2026 20:22
14d5ccb to
97f3f8c
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This audits every
title=underapps/web/src/features/schedules/for #2341, on the code the three PRs below leave. No interactive control there carries a nativetitle, so nothing moves to the Tooltip primitive. The remaining titles disclose full values on plain text, or are component props. A guard test now fails if a nativetitlelands on a schedule control.Part of #2341
Part of #2201
Part of #2210
What changed
schedules/schedules-titles.test.tsxrenders every schedule surface:titlesits on an interactive element (links, buttons, form fields, menu items, tabs, radios, switches, or anything withtabindex).titlesits inside an interactive element, unless it is the status dot, whose label is also visually hidden text.Every occurrence
title=in non-test files underfeatures/schedules/at this PR's head (97f3f8c7f, after #2369's review fix): 12. The audit first counted 14 at6722f9676; #2369's review moved the Next run and Last run fact dates into visible text and dropped those twoFacttitles.features/schedules/, line)schedules-workspace.tsx:252<EmptyState title=…>schedules-workspace.tsx:258<EmptyState title=…>schedules-workspace.tsx:414<span title={cron or trigger}>in the Schedule cellschedules-workspace.tsx:425TableCell title={full date}(Next run)<time dateTime>, so the title is no longer the only way to it.schedules-workspace.tsx:435TableCell title={full date}(Last run)schedule-status.tsx:83<span title={label}>(status dot)schedule-detail.tsx:190<DetailState title=…>schedule-detail.tsx:195<DetailState title=…>schedule-detail.tsx:277<FactGroup title="Details">schedule-detail.tsx:293<FactGroup title="Frequency">schedule-detail.tsx:296<Fact title={cron (time zone)}>(Repeat)<dd>at line 681.schedule-detail.tsx:681<dd title={title}>schedule-form.tsx,schedule-transcript-dialog.tsxand the chatTranscriptViewthey render have notitle=.The
size-4note from #2357 and #2368. NoButtonhere moves into aTooltipTrigger, so no per-sitesize-4workaround is added. Thesize-4on the New scheduled task button'sPlusicon (#1) copies the prototype's markup. That Button keepsdata-slot="button", so it is not a workaround and stays after #2368.No regression
The guard passes on the unchanged components (2/2). After the restack onto feat(studio): align the schedule inventory and detail page with the prototype #2369's review fix, a second commit (
97f3f8c7f) changes its detail-page check from three<dd>titles to the one Repeat title left.Mutation proof (each applied alone):
titleon a row's Actions buttontitleon the run log's View transcript buttontitleon the one-shot Date inputtitleon the prompt text inside a phone row's linkScreenshots
This PR changes no UI, so Before and After are identical: every frame below matches pixel for pixel. Amber boxes mark the
title=sites reviewed in the decision table above. They are on Before and After only, never on the prototype. There are no red diff boxes because nothing differs. Before =6f5587e(#2371's head at the time), After =6722f96, Prototype =stack-08. These frames predate #2369's review fix, which makes the detail page's Next run and Last run dates visible text; see #2369's "Review changes" for those frames.Inventory, desktop light. The Schedule cell
<span>and the Next run and Last run<td>s.Inventory, phone dark. The status dot inside each row's link.
Detail, desktop dark. The Details and Frequency
FactGroupheadings, and the Repeat, Next run and Last run<dd>s.Empty state, desktop light. The
EmptyStatetitle ("Nothing scheduled yet").All other frames
Inventory:
Detail (the phone shots are taken at the top and scrolled to the Frequency group):
Empty states: nothing scheduled, scheduling not wired, task not found, and scheduling unavailable on the detail page. The prototype's unsupported detail page reuses its not-found card.
Gates
Through the shared lock, on
97f3f8c7f(restacked):task studio:checkpasses: lint, typecheck and the generated-artifact check pass; server tests 252/252; web tests 1744/1744.task studio:browser: 153 passed, 41 skipped.task docspasses.🤖 Generated with Claude Code