feat(core): add per-slide timer and keep present mode alive when opening presenter#193
feat(core): add per-slide timer and keep present mode alive when opening presenter#193ridemountainpig wants to merge 2 commits into
Conversation
…ing presenter Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
@ridemountainpig is attempting to deploy a commit to the Yiwei Ho Team on Vercel. A member of the Team first needs to authorize it. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (8)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (7)
WalkthroughThis PR adds per-slide elapsed time tracking to the presenter mode UI. The Player component now maintains a per-slide timestamp synchronized with slide changes and includes it in the presenter state payload. The ElapsedClock component is refactored to accept flexible title and muting props, enabling dual-timer displays in both PresentControlBar and PresenterTopBar. Locale types and translations across four languages are extended to support the new "slide elapsed" labels. Presenter window opening behavior is centralized to ensure windowed mode before popup creation. ChangesPer-slide timer feature
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. 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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.changeset/per-slide-timer.md:
- Line 5: Replace the current multi-sentence changeset description for
"per-slide-timer" with a single present-tense line that describes the
user-facing change and removes rationale; e.g. "Add a per-slide timer and keep
present mode synced when opening the presenter view." Ensure the file's body
contains only that one-line summary and no extra sentences or explanation.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 2ad68ca1-a577-43df-a3d2-b2e2fb954b9b
📒 Files selected for processing (10)
.changeset/per-slide-timer.mdpackages/core/src/app/components/player.tsxpackages/core/src/app/components/present/control-bar.tsxpackages/core/src/app/components/present/use-presenter-channel.tspackages/core/src/app/routes/presenter.tsxpackages/core/src/locale/en.tspackages/core/src/locale/ja.tspackages/core/src/locale/types.tspackages/core/src/locale/zh-cn.tspackages/core/src/locale/zh-tw.ts
| "@open-slide/core": minor | ||
| --- | ||
|
|
||
| Add a per-slide timer alongside the overall elapsed time in present mode and the presenter view. Keep present mode alive when opening the presenter window from fullscreen, so the popup surfaces on top and stays in sync instead of stranding on slide one. |
There was a problem hiding this comment.
Shorten to one line without rationale.
The description contains two sentences and includes rationale ("so the popup surfaces on top..."), which violates the changeset guideline. As per coding guidelines, changeset descriptions must be "one line, present-tense, describing what changed from a user's perspective. No paragraphs, no rationale".
📝 Proposed fix
-Add a per-slide timer alongside the overall elapsed time in present mode and the presenter view. Keep present mode alive when opening the presenter window from fullscreen, so the popup surfaces on top and stays in sync instead of stranding on slide one.
+Add per-slide timer in present mode and presenter view, and keep present mode active when opening presenter window from fullscreenAs per coding guidelines: "Changeset descriptions must be short and direct: one line, present-tense, describing what changed from a user's perspective. No paragraphs, no rationale, no 'this PR…'."
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Add a per-slide timer alongside the overall elapsed time in present mode and the presenter view. Keep present mode alive when opening the presenter window from fullscreen, so the popup surfaces on top and stays in sync instead of stranding on slide one. | |
| Add per-slide timer in present mode and presenter view, and keep present mode active when opening presenter window from fullscreen |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.changeset/per-slide-timer.md at line 5, Replace the current multi-sentence
changeset description for "per-slide-timer" with a single present-tense line
that describes the user-facing change and removes rationale; e.g. "Add a
per-slide timer and keep present mode synced when opening the presenter view."
Ensure the file's body contains only that one-line summary and no extra
sentences or explanation.
Summary
fullscreenchangelistener doesn't treat the popup-induced fullscreen exit as a present-mode exit (which previously stranded the presenter on slide one).slideStartedAtthroughPresenterStateand addslideElapsed/slideElapsedTimestrings to all locales (en, ja, zh-cn, zh-tw).Test plan
pnpm typecheckpassespnpm checkclean for changed files🤖 Generated with Claude Code
Summary by CodeRabbit
Summary by CodeRabbit
New Features
Bug Fixes
Documentation