Skip to content

Develop - #659

Merged
hmjn023 merged 30 commits into
mainfrom
develop
Aug 6, 2026
Merged

Develop#659
hmjn023 merged 30 commits into
mainfrom
develop

Conversation

@hmjn023

@hmjn023 hmjn023 commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • 新機能
    • 256px/512pxのサムネイル生成に対応しました。
    • 不足しているサムネイルのみを生成できるウォームアップ機能を管理画面に追加しました。
    • サムネイル生成の進行状況、件数、結果を確認できるようになりました。
    • 画面サイズに応じたレスポンシブ画像配信に対応しました。
  • 改善
    • 検索結果やメディア一覧で、画像の読み込みと表示速度を改善しました。
    • 検索・メディア画面で、戻った際のスクロール位置を復元できるようになりました。
    • 重複したサムネイル生成の依頼を防止しました。

hmjn023 and others added 30 commits August 2, 2026 14:05
Avoid mounting the full result set while virtual grid metrics are pending, prioritize the first two rows, and prefetch V2 filter metadata like the existing routes.
Keep skeleton rows aligned to the responsive column count and eagerly load the mounted virtual range with a larger overscan buffer.
Match the source collection mount guard so the virtual grid initializes only after the client mount and persisted search state restoration begins.
Limit virtual image prefetching to the initial rows and keep search result queries fresh while navigating back from media details.
perf(ui): V2メディア一覧の初期表示を高速化
fix: preserve active thumbnail jobs during migration
fix: restore virtualized list scroll positions
Keep mounted virtual rows loadable while navigation restoration settles and persist user-owned scroll positions when restoration is cancelled. Add a paginated deep-scroll regression fixture covering post-restore scrolling.
Re-measure the nested virtualizer when its scroll container and content offset become available, and eagerly load mounted rows while the initial range is settling.
fix: preserve search scroll and recover blank virtual grid
@hmjn023
hmjn023 merged commit f02aaa0 into main Aug 6, 2026
1 check was pending
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 780d3140-fa09-4c37-b71e-3b6322d47f2a

📥 Commits

Reviewing files that changed from the base of the PR and between b6c3d44 and 151d75e.

📒 Files selected for processing (68)
  • apps/server/drizzle/0022_sleepy_turbo.sql
  • apps/server/drizzle/meta/0022_snapshot.json
  • apps/server/drizzle/meta/_journal.json
  • apps/server/nitro.config.ts
  • apps/server/public/openapi.json
  • apps/server/scripts/isolated-runtime.ts
  • apps/server/src/application/services/job-dispatch-service.ts
  • apps/server/src/application/services/thumbnail-service.ts
  • apps/server/src/components/imports/pending-downloads-indicator.tsx
  • apps/server/src/components/media/media-grid-item.tsx
  • apps/server/src/components/media/thumbnail-image.tsx
  • apps/server/src/components/v2/v2-app-shell.tsx
  • apps/server/src/hooks/use-media-source-events.ts
  • apps/server/src/infrastructure/api-clients/thumbnails.ts
  • apps/server/src/infrastructure/api/routers/thumbnails-router.ts
  • apps/server/src/infrastructure/bootstrap.ts
  • apps/server/src/infrastructure/jobs/job-worker.ts
  • apps/server/src/infrastructure/jobs/thumbnails.ts
  • apps/server/src/routes/api/sources.$mediaSourceId.thumbnail.$mediaId.ts
  • apps/server/src/routes/manager.tsx
  • apps/server/src/routes/search.tsx
  • apps/server/src/routes/sources/$mediaSourceId/components/source-media-page.tsx
  • apps/server/src/routes/v2/manager.tsx
  • apps/server/src/routes/v2/search.tsx
  • apps/server/src/routes/v2/sources/$mediaSourceId/$mediaId/index.tsx
  • apps/server/src/routes/v2/sources/$mediaSourceId/index.tsx
  • apps/server/src/tests/e2e/ui-components.gallery.spec.ts
  • apps/server/src/tests/e2e/ui-gallery/src.tsx
  • apps/server/src/tests/e2e/ui-gallery/vite.config.ts
  • apps/server/src/tests/e2e/v2-scroll-restoration.spec.ts
  • apps/server/src/tests/unit/application/services/job-dispatch-service.test.ts
  • apps/server/src/tests/unit/infrastructure/jobs/job-worker.test.ts
  • apps/tauri/src/components/media/media-grid-item.tsx
  • apps/tauri/src/components/media/thumbnail-image.tsx
  • apps/tauri/src/infrastructure/api-clients/thumbnails-api.ts
  • apps/tauri/src/infrastructure/media/thumbnail-runtime.ts
  • apps/tauri/src/routes/manager.tsx
  • apps/tauri/src/routes/search.tsx
  • apps/tauri/src/routes/sources/$mediaSourceId/components/source-media-page.tsx
  • packages/application/src/ports/thumbnail-service.ts
  • packages/application/src/services/thumbnail-service.ts
  • packages/core/src/domain/contract/thumbnails.contract.ts
  • packages/core/src/domain/sources/events.ts
  • packages/core/src/domain/thumbnails/schemas.ts
  • packages/db/src/repositories/job-repository.test.ts
  • packages/db/src/repositories/job-repository.ts
  • packages/db/src/schema.ts
  • packages/ui/src/hooks/scroll-container.ts
  • packages/ui/src/hooks/use-current-search-persistence.test.ts
  • packages/ui/src/hooks/use-current-search-persistence.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-grid-item.tsx
  • packages/ui/src/query-options/search-query.test.ts
  • packages/ui/src/query-options/search-query.ts
  • packages/ui/src/screens/manager-screen.tsx
  • packages/ui/src/screens/search-screen.tsx
  • packages/ui/src/screens/source-media-screen.tsx
  • packages/ui/src/screens/v2-manager-screen.tsx
  • packages/ui/src/screens/v2-search-screen.tsx
  • packages/ui/src/screens/v2-source-media-screen.tsx
  • packages/ui/src/source-media-grid.tsx
  • packages/ui/src/source-media-page.tsx
  • packages/ui/src/thumbnail-image.tsx
  • packages/ui/src/thumbnail-source.test.ts
  • packages/ui/src/thumbnail-source.ts
  • packages/ui/src/v2/search-toolbar.tsx

📝 Walkthrough

Walkthrough

サムネイル生成を256px・512px対応に変更し、重複ジョブを排除します。管理画面に不足サムネイルのウォームアップを追加します。メディアグリッドに画像ロード制御、仮想化、スクロール位置復元を追加します。

Changes

サムネイル生成パイプライン

Layer / File(s) Summary
契約とジョブ永続化
packages/core/..., packages/application/..., packages/db/..., apps/server/drizzle/..., apps/server/public/openapi.json
サムネイルサイズ、生成リクエスト・レスポンス、ジョブpayload、イベントを追加しました。アクティブな重複ジョブを制約します。
生成処理とワーカー
apps/server/src/infrastructure/jobs/..., apps/server/src/application/..., apps/server/src/infrastructure/api/..., apps/server/src/routes/api/...
256px・512pxの生成、親子ジョブ、進捗イベント、専用ワーカープール、オンデマンド生成を追加しました。
管理画面のウォームアップ
packages/ui/src/hooks/use-manager-page.ts, packages/ui/src/screens/*manager-screen.tsx, apps/*/routes/manager.tsx, apps/tauri/src/infrastructure/api-clients/thumbnails-api.ts
選択ソースの不足256pxサムネイルを起動し、ジョブ状態と結果を表示します。

メディア表示とスクロール復元

Layer / File(s) Summary
検索データとスクロール復元
packages/ui/src/hooks/*, packages/ui/src/query-options/search-query.ts
検索結果を保持シグナルへ同期し、追加取得とスクロール復元を統合しました。
仮想化と画像ロード
packages/ui/src/source-media-grid.tsx, packages/ui/src/thumbnail*.tsx, packages/ui/src/media-grid-item.tsx, apps/*/components/media/*
スクロール方向別の先読み、画像優先度、srcset、サイズ指定、非同期ロードを追加しました。
画面とルート連携
packages/ui/src/screens/*, apps/server/src/routes/*, apps/server/src/components/*
検索画面、ソース画面、V2ルート、イベント購読を新しい状態管理へ接続しました。
E2E検証
apps/server/src/tests/e2e/*, apps/server/scripts/isolated-runtime.ts
仮想化、画像幅、ページング、再マウント、V2スクロール復元を検証するfixtureとテストを追加しました。

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

✨ 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 develop

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.

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