Simplify playlist cap handling#97
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📜 Recent review details⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
🧰 Additional context used📓 Path-based instructions (2)**/*.{ts,tsx}📄 CodeRabbit inference engine (AGENTS.md)
Files:
tests/**⚙️ CodeRabbit configuration file
Files:
🔇 Additional comments (1)
📝 WalkthroughWalkthroughRemoves playlistProbeCap from download profiles: schema and built-in profiles updated, draft state/actions and editor UI stripped of playlist-cap handling, queue submission prefers probe webpage URLs for video probes, and unit/renderer/E2E tests updated or added to reflect these changes. ChangesRemove playlistProbeCap feature
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested labels
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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 |
|
@coderabbitai review |
Action performedReview triggered.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 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 `@tests/e2e/fixture-workflows.spec.ts`:
- Line 31: The extraction of video IDs with the regex
/\[(ARX[0-9A-Z]{8})\]\.mp4/ inside the orderedIds assignment assumes a specific
fixture catalog format; make this explicit by extracting the regex into a
well-named constant (e.g., FIXTURE_VIDEO_ID_REGEX or VIDEO_ID_PATTERN) and/or
adding a one-line comment above the orderedIds declaration that documents the
expected ID format ("IDs are bracketed and start with 'ARX' followed by 8
alphanumeric uppercase chars, followed by .mp4"). Update the orderedIds line to
reference the new constant so the coupling is obvious and easily reusable.
- Around line 28-32: Remove the redundant per-ID containment loop that checks
for each videoId in expectedIds against m3u; keep the extraction that builds
orderedIds via [...m3u.matchAll(/\[(ARX[0-9A-Z]{8})\]\.mp4/g)].map(match =>
match[1]) and the assertion expect(orderedIds).toEqual([...expectedIds]) to
validate both presence and ordering (i.e., delete the for (const videoId of
expectedIds) { expect(m3u).toContain(`[${videoId}].mp4`) } block).
🪄 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: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: bb39143c-ef48-448f-8e4d-c386cf5e6e63
📒 Files selected for processing (10)
src/renderer/src/components/wizard/DownloadProfileEditor.tsxsrc/renderer/src/store/wizard/downloadProfileDraft.tssrc/renderer/src/store/wizard/queueSubmission.tssrc/shared/downloadProfiles.tssrc/shared/schemas.tstests/e2e/fixture-workflows.spec.tstests/renderer/download-profile-editor.test.tsxtests/renderer/probe-orchestrator.test.tsxtests/unit/download-profile-draft.test.tstests/unit/queue-submission.test.ts
💤 Files with no reviewable changes (2)
- src/shared/schemas.ts
- src/shared/downloadProfiles.ts
📜 Review details
🧰 Additional context used
📓 Path-based instructions (11)
**/*.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{ts,tsx}: Favor strict typing, exhaustive checks, and discriminated unions. Useanyandunknownas escape hatches only — if you reach for one, justify it.
Use type inference from Zod schemas: definez.enum([...])→type Foo = z.infer<…>→const FOOS = fooSchema.optionsinstead of redeclaring as TypeScript union literals.
Files:
src/renderer/src/store/wizard/queueSubmission.tstests/unit/download-profile-draft.test.tstests/renderer/download-profile-editor.test.tsxtests/renderer/probe-orchestrator.test.tsxtests/unit/queue-submission.test.tssrc/renderer/src/components/wizard/DownloadProfileEditor.tsxsrc/renderer/src/store/wizard/downloadProfileDraft.tstests/e2e/fixture-workflows.spec.ts
src/renderer/src/**/*.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Do not add
@radix-ui/*dependencies — this project uses@base-ui/reactvia thebase-novaregistry, not Radix primitives.
Files:
src/renderer/src/store/wizard/queueSubmission.tssrc/renderer/src/components/wizard/DownloadProfileEditor.tsxsrc/renderer/src/store/wizard/downloadProfileDraft.ts
src/{shared,main,renderer}/**/*.ts
📄 CodeRabbit inference engine (AGENTS.md)
New shared modules go under
src/shared/so renderer + main both import without IPC. Modules with electron/node-only deps stay insrc/main/services/orsrc/renderer/...and surface their seam via re-exports of pure helpers.
Files:
src/renderer/src/store/wizard/queueSubmission.tssrc/renderer/src/store/wizard/downloadProfileDraft.ts
src/{main,renderer}/**/*.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Emit
updater:availablewith{ version, currentVersion, installChannel }IPC payload 5s after launch. Renderer shows<UpdateBanner>between title bar and content; per-platform UX fromresolveAction(channel, platform).
Files:
src/renderer/src/store/wizard/queueSubmission.tssrc/renderer/src/components/wizard/DownloadProfileEditor.tsxsrc/renderer/src/store/wizard/downloadProfileDraft.ts
src/renderer/**
⚙️ CodeRabbit configuration file
Review React/UI code for state correctness, accessibility, i18n regressions, unsafe DOM usage, IPC misuse, race conditions, and user-facing error handling. Avoid style-only nitpicks unless they affect maintainability.
Files:
src/renderer/src/store/wizard/queueSubmission.tssrc/renderer/src/components/wizard/DownloadProfileEditor.tsxsrc/renderer/src/store/wizard/downloadProfileDraft.ts
tests/unit/**/*.test.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Pure helpers with no I/O must live in their own module with a fixture-driven test alongside. Pattern:
tests/fixtures/yt-dlp-stderr/<kind>/*.txt+tests/unit/yt-dlp-errors.test.ts.
Files:
tests/unit/download-profile-draft.test.tstests/unit/queue-submission.test.ts
tests/**/*.test.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
When adding idempotent IPC registration (
ipcMain.removeHandler(),autoUpdater.removeAllListeners()), add the method asvi.fn()to matchingvi.mock('electron')blocks — otherwise tests fail at module-load.
Files:
tests/unit/download-profile-draft.test.tstests/renderer/download-profile-editor.test.tsxtests/renderer/probe-orchestrator.test.tsxtests/unit/queue-submission.test.ts
tests/**
⚙️ CodeRabbit configuration file
Prioritize meaningful coverage, determinism, and whether tests validate behavior. Do not nitpick formatting or implementation style unless it makes the test unreliable.
Files:
tests/unit/download-profile-draft.test.tstests/renderer/download-profile-editor.test.tsxtests/renderer/probe-orchestrator.test.tsxtests/unit/queue-submission.test.tstests/e2e/fixture-workflows.spec.ts
tests/renderer/**/*.test.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Renderer-local state and component contracts belong in renderer tests. Do not use renderer tests as acceptance tests for download, probe, queue, or filesystem workflows.
Files:
tests/renderer/download-profile-editor.test.tsxtests/renderer/probe-orchestrator.test.tsx
src/renderer/src/**/*.{css,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
src/renderer/src/**/*.{css,tsx}: Font is Poppins (@fontsource/poppins, weights 400/500/600/700). Do not reintroduce Outfit or Geist.
Use CSS tokens fromsrc/renderer/src/styles.css—--border-strong(darker border),--text-subtle(muted label), dark mode--border: hsla(0,0%,100%,0.07).
Apply glow patterns: primary buttonsshadow-[0_4px_14px_var(--brand-glow)], active radioshadow-[0_0_0_2px_var(--brand-dim)], section labelstext-[9px] font-bold uppercase tracking-[0.12em] text-[var(--text-subtle)], back/ghost buttonsborder-[1.5px] border-[var(--border-strong)].
Files:
src/renderer/src/components/wizard/DownloadProfileEditor.tsx
src/renderer/src/**/*.tsx
📄 CodeRabbit inference engine (AGENTS.md)
src/renderer/src/**/*.tsx: Use shadcn/ui primitives and composition (Field,InputGroup,ButtonGroup,ToggleGroup,Card,Alert,Empty,Separator,Badge) before inventing custom controls. Install vianpx shadcn@latest add <component>.
Custom React primitives are acceptable only when shadcn has no fitting component or the component encodes Arroxy-specific product behavior.
Files:
src/renderer/src/components/wizard/DownloadProfileEditor.tsx
🔇 Additional comments (12)
src/renderer/src/store/wizard/downloadProfileDraft.ts (1)
9-59: LGTM!Also applies to: 109-137, 140-195, 214-237
src/renderer/src/components/wizard/DownloadProfileEditor.tsx (1)
7-7: LGTM!Also applies to: 222-244, 606-741
src/renderer/src/store/wizard/queueSubmission.ts (1)
189-192: LGTM!tests/unit/download-profile-draft.test.ts (1)
93-104: LGTM!tests/unit/queue-submission.test.ts (1)
77-90: LGTM!Also applies to: 136-140
tests/renderer/download-profile-editor.test.tsx (1)
25-34: LGTM!tests/e2e/fixture-workflows.spec.ts (5)
35-60: LGTM!
62-76: LGTM!
78-111: LGTM!
113-142: LGTM!
173-189: LGTM!Also applies to: 232-265
tests/renderer/probe-orchestrator.test.tsx (1)
193-218: LGTM!
|
CodeRabbit triage update:
|
✅ Action performedReview finished.
|
Summary
Verification
User-facing changes
Internal / refactor changes
Risk areas
Tests / checks to run