Skip to content

fix: somebugg#62

Merged
MocA-Love merged 7 commits intomainfrom
fix/somebugg
Apr 3, 2026
Merged

fix: somebugg#62
MocA-Love merged 7 commits intomainfrom
fix/somebugg

Conversation

@MocA-Love
Copy link
Copy Markdown
Owner

@MocA-Love MocA-Love commented Apr 3, 2026

概要

変更内容

テスト方法

Summary by CodeRabbit

リリースノート

  • 新機能

    • カメラ権限の管理を追加しました(サイト単位での許可/拒否/リセット、設定メニュー連携)
    • サイト権限メニューからマイク/カメラを直接管理できるようになりました
  • 改善

    • ブックマークのファビコンが自動同期されるようになりました
    • GitHubオーナー検出とプルリクエストのワークスペース添付動作を強化しました
    • ブラウザのユーザーエージェント処理とディープリンク/サイドバーのアクティブ状態管理を改善しました

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 3, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c131c573-f88d-4da2-abff-e6ef0f5a0022

📥 Commits

Reviewing files that changed from the base of the PR and between 7da1d2a and 125eac2.

📒 Files selected for processing (5)
  • apps/desktop/src/lib/trpc/routers/changes/utils/existing-pr-push-target.ts
  • apps/desktop/src/main/lib/browser/browser-site-permission-manager.ts
  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/ContentView/TabsContent/TabView/BrowserPane/components/BookmarkBar/components/BookmarkBarItem/BookmarkBarItem.tsx
  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/ContentView/TabsContent/TabView/BrowserPane/components/BookmarkBar/components/BookmarkFolderItem/BookmarkFolderItem.tsx
  • apps/desktop/src/renderer/stores/sidebar-state.ts

📝 Walkthrough

Walkthrough

ブラウザのサイト単位権限管理(カメラ・マイク)を追加し、macOS 向けメディアアクセス要求の共通化、SitePermissions UI/トグル、User-Agent 正規化、PR 添付解決ロジック、ブックマークパーサの刷新、DB スキーマ拡張、ディープリンクの非同期化を導入しています。

変更内容

Cohort / File(s) Summary
メディアアクセス & ビルド設定
apps/desktop/electron-builder.ts, apps/desktop/src/lib/electron/request-media-access.ts, apps/desktop/src/resources/build/entitlements.mac.plist, apps/desktop/src/resources/build/entitlements.mac.inherit.plist
macOS用のカメラ利用説明を追加し、requestMediaAccess(kind) を実装。macOS では現在状態確認→プロンプト→フォールバックでシステム設定を開く。エンタイトルメントにカメラ権限を追加。
ローカル DB スキーマ
packages/local-db/drizzle/0040_illegal_squadron_supreme.sql, packages/local-db/drizzle/meta/0040_snapshot.json, packages/local-db/drizzle/meta/_journal.json, packages/local-db/src/schema/schema.ts, packages/local-db/src/schema/zod.ts
browser_site_permissions テーブル追加、対応する Drizzle スキーマと Zod 型(SitePermissionKind/SitePermissionValue)を追加。
バックエンド: TRPC 権限 / ブラウザ router
apps/desktop/src/lib/trpc/routers/browser/browser.ts, apps/desktop/src/lib/trpc/routers/permissions.ts
サイト権限取得・設定・リセット・購読の TRPC プロシージャ追加。requestMicrophone を共通 requestMediaAccess に差し替え、新規 requestCamera を追加。
ブラウザ権限管理(メインプロセス)
apps/desktop/src/main/lib/browser/browser-site-permission-manager.ts, apps/desktop/src/main/lib/browser/browser-identity-manager.ts, apps/desktop/src/main/lib/browser/browser-manager.ts, apps/desktop/src/main/index.ts
Electron セッションに対する permission check/request ハンドラを導入する singleton 管理、User-Agent / Sec-CH-UA ヘッダの注入初期化、webContents→paneId 解決 API、初期化呼び出しの追加、深リンク解決の非同期化と GitHub owner キャッシュ化。
フロントエンド: Site Permissions UI
apps/desktop/src/renderer/screens/main/.../SitePermissionsMenu/*, apps/desktop/src/renderer/screens/main/.../BrowserToolbar/BrowserToolbar.tsx, apps/desktop/src/renderer/index.tsx, apps/desktop/src/renderer/routes/_authenticated/settings/.../PermissionsSettings.tsx, apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts
ブラウザツールバーにサイト権限メニューを追加。起点となる origin を正規化し TRPC で権限を取得・購読・設定。カメラ設定行の追加と deep-link ワークスペース永続化を実装。
ブックマーク UI リファクタリング
apps/desktop/src/renderer/.../BookmarkBar/*, BookmarkBarItem.tsx, BookmarkFolderItem.tsx, BookmarkBar.tsx, BrowserPane.tsx, BrowserToolbar/components/SitePermissionsMenu/index.ts
フォルダをネストメニュー化、ツールチップ削除、drag-handle とサブメニューの衝突対策、BrowserPane 側で favicon 同期呼び出しを追加、Toolbar に paneId を渡す変更。
ブックマーク HTML パーサ & 同期
apps/desktop/src/renderer/stores/browser-bookmarks-html.ts, apps/desktop/src/renderer/stores/browser-bookmarks.ts
HTML のトークンストリームベースパーサ導入(フォルダ見出し処理含む)と、URL → favicon を同期するストアアクション syncBookmarkFaviconByUrl を追加。
webview / User-Agent
apps/desktop/src/renderer/screens/.../usePersistentWebview/usePersistentWebview.ts
Electron 特有の Electron/<version> トークンを除いた Chrome ライクな UA を webview に設定するロジックを追加。
PR 添付解決ロジック
apps/desktop/src/lib/trpc/routers/workspaces/utils/github/pr-attachment.ts, .../github.ts, .../pull-request-discovery.ts, .../existing-pr-push-target.ts, .../github.test.ts
PR の添付可否判定とリモート解決を新規モジュール化。既存探索ロジックを fetchGitHubPRStatus 中心に置換し、テストを追加。
プロジェクト / ワークスペースの GitHub owner 解決
apps/desktop/src/lib/trpc/routers/projects/projects.ts, apps/desktop/src/lib/trpc/routers/projects/utils/github.ts, apps/desktop/src/lib/trpc/routers/workspaces/procedures/query.ts
ensureProjectGitHubOwner を導入し、git remote get-url origin のパースを試みた上で gh repo view にフォールバックして owner を永続化。ワークフロー経路で呼び出して返却値を水和。

シーケンス図

sequenceDiagram
    actor User
    participant BrowserPane
    participant SitePermissionsMenu as SitePermissionsMenu(UI)
    participant TRPC as TRPC Router
    participant BrowserSPM as BrowserSitePermissionManager
    participant LocalDB as LocalDB
    participant Electron as ElectronSystem

    User->>BrowserPane: ページ訪問 (paneId, currentUrl)
    BrowserPane->>SitePermissionsMenu: 表示要求
    SitePermissionsMenu->>TRPC: getSitePermissions(url)
    TRPC->>BrowserSPM: getPermissionsForUrl(url)
    BrowserSPM->>LocalDB: SELECT origin/kind
    LocalDB-->>BrowserSPM: 権限レコード
    BrowserSPM-->>TRPC: 権限マップ
    TRPC-->>SitePermissionsMenu: 権限を返す

    Note over Electron,BrowserSPM: ページ側からメディア要求発生
    Electron->>BrowserSPM: permission check/request(media)
    BrowserSPM->>LocalDB: 確認/更新
    BrowserSPM-->>Electron: allow/deny(保存値基準)
    alt ユーザーが UI で許可を選択
        SitePermissionsMenu->>TRPC: setSitePermission(origin, kind, "allow")
        TRPC->>BrowserSPM: setPermission(...)
        BrowserSPM->>LocalDB: upsert
        BrowserSPM->>Electron: requestMediaAccess(kind)
        Electron->>Electron: macOS: askForMediaAccess -> granted? / openExternal(settings)
        Electron-->>BrowserSPM: {granted, openedSystemSettings}
        BrowserSPM-->>TRPC: 結果返却
        TRPC-->>SitePermissionsMenu: 結果反映
    end
Loading

推定コードレビュー時間

🎯 4 (Complex) | ⏱️ ~75分

関連する可能性のあるプルリクエスト

ポエム

🐰 カメラを見つめ、マイクに耳を澄ます、
権限は箱に、深くしまわれず、
ブックマークは巣を分け、枝をたどり、
PR は道しるべ、リモートをつなぎ、
うさぎは跳ねて、コードの庭で祝う。

🚥 Pre-merge checks | ❌ 3

❌ Failed checks (2 warnings, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning PR 説明はテンプレート構造を持っていますが、具体的な内容がなく、プレースホルダーマーカーのみです。概要セクションは空、変更内容はリスト項目がなく、テスト方法も不完全です。 PR 説明を記入してください。変更の目的、具体的な変更点、テスト方法を詳細に説明し、関連する Issue がある場合はリンクしてください。
Docstring Coverage ⚠️ Warning Docstring coverage is 4.41% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive PR タイトル「fix: somebugg」は曖昧で、実装内容を説明していません。実際の変更は複数の機能追加(サイトメディアパーミッション、ブラウザブックマーク改善など)と改善を含んでいますが、タイトルはこれらを示していません。 PR タイトルを、主要な変更内容を反映したより具体的で説明的なものに変更してください。例えば「feat: Add site media permissions and improve browser UX」のように、主要な変更を要約したタイトルを使用してください。

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ 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/somebugg

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 and usage tips.

@MocA-Love MocA-Love self-assigned this Apr 3, 2026
@MocA-Love MocA-Love marked this pull request as ready for review April 3, 2026 11:45
- Export GitRemoteInfo from existing-pr-push-target
- Cast Electron permission details to fix securityOrigin and mediaTypes type errors
- Fix useExhaustiveDependencies lint error in BookmarkBarItem
- Fix formatter error in BookmarkFolderItem
- Fix sidebar-state merge type error for legacy persisted state
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