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

  • Evita analizar el mismo JSON varias veces al analizar y mostrar documentos estructurados.
  • Carga la configuración, la analítica y los mensajes de control del sitio desde un runtime compartido con carga diferida. El runtime de cada formato analiza menos código antes de mostrar la interfaz.
  • Compila los runtimes inyectados para navegadores modernos sin convertir la sintaxis que Chromium ya admite.
  • Reconoce las URL .geojson como documentos JSON y agrupa los módulos principales relacionados por dominio.
  • Centraliza las extensiones y los tipos MIME repetidos para compartirlos entre el núcleo, la interfaz y el runtime de la extensión.
  • Guarda el estado de expansión inicial del árbol JSON como una profundidad y excepciones explícitas.
  • Omite las heurísticas del cuerpo cuando el tipo MIME ya identifica un formato compatible.
  • Carga los serializadores de formatos estructurados solo al convertir un documento. El runtime inicial del formateador es más pequeño.

Patch changes

  • Explica el objetivo del visor automático de documentos sin formato en cada título localizado de Chrome Web Store.

Patch changes

  • Envía eventos de instalación, actualización y uso de funciones principales después del consentimiento. Envía con un ID de un solo uso los eventos de rendimiento anómalo que superan 500ms, sin depender del estado del consentimiento.
  • Convierte el Client ID enviado a GA4 al formato que acepta Measurement Protocol y activa las estadísticas de uso en producción.

Patch changes

  • Mide el tamaño de una imagen con los bytes de la respuesta original, no con el valor después de recodificarla. Evita el procesamiento innecesario de Canvas para imágenes grandes.
  • Comprime los metadatos de filas virtuales de JSON grandes y corrige la regresión de memoria al conservar documentos de 1 MiB.
  • Cambia React por Solid y reduce un 63% el JavaScript raw total de los runtimes inyectados.

Patch changes

  • Centraliza la validación del emisor de mensajes de la extensión y hace explícitos los modos de vista del formateador sin cambiar el comportamiento existente.
  • Elimina los selectores exclusivos de pruebas de las compilaciones de producción y conserva selectores estables en las compilaciones E2E.
  • Reduce el tamaño raw de la extensión al usar inglés en las vistas del formateador inyectado. El popup y las opciones siguen localizados.
  • Simplifica el popup de la barra de herramientas. Muestra el estado de la página, restaura orígenes desactivados y abre la configuración.

Minor changes

  • Añade un botón de descarga a la barra de herramientas. Guarda el documento sin formato, el JSON minimizado o una conversión de formato con el nombre del documento y la extensión de la vista. Convertir config.json a YAML guarda config.yaml.
  • Virtualiza el árbol JSON anidado para mantener un DOM limitado al desplazarse por documentos grandes.
  • Enlaza el soporte con la página de soporte de la extensión en el sitio del producto. En japonés abre /ja/ y en los demás idiomas abre la página predeterminada. El enlace About incluye la versión de la extensión y el agente de usuario.
  • Abre la página de configuración en una pestaña separada desde el pie del formateador.
  • Crea y guarda un Client ID UUIDv7 al instalar o actualizar, sin depender de la elección sobre las estadísticas de uso. El consentimiento solo controla el envío, por lo que rechazarlo o retirarlo conserva el mismo ID local.

Minor changes

  • Añade temas del sistema, claro y oscuro, una vista original de un solo uso, controles de formato por origen y analítica de uso basada en consentimiento. También añade salidas rápidas para páginas que no se formatean y evita reemplazar páginas HTML cuyas URL contienen una extensión compatible.

Minor changes

  • Primera versión pública en Chrome Web Store.
  • Detecta enlaces HTTP, HTTPS y mailto, no solo HTTPS. Nunca convierte en enlaces los esquemas que contienen scripts o contenido, como javascript:, data:, blob: y file:.
  • Renderiza Markdown en hosts con una CSP estricta. Sustituye el renderizador WASM, que no podía iniciarse en raw.githubusercontent.com y hosts similares, por uno de JavaScript puro. El bundle baja de 806 kB a 440 kB. La detección YAML también funciona con documentos formados principalmente por secuencias. El interruptor de enlaces está disponible para todos los formatos estructurados.
  • Mejora la fiabilidad de la detección de formatos. No formatea como INI los archivos rc del shell que empiezan por KEY=value. Reconoce TOML cuando el encabezado de sección aparece después de las claves de nivel superior. Si falla el análisis de una detección basada solo en el cuerpo, deja la página sin cambios en lugar de mostrar un error. Detecta JSON con cualquier tipo MIME que termine en +json, como application/problem+json y application/vnd.api+json.
  • Convierte el documento actual a otro formato estructurado desde la barra de herramientas. Las conversiones imposibles, como un array de nivel superior a TOML, muestran un error de análisis en lugar de fallar en silencio.
  • Añade al visor acciones para expandir todo y contraer todo, un filtro de búsqueda por claves y valores con coincidencias resaltadas, copia de la ruta de cada nodo (data.items[0].id) y errores de análisis que indican la línea afectada.
  • Refuerza la detección para no reemplazar páginas que no contienen datos estructurados.
    • Decide Markdown solo con el tipo MIME y la extensión. No lo infiere del cuerpo porque renderMarkdown acepta cualquier texto.
    • Trata --- como marcador de documento YAML y no como señal de Markdown. Por eso también formatea YAML servido como text/plain.
    • Exige que el 70% de las líneas no vacías parezcan asignaciones YAML. Así conserva como Raw los logs, las listas de cabeceras y la prosa que empieza por dos puntos.
    • No supone que un cuerpo de más de 5 MB sea JSON sin verificarlo.
    • Muestra los literales de fecha de YAML y TOML como cadenas, no como objetos vacíos.
  • Añade un menú About al pie. Se abre hacia arriba al pasar el puntero o recibir el foco del teclado y enlaza con la página principal, la política de privacidad y el formulario de soporte.
  • Mantiene abierto el menú About mientras el puntero se desplaza hacia él.
  • Elimina el botón Raw propio del visor Markdown. La barra de herramientas ya tiene ese botón.
  • Alinea la información de la tienda con el comportamiento real. La descripción enumera JSON, YAML, TOML, INI, Markdown e imágenes. La política de privacidad indica que solo se guarda un valor booleano para el interruptor de enlaces. La versión del manifiesto sigue package.json y ya no está escrita de forma fija.