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
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

All notable changes to `@mathnotes/mobile-ink` will be documented here.

## [0.3.1] - 2026-05-20

- Added crisp settled zoom rendering with scale-aware native drawables and cached stroke tiles.
- Stabilized zoom viewport math so drawing coordinates stay aligned through fast zoom and pan cycles.
- Capped high-zoom native drawable scale to keep Apple Pencil drawing responsive at deep zoom levels.
- Improved large PDF notebook behavior, page background windowing, and selection gesture exclusion regions.
- Fixed an iOS drawable resize recursion that could crash dev builds on launch.

## [0.3.0] - 2026-05-15

- Added the Android native ink renderer with Skia Ganesh GPU rendering and React Native view integration.
Expand Down
2 changes: 1 addition & 1 deletion MathNotesMobileInk.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "MathNotesMobileInk"
s.version = "0.2.0"
s.version = "0.3.1"
s.summary = "Native Skia/Metal mobile ink engine for React Native"
s.homepage = "https://github.com/mathnotes-app/mobile-ink"
s.license = { :type => "Apache-2.0", :file => "LICENSE" }
Expand Down
5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Production-grade React Native ink primitives extracted from the MathNotes canvas
<a href="https://www.npmjs.com/package/@mathnotes/mobile-ink"><img src="https://img.shields.io/npm/v/@mathnotes/mobile-ink.svg" alt="npm version" /></a>
<a href="https://www.npmjs.com/package/@mathnotes/mobile-ink"><img src="https://img.shields.io/npm/dm/@mathnotes/mobile-ink.svg" alt="npm downloads" /></a>
<a href="https://github.com/mathnotes-app/mobile-ink/actions/workflows/ci.yml"><img src="https://github.com/mathnotes-app/mobile-ink/actions/workflows/ci.yml/badge.svg" alt="CI status" /></a>
<a href="https://github.com/mobile-ink/mobile-ink/releases/tag/v0.2.0"><img src="https://img.shields.io/github/v/release/mobile-ink/mobile-ink" alt="GitHub release" /></a>
<a href="https://github.com/mathnotes-app/mobile-ink/releases/latest"><img src="https://img.shields.io/github/v/release/mathnotes-app/mobile-ink" alt="GitHub release" /></a>
<a href="https://github.com/mathnotes-app/mobile-ink/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@mathnotes/mobile-ink.svg" alt="license" /></a>
</p>

Expand Down Expand Up @@ -37,7 +37,7 @@ mobile-ink is currently used in production in MathNotes: https://apps.apple.com/
| Area | Current support |
| --- | --- |
| iOS Apple Pencil drawing | Used in production |
| Native rendering | Custom iOS `MTKView` and Android `TextureView` backed by the shared C++ Skia engine |
| Native rendering | Custom iOS `MTKView` and Android `TextureView` backed by the shared C++ Skia engine, with cached high-resolution settled zoom rendering |
| Continuous notebooks | Fixed native engine pool with momentum scroll and pinch zoom |
| Tools | Pen, highlighter, crayon, calligraphy, eraser, selection, and shape recognition |
| Serialization | JSON notebook payloads plus native page load/save/export helpers |
Expand Down Expand Up @@ -174,7 +174,6 @@ Near-term work is focused on making the public package easier to adopt and easie
- Improve install and troubleshooting docs for React Native and Expo dev-client apps.
- Add more integration recipes for save/load, tool switching, and app-owned storage.
- Tighten selection transform performance for large stroke groups.
- Improve edge-case zoom behavior near page and canvas boundaries.
- Continue hardening the example app as a small regression harness.
- Add the Android native benchmark runner and expose Android benchmark controls in the example app.

Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mathnotes/mobile-ink",
"version": "0.3.0",
"version": "0.3.1",
"description": "Production-grade React Native ink engine with native Skia drawing and continuous canvas primitives.",
"license": "Apache-2.0",
"author": "BuilderPro LLC",
Expand Down
2 changes: 2 additions & 0 deletions src/__tests__/ContinuousEnginePool.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ const mockStartBenchmarkRecording = jest.fn(async () => true);
const mockStopBenchmarkRecording = jest.fn(async () => mockRunBenchmark());
const mockNativeCanvasProps: any[] = [];

jest.setTimeout(15000);

jest.mock("../NativeInkCanvas", () => {
const React = require("react");
const { View } = require("react-native");
Expand Down
Loading