Skip to content

fix(web): stabilize route loading and CCIP state - #593

Merged
hmjn023 merged 5 commits into
developfrom
fix/media-detail-state
Jul 11, 2026
Merged

fix(web): stabilize route loading and CCIP state#593
hmjn023 merged 5 commits into
developfrom
fix/media-detail-state

Conversation

@hmjn023

@hmjn023 hmjn023 commented Jul 11, 2026

Copy link
Copy Markdown
Owner

概要

Query-heavy routeのSSR/CSR境界と画面状態を整理し、メディア詳細の直接アクセス・リロード、CCIP完了反映、Find Similarを安定化します。

Closes #578

変更内容

  • Query状態、query key、retry方針をserver/Tauriで共通化
  • Query-heavy routeをCSR化し、pending fallbackのhydration mismatchを防止
  • CCIP job完了をイベントと状態照会で反映し、処理中のボタン状態を固定
  • CCIPベクトルの有効判定を抽出時刻とメディア更新時刻で判定
  • TanStack SSR診断skillを追加

検証

  • bun run typecheck
  • bun x vp run lint
  • UI unit tests
  • server unit tests
  • server/Tauri build
  • server E2E direct access and reload
  • tanstack-ssr skill validator

Summary by CodeRabbit

  • 新機能
    • 画面ごとに「読み込み中・更新中・オフライン・エラー」の状態表示を統一し、Manager/検索/ソース/詳細で分かりやすく案内。
    • CCIP抽出の進捗「保留」状態を反映し、失敗時の復旧と抽出ボタンの無効化挙動を改善。
  • 改善
    • SSR/ハイドレーションの不整合(Hydration Mismatch等)を抑え、再読み込みでも表示とデータ取得を安定化。
    • 検索・取得処理の中断対応を強化し、不要な通信を削減。
  • テスト
    • SSRクラッシュ/再読み込み/重複API/ジョブイベントの検証を拡充。
  • ドキュメント
    • TanStack SSR の診断手順を追加し、スキル一覧にも反映。

@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: db61fcb1-9dc0-4cb2-a3a1-2d6b46af314a

📥 Commits

Reviewing files that changed from the base of the PR and between f43c0f6 and dcf70b3.

📒 Files selected for processing (5)
  • apps/server/src/routes/config.tsx
  • apps/server/src/routes/manager.tsx
  • apps/server/src/routes/search.tsx
  • apps/server/src/routes/sources/index.tsx
  • apps/server/src/tests/e2e/pages.spec.ts
🚧 Files skipped from review as they are similar to previous changes (4)
  • apps/server/src/routes/search.tsx
  • apps/server/src/routes/manager.tsx
  • apps/server/src/routes/sources/index.tsx
  • apps/server/src/routes/config.tsx

📝 Walkthrough

Walkthrough

Query設定と状態モデルを共通化し、Server/Tauriのloader、検索・一覧画面、ジョブイベント、CCIP処理、SSR/hydration検証を更新しました。

Changes

非同期Query・SSR状態モデル

Layer / File(s) Summary
Query基盤と共通キー
packages/client/*, packages/ui/src/query-options/*, packages/ui/src/query-state.*, apps/tauri/src/queries/*, apps/server/src/infrastructure/api-clients/queries/*
QueryClient設定、AbortSignal、prefetch、query key、pending/error/offline状態を共通化しました。
Server/Tauriの取得配線
apps/server/src/routes/*, apps/server/src/router.tsx, apps/server/src/routes/__root.tsx, apps/tauri/src/routes/*, apps/tauri/src/router.tsx
loaderをensureQueryData中心からprefetchQuery中心へ変更し、Serverの複数ルートでSSRを無効化しました。
画面状態表示
packages/ui/src/hooks/*, packages/ui/src/screens/*, apps/server/src/routes/sources/*
検索・管理・ソース・メディア詳細・設定画面が共通Query状態を使い、更新中、オフライン、エラー、空状態を表示します。

ジョブイベントとCCIP

Layer / File(s) Summary
ジョブイベント配送
packages/ui/src/hooks/use-batch-job-events.ts, apps/server/src/hooks/use-batch-job-events.ts, apps/tauri/src/hooks/use-batch-job-events.ts, apps/server/src/infrastructure/events/*
ジョブイベントの購読、バッファリング、遅延配送、直近イベントリプレイを追加しました。
CCIP状態管理
packages/ui/src/media-sidebar.tsx, apps/server/src/components/media/media-sidebar.tsx
CCIP状態のポーリング、競合応答抑止、保留状態管理、抽出ボタン制御を追加しました。

SSR検証と開発支援

Layer / File(s) Summary
SSR診断手順
.agents/skills/tanstack-ssr/*, AGENTS.md
TanStack SSR、loader、pending表示、hydration、production検証の手順を追加しました。
回帰検証
apps/server/src/tests/e2e/pages.spec.ts, apps/server/src/tests/unit/*, packages/client/src/*, packages/ui/src/*
SSRレスポンス、Hydration Mismatch、設定API重複、Query設定、イベントリプレイ、時刻判定を検証するテストを追加・更新しました。

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

  • hmjn023/solid-imager#556: CCIPベクトル抽出のジョブ状態・ステータス処理が同じコンポーネントで変更されています。
  • hmjn023/solid-imager#575: /configの更新処理とQuery無効化キーを扱っています。
  • hmjn023/solid-imager#590: ルーター境界のpending表示とRouteTransitionIndicator周辺を変更しています。
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning プロジェクトCRUD用APIラッパー追加など、#578の非同期状態統一とは直接関係しない変更が含まれています。 このPRでは未使用のAPI拡張を別PRへ分離し、#578関連のQuery状態/SSR/CCIP修正のみを残してください。
Docstring Coverage ⚠️ Warning Docstring coverage is 2.27% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 主要変更であるルート読み込みの安定化とCCIP状態の改善を端的に示しており、内容に整合しています。
Linked Issues check ✅ Passed 共通Query状態/キー/設定、AbortSignal伝播、SSR/CSR分離、background fetching維持、offline/paused表示が実装され、#578の要求に概ね一致します。
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/media-detail-state

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

@coderabbitai coderabbitai 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.

Actionable comments posted: 3

🧹 Nitpick comments (6)
packages/ui/src/hooks/use-search-page.ts (1)

127-150: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

enabled: !isServer の共通化 packages/ui/src/hooks/use-search-page.ts:127-150 で同じガードを6回書いているので、clientOnlyQueryOptions 相当の共通ヘルパーに切り出してまとめたいです。

🤖 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 `@packages/ui/src/hooks/use-search-page.ts` around lines 127 - 150, 重複している
enabled: !isServer の設定を共通化してください。use-search-page.ts の
tags、sources、allProjects、allIps、allCharacters、allAuthors 各 createQuery
呼び出しで利用できる clientOnlyQueryOptions 相当のヘルパーを定義または既存のものを再利用し、各クエリの設定に適用してください。
packages/ui/src/hooks/use-manager-page.ts (1)

227-242: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

clientOnlyQueryOptions を共通化してください

enabled: !isServer の付与が use-manager-page.tsuse-search-page.ts で重複しています。source-media-page.tsx のローカルヘルパーをそのまま再利用する形ではなく、共通ユーティリティとして切り出して揃えると保守しやすくなります。

🤖 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 `@packages/ui/src/hooks/use-manager-page.ts` around lines 227 - 242,
use-manager-page.ts と use-search-page.ts に重複している enabled: !isServer
の設定を共通化してください。source-media-page.tsx のローカルヘルパーは流用せず、clientOnlyQueryOptions
を共通ユーティリティとして切り出し、projects、ipsQuery、characters、sourcesQuery などの createQuery
呼び出しで利用するよう統一してください。
apps/server/src/components/media/media-sidebar.tsx (1)

109-147: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

getCcipVectorStatussignal を伝播する
apps/server/src/components/media/media-sidebar.tsxAbortController は、apps/server/src/infrastructure/api-clients/ai-api.tsgetCcipVectorStatussignal を受け取らないため実リクエストまで届いていません。signal?: AbortSignal を追加して orpc.ai.ccipVectorStatus(..., { signal }) に渡すと、切り替え時やポーリング重複時の不要な通信を抑えられます。

🤖 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 `@apps/server/src/components/media/media-sidebar.tsx` around lines 109 - 147,
Propagate cancellation from refreshCcipStatus through getCcipVectorStatus by
adding an optional signal parameter to the API client method and passing it in
the orpc.ai.ccipVectorStatus request options; update the caller to provide the
AbortController signal so aborted refreshes cancel the underlying request.
packages/application/src/services/ccip-vector-service.ts (1)

224-237: 🗄️ Data Integrity & Integration | 🔵 Trivial | 💤 Low value

extractedAt === modifiedAt をテストに追加したい LanceDB 側は mediaModifiedAt / extractedAtz.coerce.date()Date に戻しているので型の懸念はないです。>= で equality を current 扱いにする意図だけ、ユニットテストで固定しておきたい。

🤖 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 `@packages/application/src/services/ccip-vector-service.ts` around lines 224 -
237, Add a unit test for the isCurrent method covering the case where
record.extractedAt and media.modifiedAt are exactly equal, asserting the record
is considered current. Keep the existing >= comparison in isCurrent unchanged
and use the existing test fixtures/helpers for the CCIP model, embedding
version, and matching media source ID.
apps/server/src/tests/unit/infrastructure/events/realtime-event-bus.test.ts (1)

67-79: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

新規テストのアサーションが弱く、他テストからのイベント漏れを検出できない。

expect(listener).toHaveBeenCalledWith(event) は「一致する呼び出しが1つでもあればパス」するため、直前のテスト(46-66行目)で発行された job-progress イベントが recentJobEvents に残っていて一緒に再送されても失敗しません。toHaveBeenCalledTimes(1) 等で厳密化するか、テスト前に recentJobEvents をクリアする仕組みを追加することを推奨します。

🤖 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 `@apps/server/src/tests/unit/infrastructure/events/realtime-event-bus.test.ts`
around lines 67 - 79, Strengthen the “replays recent job events to a late
subscriber” test by asserting the listener is called exactly once before
verifying its argument, or clear the shared recent event history before
publishing. Use the existing RealtimeEventBus.publishJob, subscribeToJobs, and
cleanup setup so events from preceding tests cannot be accepted as valid replay
results.
packages/ui/src/screens/sources-screen.tsx (1)

60-99: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

state().phase === "empty" 専用の表示がなく、"data" フェーズと区別されない。

QueryUiStateempty フェーズを定義していますが(PRの目的にも「pending/data/empty/error/offline/background-fetching の共通状態定義」とある)、このコンポーネントでは "empty" 時にグリッドが空のまま表示されるだけで、専用の空状態メッセージがありません。ユーザーには「読み込み中なのか、単に0件なのか」が分かりにくくなります。

💡 追加案
+			<Show when={props.state().phase === "empty"}>
+				<div class="mt-8 text-center" role="status">
+					<p class="text-muted-foreground">登録済みのメディアソースがありません</p>
+				</div>
+			</Show>
+
 			<Show when={props.state().phase === "pending"}>
🤖 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 `@packages/ui/src/screens/sources-screen.tsx` around lines 60 - 99,
QueryUiState の "empty" フェーズに専用表示がなく、空グリッドと区別できない。sources-screen.tsx の
mediaSources() グリッド付近に state().phase === "empty" 用の Show
を追加し、0件であることと必要な案内を表示する。既存の pending・error・offline 表示と重ならない条件にし、data
フェーズの通常表示は維持する。
🤖 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 `@apps/server/src/infrastructure/events/realtime-event-bus.ts`:
- Around line 133-148: subscribeToJobs の deliveredEvents が購読中に無制限に増加しています。初回の
recentJobEvents リプレイ完了後、for ループ直後に deliveredEvents.clear()
を呼び出し、購読開始時の競合防止にのみSetを使用するよう修正してください。

In `@packages/ui/src/media-sidebar.tsx`:
- Around line 115-146: The refreshCcipStatus logic can indefinitely ignore a
“missing” response while the same active job ID remains, leaving polling pending
forever. Add bounded fallback state associated with the active job—such as a
retry counter or elapsed timeout—and in refreshCcipStatus mark the CCIP status
as failed, clear the active job ID, and set isCcipJobPending(false) once the
limit is reached, while resetting the counter when a valid status or different
job is observed.

In `@packages/ui/src/screens/sources-screen.tsx`:
- Around line 32-35: 日本語UI内に英語のフォールバック・ローディング文言が残っています。sources-screen.tsx の
errorMessage() にある "API connection failed" を周辺の表現に合わせた日本語へ変更し、保留状態を表示する箇所の
"Loading sources..." も日本語化してください。

---

Nitpick comments:
In `@apps/server/src/components/media/media-sidebar.tsx`:
- Around line 109-147: Propagate cancellation from refreshCcipStatus through
getCcipVectorStatus by adding an optional signal parameter to the API client
method and passing it in the orpc.ai.ccipVectorStatus request options; update
the caller to provide the AbortController signal so aborted refreshes cancel the
underlying request.

In `@apps/server/src/tests/unit/infrastructure/events/realtime-event-bus.test.ts`:
- Around line 67-79: Strengthen the “replays recent job events to a late
subscriber” test by asserting the listener is called exactly once before
verifying its argument, or clear the shared recent event history before
publishing. Use the existing RealtimeEventBus.publishJob, subscribeToJobs, and
cleanup setup so events from preceding tests cannot be accepted as valid replay
results.

In `@packages/application/src/services/ccip-vector-service.ts`:
- Around line 224-237: Add a unit test for the isCurrent method covering the
case where record.extractedAt and media.modifiedAt are exactly equal, asserting
the record is considered current. Keep the existing >= comparison in isCurrent
unchanged and use the existing test fixtures/helpers for the CCIP model,
embedding version, and matching media source ID.

In `@packages/ui/src/hooks/use-manager-page.ts`:
- Around line 227-242: use-manager-page.ts と use-search-page.ts に重複している enabled:
!isServer の設定を共通化してください。source-media-page.tsx
のローカルヘルパーは流用せず、clientOnlyQueryOptions
を共通ユーティリティとして切り出し、projects、ipsQuery、characters、sourcesQuery などの createQuery
呼び出しで利用するよう統一してください。

In `@packages/ui/src/hooks/use-search-page.ts`:
- Around line 127-150: 重複している enabled: !isServer
の設定を共通化してください。use-search-page.ts の
tags、sources、allProjects、allIps、allCharacters、allAuthors 各 createQuery
呼び出しで利用できる clientOnlyQueryOptions 相当のヘルパーを定義または既存のものを再利用し、各クエリの設定に適用してください。

In `@packages/ui/src/screens/sources-screen.tsx`:
- Around line 60-99: QueryUiState の "empty"
フェーズに専用表示がなく、空グリッドと区別できない。sources-screen.tsx の mediaSources() グリッド付近に
state().phase === "empty" 用の Show を追加し、0件であることと必要な案内を表示する。既存の
pending・error・offline 表示と重ならない条件にし、data フェーズの通常表示は維持する。
🪄 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: CHILL

Plan: Pro Plus

Run ID: e8a3b857-269e-440e-8a28-36b7f4f5954a

📥 Commits

Reviewing files that changed from the base of the PR and between a604b10 and 6cdb196.

📒 Files selected for processing (67)
  • .agents/skills/tanstack-ssr/SKILL.md
  • .agents/skills/tanstack-ssr/agents/openai.yaml
  • AGENTS.md
  • apps/server/src/components/media/media-sidebar.tsx
  • apps/server/src/hooks/use-batch-job-events.ts
  • apps/server/src/infrastructure/api-clients/error-policy.ts
  • apps/server/src/infrastructure/api-clients/queries/index.ts
  • apps/server/src/infrastructure/api-clients/search-api.ts
  • apps/server/src/infrastructure/events/realtime-event-bus.ts
  • apps/server/src/router.tsx
  • apps/server/src/routes/__root.tsx
  • apps/server/src/routes/config.tsx
  • apps/server/src/routes/manager.tsx
  • apps/server/src/routes/search.tsx
  • apps/server/src/routes/sources/$mediaSourceId/$mediaId/index.tsx
  • apps/server/src/routes/sources/$mediaSourceId/components/source-media-page.tsx
  • apps/server/src/routes/sources/$mediaSourceId/index.tsx
  • apps/server/src/routes/sources/index.tsx
  • apps/server/src/tests/e2e/pages.spec.ts
  • apps/server/src/tests/unit/application/services/ccip-vector-service.test.ts
  • apps/server/src/tests/unit/infrastructure/events/realtime-event-bus.test.ts
  • apps/tauri/src/collections/authors-collection.ts
  • apps/tauri/src/collections/characters-collection.ts
  • apps/tauri/src/collections/ips-collection.ts
  • apps/tauri/src/collections/projects-collection.ts
  • apps/tauri/src/collections/query-keys.ts
  • apps/tauri/src/collections/sources-collection.ts
  • apps/tauri/src/collections/tags-collection.ts
  • apps/tauri/src/hooks/use-batch-job-events.ts
  • apps/tauri/src/infrastructure/api-clients/projects-api.ts
  • apps/tauri/src/infrastructure/api-clients/search-api.ts
  • apps/tauri/src/queries/index.ts
  • apps/tauri/src/router.tsx
  • apps/tauri/src/routes/config.tsx
  • apps/tauri/src/routes/manager.tsx
  • apps/tauri/src/routes/search.tsx
  • apps/tauri/src/routes/sources/$mediaSourceId/$mediaId/index.tsx
  • apps/tauri/src/routes/sources/$mediaSourceId/index.tsx
  • apps/tauri/src/routes/sources/index.tsx
  • packages/application/src/services/ccip-vector-service.ts
  • packages/client/src/api-error.test.ts
  • packages/client/src/api-error.ts
  • packages/client/src/create-client.test.ts
  • packages/client/src/create-client.ts
  • packages/client/src/index.ts
  • packages/ui/src/hooks/use-batch-job-events.test.ts
  • packages/ui/src/hooks/use-batch-job-events.ts
  • packages/ui/src/hooks/use-manager-page.ts
  • packages/ui/src/hooks/use-search-page.ts
  • packages/ui/src/hooks/use-source-media-page.ts
  • packages/ui/src/media-sidebar-content.tsx
  • packages/ui/src/media-sidebar.tsx
  • packages/ui/src/query-options/index.ts
  • packages/ui/src/query-options/prefetch.ts
  • packages/ui/src/query-options/query-client.test.ts
  • packages/ui/src/query-options/query-client.ts
  • packages/ui/src/query-options/search-query.test.ts
  • packages/ui/src/query-options/search-query.ts
  • packages/ui/src/query-options/sources-query.ts
  • packages/ui/src/query-state.test.ts
  • packages/ui/src/query-state.ts
  • packages/ui/src/screens/manager-screen.tsx
  • packages/ui/src/screens/media-detail-screen.tsx
  • packages/ui/src/screens/search-screen.tsx
  • packages/ui/src/screens/source-media-screen.tsx
  • packages/ui/src/screens/sources-screen.tsx
  • packages/ui/src/source-media-page.tsx
💤 Files with no reviewable changes (2)
  • apps/server/src/infrastructure/api-clients/error-policy.ts
  • apps/server/src/routes/sources/$mediaSourceId/index.tsx

Comment thread apps/server/src/infrastructure/events/realtime-event-bus.ts
Comment thread packages/ui/src/media-sidebar.tsx
Comment thread packages/ui/src/screens/sources-screen.tsx

@coderabbitai coderabbitai 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/ui/src/media-sidebar.tsx (1)

145-154: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

例外継続時にポーリングが停止しない(missing と同種の無限ループ)

getCcipVectorStatus() が例外を投げ、かつ activeCcipJobId() が残っている場合、isCcipJobPending が解除されないため 215-223 のインターバルが上限もバックオフもなく回り続けます。missing 側は CCIP_MISSING_STATUS_LIMIT で救済されましたが、例外側には同等の逃げ道がありません。同じカウンタで上限を設けて終端させることを推奨します。

🛡️ 例外側にも上限を設ける修正案
 			} catch {
 				if (ccipStatusRequestId() !== requestId) {
 					return;
 				}
 				if (!activeCcipJobId()) {
 					setCcipStatus("failed");
 					setActiveCcipJobId(null);
 					setIsCcipJobPending(false);
+					return;
+				}
+				const missingStatusCount = ccipMissingStatusCount() + 1;
+				setCcipMissingStatusCount(missingStatusCount);
+				if (missingStatusCount >= CCIP_MISSING_STATUS_LIMIT) {
+					setCcipStatus("failed");
+					setActiveCcipJobId(null);
+					setIsCcipJobPending(false);
 				}
 			}
🤖 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 `@packages/ui/src/media-sidebar.tsx` around lines 145 - 154, 例外発生時に
activeCcipJobId() が残るとポーリングが無限継続します。getCcipVectorStatus() の catch 処理に missing
と同じカウンタ方式の上限(CCIP_MISSING_STATUS_LIMIT 相当)を追加し、上限到達時は
setCcipStatus("failed")、setActiveCcipJobId(null)、setIsCcipJobPending(false)
で終了させてください。
🤖 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.

Outside diff comments:
In `@packages/ui/src/media-sidebar.tsx`:
- Around line 145-154: 例外発生時に activeCcipJobId()
が残るとポーリングが無限継続します。getCcipVectorStatus() の catch 処理に missing
と同じカウンタ方式の上限(CCIP_MISSING_STATUS_LIMIT 相当)を追加し、上限到達時は
setCcipStatus("failed")、setActiveCcipJobId(null)、setIsCcipJobPending(false)
で終了させてください。

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 088815fe-2bb0-4589-ac3e-a8cafc6c24bf

📥 Commits

Reviewing files that changed from the base of the PR and between 6cdb196 and f43c0f6.

📒 Files selected for processing (4)
  • apps/server/src/components/media/media-sidebar.tsx
  • apps/server/src/infrastructure/events/realtime-event-bus.ts
  • packages/ui/src/media-sidebar.tsx
  • packages/ui/src/screens/sources-screen.tsx
✅ Files skipped from review due to trivial changes (1)
  • packages/ui/src/screens/sources-screen.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • apps/server/src/infrastructure/events/realtime-event-bus.ts
  • apps/server/src/components/media/media-sidebar.tsx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant