arcane-os 0.54.1 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +35 -28
  3. package/browser-runtime/core/client.mjs +552 -0
  4. package/browser-runtime/core/contracts.mjs +85 -0
  5. package/docs/architecture.md +31 -23
  6. package/docs/compatibility.md +10 -1
  7. package/docs/consumer-updates.md +82 -0
  8. package/docs/platform-targets.md +20 -11
  9. package/docs/publishing.md +41 -18
  10. package/docs/reference/README.md +19 -7
  11. package/docs/reference/availability-and-normalization.md +15 -5
  12. package/docs/reference/behavioral-testing.md +7 -6
  13. package/docs/reference/cli.md +12 -4
  14. package/docs/reference/core-client.md +163 -0
  15. package/docs/reference/core-native-packaging.md +149 -0
  16. package/docs/reference/core-runtime.md +185 -0
  17. package/docs/reference/inventory/package-api.json +271 -5
  18. package/docs/reference/protocols.md +38 -14
  19. package/docs/reference/pwa.md +17 -0
  20. package/docs/reference/sdk-api.md +772 -15
  21. package/package.json +10 -3
  22. package/schemas/arcane-app.schema.json +10 -0
  23. package/schemas/arcane-package.schema.json +10 -0
  24. package/schemas/native-build-plan.schema.json +8 -0
  25. package/src/app-descriptor.mjs +18 -1
  26. package/src/app-layout.mjs +6 -2
  27. package/src/cli/main.mjs +8 -6
  28. package/src/core/host.mjs +23 -0
  29. package/src/core/hosts/arcane-core-loader.cjs +2 -0
  30. package/src/core/hosts/linux/arcane_core_process.c +568 -0
  31. package/src/core/hosts/linux/arcane_core_process.h +127 -0
  32. package/src/core/hosts/sea-launcher.cjs +17 -0
  33. package/src/core/hosts/windows/ArcaneCoreProcess.cs +416 -0
  34. package/src/core/runtime.mjs +345 -0
  35. package/src/core/stdio.mjs +209 -0
  36. package/src/core-classic-source.mjs +43 -0
  37. package/src/import-map.mjs +62 -0
  38. package/src/native/portable-layout.mjs +184 -0
  39. package/src/native/portable-provider.mjs +211 -0
  40. package/src/native-plan.mjs +10 -4
  41. package/src/native-provider-loader.mjs +15 -4
  42. package/src/packager/core.mjs +131 -32
  43. package/src/process.mjs +8 -4
  44. package/src/targets/index.mjs +3 -1
  45. package/src/toolchain.mjs +23 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,65 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.56.0
4
+
5
+ - Add explicit `package.nativeResources` selection for native-only application
6
+ files and directories. Browser selection remains unchanged; non-browser
7
+ packaging keeps additional resources outside browser transformations and
8
+ stages them in a separate target output. Applications select their complete
9
+ required source closure, and target adapters receive the effective target
10
+ and browser-PWA selection.
11
+ - Add `getInstalledCoreClient()` to read the exact live SDK-installed client
12
+ without connecting or changing globals. Terminal `failTransport(error)` and
13
+ the owned native failure callback preserve complete errors, settle pending
14
+ requests, and release the failed installation's callbacks and subscriptions.
15
+ - Add opt-in `replayRuntimeState` for Core clients and classic injection. The
16
+ runtime replays its actual readiness and current service state for newly
17
+ connected documents without restarting services or delaying page startup.
18
+
19
+ - Preserve complete UTF-8 process output when a character spans stdout or stderr
20
+ chunks. Independent readable-stream decoders feed the same text to captured
21
+ results and existing event delivery; ordering, backpressure, cancellation,
22
+ graceful drain, nonzero error details and line-event behavior remain unchanged.
23
+ - Include committed Windows and Linux Core process-transport source and the
24
+ generic Windows SEA launcher source as native-host groundwork. These sources
25
+ do not activate a platform host or deliver a public native executable; app
26
+ host composition and the remaining native integration stay independently owned.
27
+ - Clarify development `latest` tracking, production-designated pins, matching
28
+ requester notices, and required documentation/site release follow-through.
29
+ - No new dependency, application service, automatic runtime installation,
30
+ application default change or saved-data migration is introduced.
31
+
32
+ ## 0.55.0
33
+
34
+ - Add public Core client, protocol contracts and classic-script source generation
35
+ through `arcane-os/core/client`, `core/contracts` and `core/classic-source`.
36
+ Native facades install synchronously; the shared event owner retains ordered
37
+ early events and responses. Correlation, complete payloads and diagnostics,
38
+ cancellation and transport-versus-service readiness remain explicit.
39
+ - Add app-neutral native Core runtime and stdio transport through
40
+ `arcane-os/core/runtime` and `core/stdio`. Hosts register services, start them
41
+ independently and distinguish cancellable renderer requests from accepted
42
+ service-lifetime work. Graceful shutdown waits for accepted responses, service
43
+ drain/disposal and queued transport output without terminating the host.
44
+ - Add SDK-owned portable native payload assembly and explicit application-service
45
+ composition through `arcane-os/native/portable-provider` and `core/host`.
46
+ Portable provider loading no longer requires an Arcane OS checkout; explicit
47
+ checkout providers remain supported. Preserve complete selected releases,
48
+ dependency records and the application's actual SDK version separately from
49
+ the builder, including partial direct browser package projections. Portable
50
+ output declares the host's serving, client injection and stdio responsibilities;
51
+ it is not an executable platform host.
52
+ - Preserve Core client FIFO order during deferred event-owner handoff, report
53
+ asynchronous send failures after request settlement, retain original native
54
+ diagnostic fields and require callable transport sending before readiness.
55
+ - Correct disabled-PWA packaging so selected output documents lose active SDK
56
+ manifest and bootstrap references before native-module processing. Preserve
57
+ source PWA settings, unrelated authored links, inactive HTML and unselected
58
+ documents; enabled PWA generation keeps its existing behavior.
59
+ - Executable platform hosts and application host cutover remain separate work.
60
+ Applications retain service composition, model selection and saved settings.
61
+ No new dependency, automatic model loading or data migration is added.
62
+
3
63
  ## 0.54.1
4
64
 
5
65
  - Select the self-contained Transformers.js 4.3.0 browser CDN bundle for
package/README.md CHANGED
@@ -20,9 +20,11 @@ selected SDK projection or an explicit live SDK source mount. Both profiles
20
20
  share the theme, packaging, event, cancellation,
21
21
  and browser run contracts while retaining their selected application layout.
22
22
 
23
- This checkout defines the `0.54.1` SDK contract. Applications pin one exact npm
24
- version and lockfile; registry state is deliberately not baked into application
25
- artifacts.
23
+ This checkout defines the `0.56.0` SDK contract. Development applications declare
24
+ `arcane-os` as `latest` and retain their lockfile. Exact SDK pins begin when Roshi
25
+ designates a production build. Follow [Consumer updates](docs/consumer-updates.md)
26
+ to refresh and compare the installed SDK and lockfile with the published channel;
27
+ registry state is deliberately not baked into application artifacts.
26
28
 
27
29
  Standalone browser apps use their repository root and installed npm package directly, without a
28
30
  generated workspace `arcane/` directory or `arcane.lock.json`. Select the
@@ -594,10 +596,11 @@ Arcane root, shared, and native tests require the explicit shared focused-test
594
596
  form above. External app repositories retain their root `test/` plus selected
595
597
  app-test behavior.
596
598
 
597
- Integrated native app builds are also implemented. `--workspace` and
598
- `--arcane-root` must resolve to the same Arcane checkout, one `--app` and one
599
- declared native target are selected, and `--output-root` must resolve outside
600
- that checkout. The SDK then uses the same package, plan, provider, and
599
+ Integrated native app builds select one `--app` and one declared native target,
600
+ and `--output-root` must resolve outside that checkout. An explicit
601
+ `--arcane-root` must resolve to the same Arcane checkout as `--workspace`;
602
+ the default portable provider instead comes from the installed SDK package.
603
+ The SDK then uses the same package, plan, provider, and
601
604
  same-process run lifecycle as an external app repository. Verification remains
602
605
  an explicit operation for a selected release output.
603
606
 
@@ -617,8 +620,8 @@ arcane package [--app <id>] [--dry-run]
617
620
  arcane verify [--app <id>]
618
621
  arcane bundle [--app <id>] [--artifact <file>.arcane-app.tar.gz] [--overwrite]
619
622
  arcane verify-bundle <file.arcane-app.tar.gz>
620
- arcane native-doctor --target <native-target> --arcane-root <directory>
621
- arcane native-prepare --target <native-target> --arcane-root <directory>
623
+ arcane native-doctor --target <native-target> [--arcane-root <directory>]
624
+ arcane native-prepare --target <native-target> [--arcane-root <directory>]
622
625
  arcane build --target <target> [--arcane-root <directory>] [--output-root <directory>] [--format <format>] [--signing <mode>]
623
626
  arcane run [--target <target>] [--app <id>] [--arcane-root <directory>] [--output-root <directory>] [--format <format>] [--signing <mode>]
624
627
  arcane targets
@@ -689,24 +692,25 @@ package installation, or assertions.
689
692
 
690
693
  ## Current target support
691
694
 
692
- The SDK exposes one browser target and five explicitly paired
693
- native development targets: a non-runnable portable directory, a
694
- Windows x64 unsigned-local-test EXE bundle, Linux x64 and Linux ARM64
695
+ The SDK exposes one browser target and an SDK-owned, non-runnable portable
696
+ payload directory. Four executable target entries require an explicit Arcane OS
697
+ provider: a Windows x64 unsigned-local-test EXE bundle, Linux x64 and Linux ARM64
695
698
  unsigned-local-test DEBs, and an Android development-signed APK. The
696
699
  `android-arm64` APK is architecture-neutral because it contains no native ABI;
697
700
  the target name identifies its supported physical/native ARM64 run profile.
698
701
 
699
- Every native build requires an explicit Arcane OS checkout compatible with this
700
- SDK version and a canonical app descriptor that declares the
701
- exact selected target. The SDK never searches for or silently selects a mutable
702
- toolchain root. Scaffold a separate
702
+ Portable uses the installed SDK provider without an Arcane OS checkout.
703
+ An explicit `--arcane-root` retains the checkout provider selection; executable
704
+ targets still require that root and their platform toolchains. Every native
705
+ build needs a canonical app descriptor declaring the exact selected target.
706
+ The SDK never searches for a mutable toolchain root. Scaffold a separate
703
707
  repository with the matching `--target`, or add and validate that target in the
704
708
  canonical descriptor before invoking its native command. From an external
705
709
  application repository, run one selected target:
706
710
 
707
711
  ```bash
708
- npm exec -- arcane native-doctor --target portable --arcane-root "../Arcane OS"
709
- npm exec -- arcane build --target portable --arcane-root "../Arcane OS"
712
+ npm exec -- arcane native-doctor --target portable
713
+ npm exec -- arcane build --target portable
710
714
 
711
715
  # Windows x64: build or build, verify, and launch in one process
712
716
  npm exec -- arcane build --target windows-x64 --arcane-root "../Arcane OS"
@@ -737,15 +741,18 @@ browser package.
737
741
  `native-prepare` is available as a standalone toolchain diagnostic. Do not run
738
742
  it automatically: the build command prepares the selected toolchain itself.
739
743
 
740
- The build reads the selected app release and descriptor, requires the
741
- Core to meet the highest minimum declared by the SDK runtime, selected app, and
742
- bundled dependencies, keep their declared Arcane protocol, and provide every
743
- required feature, capability, and method. A Core reporting a higher version is
744
- accepted only when it passes those same current-SDK checks; this is not a promise
745
- that future SDK or Core releases will remain compatible. The build copies the
746
- complete selected release. Portable emits an app-scoped
747
- Arcane Core payload under `build/portable/`; that directory is not executable
748
- and `arcane run --target portable` is intentionally unavailable. Windows emits
744
+ The build passes the complete selected app release, descriptor, dependencies and
745
+ minimum Core requirement to the provider. The SDK portable provider copies those
746
+ payloads and generates a Core entry and synchronous classic client. Explicit
747
+ application services use `createPortableNativeProvider({services:[{module,options}]})`
748
+ from `arcane-os/native/portable-provider`; the default imports no OS product or
749
+ application services. `arcane-os/core/host` owns reusable native service
750
+ composition and shutdown. See [Core native packaging](docs/reference/core-native-packaging.md).
751
+ Payload assembly is separate from composed-host compatibility and execution.
752
+ The portable payload under `build/portable/` is not executable and
753
+ `arcane run --target portable` is intentionally unavailable. No executable host,
754
+ installer, model assets or platform build toolchain is added by this SDK
755
+ provider. Through explicit Arcane OS providers, Windows emits
749
756
  an app-scoped executable bundle under `build/windows-x64/`. Linux emits an
750
757
  app-scoped amd64 DEB under `build/linux-x64/` or ARM64 DEB under
751
758
  `build/linux-arm64/`. Android emits one development-signed, architecture-neutral
@@ -778,7 +785,7 @@ signing, store-publishing, release, or promotion evidence.
778
785
  | Integrated Arcane checkout workflow | Yes |
779
786
  | ArcaneOllama managed-service check | Yes on supported Windows hosts |
780
787
  | SDK native plan/provider boundary | Yes |
781
- | Portable app-scoped Core directory | Yes, with explicit `--arcane-root`; not directly runnable |
788
+ | Portable app-scoped payload and reusable Core entry | SDK provider by default; explicit checkout override retained; not directly runnable |
782
789
  | Windows x64 EXE bundle | Yes, unsigned local development with explicit `--arcane-root` |
783
790
  | Linux x64 DEB | Yes, unsigned local development with explicit `--arcane-root` |
784
791
  | Linux ARM64 DEB | Yes, unsigned local development on a compatible native ARM64 toolchain with explicit `--arcane-root`; native build, WebKit readiness, and cancellation evidence is recorded |