Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Changelog

## Unreleased
## 1.12.0

- **Dark surfaces: links, `<h6>`, `<code>` / `<pre>` and `<mark>` now use dark-surface colors** ([#23](https://github.com/brewkits/hyper_render/issues/23)). In 1.11.0 only the default text color followed a dark theme; these built-in colors were still tuned for light surfaces and measured 4.1:1 (links), 3.9:1 (`<h6>`) and **2.5:1** (`<pre><code>`) on `#121212`. They now keep at least 4.5:1, and the inline `<code>` / `<mark>` chips become dark chips instead of bright blocks. The palette is chosen from the *effective text color*: light text means a dark surface, so a dark `Theme` with `textColor: Colors.black87` (a white pane) keeps the light-surface palette, and a light `Theme` with a light `textColor` gets the dark one. Light-surface output is unchanged. Author CSS and inline styles still win. `<blockquote>`, `<kbd>` and table headers keep their light backgrounds (their text is kept readable by the 1.11.0 contrast guard). Requires the matching `hyper_render_core` (`StyleResolver.darkSurface`).
- **Dark surfaces: links, `<h6>`, `<code>` / `<pre>` and `<mark>` now use dark-surface colors** ([#23](https://github.com/brewkits/hyper_render/issues/23)). In 1.11.0 only the default text color followed a dark theme; these built-in colors were still tuned for light surfaces and measured 4.1:1 (links), 3.9:1 (`<h6>`) and **2.5:1** (`<pre><code>`) on `#121212`. They now keep at least 4.5:1, and the inline `<code>` / `<mark>` chips become dark chips instead of bright blocks. The palette is chosen from the *effective text color*: light text means a dark surface, so a dark `Theme` with `textColor: Colors.black87` (a white pane) keeps the light-surface palette, and a light `Theme` with a light `textColor` gets the dark one. Light-surface output is unchanged. Author CSS and inline styles still win. `<blockquote>`, `<kbd>` and table headers keep their light backgrounds (their text is kept readable by the 1.11.0 contrast guard). **Requires `hyper_render_core` `^1.12.0`** (`StyleResolver.darkSurface`). `hyper_render_epub` 0.1.3 needs no update: it goes through `HyperViewer`, so it picks this up automatically.

## 1.11.0

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Already using `flutter_html`? You don't need to rewrite your widget tree or lear
```dart
// 1. In your pubspec.yaml:
// dependencies:
// hyper_render: ^1.11.0
// hyper_render: ^1.12.0

// 2. In your Dart file — replace this single line:
// ❌ import 'package:flutter_html/flutter_html.dart';
Expand Down Expand Up @@ -68,7 +68,7 @@ Html(

```yaml
dependencies:
hyper_render: ^1.11.0
hyper_render: ^1.12.0
```

```dart
Expand Down
3 changes: 2 additions & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ This document outlines the architectural roadmap for **HyperRender** to become t
| **v1.8.0** | Shipped | **AI & LLM Token-Streaming Engine** | Frame-throttled token updates with adaptive backoff, transient syntax auto-repair, auto-scroll locking. Tail-only layout invalidation remains a separate, unscheduled epic — see below. |
| **v1.9.0** | Shipped | **Wrapping Flexbox** | `flex-wrap: wrap` on a dedicated `RenderFlexWrap` (#15). |
| **v1.10.0** | Shipped 2026-10-02 | **DevTools v2 & Stylesheet CSS Correctness** | Timeline / Selection / live CSS-variable / snapshot DevTools tabs; stylesheet `var()`, `url()`, `calc()` and `:root` fixed. |
| **v1.11.0** | Release candidate | **Dark Mode & Root Colors** | Dark-`Theme` text default, `HyperViewer(textColor:)` / `EpubReader(textColor:)`, `body`/`html` `color`, `:root` fix, contrast guard (#20). |
| **v1.11.0** | Shipped 2026-10-04 | **Dark Mode & Root Colors** | Dark-`Theme` text default, `HyperViewer(textColor:)` / `EpubReader(textColor:)`, `body`/`html` `color`, `:root` fix, contrast guard (#20). |
| **v1.12.0** | Shipped 2026-10-04 | **Dark-Surface Element Colors** | Links, `<h6>`, `<code>` / `<pre>`, `<mark>` keep >= 4.5:1 on dark surfaces (#23). |
| **Next** | Unscheduled | **Native Vector Diagramming & Headless Export** | Pure Canvas/Vector Mermaid.js & GraphViz (Zero-WebView), Headless Image & PDF byte stream generator. |
| **v2.0.0** | Q1 2027 | **Interactive Editorial & Magazine Typography** | Medium-style Text Annotation/Highlighting layer, Multi-column layout (`column-count`), Z-Index Stacking Context, Vertical Text (`writing-mode: vertical-rl`). |

Expand Down
4 changes: 2 additions & 2 deletions doc/CSS_PROPERTIES_MATRIX.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# CSS Properties Support Matrix

Last Updated: October 3, 2026
Version: 1.11.0
Last Updated: October 4, 2026
Version: 1.12.0

This document lists CSS property support in HyperRender.

Expand Down
14 changes: 13 additions & 1 deletion doc/MIGRATION_GUIDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
# Migration Guide

> **Current version: v1.11.0**
> **Current version: v1.12.0**

## Upgrading to v1.12.0

No API changes, but on a **dark surface** (a dark `Theme`, or a light `textColor`) the built-in colors of links, `<h6>`, `<code>` / `<pre>` and `<mark>` change to dark-surface variants with at least 4.5:1 contrast ([#23](https://github.com/brewkits/hyper_render/issues/23)); inline `<code>` and `<mark>` become dark chips instead of bright blocks. Light-surface output is unchanged. The palette is chosen from the effective text color, so a dark `Theme` with `textColor: Colors.black87` (a white pane) keeps the light-surface palette. Your own CSS (`a { color }`, inline `style`) still wins.

```yaml
dependencies:
hyper_render: ^1.12.0
```

## Upgrading to v1.11.0

Expand Down Expand Up @@ -207,6 +216,9 @@ These APIs are stable and will remain backward-compatible in v2.0:

## Version History

### v1.12.0 (October 2026)
- Dark-surface colors for links, `<h6>`, `<code>` / `<pre>` and `<mark>` ([#23](https://github.com/brewkits/hyper_render/issues/23))

### v1.11.0 (October 2026)
- Dark-theme text default, `HyperViewer(textColor:)`, `body`/`html` `color`, `:root` fix, contrast guard ([#20](https://github.com/brewkits/hyper_render/issues/20))

Expand Down
5 changes: 3 additions & 2 deletions doc/ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# HyperRender — Product Roadmap

**Last Updated**: 2026-10-03
**Current Stable**: v1.10.0 (v1.11.0 is the release candidate)
**Current Stable**: v1.12.0
**Repository**: [github.com/brewkits/hyper_render](https://github.com/brewkits/hyper_render)

This document tracks the long-term direction of the HyperRender ecosystem.
Expand Down Expand Up @@ -33,7 +33,8 @@ For detailed CSS property tracking, see [`CSS_PROPERTIES_MATRIX.md`](CSS_PROPERT
`hyper_render_markdown`, `hyper_render_highlight`, `hyper_render_clipboard`
- **`hyper_render_devtools` v1.0.0** — UDT Tree inspector, Computed Style panel, Layout fragment/line data, demo mode (no live app required); published to pub.dev
- **`hyper_render_devtools` v1.8.0** (2026-10-02) — the panel actually connects now (#17), plus Timeline, Selection debugger, live CSS-variable editing and JSON snapshot export. Requires `hyper_render_core` 1.10.0.
- **Dark mode & root colors** (1.11.0, release candidate) — unstyled text follows a dark `Theme`, `HyperViewer(textColor:)` / `EpubReader(textColor:)`, `body`/`html` `color` honoured, `:root` matches only the document root, readable text on light UA surfaces (#20). Block plugins on custom tags (`<info-box>`) now render (#22).
- **Dark-surface element colors** (1.12.0) — links, `<h6>`, `<code>` / `<pre>` and `<mark>` switch to dark-surface variants (>= 4.5:1) when the effective text color is light (#23).
- **Dark mode & root colors** (1.11.0) — unstyled text follows a dark `Theme`, `HyperViewer(textColor:)` / `EpubReader(textColor:)`, `body`/`html` `color` honoured, `:root` matches only the document root, readable text on light UA surfaces (#20). Block plugins on custom tags (`<info-box>`) now render (#22).
- **Stylesheet CSS correctness** (core 1.10.0) — `var()`, `url()`, `calc()` in `<style>` / `customCss` now resolve (inline-only before), custom properties cascade before substitution, `:root` matches only the document root, `var()` expansion capped.
- **Golden test coverage** — Float layout, RTL/BiDi, CJK + Ruby suites pinned to ubuntu-22.04 + Flutter 3.29.2 + Noto fonts for pixel-stable CI
- **Layout regression CI tracking** — 6 fixtures (simple paragraph → 100-paragraph article) measured against a 16 ms (60 FPS) budget on every PR. Results are recorded and posted to the PR, but are **advisory and do not block the build**: GitHub runners use software rendering and are 2–3× slower than the target hardware, so a hard gate there would fail on runner noise rather than on real regressions. Enforcing this properly requires release-mode measurement on a real device, which is not yet wired up.
Expand Down
2 changes: 1 addition & 1 deletion packages/hyper_render_core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changelog — hyper_render_core

## Unreleased
## 1.12.0

- **`StyleResolver.darkSurface`** (default `false`) — switches the built-in link, `<h6>`, `<code>`, `<pre><code>` and `<mark>` colors to dark-surface variants with at least 4.5:1 contrast on `#121212` ([#23](https://github.com/brewkits/hyper_render/issues/23)). `HyperViewer` sets it whenever its effective default text color is light. Author CSS still wins; an `<a>` without `href` is untouched.

Expand Down
2 changes: 1 addition & 1 deletion packages/hyper_render_core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Most apps should depend on [`hyper_render`](https://pub.dev/packages/hyper_rende

```yaml
dependencies:
hyper_render_core: ^1.11.0
hyper_render_core: ^1.12.0
```

---
Expand Down
2 changes: 1 addition & 1 deletion packages/hyper_render_core/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: hyper_render_core
description: Core engine for HyperRender. Universal Document Tree, single-RenderObject layout with CSS float, Flexbox, Grid, CJK typography, AI streaming, and crash-free text selection.
version: 1.11.0
version: 1.12.0
homepage: https://github.com/brewkits/hyper_render
repository: https://github.com/brewkits/hyper_render/tree/main/packages/hyper_render_core
issue_tracker: https://github.com/brewkits/hyper_render/issues
Expand Down
4 changes: 2 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: hyper_render
description: "The only Flutter HTML/Markdown renderer with CSS float layout, crash-free text selection at any document size, CJK Ruby typography, and AI/LLM token streaming."
version: 1.11.0
version: 1.12.0
homepage: https://github.com/brewkits/hyper_render
repository: https://github.com/brewkits/hyper_render
issue_tracker: https://github.com/brewkits/hyper_render/issues
Expand Down Expand Up @@ -45,7 +45,7 @@ dependencies:
# hyper_render_html / _markdown / _highlight were declared but never imported
# — pure install weight for every consumer. They remain separately published;
# depend on them explicitly if you import them.
hyper_render_core: ^1.11.0
hyper_render_core: ^1.12.0

# Fixed version constraints for pub.dev compliance
flutter_highlight: ^0.7.0
Expand Down
Loading