From a24e9fca6e748773b689c14b6635b627d59a6de7 Mon Sep 17 00:00:00 2001 From: hume <13506491+shsw228@users.noreply.github.com> Date: Fri, 14 Aug 2026 15:41:50 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[docs]=20=E3=82=B9=E3=83=88=E3=82=A2?= =?UTF-8?q?=E3=81=AE=E8=AA=AC=E6=98=8E=E6=96=87=E3=81=A8=E6=8F=90=E5=87=BA?= =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=BC=E3=83=A0=E3=81=AE=E5=9B=9E=E7=AD=94?= =?UTF-8?q?=E3=82=92=E7=BD=AE=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) --- store/README.md | 1 + store/listing/description-en.txt | 45 +++++++++++++++++++++++++++++ store/listing/description-ja.txt | 45 +++++++++++++++++++++++++++++ store/listing/justification-ja.txt | 46 ++++++++++++++++++++++++++++++ 4 files changed, 137 insertions(+) create mode 100644 store/listing/description-en.txt create mode 100644 store/listing/description-ja.txt create mode 100644 store/listing/justification-ja.txt diff --git a/store/README.md b/store/README.md index e6d4d2f..635c629 100644 --- a/store/README.md +++ b/store/README.md @@ -6,6 +6,7 @@ Everything that the listing needs, and how it is made. |---|---| | `screenshots/` | The captures of the real pages (`raw-*.jpg`), as they came out of the browser | | `promo/` | `promo.html` (one file for every image) and `build.sh` | +| `listing/` | The words of the listing: the description in both languages and the answers of the submission form, ready to paste | | `assets/ja`, `assets/en` | What goes to the store, one set per language. Made by `build.sh`; do not edit by hand | ```sh diff --git a/store/listing/description-en.txt b/store/listing/description-en.txt new file mode 100644 index 0000000..3dc940c --- /dev/null +++ b/store/listing/description-en.txt @@ -0,0 +1,45 @@ +An unofficial extension that rebuilds the PC web of dアニメストア, a Japanese anime streaming service. + +The lists become grids over the full width, every episode of a work is on one screen, and an episode plays in a window over the list instead of a navigation. Each of the eleven features has its own switch, and one main switch gives the original site back. + +WHAT IT CHANGES + +- Lists (continue watching, favorites, history, complete, all works) + Two fixed columns in 860px become a grid over the full width. The paging becomes an infinite scroll, and what you watched, and how far, is on the card. + +- Top page + 15 horizontal strips (4000 to 10000px wide each) become one screen: a showcase of the ranking, the episodes of today, the ranking with numbers, and one grid with chips. 4700px of height become 1372px. + +- Work page + The head becomes a full-width hero and goes from 563px to 320px. The episodes stop moving 12 at a time and become a grid of every episode. The summary, the genres, the cast and the staff stop folding and become tables. + +- Search + The search of the header opens a float that does not leave the page, and results arrive while you type. Cmd-K (Ctrl-K) and / open it too. The rentals can be left out, so only what the subscription has is shown. + +- Playback + The play button opens a window over the list instead of leaving the page. The control bar is outside of the video, so it hides nothing: previous and next episode, steps of 10 and 30 seconds, play rate, volume, and a large size. From the chapters of the playback data a "skip to the main story" button appears, and the chapters are drawn as a strip under the seek bar. Esc or a click on the background closes it. + +- Comments + While an episode plays, the comments of the same episode come from the official channel on nicovideo, over the video and in a list on the right. Their density is a histogram under the seek bar, so the loud parts are visible. A video is accepted only when the work title, the season, the episode number and the length all agree; when it is not certain, nothing is shown, so the comments of another episode never appear. For an episode that the search cannot find, the address of a video can be given by hand. + +SETTINGS + +The toolbar icon opens a popup, and the same rows are on the options page: a switch per feature, the draw rate and the duration of the comments, the smallest width of a card, the resolution of the thumbnails, the default order of the search, and the language of this extension (Japanese or English). A change is saved at once. + +PLEASE NOTE + +- This is a personal project. It has no relation to NTT DOCOMO, INC. or to nicovideo, and neither of them endorses it. +- It reads the HTML and the CSS of the site to rebuild the display, so a change of the site can break it. +- It has no feature that downloads or redistributes a video, and it never reads the DRM data of the playback interface. +- It works on the PC web (animestore.docomo.ne.jp). The book pages (/book/) and the goods pages (/ec/) are out of scope. +- A subscription to the service is required to watch. This extension gives no access to any content. + +PRIVACY + +Nothing that identifies a user is collected and nothing is sent anywhere. There is no analytics and no advertising. The settings and the cached comments stay inside your browser. +https://github.com/shsw228/d-tweaks/blob/main/PRIVACY.md + +SOURCE CODE + +The logic is Rust compiled to WebAssembly. The source and the build command are public. +https://github.com/shsw228/d-tweaks diff --git a/store/listing/description-ja.txt b/store/listing/description-ja.txt new file mode 100644 index 0000000..9130b4a --- /dev/null +++ b/store/listing/description-ja.txt @@ -0,0 +1,45 @@ +dアニメストアの PC 版サイトの表示を作り変える、非公式の拡張機能です。 + +一覧は画面幅いっぱいのグリッドになり、エピソードは全話が一度に並び、再生はページを離れずに一覧の上で始まります。切り替えは 11 個の機能ごとに独立していて、全体スイッチ 1 つでサイト本来の表示に戻ります。 + +■ 変わるところ + +・一覧(続きから見る/気になる/視聴履歴/コンプリート/全アニメ一覧) + 860px 固定 2 列だった一覧が、画面幅いっぱいのグリッドになります。ページ送りはスクロールで継ぎ足す無限スクロールに変わり、視聴済みとどこまで見たかがカードの上に出ます。 + +・トップページ + 15 本の横スクロール(中身の幅は 4000〜10000px)を 1 画面に組み替えます。ランキングのショーケース、今日更新された話、順位つきランキング、チップで切り替えるグリッドの 4 段構成です。縦 4700px が 1372px になります。 + +・作品ページ + 見出しが全幅のヒーローになり、高さが 563px から 320px に縮みます。12 話ずつ横送りだったエピソードは全話のグリッドになり、あらすじ・ジャンル・キャスト・スタッフは折りたたみをやめて表になります。 + +・さがす + ヘッダの「さがす」でページ遷移せず、打ちながら結果が出るフロート検索が開きます。⌘K(Ctrl+K)と / でも開きます。レンタル作品を除いた見放題だけの表示にもできます。 + +・再生 + 再生ボタンでページを離れず、一覧の上に重ねたウィンドウで再生します。操作バーは映像の外にあるので画面を隠しません。前話・次話、10 秒と 30 秒の移動、再生速度、音量、最大化。配信データの章立てから「本編へスキップ」を出し、シークバーの下には章立ての帯が並びます。Esc または背景クリックで閉じます。 + +・コメント + 再生中に、ニコニコ動画の公式配信から同じ話のコメントを取ってきて映像に重ね、右の一覧にも並べます。コメント量はシークバーの下にヒストグラムで出るので、盛り上がったところが分かります。作品名・季・話数・尺で動画を突き合わせ、確実でないときは何も出しません(別の話のコメントを出さないためです)。見つからない話は、動画の URL を直接指定できます。 + +■ 設定 + +ツールバーのアイコンで開くポップアップ、または設定ページで切り替えます。機能ごとの ON/OFF、弾幕の描画レートと流れきる時間、一覧カードの下限幅、サムネイルの解像度、検索の既定の並び、表示言語(日本語 / English)を選べます。切り替えはその場で保存されます。 + +■ ご注意 + +・この拡張は個人が作ったもので、株式会社NTTドコモおよびニコニコとは関係がありません。両者による推奨も受けていません。 +・サイトの HTML や CSS を読んで表示を作り変えるため、サイトの変更で動かなくなることがあります。 +・動画を保存したり再配布する機能はありません。再生に使われる著作権保護(DRM)関連のデータは読みません。 +・対象は PC 版サイト(animestore.docomo.ne.jp)です。ブック(/book/)とグッズ(/ec/)は対象外です。 +・視聴には dアニメストアの契約が必要です。この拡張が視聴権を与えることはありません。 + +■ プライバシー + +利用者を識別できる情報を集めず、外部にも送りません。解析も広告も入っていません。設定とコメントの控えは、お使いのブラウザの中だけに保存されます。 +https://github.com/shsw228/d-tweaks/blob/main/PRIVACY.md + +■ ソースコード + +処理は Rust を WebAssembly にしたものです。ソースと組み立て手順は公開しています。 +https://github.com/shsw228/d-tweaks diff --git a/store/listing/justification-ja.txt b/store/listing/justification-ja.txt new file mode 100644 index 0000000..e07ead0 --- /dev/null +++ b/store/listing/justification-ja.txt @@ -0,0 +1,46 @@ +提出フォームの各欄にそのまま貼るための文。項目名はダッシュボードの見出しに合わせています。 + +── 単一の目的 ────────────────────────────── + +dアニメストアの PC 版サイトの表示を作り変えることです。一覧・トップページ・作品ページ・検索の描画と、同一ページ内での 1 話の再生を行います。 + +── storage の理由 ─────────────────────────── + +機能ごとの ON/OFF などの設定と、取得したコメントの控えを保存します。保存先はブラウザ内のみで、外部に送信しません。 + +── scripting の理由 ────────────────────────── + +有効になっている機能の CSS だけを document_start の時点で登録するために使います。chrome.storage は非同期なので、マニフェストに静的に書くと、無効にしている機能のレイアウトが一瞬表示されてしまいます。 + +── declarativeNetRequestWithHostAccess の理由 ───── + +対象サイトのヘッダを変える規則が 2 つあります。どちらもマニフェストでは無効と宣言してあり、その機能が ON の間だけサービスワーカーが有効化します。インストールしただけでは何も変わりません。 + +1. 同一ページ内で再生するために、対象サイトの Content-Security-Policy の frame-src に 'self' を追加します。CSP には 1 つのディレクティブだけを緩める操作が無いため、ヘッダ全体を set しています。値はサイトの CSP に 'self' を足したものです。対象は当該サイトのメインフレームのみで、「同じ画面内のウィンドウで再生する」機能が ON の間だけ有効です。 + +2. ニコニコ動画の検索インターフェースが要求するため、この拡張自身のリクエストの User-Agent に拡張名を入れます。利用者の通信は書き換えません。「ニコニコのコメントを表示する」機能が ON の間だけ有効です。 + +── animestore.docomo.ne.jp の理由 ──────────────── + +この拡張が表示を作り変える対象のサイトです。表示に使う情報(作品名・話数・章立てなど)も、このサイトの同一オリジンのインターフェースから取得します。 + +── *.nicovideo.jp の理由 ──────────────────────── + +再生中の話に対応するコメントを取得するために使います。ワイルドカードが必要なのは、コメントサーバーのホスト名が応答の中で示される値(nvComment.server)で、固定のホスト名では足りないためです。検索とコメント取得のみに使い、それ以外の通信は行いません。 + +── リモートコードの使用 ─────────────────────── + +使用していません。実行されるコードはすべてパッケージに含まれています。取得するのは表示のためのデータ(JSON)のみです。 + +── データの使用について ─────────────────────── + +利用者を識別できる情報を収集も送信もしません。解析・広告は含みません。設定とコメントの控えはブラウザ内の storage にのみ保存します。プライバシーポリシー: https://github.com/shsw228/d-tweaks/blob/main/PRIVACY.md + +── 審査担当者への補足 ──────────────────────── + +処理の本体は Rust を WebAssembly にコンパイルしたものです。難読化は行っておらず、ソースと組み立て手順を公開しています。 + +ソース: https://github.com/shsw228/d-tweaks(該当タグ: 1.4.0) +組み立て: just build(手順は README に記載) + +動画のダウンロードや再配布の機能はありません。再生インターフェースが返す著作権保護関連のフィールド(laUrl, contentUrls, oneTimeKey, viewOneTimeToken, castContentUri)は読み取っていません。視聴には対象サービスの契約が必要で、この拡張が視聴権を与えることはありません。 From 615111d355c68637e8de2cb2b12bba478537c49b Mon Sep 17 00:00:00 2001 From: hume <13506491+shsw228@users.noreply.github.com> Date: Fri, 14 Aug 2026 15:45:20 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[ci]=20=E6=88=90=E6=9E=9C=E7=89=A9=E3=81=AB?= =?UTF-8?q?=E5=B1=8A=E3=81=8B=E3=81=AA=E3=81=84=E5=A4=89=E6=9B=B4=E3=81=A7?= =?UTF-8?q?=E3=83=93=E3=83=AB=E3=83=89=E3=82=92=E5=9B=9E=E3=81=95=E3=81=AA?= =?UTF-8?q?=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/build.yml | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e4c9584..db1395d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,13 +5,30 @@ name: build # The WASM in the archive is not readable, so the reviewer of the store needs the # source and a build that anyone can repeat. This workflow is that proof. -# A change of the documents alone does not need a build, and a tag has its own workflow. +# A change that cannot reach the archive does not need a build, and a tag has its own +# workflow. `store/` holds the words and the images of the listing, and `doc/` the notes; +# `just package` copies `extension/` only, so none of them can change what is built. +# +# Keep this list and what `just package` copies in step. A new directory that does end in +# the archive must not be here. on: push: branches: [main] - paths-ignore: ["**/*.md", "LICENSE"] + paths-ignore: + - "**/*.md" + - "LICENSE" + - "doc/**" + - "store/**" + - "scripts/**" + - ".github/ISSUE_TEMPLATE/**" pull_request: - paths-ignore: ["**/*.md", "LICENSE"] + paths-ignore: + - "**/*.md" + - "LICENSE" + - "doc/**" + - "store/**" + - "scripts/**" + - ".github/ISSUE_TEMPLATE/**" workflow_dispatch: permissions: