webext.hsb.horse

Changelog

Every published Header Relay release, generated from the repository's versioned CHANGELOG.md.

Release-note entries are shown in their original Japanese, which is the source language of the project changelog.

RSS →

Header Relay

Minor changes

  • Profile に固定 Cookie と追跡 Cookie を追加できるようになりました。対象オリジンのレスポンスに含まれるSet-Cookieから登録済み Cookie の値を自動取得し、次回以降の対象リクエストでCookieヘッダーを完全に置き換えます。送信候補が 0 件のリクエストでは Chrome が生成したCookieをそのまま通します。 固定/追跡 Cookie 名の登録、Max-AgeExpiresによる削除判定、複数 Profile の決定的な統合順、同名 Cookie 競合時の DNR Session Ruleset 停止、URL Probe への最終Cookie値表示を含みます。Fixed Header Cookie は自動的に専用の固定 Cookie へ変換され、変換できない設定は移行時の問題として保持されます。監査ログには Cookie 名と処理結果のみを記録し、値と元のSet-Cookieは記録しません。cookies権限は追加していません。
  • 管理画面のプロファイル切替・新規作成とナビゲーションを整理し、ヘッダー設定の統合画面と URL プローブ・監査ログ・JSON 編集の高度な設定タブを追加しました。移行時の問題は必要な場合だけ Cookie 画面に表示します。

Patch changes

  • Cookie 機能: Excluded Path を持つ origin で、除外パスの Chrome 既存 Cookie が意図せず上書きされる問題を修正。この場合はその origin の Cookie 送信を行わず、Runtime Status と URL Probe に警告を表示します。あわせて Popup の選択肢がname=value形式のまま表示されることがある移行時の問題を修正。
  • ルール適用に失敗したときの挙動を改善。不要になったルールが残る場合は自動で削除を再試行し、それでも失敗した場合は「古いルールが送信され続けている可能性」を Runtime Status に表示します。Popup にも同じ警告をインライン表示します(全 8 ロケール対応)。

Minor changes

  • UI の対応言語にスペイン語・フランス語・ドイツ語・簡体字中国語・繁体字中国語を追加

Patch changes

  • Popup の設定ボタンの遷移先を manage.html#/settings から manage.html#/(Profile 概要)に変更。ユーザが Popup から manage を開く目的は主に Profile 操作であり、UI 設定ではないため。

Minor changes

  • 監査ログにリクエスト URL を永続化しないように変更。URL はオリジン一致判定のためメモリ上でのみ処理し、直近ログへの表示用に現在のブラウザセッション中だけ session storage(メモリのみ)へ保持、ブラウザ終了時に破棄する。アップグレード時には IndexedDB の監査ログストアを再作成し、旧バージョンが保存した URL 入りログを完全に削除する。
  • Profile を削除できるようにし、UI にコンパクト表示モードを追加した。
    • 管理画面のプロファイル一覧から各プロファイルを削除できるようにした(プロファイルが 1 つだけのときは削除ボタンを表示しない)。削除すると取得済みの値も破棄し、選択中プロファイルを削除した場合は先頭のプロファイルへ切り替える。
    • 管理画面の Settings セクションに「コンパクト表示」トグルを追加した。設定は uiDensity として保存され、Popup・管理画面の行やコントロールの余白を詰めて表示する。表示のみの設定で、適用されるヘッダーには影響しない。
  • manage.html をブラウザの拡張機能オプションページ (options_ui) として開けるようにした。Profile 管理を既定表示とし、拡張機能全体の設定は同じ画面のサイドバーから開ける。
  • キャプチャしたヘッダー値を管理画面でデフォルトマスク表示に変更し、「表示」「コピー」の明示的な操作を追加。あわせて、Popup からの固定ヘッダー値更新時に監査ログへ新旧の値が記録されていた問題を修正し、ヘッダー値が監査ログへ混入しないことをテストで保証するようにした。
  • 監査ログを障害解析に必要な診断イベントのみに最小化。ユーザー操作履歴にあたる profile_enabled / profile_disabled / fixed_header_value_updated と成功時の session_cleared を記録しないように変更(session_cleared は DNR 同期失敗時のみ warn として記録)。
  • ホスト権限を optional_host_permissions へ移行。インストール時に全サイトへのアクセス権限(<all_urls>)を要求せず、Target Origin の保存・Profile の有効化・「アクセスを許可」ボタンの操作時に、対象ホストへの権限だけを要求するように変更。未許可のオリジンには DNR ルールを生成せず(fail-closed)、権限の付与・取消を検知してルールを自動再同期する。管理画面にはオリジンごとの権限状態(許可済み / 要許可 / 非対応)と許可ボタンを表示し、Popup には要許可オリジンの警告を表示する。どのプロファイルからも使われなくなったホスト権限は確認付きで解除を提案する。
  • 機密ヘッダーに警告と安全な禁止ルールを追加し、取得値のセッション限定保持・削除タイミングを明確化しました。ホスト権限取消時は影響するプロファイルの取得値を自動消去します。

Patch changes

  • localhost の HTTP 通信を追加の権限許可なしで扱えるようにする
  • Compact 表示を管理画面サイドバーの Settings セクションに集約し、Popup と管理画面ヘッダーを簡潔にするとともにトグルを小型化しました。サイドバー下部から Homepage と Buy Me a Coffee も開けます。

Minor changes

  • 複数の Profile を同時に有効化できるようにしました。
    • Profile の「選択(管理画面で編集中)」と「有効化(ブラウザへ適用)」を分離しました。管理画面の Profile 一覧では、行の選択と有効化トグルが別の操作になります。トグルは即時反映されます。
    • 有効な Profile 群をコンパイルし、単一の DNR Session Ruleset として適用します。DNR 生成・URL Probe・Runtime Status は同じコンパイル結果を参照するため、Probe の表示と実際の挙動が一致します。
    • Captured Header と Session を Profile 単位で保持するようになりました。ある Profile を無効化・保存しても、他の Profile の取得済みヘッダーは保持されます。
    • 同一 Origin・同一 Header Name を複数の有効 Profile が付与する場合は競合として検出し、DNR ルールを適用せずにエラーを表示します(fixed/captured の組み合わせを問いません)。
    • URL Probe は一致した全ての有効 Profile と、最終的に付与されるヘッダーを表示します。Overview に有効 Profile 数・DNR ルール総数・コンパイルエラー/警告の Runtime Status を追加しました。
    • popup は全 Profile の一覧とトグル、有効 Profile 全体の固定ヘッダー・取得値を表示します。
    • 既存設定は自動で移行されます(activeProfileIdselectedProfileId)。各 Profile の enabled 値はそのまま維持されます。
  • Popup から、現在のタブに適用される固定ヘッダーの値を変更できるようにしました。管理画面の固定ヘッダー設定に「ポップアップに表示」を追加し、入力形式(テキスト / 選択肢)と選択肢の Label・Value・並び順を設定できます。公開したヘッダーだけが Popup に表示され、既存の固定ヘッダーは初期状態で非表示のままです。値の変更は対象ヘッダーのみを部分更新し、Compiler と DNR 同期を経て即時反映されます。

Minor changes

  • 除外パスのマッチングを前方一致から glob(全体一致)に変更。* は同一パスセグメント内、** はセグメントを跨ぐ任意、? は 1 文字に一致し、パターンは pathname 全体に一致する(配下すべてを対象にするには /assets/** のように指定)。DNR ルールの regexFilter も同じ glob セマンティクスで生成する。あわせて除外パステスターが無効化中のプロファイルでも対象オリジン・除外判定を評価できるよう修正。 また、プロファイル名の編集中にサイドバーの表示名が即時変更されていた挙動を修正し、保存後に反映されるようにした。
  • manage 画面ヘッダーを簡素化: プロファイル名・有効/無効バッジ・未保存バッジを削除し、保存ボタンを未保存時に強調表示へ変更。プライバシーリンクをサイドバー最下部へ移動。
  • 管理画面の保存状態をセクション単位に分離。対象オリジン・固定ヘッダー・取得ヘッダー・除外パス・プロファイル基本情報の各セクションが独立した未保存状態と保存ボタンを持つようになり、変更したセクションだけを個別に保存できる。保存時は該当セクションのみをストレージへ書き込み、DNR ルールを再構築する。ヘッダーのグローバル保存ボタンと「未保存の変更」表示は廃止した。

Minor changes

  • 管理画面の情報設計と Application Shell を再構成し、未保存 Draft の URL プローブ、除外パスの共有検証と判定テスター、監査ログ展開状態の保持、空の初期設定、未保存変更の保護を追加しました。
  • 管理画面を Popup と共通の iOS 風デザインに統一し、ダークモードとアクセシビリティに対応しました。
  • 管理画面にセクション単位の URL ルーティングを導入し、直接表示やブラウザの戻る・進む操作に対応しました。
  • i18n 対応を追加(デフォルト: 英語、日本語・韓国語をサポート)。UI 文字列と manifest を browser.i18n(_locales)で多言語化

Patch changes

  • Popup UI をコンパクト化(幅 480px、行高さ 36px、セクション間余白縮小)し、セクション構成を Fixed Headers / Captured Headers に再編
  • プライバシーポリシーページを拡張機能内から外部サイト(hsblabs.github.io)へのリンクに変更。UI の言語設定(ja/ko/その他)に応じて対応する言語ページへ遷移する。

Nandemo Formatter

Patch changes

  • Analysiert beim Prüfen und Anzeigen strukturierter Dokumente nicht mehr wiederholt dasselbe JSON.
  • Lädt Einstellungen, Analysen und Site-Control-Meldungen aus einer gemeinsam genutzten Laufzeit mit verzögertem Laden. Die Laufzeit für jedes Format muss vor der Anzeige der Oberfläche weniger Code analysieren.
  • Baut injizierte Laufzeiten für moderne Browser, ohne von Chromium unterstützte Syntax umzuwandeln.
  • Erkennt .geojson-URLs als JSON-Dokumente und gruppiert zusammengehörige Kernmodule nach Bereich.
  • Fasst doppelte Dateierweiterungen und MIME-Typen zusammen. Kern, Oberfläche und Erweiterungs-Laufzeit können sie gemeinsam verwenden.
  • Speichert den anfänglichen Aufklappzustand des JSON-Baums als Tiefe und explizite Ausnahmen.
  • Überspringt die Heuristik für den Dokumentinhalt, wenn der MIME-Typ bereits ein unterstütztes Format bestimmt.
  • Lädt Serialisierer für strukturierte Formate erst bei der Umwandlung eines Dokuments. Die anfängliche Formatter-Laufzeit bleibt dadurch kleiner.

Patch changes

  • Beschreibt den Zweck der automatischen Ansicht für rohe Dokumente in jedem lokalisierten Titel des Chrome Web Store.

Patch changes

  • Sendet nach der Zustimmung Ereignisse für Installation, Aktualisierung und die Nutzung wichtiger Funktionen. Leistungsfehler über 500ms werden unabhängig von der Zustimmung mit einer einmaligen ID gesendet.
  • Wandelt die an GA4 gesendete Client-ID in ein von Measurement Protocol akzeptiertes Format um und aktiviert Nutzungsstatistiken in der Produktion.

Patch changes

  • Misst die Größe eines Bildes mit der Bytezahl der ursprünglichen Antwort und nicht mit dem Wert nach der Neucodierung. Vermeidet unnötige Canvas-Verarbeitung bei großen Bildern.
  • Komprimiert Metadaten virtueller Zeilen für große JSON-Dokumente und behebt die Speicherregression beim Behalten von 1-MiB-Dokumenten.
  • Ersetzt React durch Solid und reduziert die Größe des rohen JavaScript in den injizierten Laufzeiten um 63%.

Patch changes

  • Bündelt die Prüfung des Absenders von Erweiterungsnachrichten und macht die Ansichtsmodi des Formatters eindeutig, ohne das bisherige Verhalten zu ändern.
  • Entfernt Test-Selektoren aus Produktions-Builds und behält stabile Selektoren in E2E-Builds bei.
  • Verwendet Englisch in injizierten Formatter-Ansichten und lässt Popup und Optionen lokalisiert. Dadurch wird die rohe Größe der Erweiterung kleiner.
  • Vereinfacht das Toolbar-Popup. Es zeigt den Seitenstatus, stellt deaktivierte Ursprünge wieder her und öffnet die Einstellungen.

Minor changes

  • Fügt der Toolbar eine Download-Schaltfläche hinzu. Sie speichert das rohe Dokument, minimiertes JSON oder eine Formatkonvertierung mit dem Dokumentnamen und der passenden Dateierweiterung. Die Konvertierung von config.json nach YAML erzeugt config.yaml.
  • Virtualisiert die Darstellung verschachtelter JSON-Bäume. Große Dokumente behalten beim Scrollen ein begrenztes DOM.
  • Verweist der Support-Link auf die Support-Seite der Erweiterung auf der Produkt-Website. Die japanische Version öffnet /ja/, andere Sprachen öffnen die Standardseite. Der About-Link enthält die Erweiterungsversion und den User-Agent.
  • Öffnet die Einstellungsseite aus dem Formatter-Footer in einem neuen Tab.
  • Erstellt und speichert bei Installation oder Aktualisierung eine UUIDv7-Client-ID, unabhängig von der Entscheidung über Nutzungsstatistiken. Die Zustimmung steuert nur das Senden. Bei Ablehnung oder Widerruf bleibt dieselbe lokale ID erhalten.

Minor changes

  • Fügt System-, helle und dunkle Designs, eine einmalige Ansicht des Originals, Formatierungseinstellungen pro Ursprung und zustimmungsbasierte Nutzungsstatistiken hinzu. Nicht formatierte Seiten werden schneller beendet. HTML-Seiten mit unterstützten Dateierweiterungen in der URL werden nicht mehr versehentlich ersetzt.

Minor changes

  • Erste öffentliche Version im Chrome Web Store.
  • Erkennt HTTP-, HTTPS- und mailto-Links statt nur HTTPS. Schemata mit Skripten oder Inhalten, zum Beispiel javascript:, data:, blob: und file:, werden nie in Links umgewandelt.
  • Rendert Markdown auf Hosts mit strenger CSP. Der WASM-Renderer konnte auf raw.githubusercontent.com und ähnlichen Hosts nicht starten. Er wurde durch einen reinen JavaScript-Renderer ersetzt. Das Bundle wird von 806 kB auf 440 kB reduziert. Die YAML-Erkennung funktioniert auch bei Dokumenten, die hauptsächlich aus Sequenzen bestehen. Die Link-Schaltfläche ist für alle strukturierten Formate verfügbar.
  • Verbessert die Zuverlässigkeit der Formaterkennung. Shell-RC-Dateien mit einem Anfang wie KEY=value werden nicht als INI formatiert. TOML wird erkannt, wenn der Abschnitts-Header nach den Top-Level-Schlüsseln folgt. Wenn die Analyse einer reinen Körpererkennung fehlschlägt, bleibt die Seite unverändert, statt einen Analysefehler anzuzeigen. JSON wird mit jedem MIME-Typ erkannt, der auf +json endet, zum Beispiel application/problem+json und application/vnd.api+json.
  • Konvertiert das aktuelle Dokument über die Toolbar in ein anderes strukturiertes Format. Nicht mögliche Konvertierungen, zum Beispiel ein Top-Level-Array nach TOML, zeigen einen Analysefehler statt still zu scheitern.
  • Fügt dem Viewer Aktionen zum vollständigen Auf- und Zuklappen, einen Suchfilter für Schlüssel und Werte mit Hervorhebung, das Kopieren des Pfads jedes Knotens (data.items[0].id) und Analysefehler mit Angabe der betroffenen Zeile hinzu.
  • Verstärkt die Erkennung, damit Seiten ohne strukturierte Daten nicht ersetzt werden.
    • Entscheidet über Markdown nur anhand von MIME-Typ und Dateierweiterung. Eine Erkennung aus dem Inhalt wird nicht verwendet, weil renderMarkdown jeden Text akzeptiert.
    • Behandelt --- als YAML-Dokumentmarker und nicht als Markdown-Signal. Dadurch wird YAML mit text/plain ebenfalls formatiert.
    • Verlangt, dass 70% der nicht leeren Zeilen wie YAML-Zuordnungen aussehen. Logs, Header-Listen und Text mit einem führenden Doppelpunkt bleiben dadurch Raw.
    • Nimmt bei Inhalten über 5 MB nicht ohne Prüfung JSON an.
    • Rendert Datums-Literale in YAML und TOML als Zeichenketten statt als leere Objekte.
  • Fügt dem Footer ein About-Menü hinzu. Es öffnet sich bei Hover oder Tastaturfokus nach oben und verlinkt auf Startseite, Datenschutz und Support-Formular.
  • Schließt das About-Menü nicht, während der Mauszeiger dorthin bewegt wird.
  • Entfernt die eigene Raw-Schaltfläche des Markdown-Viewers. Die Toolbar bietet diese Funktion bereits.
  • Passt die Store-Informationen an das tatsächliche Verhalten an. Die Beschreibung nennt JSON, YAML, TOML, INI, Markdown und Bilder. Die Datenschutzrichtlinie beschreibt den gespeicherten booleschen Wert der Link-Schaltfläche. Die Manifest-Version folgt package.json und ist nicht mehr fest eingetragen.