

# 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:

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

Use `@latest` instead to follow [npm's latest release](https://www.npmjs.com/package/@oro-computer/runtime). 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`](/runtime/docs/javascript/platform/) | Read compiled support, then run the feature's own probe |
| Protect data or sign a server challenge after authentication | [`oro:authentication`](/runtime/docs/javascript/authentication/) | Android and supported Linux hardware-key providers |
| Let the user choose a password provider entry | [`oro:credentials`](/runtime/docs/javascript/credentials/) | Android Credential Manager or Linux Secret Service chooser |
| Run native finite, continuous, or deferred work | [Native execution and push](/runtime/docs/guides/native-execution-and-push/) | Android and Linux; probe execution scope and admission |
| Bundle bounded reads, checkpoints, and notifications | [Declarative workflows](/runtime/docs/guides/declarative-workflows/) | Android-only bundled executor |
| Import protected history or retain published Android components | [Historical migration](/runtime/docs/guides/historical-migration/) | Android-only allowlisted backend |
| Work with launcher destinations, provider grants, network status, haptics, Back, and insets | [Native platform services](/runtime/docs/guides/native-platform-services/) | Feature-specific platform support |
| Inspect notification channels, submissions, responses, and push recovery | [`oro:notification`](/runtime/docs/javascript/notification/) and [`oro:push`](/runtime/docs/javascript/push/) | Android and scoped Linux implementations |
| Configure an editor or export compiler models | [Editor tooling](/runtime/docs/guides/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](/runtime/docs/guides/installed-sdk-and-build-cache/) | External user configuration, writable app staging, explicit cache policy |

The [JavaScript reference](/runtime/docs/javascript/all-modules/) 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](/runtime/docs/cli/oroc/) 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](https://github.com/oro-computer/runtime/blob/v0.2.1/docs/ANDROID_RUNTIME_RELIABILITY.md).
- **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](https://github.com/oro-computer/runtime/blob/v0.2.1/docs/GOVERNANCE.md).

## Other public API changes

| Interface | Change to account for |
| --- | --- |
| [`oro:window`](/runtime/docs/javascript/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`](/runtime/docs/javascript/diagnostics/) | 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`](/runtime/docs/javascript/diagnostics/) | Animation-frame metrics use distinct timestamps in a bounded rolling `Float64Array`; sample capacity is 1–3600, default 60 |
| [`oro:ipc`](/runtime/docs/javascript/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`](/runtime/docs/javascript/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`](/runtime/docs/javascript/util/) | `parseJSON` preserves valid escape sequences; only invalid unescaped-backslash JSON uses the legacy repair fallback |
| [`oro:test`](/runtime/docs/javascript/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](/runtime/docs/guides/native-platform-services/#native-records-and-coordination).

## 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](https://github.com/oro-computer/runtime/blob/v0.2.1/CHANGELOG.md) and [0.2.1 comparison](https://github.com/oro-computer/runtime/compare/v0.2.0...v0.2.1). Platform support describes implementation inventory, not a claim that every backend is qualified for every deployment.
