Skip to content

Feat/Hubの移行に伴うコード整理#434

Merged
ujiro99 merged 5 commits into
mainfrom
feat/tidy-up-hub
Jul 14, 2026
Merged

Feat/Hubの移行に伴うコード整理#434
ujiro99 merged 5 commits into
mainfrom
feat/tidy-up-hub

Conversation

@ujiro99

@ujiro99 ujiro99 commented Jul 13, 2026

Copy link
Copy Markdown
Owner

No description provided.

ujiro99 and others added 2 commits July 13, 2026 20:58
…page

The Selection Command Hub app has migrated to a new repository
(selection-command-hub) with a new architecture. packages/hub now only
needs to host public/data/ai-services.json for the AiPrompt command and
serve the e2e test page used by packages/extension's Playwright suite,
so all other pages, components, features, and data have been removed.

The extension's MyCommands widget (command_hub.tsx) only worked by
injecting into hub pages that are now deleted, so it has been removed
along with its manifest.json content_script entry and build config
references. AGENTS.md and README.md have been updated to reflect the
reduced scope.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@claude

claude Bot commented Jul 13, 2026

Copy link
Copy Markdown

レビュー概要

このPRは、コマンド共有プラットフォームとしてのフル機能が新リポジトリ(selection-command-hub)に移行されたことに伴い、packages/hub を「ai-services.json の静的配信 + Extension向けe2eテストページ配信」専用の縮小版に整理し、それに合わせて packages/extension 側の command_hub.tsx 関連コードも削除するものです。追加134行・削除11,303行と非常に大きな削除主体のPRですが、全体として意図は明快で、ドキュメント(AGENTS.md / packages/hub/AGENTS.md)の更新も丁寧に行われています。

一方で、実際にファイルツリーを辿って参照関係を確認したところ、いくつか見落としと思われる箇所がありました。


🐛 バグ・要修正

1. packages/hub/src/components/layout/Header.tsx:14 — ヘッダーロゴのリンク先が404になる

<Link href={`/${lang}`} className={commonCss.hover}>

このPRで packages/hub/src/app/[lang]/page.tsx/en 等のトップページ)が削除され、[lang] 配下には layout.tsxtest/ しか残っていません(packages/hub/src/app/[lang]/ 参照)。さらに packages/hub/src/app/not-found.tsx(カスタム404ページ)も削除されているため、この Header を含む [lang]/layout.tsx/en/test 等どのページでも描画されますが、ロゴをクリックすると存在しないルート(/en 等)に遷移し、Next.js標準の404が表示されてしまいます。
Extensionのe2eテストが利用する /en/test ページ(packages/extension/e2e/pages/TestPage.ts:5)もこの Header を経由するため、この壊れたリンクが残ったままとなります。ロゴをプレーンテキスト化するか、リンク先を HUB_URL(新Hub)やトップレベル test ページに変更するなどの対応が必要です。


🧹 クリーンアップ漏れ(このPRの趣旨と矛盾する残存コード)

2. packages/hub/src/features/locale/*.ts(14言語 × 約200行)に大量の未使用翻訳辞書が残存

各言語ファイルには commandShare / tagPicker / inputForm / confirmForm / SendingForm / completeForm / errorForm / notFound / sortOrder / about / uninstallForm / errorPage などのキーが残っていますが、対応するページ・コンポーネント(CommandShare / TagPicker / InputForm / not-found.tsx / SortOrder / UninstallForm 等)はすべて本PRで削除済みです。実際に参照されているのは cookieConsent キーのみでした(packages/hub/src/components/CookieConsent.tsx:43)。
各ファイルの9割程度が到達不能なデッドコードとして残っており、「縮小版アプリ」を謳う本PRの趣旨(packages/hub/AGENTS.md の「削除済みの機能」節)と矛盾します。バンドルサイズにも無駄に影響するため、辞書全体を cookieConsent(と必要であれば name/shorName/languageName)のみに絞り込むことを推奨します。

3. packages/hub/src/hooks/useLocale.ts:17,38-41 — 未使用の dict / switchBrowserLocale が残存

getDict(lang) を毎回呼び出して dict を返していますが、現在の利用箇所(LocaleSelector.tsx:17, LanguageProvider.tsx:7)はどちらも lang / switchLocale しか使っていません。switchBrowserLocale/${lang} へのredirect用)を使っていた app/page.tsx も削除済みのため、こちらも死んでいるコードです。上記2点と合わせて削除するとよさそうです。

4. packages/hub/src/const.ts:58HUB_URL が未使用

これを参照していた privacy/terms/cookie/uninstall 系ページがすべて削除されたため、packages/hub/src 内で参照箇所がなくなっています(grep確認済み)。削除漏れと思われます。


💡 軽微な指摘

5. packages/hub/src/data/analytics.json / packages/hub/src/components/layout/Footer.tsx:1,9 — フッターの「Last Updated」表示が実質固定値に

GA連携スクリプト(fetch-ga-data.js 等)が削除され、analytics.json{ "updated": 1783225314498 } という固定値のスタブになりましたが、Footer は引き続きこの値から Last Updated: ... を描画しています。今後この日付は更新されず実態と乖離し続けるため、表示自体を削除するか静的なコピーに置き換えることを検討してください。


✅ 良かった点

  • command_hub.tsx / CommandHub.tsx / MyCommands.tsx の削除に合わせて、manifest.jsonvite.config.tsvite-plugin-manifest.ts のcontent_script登録やCSS注入ロジック、コメントまで一貫して更新されている点(packages/extension/manifest.json, packages/extension/vite.config.ts:95-104,187)。
  • ai-services.json のビルド時/実行時参照(vite.config.ts__AI_SERVICES_JSON__aiPrompt.ts の fetch)、および e2eテストページのURL(e2e/pages/TestPage.ts)は、削除後も整合性が保たれていることを確認しました。
  • CookieConsent / Footer から privacy/terms 等の削除済みページへのリンクはきちんと除去されており(3のようなロジック残存はあるものの)、UI上のリンク切れは概ね防げています。
  • yarn.lock / package.json の依存関係整理(zod, react-hook-form, @google-analytics/data, next-sitemap, tldts 等)も削除された機能と対応が取れており、余分な依存が残っていません。
  • utils.test.ts から削除された sortUrlsByDomain のテストも合わせて除去されており、テストの整合性は保たれています。

テストカバレッジについて

今回は機能削除が主体のPRのため新規テストは不要ですが、上記1(リンク切れ)のような「削除漏れ」は自動テストで検知しにくい種類の不具合です。可能であれば、/[lang]/test ページ経由でHeaderのリンクをクリックしても404にならないことをe2eで簡単に確認する、あるいはビルド時に next build の出力(静的エクスポート)でリンク切れがないかを目視確認することをおすすめします。

Fix the Header logo linking to a now-deleted route (404), trim locale
dictionaries down to the keys actually consumed by the reduced hub app,
drop dead code from useLocale and const.ts left over from the feature
removal, and stop showing a Footer "Last Updated" date that was frozen
to a stub value after GA integration was removed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 1.44928% with 68 lines in your changes missing coverage. Please review.
✅ Project coverage is 39.29%. Comparing base (748dce2) to head (0466eb5).

Files with missing lines Patch % Lines
packages/hub/src/app/page.tsx 0.00% 32 Missing ⚠️
packages/hub/src/app/not-found.tsx 0.00% 27 Missing ⚠️
packages/hub/src/components/layout/Header.tsx 0.00% 4 Missing ⚠️
packages/hub/src/app/[lang]/layout.tsx 0.00% 3 Missing ⚠️
packages/hub/src/components/layout/Footer.tsx 0.00% 1 Missing ⚠️
packages/hub/src/hooks/useLocale.ts 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #434      +/-   ##
==========================================
+ Coverage   30.11%   39.29%   +9.17%     
==========================================
  Files         322      237      -85     
  Lines       33435    25291    -8144     
  Branches     1955     1849     -106     
==========================================
- Hits        10070     9938     -132     
+ Misses      23365    15353    -8012     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@claude

claude Bot commented Jul 13, 2026

Copy link
Copy Markdown

レビュー概要

このPRは、packages/hub のフル機能(コマンド共有・検索・多言語対応プラットフォーム)を新リポジトリ(selection-command-hub)へ移行したことに伴う、旧実装のコード整理(大規模削除)です。差分は138ファイル、+143/-13993行と非常に大きいですが、実質的な内容は以下の3種類に整理できます。

  1. packages/hub の旧フル機能(コマンド共有・タグ・多言語ページ・GA連携等)の削除
  2. packages/extension 側の旧Hub連携コード(command_hub.tsx / CommandHub.tsx / MyCommands.tsx)の削除
  3. AGENTS.md / README.md / packages/hub/AGENTS.md の記述更新

全体として意図が明確で、削除漏れ・参照切れも見当たらない、質の高い整理コミットだと思います。以下、確認した点と気になった点を記載します。

良い点

  • 削除の一貫性が高い: packages/extension/src/command_hub.tsx 等の削除に伴い、manifest.jsonpackages/extension/manifest.json:17-29 相当)の対応する content_scripts エントリ、vite.config.tspackages/extension/vite.config.ts:95-107, 182-186)の command_hub 関連の分岐、vite-plugin-manifest.ts のコメントも漏れなく更新されています。
  • 削除された MyCommands.tsx / CommandHub.tsx は、既に新実装の packages/extension/src/new_command_hub.tsx + useCommandHubBridge.tsNEW_HUB_URL = selection-command.com を参照)に置き換わっており、grepで確認した限り旧コードへの参照は残っていません。デッドコードの除去として妥当です。
  • packages/hub/package.jsonpackages/hub/package.json:1012-1077)の依存関係削除(zod, react-hook-form, @google-analytics/data, next-sitemap 等)や yarn.lock の更新も、削除されたコード(scripts/fetch-ga-data.js, src/types/schema.ts, next-sitemap.config.js 等)と整合しており、不要な依存関係の残存もありません。
  • AGENTS.md / packages/hub/AGENTS.mdpackages/hub/AGENTS.md:615-773)のドキュメント更新が丁寧で、「このパッケージは ai-services.json の静的配信と e2e テストページ配信のみを担う」という現状の役割・注意事項(Extension側への影響確認)が明記されており、今後AIエージェントや開発者が誤って機能追加してしまうのを防ぐ効果が期待できます。

気になった点

1. packages/hub のルートページが完全に消滅している(要確認)

packages/hub/src/app/page.tsxpackages/hub/src/app/[lang]/page.tsx の両方が削除されています。加えて packages/hub/src/app/not-found.tsx も削除されているため、GitHub Pages でホストされているサイト(.github/workflows/pages.ymlpackages/hub をビルド・デプロイし続けている)のルートURL(//en/)へアクセスした際は、カスタムの404ページも表示されずNext.jsのデフォルト404になります。

packages/hub/AGENTS.md の説明上は「ai-services.json の配信」と「/en/test のe2eテストページ配信」のみが責務とされているため意図的な整理だとは思いますが、GitHub Pagesの旧URL(README.mdで言及されている https://ujiro99.github.io/selection-command/)に外部からアクセスするユーザーが今後いる場合、体験が悪化する可能性があります。意図的であれば問題ありませんが、念のため確認をお願いします。

2. コミット/PRの粒度について

138ファイルの差分のうち大半(130ファイル程度)が packages/hub の削除で、実質的なロジック変更は packages/extension の11ファイルのみです。レビューのしやすさという観点では、packages/extension 側の変更(実質的な挙動変更を伴う)と packages/hub の純粋な削除・ドキュメント更新を分けたPRにする選択肢もあったかもしれません。とはいえ、今回はほぼ機械的な削除作業のため、このままでも大きな問題はないと考えます。

3. テストカバレッジ

packages/hub/src/features/command.test.ts, tag.test.ts, lib/utils.test.ts 等、削除された機能に対応するテストファイルも一式削除されており、対応漏れは見当たりません。packages/extension 側で削除された MyCommands.tsx / CommandHub.tsx にはもともとテストが存在しなかったため、テスト側の追加対応も不要と判断できます。

4. セキュリティ・パフォーマンス

今回の変更はほぼ削除のみで新規ロジックの追加はないため、セキュリティ・パフォーマンス面で新たに懸念となる点はありませんでした。むしろ @google-analytics/datadompurify など、外部データ処理を行っていた依存関係が削除されることで、攻撃対象領域(attack surface)が縮小するという意味ではプラスの変更です。

まとめ

大規模な削除PRですが、参照切れ・依存関係の不整合は見当たらず、ドキュメントも実態に合わせて丁寧に更新されています。「①ルートページ削除に伴うUX(404表示)が意図通りか」 の1点だけ確認いただければ、マージして問題ないと思います。


🤖 Generated with Claude Code

@ujiro99
ujiro99 merged commit cd03287 into main Jul 14, 2026
4 of 6 checks passed
@ujiro99
ujiro99 deleted the feat/tidy-up-hub branch July 14, 2026 00:40
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