Patch changes
- Avoid repeated JSON parsing while analyzing and rendering structured documents.
- Load settings, analytics, and site-control messaging from a deferred shared runtime so format-specific runtimes parse less code before the UI is visible.
- Build injected runtimes for the modern browser target without downleveling syntax that Chromium already supports.
- Recognize
.geojsonURLs as JSON documents and group related core modules by domain. - Centralize repeated format extensions and MIME types for reuse across the core, UI, and extension runtime.
- Store JSON tree default collapse behavior as sparse depth and explicit overrides.
- Skip body heuristics when a supported format is already identified by MIME.
- Load structured-format serializers only when a document is converted so the initial formatter runtime stays smaller.
Patch changes
- Describe the automatic raw-document viewer purpose in each localized Chrome Web Store title.
Patch changes
- 同意後の install、update、主要機能の利用 event と、同意状態にかかわらず単発 ID で送る 500ms 以上の性能異常 event を追加する。
- GA4 へ送る Client ID を Measurement Protocol が受理する形式へ変換し、本番利用統計を有効にする。
Patch changes
- 画像表示時のファイルサイズを再エンコード値ではなく元レスポンスのバイト数に修正し、大きな画像での不要な Canvas 処理を削除する。
- 大きな JSON の仮想行 metadata を圧縮し、1 MiB 文書の保持メモリ回帰を解消する。
- React から Solid へ移行し、挿入 runtime の raw JavaScript 合計を 63%削減する。
Patch changes
- Centralize extension sender validation and make formatter view modes explicit while preserving existing behavior.
- Remove test-only selectors from production extension builds while keeping stable selectors in E2E builds.
- Reduce the extension's raw size by using English in injected formatter views while keeping the popup and options localized.
- Simplify the toolbar popup to show page status, restore disabled origins, and open settings.
Minor changes
- Add a Download button to the toolbar. It saves whatever is on screen — the raw document, a minified JSON, or a format conversion — under the document's own name, with the extension of the view you are saving: converting
config.jsonto YAML savesconfig.yaml. - Virtualize nested JSON tree rendering so large documents keep a bounded DOM while scrolling.
- Point the support link at the product site's extension support page (
/ja/for Japanese, the default page otherwise). The About menu link carries the extension version and the user agent so support requests arrive with context. - Open the settings page in a separate tab from the formatter footer.
- Create and store one UUIDv7 Client ID on install or update regardless of the usage analytics choice. Consent now controls sending only, so declining or revoking analytics keeps the same local ID.
Minor changes
- Add system, light, and dark themes; one-shot original view and per-origin formatting controls; consent-based usage analytics with a fixed privacy allowlist; faster early exits on pages that are not formatted; and protection against formatting HTML pages whose URLs end in a supported file extension.
Minor changes
- First public release on the Chrome Web Store.
- Link detection now covers any http / https / mailto URL instead of https only. Script- and content-bearing schemes (
javascript:,data:,blob:,file:) are never turned into links. - Markdown now renders on hosts that send a strict CSP. The WASM renderer could not start on
raw.githubusercontent.comand similar hosts, so the extension did nothing there; it is replaced by a pure JS one, which also drops the bundle from 806 kB to 440 kB. YAML detection no longer fails on documents that are mostly sequences. The link toggle is available for every structured format, not just JSON. - Detection reliability: shell rc files that open with
KEY=valuelines are no longer formatted as INI, TOML is recognised when its section header follows the top-level keys, a body-only guess that fails to parse leaves the page alone instead of showing a parse error, and JSON is detected from any+jsonmedia type (application/problem+json,application/vnd.api+json, …). - Convert the current document to another structured format from the toolbar. Impossible conversions, such as a top-level array to TOML, surface as a parse error instead of failing silently.
- Viewer: expand all / collapse all, key-and-value search filter with match highlighting, per-node path copy (
data.items[0].id), and parse errors that point at the offending line. - Tighten format detection to avoid replacing pages that are not structured data. inferred from the body, where
renderMarkdownsucceeds on any text and could never be rejected by the parse check. YAML served astext/plainis formatted. mappings, which keeps logs, header dumps and colon-prefixed prose as Raw.- Markdown is now decided by MIME type and file extension only. It is no longer
---is treated as a YAML document marker instead of a Markdown signal, so- The YAML heuristic additionally requires 70% of non-empty lines to look like
- Bodies over 5 MB are no longer assumed to be JSON without verification.
- YAML/TOML date literals render as strings instead of empty objects.
- Add an About menu to the footer, opening upward on hover or keyboard focus, linking to the homepage, privacy policy and support form.
- The About menu no longer closes while the pointer travels toward it.
- Drop the markdown viewer's own Raw button: the toolbar already has one.
- Store listing accuracy: the extension description now names every supported format (JSON, YAML, TOML, INI, Markdown, images), the privacy policy states what is actually persisted (one boolean for the link toggle), and the manifest version is no longer hardcoded — it follows
package.json.