Skip to content

Work mode: simplify CPD Summary and Admin Today - #3481

Merged
gitar-bot[bot] merged 12 commits into
mainfrom
claude/work-cpd-summary-admin-today-2ank8b
Oct 12, 2026
Merged

gitar-bot[bot] merged 12 commits into
mainfrom
claude/work-cpd-summary-admin-today-2ank8b

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Requested by Josh · project thread

Summary

Before: CPD Summary listed all eight "What's left" items, then repeated the copy count as a "Records to tidy" chip and the weeks left and today's hours in "About this year". Admin Today showed the same dates four ways (hero, Needs you, three count cards, Coming up), then Work and leave and Pay and hours links.

After: CPD Summary shows the top three items, then "See all 8 in End of year". Today's hours join the hero kicker, and the target source stays as a quiet footnote. Admin Today folds the three counts into a slim strip at the top of Coming up, and keeps Today about dates. Contract, Leave, the starter pack and Overtime stay in More.

How: removals and one regrouping on two pages, built from the 12 Oct Work mode simplify plan after Josh approved the mockup ("Build it"). Polish: the progress bar tracks in What's left now use the mode's soft tint, so they read on white. Customise's "Year dates" and "Logged today" switches now control the hero's weeks left and today's hours. The two retired Admin components are kept under the 30 day rule, marked for deletion from 11 Nov 2026.

Areas touched: Personal practice

Verification

  • Checks run: npm run test:focused over the changed files: Test Files 39 passed (39), Tests 520 passed (520). ESLint on changed files (0 warnings) and tsc --noEmit clean. Screenshots from local Chromium at 390 px and 1440 px with example data. Browser suites are left to CI.

Risk and rollout

  • Risk: low. This is UI only, with no data, auth, migration, clinical wording or service worker change.
  • Rollback: revert this PR.
  • Provider or production effects: None.

Notes

  • Josh approved sending this live on 12 Oct 2026; marked ready for review.

🤖 Generated with Claude Code

https://claude.ai/code/session_0168BzqKVmcXcnjkYGCYbq3s


Generated by Claude Code

…up, draft)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0168BzqKVmcXcnjkYGCYbq3s
CPD Summary: What's left shows its top three then See all in End of year; the
copy and reflection chips and About this year go (they repeated What's left and
the hero); today's hours join the hero kicker; target source stays as a quiet
footnote; progress bar tracks read on white.

Admin Today: the three count cards become a strip at the top of Coming up;
Work and leave and Pay and hours leave Today (all still in More).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0168BzqKVmcXcnjkYGCYbq3s
@BigSimmo BigSimmo self-assigned this Oct 12, 2026
@supabase

supabase Bot commented Oct 12, 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 12, 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: 70ff1382-fdeb-4a82-918f-78ea70d13496

  • 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 12, 2026 •

Copy link
Copy Markdown

🏁 CodeAnt Quality Gate Results

Commit: c509a8ac
Scan Time: 2026-10-12 09:21:51 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

@codspeed

codspeed Bot commented Oct 12, 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/work-cpd-summary-admin-today-2ank8b (c509a8a) with main (76f0eb3)

Open in CodSpeed

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0168BzqKVmcXcnjkYGCYbq3s
gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 12, 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)

@BigSimmo
BigSimmo marked this pull request as ready for review October 12, 2026 08:50
@codeant-ai

codeant-ai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR 902635c Oct 12, 2026 · 08:50 08:56

@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 12, 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 12, 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-12T08:53:42.862199Z 902635c 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 12, 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:L This PR changes 100-499 lines, ignoring generated files label Oct 12, 2026
@qodo-code-review qodo-code-review Bot added 🕐 40+ Minutes and removed size:L This PR changes 100-499 lines, ignoring generated files labels Oct 12, 2026
@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Simplify CPD Summary and Admin Today

✨ Enhancement 🧪 Tests 🕐 40+ Minutes

Grey Divider

AI Description

• Show three open CPD items, with a link to the complete End of year checklist.
• Remove repeated CPD facts and place Admin’s renewal counts inside Coming up.
• Keep date-focused navigation on Admin Today; update tests for both layouts.
Diagram

graph TD
  CPD["CPD Dashboard"] --> Hero["Year summary"]
  CPD --> Left["What's left"] --> Check["End of year"]
  Admin["Admin Today"] --> Coming["Coming up"] --> Renewals["Renewals"]
Loading
High-Level Assessment

The regrouping reuses the existing checklist, renewal filters, and page components rather than introducing another source of counts or duplicating navigation. A new aggregate component would add complexity without changing the intended experience.

Files changed (13) +234 / -192

Enhancement (9) +199 / -129
admin-today-page.tsxMove renewal counts into Coming up +2/-11

Move renewal counts into Coming up

• Passes renewal counts to Coming up instead of rendering separate count cards. Removes Work and leave and Overtime from Today.

src/components/admin/admin-today-page.tsx

admin-work.module.cssStyle the compact renewal tally +55/-0

Style the compact renewal tally

• Adds a three-column tally with dividers, tap targets, focus treatment, and quieter zero counts.

src/components/admin/admin-work.module.css

today-at-a-glance.tsxConvert count cards into a tally strip +39/-37

Convert count cards into a tally strip

• Replaces the standalone count-card section with a compact list. Preserves status shapes, zero counts, accessible link labels, and filtered Renewals destinations.

src/components/admin/today/today-at-a-glance.tsx

today-coming-up-module.tsxEmbed counts above Coming up dates +14/-1

Embed counts above Coming up dates

• Accepts renewal counts and displays the tally at the top of the card, including when there are no upcoming date rows.

src/components/admin/today/today-coming-up-module.tsx

cme-dashboard-catch-up.tsxPut today's hours in the CPD hero +11/-4

Put today's hours in the CPD hero

• Adds optional today's-hours and year-dates controls to the year summary. The hero keeps its year label separate from today's hours and preserves the closed-year label.

src/components/cme/cme-dashboard-catch-up.tsx

cme-dashboard-whats-left.tsxLimit visible open items to three +26/-1

Limit visible open items to three

• Shows the top three open items and links to the complete End of year checklist when more remain. Completed items retain their collapsible group.

src/components/cme/cme-dashboard-whats-left.tsx

cme-dashboard.tsxRemove repeated CPD summary content +46/-71

Remove repeated CPD summary content

• Keeps only the drafts chip, removes About this year, and moves target provenance to a footnote. Passes Customise settings to the hero and retains an End of year link when What's left is hidden.

src/components/cme/cme-dashboard.tsx

cme-work.cssImprove mini progress-track visibility +4/-2

Improve mini progress-track visibility

• Slightly increases the track height and uses the mode's soft tint so the unfilled portion reads against white.

src/components/cme/cme-work.css

module-order.tsClarify CPD Customise switch descriptions +2/-2

Clarify CPD Customise switch descriptions

• Changes the descriptions for today's hours and year dates to reflect their placement in the summary.

src/lib/cme/module-order.ts

Tests (2) +29 / -63
admin-today-page.dom.test.tsxTest the simplified Admin Today layout +14/-24

Test the simplified Admin Today layout

• Verifies that the tally sits within Coming up and the retired links do not appear on Today. Adjusts the empty-state Renewals assertion for the additional tally links.

tests/admin-today-page.dom.test.tsx

cme-dashboard-today.dom.test.tsxTest condensed CPD checklist and chips +15/-39

Test condensed CPD checklist and chips

• Checks the three-item limit and End of year link, and expects only the drafts chip when drafts exist.

tests/cme-dashboard-today.dom.test.tsx

Documentation (2) +6 / -0
work-and-leave-group.tsxMark the retired Work and leave group +3/-0

Mark the retired Work and leave group

• Documents that the component is no longer rendered on Today and records its proposed deletion date.

src/components/admin/junior/work-and-leave-group.tsx

today-requirements-module.tsxMark the retired Overtime row +3/-0

Mark the retired Overtime row

• Documents that the Overtime row is no longer rendered on Today and records its proposed deletion date.

src/components/admin/today/today-requirements-module.tsx

@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: 902635c6a3

ℹ️ 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".

@qodo-code-review

qodo-code-review Bot commented Oct 12, 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. Today's hours vanish without a target ✓ Resolved
Description
CmeDashboard now passes loggedTodayHours only to CmeYearSummary, but that component's
no-target variant returns before rendering todayHours. When someone has logged activity but has
not confirmed a yearly target, removing the old Today fact from About this year leaves no display
of today's hours, even with “Logged today” enabled.
Code

src/components/cme/cme-dashboard.tsx[R386-387]

+      todayHours={shows("audited-today") ? loggedTodayHours : 0}
+      showTimeLeft={shows("year-dates")}
Relevance

●●● Strong

This is a deterministic missing-state rendering bug caused by an early no-target return.

PR-#3197

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The UX review skill calls for checking user flows during UI refactoring. The new prop supplies
today's hours to the summary, but its no-target branch does not use that prop; the diff also removes
the former Today fact.

src/components/cme/cme-dashboard.tsx[383-387]
src/components/cme/cme-dashboard-catch-up.tsx[300-328]
Skill: ux-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
Today's logged hours disappear from CPD Summary when the yearly target is unconfirmed, because the new hero-only display does not render in the no-target variant.
## Fix Focus Areas
- src/components/cme/cme-dashboard.tsx[383-387]
- src/components/cme/cme-dashboard-catch-up.tsx[304-328]
## Recommended Fix
Render today's hours in the no-target summary variant when the Logged today setting is enabled and hours are positive. Add a focused test using entries logged today, no confirmed target, and both states of that setting.

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


2. Classic users lose Today's overtime link ✓ Resolved
Description
AdminTodayPage removes TodayOvertimeRow, but the replacement overtime item in Admin's More
navigation belongs to the new work side menu. When a reader uses classic work mode, Today no longer
offers that shortcut and the replacement menu is not mounted, although the Roster destination
remains reachable elsewhere.
Code

src/components/admin/admin-today-page.tsx[206]

-            <TodayOvertimeRow />
Relevance

●●● Strong

Recent precedent accepts preserving classic-mode discoverability when new navigation is
work-mode-only.

PR-#3480

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The removed row linked directly to Roster's hours view. Its replacement is defined in Admin More,
while useWorkSideNav selects that navigation only for new-work-mode readers; classic readers
receive the clinical sidebar instead.

src/components/admin/today/today-requirements-module.tsx[40-53]
src/lib/work-frame/areas.ts[1110-1125]
src/components/work-frame/work-rail.tsx[18-24]
src/components/clinical-dashboard/global-search-shell.tsx[961-982]

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

## Issue description
Removing Today's overtime row leaves classic-work-mode readers without its replacement in Admin More.

## Fix Focus Areas
- src/components/admin/admin-today-page.tsx[189-198]
- src/components/work-frame/work-rail.tsx[18-24]
- src/lib/work-frame/areas.ts[1114-1123]

## Recommended Fix
Keep an overtime link on Admin Today for classic-work-mode readers, or expose the Admin More item in their navigation too.

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


3. Empty years lose their date range ✓ Resolved
Description
showTimeLeft reaches the year label only after CmeYearSummary's empty-year branch, while this
change removes the separate date-range fact. When a confirmed year has no hours logged, enabling
“Year dates” no longer displays the former “1 Jan to 31 Dec” range; the empty card's year label is
screen-reader-only.
Code

src/components/cme/cme-dashboard.tsx[387]

+      showTimeLeft={shows("year-dates")}
Relevance

●●● Strong

The setting-controlled date content is lost in the empty-year branch, a clear UI regression.

PR-#3197

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The dashboard now passes the setting into the summary instead of rendering the former date fact. The
summary's empty-year return precedes its visible hero kicker, and its year label is
screen-reader-only.

src/components/cme/cme-dashboard.tsx[383-388]
src/components/cme/cme-dashboard-catch-up.tsx[334-359]
src/lib/cme/module-order.ts[33-45]

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 Year dates setting no longer shows a date range when a confirmed CPD year has no logged hours.

## Fix Focus Areas
- src/components/cme/cme-dashboard.tsx[383-388]
- src/components/cme/cme-dashboard-catch-up.tsx[334-359]

## Recommended Fix
Render the selected year's date range in the empty summary when `showTimeLeft` is enabled, while preserving the bare empty state when it is disabled.

ⓘ 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
✅ Skills: 7 invoked
  gates
  accessibility-review
  design-review
  frontend-architecture-review
  testing-review
  code-quality-review
  review
✅ Cross-repo context — repo relationships
✅ REVIEW.md
Review mode: Auto: 🚀 Fast: Localized low-risk UI changes with straightforward, contained behavior.

Grey Divider

Tip of the day
💡 Did you know, you can commit Qodo's fix in one click with committable suggestions (GitHub & GitLab)

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Previous reviews

Review updated until commit c509a8a

Results up to commit 902635c ⚖️ Balanced


🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)


Action required

No findings for this group


Remediation recommended

No findings for this group


Informational

No findings for this group


Resolved findings

1. Today's hours vanish without a target ✓ Resolved
Description
CmeDashboard now passes loggedTodayHours only to CmeYearSummary, but that component's
no-target variant returns before rendering todayHours. When someone has logged activity but has
not confirmed a yearly target, removing the old Today fact from About this year leaves no display
of today's hours, even with “Logged today” enabled.
Code

src/components/cme/cme-dashboard.tsx[R386-387]

+      todayHours={shows("audited-today") ? loggedTodayHours : 0}
+      showTimeLeft={shows("year-dates")}
Relevance

●●● Strong

This is a deterministic missing-state rendering bug caused by an early no-target return.

PR-#3197

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The UX review skill calls for checking user flows during UI refactoring. The new prop supplies
today's hours to the summary, but its no-target branch does not use that prop; the diff also removes
the former Today fact.

src/components/cme/cme-dashboard.tsx[383-387]
src/components/cme/cme-dashboard-catch-up.tsx[300-328]
Skill: ux-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
Today's logged hours disappear from CPD Summary when the yearly target is unconfirmed, because the new hero-only display does not render in the no-target variant.
## Fix Focus Areas
- src/components/cme/cme-dashboard.tsx[383-387]
- src/components/cme/cme-dashboard-catch-up.tsx[304-328]
## Recommended Fix
Render today's hours in the no-target summary variant when the Logged today setting is enabled and hours are positive. Add a focused test using entries logged today, no confirmed target, and both states of that setting.

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


2. Classic users lose Today's overtime link ✓ Resolved
Description
AdminTodayPage removes TodayOvertimeRow, but the replacement overtime item in Admin's More
navigation belongs to the new work side menu. When a reader uses classic work mode, Today no longer
offers that shortcut and the replacement menu is not mounted, although the Roster destination
remains reachable elsewhere.
Code

src/components/admin/admin-today-page.tsx[206]

-            <TodayOvertimeRow />
Relevance

●●● Strong

Recent precedent accepts preserving classic-mode discoverability when new navigation is
work-mode-only.

PR-#3480

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The removed row linked directly to Roster's hours view. Its replacement is defined in Admin More,
while useWorkSideNav selects that navigation only for new-work-mode readers; classic readers
receive the clinical sidebar instead.

src/components/admin/today/today-requirements-module.tsx[40-53]
src/lib/work-frame/areas.ts[1110-1125]
src/components/work-frame/work-rail.tsx[18-24]
src/components/clinical-dashboard/global-search-shell.tsx[961-982]

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

## Issue description
Removing Today's overtime row leaves classic-work-mode readers without its replacement in Admin More.

## Fix Focus Areas
- src/components/admin/admin-today-page.tsx[189-198]
- src/components/work-frame/work-rail.tsx[18-24]
- src/lib/work-frame/areas.ts[1114-1123]

## Recommended Fix
Keep an overtime link on Admin Today for classic-work-mode readers, or expose the Admin More item in their navigation too.

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


3. Empty years lose their date range ✓ Resolved
Description
showTimeLeft reaches the year label only after CmeYearSummary's empty-year branch, while this
change removes the separate date-range fact. When a confirmed year has no hours logged, enabling
“Year dates” no longer displays the former “1 Jan to 31 Dec” range; the empty card's year label is
screen-reader-only.
Code

src/components/cme/cme-dashboard.tsx[387]

+      showTimeLeft={shows("year-dates")}
Relevance

●●● Strong

The setting-controlled date content is lost in the empty-year branch, a clear UI regression.

PR-#3197

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The dashboard now passes the setting into the summary instead of rendering the former date fact. The
summary's empty-year return precedes its visible hero kicker, and its year label is
screen-reader-only.

src/components/cme/cme-dashboard.tsx[383-388]
src/components/cme/cme-dashboard-catch-up.tsx[334-359]
src/lib/cme/module-order.ts[33-45]

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 Year dates setting no longer shows a date range when a confirmed CPD year has no logged hours.

## Fix Focus Areas
- src/components/cme/cme-dashboard.tsx[383-388]
- src/components/cme/cme-dashboard-catch-up.tsx[334-359]

## Recommended Fix
Render the selected year's date range in the empty summary when `showTimeLeft` is enabled, while preserving the bare empty state when it is disabled.

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


Grey Divider

Qodo Logo

Comment thread src/components/cme/cme-dashboard.tsx Resolved
Comment thread src/components/cme/cme-dashboard.tsx Resolved
- Show today's hours without a target
- Show year dates in empty summaries
@qodo-code-review

Copy link
Copy Markdown
Contributor

Qodo Fixer

✅ Committed (3) · ☑ Fixed (3)

Grey Divider

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

Process — 3 fixed
  • ☑ Fixed: Today's hours vanish without a target
  • ☑ Fixed: Classic users lose Today's overtime link
  • ☑ Fixed: Empty years lose their date range

The no-target summary (screen 10) still printed the bare year after About
this year was removed, so weeks left and today's hours vanished there.

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

codeant-ai Bot commented Oct 12, 2026

Copy link
Copy Markdown

CodeAnt Nitpicks

1 code suggestion

1. During loading, the count placeholders are under Needs you on the left; after this change, the counts appear inside Coming up on the right, visibly shifting the layout when data loads.

Css layout issue · src/components/admin/admin-today-page.tsx:194

@codeant-ai

codeant-ai Bot commented Oct 12, 2026

Copy link
Copy Markdown

CodeAnt PR Risk: Low Risk

  • The PR appears safe to merge; the changes simplify the Today pages and keep the relevant renewal and year-end navigation paths.
  • In the empty CME state, turning off Year dates also hides the closed-year label, despite closed years being intended to remain identifiable.

Assessed commit: cd792e625f25

@gitar-bot
gitar-bot Bot enabled auto-merge (squash) October 12, 2026 08:56
gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 12, 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)

…day-2ank8b' into claude/work-cpd-summary-admin-today-2ank8b
The automated fix added a second today's-hours line beside the one in the
kicker, and put Overtime back on Admin Today, which the approved plan moved
to More. Keep its visible year dates on the empty summary.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0168BzqKVmcXcnjkYGCYbq3s
gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 12, 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)

…abelled

The counts moved into Coming up, so the loading shape no longer shows a
count row under Needs you. An empty closed year keeps its visible label
even with Year dates off.

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

@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)

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 5e047db

@qodo-code-review

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

Copy link
Copy Markdown
Contributor

No code changes since the last review — review skipped

Qodo Logo

@gitar-bot

gitar-bot Bot commented Oct 12, 2026

Copy link
Copy Markdown
Contributor
Code Review ✅ Approved 1 closed / 1 findings

🟡 Medium risk · Showing only three CPD items and moving Admin Today counts into Coming up could make follow-up needs less immediately visible.

Simplifies the CPD Summary and Admin Today pages: CPD Summary now shows the top three "What's left" items with a "See all" link, today's hours move into the hero kicker, and Admin Today folds its counts into a slim strip above Coming up. The hero kicker change that broke an exact-text Playwright check has been resolved. No open issues found.

Auto-approved: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria.

✅ 1 closed
✅ Bug: Hero kicker now adds "· 1 h today", breaking exact-text Playwright check

📄 src/components/cme/cme-dashboard-catch-up.tsx:368-373 📄 src/components/cme/cme-dashboard.tsx:386
CmeYearSummary now puts the today-hours span inside the cme-year-label element. The demo year (src/lib/cme/demo-year.ts, entry cme-2026-047) logs 1 h on 2026-09-19, and tests/ui-cme-phone.spec.ts freezes the clock to that same day. With audited-today on by default, the label on /cme now reads "2026 · about 15 weeks left · 1 h today". Line 52 of that spec uses toHaveText("2026 · about 15 weeks left"), which needs the whole text to match, so the browser suite will fail in CI. The jsdom tests still pass because toHaveTextContent only checks for a substring. They are the only checks the PR ran; it left the browser suites to CI. Fix: move the today span out of cme-year-label into a sibling inside the kicker row, or change the spec to toContainText and assert the cme-audited-today text on its own.

Review coverage

🤖 Auto-approval Approved

📋 Rules No rules evaluated

🧪 Functional validation Not enabled · Set up

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

Copy link
Copy Markdown
Owner Author

CodSpeed flags one regressed benchmark on c509a8a, but this PR is not the cause. The benchmarks in bench/clinical-core.bench.ts cover ranking, chunking and entity matching. This PR changes only CPD and Admin UI components and their tests, and none of those benchmarks import that code. CodSpeed also warns that these benchmarks spend significant time in uninstrumented system calls, and the previous head (5e047db) passed with the same benchmark code. I'm not changing anything for it; CodSpeed is not part of the required PR required gate.


Generated by Claude Code

@gitar-bot
gitar-bot Bot merged commit ab72c1f into main Oct 12, 2026
38 of 39 checks passed
@gitar-bot
gitar-bot Bot deleted the claude/work-cpd-summary-admin-today-2ank8b branch October 12, 2026 09:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants