Skip to content

Releases: Ziv-Ink/supernote-module-generator

sn-module-gen 0.1.3

Choose a tag to compare

@Ziv-Ink Ziv-Ink released this 30 Sep 07:41

sn-module-gen 0.1.3

Release date: 2026-09-30.

User-visible changes

Native modules can be distributed through ordinary npm and Yarn packages.
An author runs sn-module-gen add, edits C++/C helper or Kotlin/Java sources,
and runs plain sn-module-gen update to produce package-local generated
bindings, TypeScript, documentation, compatibility records, and native payloads.
One feature can contain both language families. The public executable remains
sn-module-gen; the build selection variable remains SUPERNOTE_MODULE_COMMAND.

The publisher owns generation and compiler/KSP analysis. A consumer installs
the completed module packages and @supernote/runtime as direct dependencies;
React Native autolinking and runtime composition collect the installed modules
into one plugin runtime registration. Consumer builds use the packaged output
without invoking the Python generator or consumer KSP. Dependency installation,
lockfiles, app builds, packaging, and publication remain separate author actions.

Plain update regenerates every local module; validate checks authored and
installed inputs, completion state, generated output, and compatibility without
publishing files. Diagnostics reject stale, incomplete, incompatible, and unsafe
inputs. The generator does not install packages, build the app, or operate the
tablet. Selective update, generator remove, and legacy template-sync commands
are not part of this contract. Authored source remains user-owned.

The supported distribution route installs module tarballs as copied packages.
npm, Yarn classic, and modern Yarn using nodeLinker: node-modules are supported;
Yarn Plug'n'Play and external linked author sources are unsupported. A supported
shared-runtime link is not evidence for external linked author-source support.
See the npm package contract and
README for the current public workflow.

Accepted implementation evidence and scope

The independently reviewed implementation candidate preceded the 0.1.3 version
and release-document edits. Its source base was
9f2ddc21e8c9a94081f4320b0b4e24c2c91fb38b plus the frozen 306-entry candidate;
dirty identity SHA-256:
1f3e1b586e754bd3a306e280f8958b1ce627ce034c4406171ee437e5b40a7538.
These results are dated implementation evidence, not exact 0.1.3 artifact or
hosted-CI qualification
. The release commit must pass its own source/package
checks and the unchanged release workflow before publication.

  • Native Linux complete-suite and Linux/macOS/Windows platform coverage inputs
    were independently combined: coverage.py combined score 82.49%, above the
    unchanged 82.03% floor. Statement coverage was 85.10%; branch coverage was
    75.31%. The complete Linux run had 1293 passed and 30 skipped; platform subsets
    had 31 passed/7 skipped on Mac and Linux, 33 passed/5 skipped on native Windows.
    This does not qualify Windows Android builds or turn skips into passes.
  • The accepted relative Bash checkpoint covered Mac Flashcards, Linux Dashboard,
    and Linux Flashcards: 12 positive clean/incremental builds, six original versus
    candidate package comparisons, and six incremental payload identities. The
    accepted first-clean ordering experiment showed generated runtime registration
    collected after Gradle rather than an empty pre-build list. This is evidence
    for the separate ordering-only template patch, not a template change shipped
    in this Python release.
  • A Linux candidate package passed TypeScript, the complete native build, and
    strict package inspection: one generated runtime registration, ARM64 runtime
    and registration libraries, DEX definitions, and protected package preservation.
    Package SHA-256:
    1fb9f170d22653be94708a03885a520b16ce726f0dc22ed50e9acab9cbf972bf.
  • On a Supernote Nomad, Android 11, firmware
    Chauvet.E103.2609111001.2505_beta, PluginHost 1.00.26009090, and SELinux
    Enforcing, the npm-installed copied C++ module returned F7API2 through its
    generated binding. The actual return was both visible and logged; the bundled
    JavaScript contained no literal success value. One native invocation is proven.
    Closing and reopening showed the result again, but there was no second native
    return marker: a second invocation, remount, teardown, or runtime reinitialization
    is not proven. Retained React state is only a possible explanation.

The final independent verdict for the shortened relative goal was PASS WITH
RESIDUAL RISKS
. No broader host/community/device lifecycle matrix is implied.

Residual limitations and release boundary

  • PowerShell is unchanged; Windows Android is not qualified under the shortened
    scope. Native Windows platform tests are a separate, narrower claim.
  • Original and candidate Bash scripts share stale-output and failure-masking
    limitations. Shared failures were nonblocking under the explicit relative
    acceptance rule, not proof of absolute fail-closed packaging.
  • The Mac Dashboard row lacked JDK 21 and remains unverified, not passing.
  • External linked author sources remain unsupported. Use copied package installs.
  • The one device invocation does not qualify broad lifecycle, changed native
    generations, all firmware, or all PluginHost versions.
  • Template and Wiki are separate repositories and are not published with this
    generator commit. At preparation, the Wiki still describes 0.1.1 and retired
    selective-update/remove workflows. Its public contract must be reconciled
    separately before publication as required by the release procedure; this
    release preparation does not claim that Wiki work is complete.

Historical 0.1.2 notes and device records remain unchanged for provenance. They
do not establish results for the new release artifacts.

sn-module-gen 0.1.2

Choose a tag to compare

@Ziv-Ink Ziv-Ink released this 04 Sep 22:36

sn-module-gen 0.1.2

This patch release hardens host-filesystem transactions without changing the
generated JavaScript, Android, JNI, or JSI API contracts.

  • Files, directories, and symlinks now use the stable timestamp representation
    actually stored by the filesystem. This prevents false
    concurrent-modification failures when a filesystem accepts a nanosecond value
    but stores a coarser timestamp.
  • Temporary feature-stage and pre-activation backup names no longer grow with
    the feature or package name. They remain within eCryptFS NAME_MAX=143 for
    the longest accepted public names.
  • A completed rollback is verified against the filesystem's stable coarse-mtime
    representation while content, entry type, mode, size, and other protected
    state remain strict.
  • Recovery-copy verification records source device/inode identity and rejects
    atomic source replacement, even if the replacement preserves content, size,
    mode, and timestamps.

Manual qualification used the real installed sn-module-gen executable in
fresh disposable projects. Complete Add, Check, Validate, Update, drift/repair,
Remove, rollback/failure, and long-name workflows passed on macOS APFS and Linux
ext4. Focused affected-path workflows passed on Linux eCryptFS, including
generated-state copy/rollback and long stage/backup names; this is not a claim
that every CLI scenario was repeated on eCryptFS.

A disposable C++ feature was also built, packaged, installed through the normal
Supernote UI, and launched on a Supernote Nomad running
Chauvet.E103.2608241001.2481_beta. The generated native call produced exactly:

SNMG_NATIVE_RESULT:Hello, SNMG_NATIVE_260905_04301

The canary loaded in an already-running PluginHost process. It did not test a
same-plugin reload or a fresh-process lifecycle. Native Windows qualification
was not run for this candidate; Windows-specific filesystem behavior is covered
by automated platform simulations and remains a release-evidence limitation.

See the README
and Wiki for the
supported workflow and current boundaries.

sn-module-gen 0.1.1

Choose a tag to compare

@Ziv-Ink Ziv-Ink released this 04 Sep 14:18

sn-module-gen 0.1.1

This patch release fixes host-filesystem timestamp handling on filesystems such
as eCryptfs that can accept a nanosecond timestamp request but store a coarser
value.

  • Source inventory no longer reports a false concurrent-modification error
    solely because the generator's access-time restoration was rounded.
  • Durable transaction cleanup uses and verifies the stable directory
    timestamps applied by the filesystem, allowing a completed recovery pointer
    to be removed.
  • Metadata the generator did not write is still compared exactly, including
    inode, type, mode, size, and modification time.

This host-side correction does not change generated APIs, templates, project
schemas, Android integration, or native runtime behavior. The default version
for a newly generated local feature package remains 0.1.0.

See the README
and Wiki for the
supported workflow and current boundaries.

sn-module-gen 0.1.0

Choose a tag to compare

@Ziv-Ink Ziv-Ink released this 31 Aug 13:43

sn-module-gen 0.1.0

See the README
and Wiki for the
supported workflow and current boundaries.