Guides / Runtime 0.2 releases

Runtime 0.2 releases

Runtime 0.2.0 adds native platform services, declarative Android workflows, historical Android migration, and project-aware editor tooling. Version 0.2.1 fixes packaging and release verification; it does not change the public JavaScript API or CLI command surface.

Upgrade an installed CLI#

To install exactly the release covered by this guide:

npm install --global @oro-computer/runtime@0.2.1
oroc --version

Use @latest instead to follow npm's latest release. Rebuild applications with the matching CLI, JavaScript API, native libraries, and target SDKs. Copying new JavaScript into an older native runtime cannot supply a missing backend. Existing apps need rebuilding and reinstalling when generated Android manifest entries change.

What to use in 0.2.0#

Task Entry point Scope
Discover native backend support oro:platform Read compiled support, then run the feature's own probe
Protect data or sign a server challenge after authentication oro:authentication Android and supported Linux hardware-key providers
Let the user choose a password provider entry oro:credentials Android Credential Manager or Linux Secret Service chooser
Run native finite, continuous, or deferred work Native execution and push Android and Linux; probe execution scope and admission
Bundle bounded reads, checkpoints, and notifications Declarative workflows Android-only bundled executor
Import protected history or retain published Android components Historical migration Android-only allowlisted backend
Work with launcher destinations, provider grants, network status, haptics, Back, and insets Native platform services Feature-specific platform support
Inspect notification channels, submissions, responses, and push recovery oro:notification and oro:push Android and scoped Linux implementations
Configure an editor or export compiler models Editor tooling Kotlin, TypeScript/JavaScript, C-family, Swift, and generic stdio servers
Use read-only installed SDKs or opt into build caches Installed SDKs and build caches External user configuration, writable app staging, explicit cache policy

The JavaScript reference includes the new oro:foreground/continuous, oro:background/deferred, oro:window/appearance, and oro:window/back subpaths, plus refreshed diagnostics and existing API declarations. The CLI reference includes language-server, tooling and its five subcommands, and push server / push distributor.

Behavior and compatibility fixes#

  • Android presentation: full-view rotation and managed-window attachment are corrected. Native text scaling follows the OS without duplicate app hooks. Activity/focus transitions, keyboard and inset handling, renderer recovery, and worker/IPC ownership are strengthened. See the Android reliability details.
  • Pause/resume: work submitted to a paused native loop is retained until resume. Linux GLib pumping no longer bypasses pause; UDP handles/endpoints survive repeated transitions; active TCP readers restart; Linux lifecycle changes reach the WebKit extension's filesystem runtime. A pause does not imply remote work was completed or cancelled.
  • Native requests: document/process ownership and cancellation are retained, worker callbacks settle on the owning thread, and IPC responses can stream before the producer finishes. New native operations accept bounded, document-owned cancellation where documented.
  • Trust and retained state: unattended native HTTPS reads share the fail-closed TLS pin/authority checks. Missing keys, malformed records, and stale generations remain explicit failures; they do not silently replace retained data. Unknown outcomes require reconciliation.
  • Installed SDKs: app builds stage writable output outside read-only SDK inputs. Compiled CLI/templates and Android API/source inputs are checked against distribution metadata, including source fingerprints. Keep the installation's API and native artifacts together.
  • Windows builds: Unicode window handling, CRT selection, and native archive consumer linkage are hardened. This does not add the missing high-level workflow or migration backends on Windows.
  • Deprecation: an API must have appeared in a previous published release before deprecation applies. Unreleased experiments can be renamed or removed directly; see the governance policy.

Other public API changes#

Interface Change to account for
oro:window Startup markReady / markPresented, explicit system appearance/inset ownership, Android native fullscreen/state, Activity content protection, bounded file sharing, and ENOTREADY during unavailable/saved Activity state
oro:diagnostics/runtime Compiled capability and Android build-identity inspection, including native/CLI revisions and bound source/asset evidence; diagnostic output does not establish product authorization
oro:diagnostics/window Animation-frame metrics use distinct timestamps in a bounded rolling Float64Array; sample capacity is 1–3600, default 60
oro:ipc Sequence counters can have document/worker namespace suffixes; correlate replies using the full sequence string. Descriptor operations retain their opening transport across synchronous/asynchronous calls
oro:tls Android pin approvals are authenticated in backup-excluded storage and shared with native HTTPS across cold starts. Changes close active native requests; clearing pins restores platform trust, while explicit authority revocation rejects that authority's certificates
oro:util parseJSON preserves valid escape sequences; only invalid unescaped-backslash JSON uses the legacy repair fallback
oro:test throws accepts a regular expression or Error constructor as its expected matcher

These signatures and contracts are included in the refreshed API declarations, alongside the new native families and subpaths.

Native encrypted records#

Trusted C++ integrations can use encrypted records, compare-and-swap revisions, and durable operation coordination. Shared C++ v2 is separate from Android Kotlin v1; migration is explicit. There is no public JavaScript route for reading these records or supplying their keys. OS secret-store backing does not establish universal hardware protection or authenticate a remote server. See native platform services.

Release and packaging changes#

Version 0.2.0 verifies exact npm tarballs, read-only installations, first-run configuration, consumer builds, and editor backends without workspace API symlinks. Its source gate includes native backend, Android Kotlin/JVM, and language-server regressions, with pinned JVM fixtures. Release-tag validation runs even when the commit belongs to an open pull request. Packaging stops on staging copy failures and avoids duplicate copies of read-only Android libraries.

Linux source-development SDK publication now uses verified immutable generations, atomic activation, active-command leases, rollback retention, and collection of unused generations and interrupted staging. This local linking workflow is separate from publishing or installing npm packages.

Version 0.2.1 makes local/global npm smoke checks install exact tarballs offline, avoiding premature registry lookups for optional platform packages. Packaging fixtures isolate npm configuration, credentials, caches, and Node startup options, impose bounded timeouts, and report subprocess failures in detail. Android editor qualification restores Java 21 while native Android builds retain Java 17. The language-server and npm packaging workflows include the fixture-isolation regressions.

These checks verify their stated build and fixture scope. They do not establish production signing, private historical-data migration, OEM behavior, hardware availability, or complete physical-device qualification.

Source record#

This review uses published tags v0.2.0 (04074002f775c8ed1bc845a99d23c6df4f6926c8) and v0.2.1 (a3949642f1cd2e125cc1140bddd4f752875ce4db), including the release changelog and 0.2.1 comparison. Platform support describes implementation inventory, not a claim that every backend is qualified for every deployment.

Source repository · Edit this page · View Markdown

Quick links

Type to search across the site. Use the up and down arrow keys to choose a result, Enter to open it, and Escape to close.