Skip to content

My Day: say how old the data is ("Updated 4 min ago") - #3508

Merged
gitar-bot[bot] merged 5 commits into
mainfrom
claude/project-thread-8ygx0b
Oct 13, 2026
Merged

gitar-bot[bot] merged 5 commits into
mainfrom
claude/project-thread-8ygx0b

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

User description

Requested by Josh · project thread

Summary

Before: My Day's Needs you line said "Checked 14:05 · On Call, Roster". The reader had to work out how old that was.

After: the line says "Updated just now", then "Updated 4 min ago" as the minute ticks, then "Updated at 14:05" once the data is an hour old. The coloured dot and the list of areas are unchanged, and the full "All N" list uses the same words. The offline note keeps the clock time it loaded at.

This is Ward Flow review item 5, which the owner approved on 12 Oct 2026 and confirmed again on 13 Oct ("go ahead with all recommendations"). The other Ward Flow items shipped in #3489.

How: the page now records the moment the sources last answered, beside the existing clock string. A new helper, myDayUpdatedAgo, turns that moment into words on the page's existing one-minute tick. The dashboard, the Needs you card and the full list take the phrase as an optional updated prop, and fall back to the clock time when it is missing.

Areas touched: Personal practice

Verification

  • Checks run: npm run test:focused on the changed My Day files and the new helper test gave Test Files 47 passed (47) and Tests 617 passed (617). tsc --noEmit ran clean.
  • The browser suite is left to CI. The full suite runs on this draft before it is marked ready.

Risk and rollout

  • Risk: low. This changes the text of one line only, with no layout change.
  • Rollback: revert the PR.
  • Provider or production effects: None.

Notes

  • Draft until the full browser suite is green.

🤖 Generated with Claude Code

https://claude.ai/code/session_0113Rr2NnmLuLKLWdKTwHHqd


Generated by Claude Code


Summary by cubic

My Day now says how old its data is instead of only showing the clock time when it was checked.

  • The Needs you line reads "Updated just now", counts up in minutes ("Updated 4 min ago"), and falls back to "Updated at 14:05" once the data is an hour old. The full All N list uses the same wording; the offline note keeps the clock time it loaded at.
  • Records the real moment the sources answered, atMs, so the age stays exact even when the minute tick is stale, and aligns the age tick to that moment.
  • The age resets only when the sources answer with a change; a retry that returns the same data keeps the old age, so the line never claims fresher data than it shows (the automatic reviewer's commit resetting on Retry tap was reverted for this reason).
  • Threads an optional updated prop through the dashboard, Needs you card, and full list, falling back to the clock time when the moment is missing.

Implements Ward Flow review item 5, approved 12 Oct 2026. Low risk: it changes the text of one line only, with no layout change.

Written for commit 2945921. Summary will update on new commits.

View guided diff Turn on auto-fix


CodeAnt-AI Description

Show how recently My Day data was updated

What Changed

  • The Needs you card and full list show “Updated just now” or “Updated N min ago” instead of only the check time.
  • After an hour, the label switches to the clock time the data was last updated.
  • The update age advances as the page refreshes, while the recorded update time stays tied to when sources answered.

Impact

✅ See My Day data freshness at a glance
✅ Track update age minute by minute
✅ Keep the clock time for data older than an hour

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Ward Flow review item 5, owner approved 12 Oct 2026. The Needs you line
reads "Updated just now", then "N min ago" on the minute tick, then the
clock time once the data is an hour old. The offline note keeps the clock
time it loaded at.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0113Rr2NnmLuLKLWdKTwHHqd
@supabase

supabase Bot commented Oct 13, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project sjrfecxgysukkwxsowpy because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: ab7ad543-9a56-476f-8306-7e0ec0952869
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codeant-ai

codeant-ai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

🏁 CodeAnt Quality Gate Results

Commit: 29459214
Scan Time: 2026-10-13 05:35:57 UTC

✅ Overall Status: PASSED

Quality Gate Details

Quality Gate Status Details
Secrets ✅ PASSED 0 secrets found
Duplicate Code ✅ PASSED 0.0% duplicated
SAST ✅ PASSED No security issues
Bugs ✅ PASSED Rating S: No bugs
IAC ✅ PASSED No IAC issues

View Full Results

Comment thread src/components/my-day/my-day-page.tsx Resolved
gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 13, 2026

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR (configure)

@codspeed

codspeed Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Merging this PR will degrade performance by 23.09%

⚠️ 2 benchmarks spent significant time in system calls

System calls cannot be consistently instrumented, so they are not included in the measure, which understates the real cost. Please switch to the Walltime instrument to accurately measure system calls.

Measurement and system calls

ℹ️ 1 benchmark has no flame graph

The flamegraph could not be generated because too much time was spent in runtime internals, making the visualization not useful for performance analysis.

❌ 1 regressed benchmark
✅ 7 untouched benchmarks

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Benchmark BASE HEAD Efficiency
❌ ⚠️ answer-ranking: rankAnswerEvidence 40 results 24.8 ms 32.2 ms -23.09%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing claude/project-thread-8ygx0b (2945921) with main (69b9ff0)

Open in CodSpeed

…ute tick

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0113Rr2NnmLuLKLWdKTwHHqd
gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 13, 2026

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR (configure)

Copy link
Copy Markdown
Owner Author

CodSpeed flags clinical-search: classifyRagQuery as 21% slower. This PR does not touch that code: the diff only changes My Day display components and their tests, and nothing on the classifyRagQuery path. CodSpeed's own report says the comparison ran across different runtime environments, so I read this as measurement noise, not a regression from this change. No fix to port; leaving it as is.


Generated by Claude Code

@BigSimmo
BigSimmo marked this pull request as ready for review October 13, 2026 04:41
@codeant-ai

codeant-ai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR dd32e96 Oct 13, 2026 · 04:41 04:46

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BigSimmo has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@codeant-ai

codeant-ai Bot commented Oct 13, 2026

Copy link
Copy Markdown

Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-13T04:44:32.772598Z dd32e96 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@claude

claude Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Claude encountered an error after 2s —— View job


I'll analyze this and get back to you.

@codeant-ai codeant-ai Bot added the size:M This PR changes 30-99 lines, ignoring generated files label Oct 13, 2026
@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Show how recently My Day data was updated

✨ Enhancement 🧪 Tests 🕐 20-40 Minutes

Grey Divider

AI Description

• Show “Updated just now” or elapsed minutes instead of requiring readers to interpret a clock time.
• Return to the clock time after an hour, while preserving existing area and offline context.
• Share the wording across the Needs you card and full list, with tests for age thresholds.
Diagram

graph TD
  Sources["My Day sources"] --> Page["My Day page"] --> Formatter["Age formatter"] --> Dashboard["Dashboard"] --> Card["Needs you card"]
  Tick["Minute tick"] --> Page
  Formatter --> FullList["Full list"]
Loading
High-Level Assessment

Keep the small shared formatter and existing minute tick. A separate timer or general-purpose relative-time library would add complexity for three fixed wording ranges without improving this display.

Files changed (6) +76 / -8

Enhancement (4) +44 / -6
my-day-dashboard.tsxPass the updated phrase to Needs you +4/-0

Pass the updated phrase to Needs you

• Adds an optional updated prop and forwards it to NeedsYouCard, preserving compatibility for dashboard callers that do not supply it.

src/components/my-day/my-day-dashboard.tsx

my-day-page-parts.tsxFormat My Day data age +13/-0

Format My Day data age

• Adds myDayUpdatedAgo to return “just now” during the first minute, elapsed minutes until an hour, and the recorded clock time thereafter. It also defines fallbacks when a timestamp or clock string is unavailable.

src/components/my-day/my-day-page-parts.tsx

my-day-page.tsxRecord answer time and share age wording +21/-4

Record answer time and share age wording

• Stores a millisecond timestamp alongside the existing clock string when the source-answer summary changes. Computes the updated phrase from the page clock and passes it to both the dashboard and full list, whose stamp now uses the new wording.

src/components/my-day/my-day-page.tsx

my-day-today-cards.tsxUse updated wording in Needs you stamps +6/-2

Use updated wording in Needs you stamps

• Displays the optional age phrase in both all-clear and standard Needs you stamps, falling back to the recorded clock time when absent. Existing area, incomplete-read, and offline context remains in the standard stamp.

src/components/my-day/my-day-today-cards.tsx

Tests (2) +32 / -2
my-day-page.dom.test.tsxExpect updated wording in the all-clear card +3/-2

Expect updated wording in the all-clear card

• Changes the page assertion to require a single “Updated just now” stamp instead of a clock-only “Checked” stamp.

tests/my-day-page.dom.test.tsx

my-day-updated-ago.test.tsTest age boundaries and missing timestamps +29/-0

Test age boundaries and missing timestamps

• Covers the first minute, one through 59 minutes, the hour boundary, and fallbacks for missing recorded times.

tests/my-day-updated-ago.test.ts

@qodo-code-review

qodo-code-review Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Action required

No findings for this group


Remediation recommended

No findings for this group


Informational

No findings for this group

Grey Divider


Resolved findings

1. Retries leave the data age stale ✗ Dismissed
Description
MyDayPage updates loaded.atMs only when loadedKey changes, but that key contains source
statuses and total item count rather than a completed-read timestamp or generation. When a retry
answers with unchanged statuses and item count, the Needs you card and full list keep aging the
previous answer even though the source has stored a new result.
Code

src/components/my-day/my-day-page.tsx[R426-430]

+  if (loaded.key !== loadedKey) {
+    const ready = state.status === "ready";
+    // The minute tick can be up to a minute stale, so record the real moment unless a clock is injected.
+    const answered = nowProp ?? new Date();
+    setLoaded({ key: loadedKey, at: ready ? perthTimeOf(answered) : null, atMs: ready ? answered.getTime() : null });
Relevance

●●● Strong

Recent My Day precedents accept retry freshness and stale-data fixes, matching this unchanged-shape
retry timestamp bug.

PR-#3417
PR-#3459

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The roster source increments its generation on retry, keeps the previous ready result while the
retry is in progress, and stores a new loaded result when it answers. MyDayPage derives
loadedKey from statuses and merged item count and updates the millisecond timestamp only when that
key changes, so an answer with the same shape does not reset the displayed age.

src/components/my-day/my-day-page.tsx[414-433]
src/components/my-day/sources/roster.ts[198-225]
src/components/my-day/sources/roster.ts[200-225]
src/components/my-day/my-day-page.tsx[416-433]
Skill: review

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
A successful source retry can leave the Needs you card and full list displaying an age tied to an earlier answer when statuses and total item count stay unchanged.

## Fix Focus Areas
- src/components/my-day/my-day-page.tsx[414-433]
- src/components/my-day/use-my-day-items.ts[42-83]
- src/components/my-day/sources/roster.ts[200-225]
- tests/my-day-page.dom.test.tsx[520-532]

## Recommended Fix
Expose a completed-read timestamp or revision from the source state and use it to update both the clock string and millisecond timestamp when a read answers, rather than inferring a new answer from statuses and item count. Add a page test that retries with unchanged statuses and item count and verifies that the age resets.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Data age can run nearly a minute late ✗ Dismissed
Description
answered records the current time, but myDayUpdatedAgo compares it with now, a snapshot that
advances on an independent 60-second interval. When a source answers just after a tick, the label
can still say “just now” after a full minute has elapsed and can switch to clock time late at the
one-hour boundary.
Code

src/components/my-day/my-day-page.tsx[R428-433]

+    // The minute tick can be up to a minute stale, so record the real moment unless a clock is injected.
+    const answered = nowProp ?? new Date();
+    setLoaded({ key: loadedKey, at: ready ? perthTimeOf(answered) : null, atMs: ready ? answered.getTime() : null });
+  }
+  // "Updated 4 min ago": re-read on the minute tick, so the age keeps moving while the time stays.
+  const updated = loaded.at ? myDayUpdatedAgo(now, loaded.atMs, loaded.at) : null;
Relevance

●●● Strong

Recent precedents accept fixes for timestamps and time-dependent displays that remain stale between
independent clock updates.

PR-#2978
PR-#3499

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The hook returns a stored tick updated every 60 seconds, while the page records the source answer
with a separate new Date(). The helper floors their difference and changes wording only at
whole-minute thresholds.

src/components/my-day/my-day-page-parts.tsx[19-42]
src/components/my-day/my-day-page.tsx[428-433]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The answer timestamp and the page's minute tick have different starting points, so age-label changes can lag their elapsed-time thresholds.

## Fix Focus Areas
- src/components/my-day/my-day-page.tsx[428-433]
- src/components/my-day/my-day-page-parts.tsx[19-30]

## Recommended Fix
Schedule age-label updates at elapsed-minute boundaries relative to the recorded answer time. Keep the existing page clock available for its other uses.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
✅ Compliance rules (platform): 9 rules
✅ Cross-repo context — repo relationships
✅ REVIEW.md
Review mode: Auto: ⚖️ Balanced: Localized UI change, but timestamp state and fallback behavior need careful review.

Grey Divider

Tip of the day
💡 Did you know, you can turn these tips off under Display > Comment parts

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread src/components/my-day/my-day-page.tsx Resolved
Comment thread src/components/my-day/my-day-page.tsx Resolved

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dd32e96f73

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/components/my-day/my-day-page.tsx Resolved
- Reset data age after every retry
- Align age updates with answer time
@qodo-code-review

Copy link
Copy Markdown
Contributor

Qodo Fixer

✅ Committed (2) · ☑ Fixed (2)

Grey Divider

Commits pushed directly to this PR — no separate fix PR opened.

Process — 2 fixed
  • ☑ Fixed: Retries leave the data age stale
  • ☑ Fixed: Data age can run nearly a minute late

It bumped the revision when Retry is tapped, not when the sources answer, so
the line could say "Updated just now" while the old data was still showing.
That makes data look fresher than it is, the unsafe direction. Both findings
were answered on the PR and left as they were.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0113Rr2NnmLuLKLWdKTwHHqd

Copy link
Copy Markdown
Owner Author

I've reverted the Qodo Fixer commit (defe3d9) in f3b6298. The branch content is now identical to dd32e96 again.

That commit raised the read revision when Retry is tapped, not when the sources answer. So the line could say "Updated just now" while the old data was still on screen, which makes data look fresher than it is. It also computed the age from a render-time new Date() and added a second timer. Both findings were answered on their threads and deliberately left as they were.


Generated by Claude Code

@gitar-bot
gitar-bot Bot enabled auto-merge (squash) October 13, 2026 04:45

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR (configure)

BigSimmo commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner Author

Three tests failed across the CI runs for this PR. I don't think any of them is caused by this PR, because the diff only changes the My Day "Updated … ago" text.

  1. Browser-matrix run on dd32e96, Firefox shard 2, ui-patient-number-field.spec.ts:214: the serum creatinine digit-entry test, which failed on reading back the stored calculator profile. The other 213 tests in that shard passed.
  2. Browser-matrix run on dd32e96, tablet (WebKit) shard 2, ui-chrome-scroll.spec.ts:419: centring of the Documents home action cluster, which failed because its layout reading came back empty. The other 200 tests in that shard passed. Update: it failed again on re-run, and the same test also fails on main's own browser-matrix run (main CI on 69b9ff0), so it is red on the base branch and not this PR's. A separate test-only fix will follow.
  3. Production UI (1) on f3b6298, ui-specifiers.spec.ts:408: a strict-mode locator matched the severity-remission test ID twice, once inside the mobile composer reserve pad. Update: passed on re-run.

The other 19 of the 21 browser-matrix shards passed, including every Safari and phone shard. PR required was green on f3b6298; the branch has since been brought up to date with main (2945921).

CodSpeed on 2945921 reports answer-ranking: rankAnswerEvidence 23% slower. This PR does not touch answer ranking or any benchmarked code, CodSpeed itself flags that benchmark as dominated by unmeasured system calls, and the same benchmark flagged on an earlier commit of this PR and then passed. I'm treating it as measurement noise.

Production UI (3) on 2945921, ui-tools.spec.ts:3375 (prescribing search results above the phone bottom dock): the page stopped 78 px short of the bottom of its scroll range. The same shard passed on f3b6298, before main was merged in, and this PR changes nothing in prescribing search or the bottom dock; 261 other tests in the shard passed. I'll re-run it once when the run finishes; a second failure gets treated as real.


Generated by Claude Code

@codeant-ai

codeant-ai Bot commented Oct 13, 2026

Copy link
Copy Markdown

CodeAnt PR Risk: Low Risk

  • The PR appears safe to merge; it makes the My Day freshness stamp show relative age while retaining the last-check time for older data.
  • Tests cover the minute and hour boundaries and fallback display, with no concrete unresolved concerns in the supplied code.

Assessed commit: f3b6298ab624

@qodo-code-review

qodo-code-review Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

No code changes since the last review — review skipped

Qodo Logo

@gitar-bot

gitar-bot Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor
CI failed: One Playwright responsive-layout test failed: the prescribing search results sat 78px above the expected scroll position over the phone bottom dock (261 other tests passed). The failure is unrelated to this My Day change, so it is most likely a pre-existing layout or assertion issue.

Overview

One unique error template was found across 3 analyzed logs (job 115141050247). The run had 261 Playwright tests passing and 1 failing, so the overall assessment is a single, isolated UI test failure that does not appear to be caused by this PR.

Failures

Prescribing search results overlap phone bottom dock (confidence: high)

  • Type: test
  • Affected jobs: 115141050247
  • Related to change: no
  • Root cause: In tests/ui-tools.spec.ts:3397, the test "Responsive layout guards › prescribing submitted search keeps results above the phone bottom dock" expected the remaining scroll distance to be at most 1px but received 78px, and timed out. The PR only touches My Day components and the log provides no link to the prescribing UI, so the cause lies in the prescribing page's scroll/layout geometry or in the test's expected geometry.
  • Suggested fix: Review the screenshot, trace, and error context in the uploaded production-ui-diagnostics artifact. Either correct the prescribing results/dock layout or adjust the geometry assertion if the expected scroll position is wrong. Rerun the focused Playwright test to verify.

Summary

  • Change-related failures: None. The single failure is marked unrelated to the PR.
  • Infrastructure/flaky failures: None identified. The Chromium install retry logic succeeded and the artifact download completed.
  • Recommended action: Do not block this My Day PR on the prescribing test. Triage the failing responsive-layout test separately on main or in its own fix.
Code Review ✅ Approved 1 closed / 1 findings

🟡 Medium risk · Changing My Day freshness timestamps could mislead users about how current needs data is if answer-time tracking diverges from loaded content.

Adds a relative age to My Day's Needs you line, so it reads "Updated just now", then "Updated 4 min ago" as minutes pass, and "Updated at 14:05" once data is an hour old. The load moment now records when sources actually answered, which resolves the finding that the age could read up to a minute too old. No open issues found.

✅ 1 closed
✅ Edge Case: Load moment uses the minute-tick clock, so the age reads up to a minute too old

📄 src/components/my-day/my-day-page.tsx:424-429 📄 src/components/my-day/my-day-page-parts.tsx:22-29 📄 src/components/my-day/my-day-page-parts.tsx:39-40
atMs is set from now.getTime(), and now comes from useMyDayNow. That value only changes once every 60 s, so it can be up to 59 s older than the moment the sources actually answered. For example: the tick fires at 14:05:00, the user taps Retry and the data comes back at 14:05:50, so atMs is recorded as 14:05:00. At the 14:06:00 tick the line says "Updated 1 min ago" when the data is only 10 seconds old. The old clock-only stamp was just as coarse, but a relative "min ago" puts the error in front of the reader. Fix: when there is no nowProp, record the real time with Date.now(). A negative age from the next tick already falls into the "just now" branch.

Verification

Rules No rules evaluated

Functional validation Not enabled

Set up

Auto-approval Approved

Tip

Comment Gitar fix CI or enable auto-apply: gitar auto-apply:on

Options

Auto-apply is off → Gitar will not commit updates to this branch.
Display: compact → Counting what did not apply, without listing it.

Comment with these commands to change the behavior for this request:

Auto-apply Compact
gitar auto-apply:on         
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

@gitar-bot
gitar-bot Bot merged commit 08d8fb3 into main Oct 13, 2026
62 of 65 checks passed
@gitar-bot
gitar-bot Bot deleted the claude/project-thread-8ygx0b branch October 13, 2026 05:35
gitar-bot Bot pushed a commit that referenced this pull request Oct 13, 2026
* My Day: show the date with the clock time in 'Updated at' once data is an hour old

Follow-up to #3508 (owner-approved request): past the hour, 'Updated at 14:05' now reads 'Updated at 14:05, Tue 13 Oct' so yesterday's data isn't mistaken for today's. Dated on the work-zone calendar.

* My Day: take the 'Updated at' time and date from the same instant and zone

* My Day: format the hour-old 'Updated at' in the page's work zone

---------

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🟠 Medium blast radius size:M This PR changes 30-99 lines, ignoring generated files 🕐 20-40 Minutes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants