diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index b7368d5..265f831 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -32,6 +32,8 @@ jobs: runs-on: ubuntu-22.04 # Skip on the weekly schedule — that's for the full-benchmark job only if: github.event_name != 'schedule' + permissions: + pull-requests: write steps: - name: Checkout @@ -112,10 +114,13 @@ jobs: - name: Post PR comment if: always() && github.event_name == 'pull_request' uses: actions/github-script@v7 + env: + BENCH_EXIT_CODE: ${{ steps.bench.outputs.exit_code }} + BENCH_SUMMARY: ${{ steps.bench.outputs.summary }} with: script: | - const exitCode = '${{ steps.bench.outputs.exit_code }}'; - const summary = `${{ steps.bench.outputs.summary }}`; + const exitCode = process.env.BENCH_EXIT_CODE || '0'; + const summary = process.env.BENCH_SUMMARY || ''; const passed = exitCode === '0'; const icon = passed ? '✅' : '❌'; const headline = passed diff --git a/.github/workflows/golden.yml b/.github/workflows/golden.yml index 3ae8008..8585582 100644 --- a/.github/workflows/golden.yml +++ b/.github/workflows/golden.yml @@ -38,6 +38,8 @@ jobs: golden: name: Golden Tests runs-on: ubuntu-22.04 # pinned — do NOT change to ubuntu-latest + permissions: + pull-requests: write steps: - name: Checkout code diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cb5c067..e7ae61f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -127,21 +127,24 @@ jobs: needs.path-filter.outputs.changed_markdown == 'true' || needs.path-filter.outputs.changed_core == 'true' working-directory: packages/hyper_render_markdown - run: flutter test --no-pub + run: | + if [ -d test ]; then flutter test --no-pub; else echo "No tests in this package — skipping."; fi - name: Test hyper_render_highlight if: >- needs.path-filter.outputs.changed_highlight == 'true' || needs.path-filter.outputs.changed_core == 'true' working-directory: packages/hyper_render_highlight - run: flutter test --no-pub + run: | + if [ -d test ]; then flutter test --no-pub; else echo "No tests in this package — skipping."; fi - name: Test hyper_render_clipboard if: >- needs.path-filter.outputs.changed_clipboard == 'true' || needs.path-filter.outputs.changed_core == 'true' working-directory: packages/hyper_render_clipboard - run: flutter test --no-pub + run: | + if [ -d test ]; then flutter test --no-pub; else echo "No tests in this package — skipping."; fi - name: Upload test results if: failure() diff --git a/.pubignore b/.pubignore index f586661..f98b86e 100644 --- a/.pubignore +++ b/.pubignore @@ -43,6 +43,16 @@ scripts/ # Internal publish helpers pubspec.yaml.backup pubspec_publish_ready.yaml +pubspec_dev.yaml + +# Flutter .metadata files (auto-generated, not useful to consumers) +.metadata + +# Internal archive / historical comparison docs +archive/ + +# Coverage artifacts +coverage/ # IDE files *.iml diff --git a/CHANGELOG.md b/CHANGELOG.md index 393c8f3..dd86993 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [1.2.2] - 2026-04-02 + +### 🐛 Bug Fixes + +- **Android build failure with modern compileSdk** (`example/android/build.gradle.kts`): `irondash_engine_context 0.5.5` was compiled against android-31 but its transitive `androidx.fragment:1.7.1` dependency has `minCompileSdk=34`, causing AGP 8's `checkAarMetadata` to block the build. Added a `subprojects { afterEvaluate { compileSdk = 35 } }` override in the example's root Gradle file. README now documents the same one-line workaround for app-level projects. ([#5](https://github.com/brewkits/hyper_render/issues/5)) +- **SVG invisible with `sanitize: true`** (`html_sanitizer.dart`): `` was not in `defaultAllowedTags` so the sanitizer unwrapped it, destroying the SVG structure. Added an atomic SVG sanitization path that strips `