arcane-os 0.11.1 → 0.11.3
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.
- package/CHANGELOG.md +14 -0
- package/README.md +8 -8
- package/browser-runtime/ai/browser-wllama-runtime.mjs +7 -0
- package/docs/reference/ai/browser-wasm.md +5 -2
- package/docs/reference/runtime-components.md +8 -2
- package/package.json +1 -1
- package/runtime/arcane/components/chat.html +4 -0
- package/runtime/arcane/components/speech.html +7 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.11.3
|
|
4
|
+
|
|
5
|
+
- Require Wllama's model-context load result to report success before publishing
|
|
6
|
+
model readiness. Failed initialization now follows the existing cleanup and
|
|
7
|
+
error path instead of allowing conversation requests against a failed context.
|
|
8
|
+
Preserve CPU and GPU selection, cached models, complete payloads, and cancellation.
|
|
9
|
+
|
|
10
|
+
## 0.11.2
|
|
11
|
+
|
|
12
|
+
- Show mobile speech feedback only during requested or active voice loading.
|
|
13
|
+
Align pending local-model activation to the top of the chat area at viewport
|
|
14
|
+
widths up to `44rem`. Preserve existing mobile controls, complete status and
|
|
15
|
+
error data, desktop layout, and model lifecycle.
|
|
16
|
+
|
|
3
17
|
## 0.11.1
|
|
4
18
|
|
|
5
19
|
- Keep the shared Chat transcript, composer, speech controls, language selector,
|
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ version-locked SDK runtime, while an integrated Arcane checkout uses its live
|
|
|
19
19
|
`arcane/` runtime. Both profiles preserve the same app URLs, theme, packaging,
|
|
20
20
|
event, cancellation, and browser run contracts.
|
|
21
21
|
|
|
22
|
-
This checkout defines the `0.11.
|
|
22
|
+
This checkout defines the `0.11.3` SDK contract. Applications pin one exact npm
|
|
23
23
|
version and lockfile; registry state is deliberately not baked into application
|
|
24
24
|
artifacts.
|
|
25
25
|
|
|
@@ -41,7 +41,7 @@ Create one browser application, install its pinned SDK, and start its source
|
|
|
41
41
|
server:
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
npx arcane-os@0.11.
|
|
44
|
+
npx arcane-os@0.11.3 new hello-speech --path ./hello-speech --target browser
|
|
45
45
|
cd hello-speech
|
|
46
46
|
npm install
|
|
47
47
|
npm run dev
|
|
@@ -392,7 +392,7 @@ uses the same controller for automatic memory extraction.
|
|
|
392
392
|
Create a new repository-shaped Arcane application with the exact stable SDK:
|
|
393
393
|
|
|
394
394
|
```bash
|
|
395
|
-
npx arcane-os@0.11.
|
|
395
|
+
npx arcane-os@0.11.3 new my-app --path ./my-app --target portable --git
|
|
396
396
|
cd my-app
|
|
397
397
|
npm install
|
|
398
398
|
npm run dev
|
|
@@ -402,7 +402,7 @@ To enroll an existing repository, install the exact SDK and initialize only
|
|
|
402
402
|
missing Arcane files:
|
|
403
403
|
|
|
404
404
|
```bash
|
|
405
|
-
npm install --save-dev --save-exact arcane-os@0.11.
|
|
405
|
+
npm install --save-dev --save-exact arcane-os@0.11.3
|
|
406
406
|
npm exec -- arcane init my-app --target portable
|
|
407
407
|
```
|
|
408
408
|
|
|
@@ -418,7 +418,7 @@ npm exec -- arcane-os targets
|
|
|
418
418
|
No global SDK install or standalone Arcane CLI is required. The application
|
|
419
419
|
repository's exact npm dependency and lockfile own the CLI and toolchain version.
|
|
420
420
|
|
|
421
|
-
Use `npx arcane-os@0.11.
|
|
421
|
+
Use `npx arcane-os@0.11.3` for the initial bootstrap because it names this npm
|
|
422
422
|
package explicitly; bare `npx arcane` outside an installed project could resolve
|
|
423
423
|
a different package. Both installed commands invoke the same headless toolchain.
|
|
424
424
|
Project-local npm scripts use the SDK pinned by that app's `package-lock.json`,
|
|
@@ -438,7 +438,7 @@ node ./bin/arcane.mjs new local-app --path ../local-app --target portable --git
|
|
|
438
438
|
|
|
439
439
|
# From the generated app repository
|
|
440
440
|
cd ../local-app
|
|
441
|
-
npm install --save-dev --save-exact ../arcane-os-sdk/arcane-os-0.11.
|
|
441
|
+
npm install --save-dev --save-exact ../arcane-os-sdk/arcane-os-0.11.3.tgz
|
|
442
442
|
npm ci
|
|
443
443
|
```
|
|
444
444
|
|
|
@@ -447,7 +447,7 @@ same location. The lockfile retains the selected package dependency while
|
|
|
447
447
|
Arcane uses the installed package name and version. Local directory `file:` dependencies are not
|
|
448
448
|
accepted because npm may install them as links; use a packed `.tgz`. A GitHub
|
|
449
449
|
runner also needs that tarball at the locked path. After publication, replace
|
|
450
|
-
the local declaration with the exact `arcane-os@0.11.
|
|
450
|
+
the local declaration with the exact `arcane-os@0.11.3` registry package and
|
|
451
451
|
commit the regenerated lock.
|
|
452
452
|
|
|
453
453
|
Generated repositories use `npm ci --ignore-scripts` in CI. Run dependency
|
|
@@ -586,7 +586,7 @@ package installation, or assertions.
|
|
|
586
586
|
|
|
587
587
|
## Current target support
|
|
588
588
|
|
|
589
|
-
Version `0.11.
|
|
589
|
+
Version `0.11.3` exposes one browser target and five explicitly paired
|
|
590
590
|
native development targets: a non-runnable portable directory, a
|
|
591
591
|
Windows x64 unsigned-local-test EXE bundle, Linux x64 and Linux ARM64
|
|
592
592
|
unsigned-local-test DEBs, and an Android development-signed APK. The
|
|
@@ -575,6 +575,13 @@ export function createPackagedWllamaRuntime({ logger = arcaneLogging } = {}) {
|
|
|
575
575
|
"Wllama did not confirm a successfully loaded model.",
|
|
576
576
|
);
|
|
577
577
|
}
|
|
578
|
+
const loadedContext = next.getLoadedContextInfo();
|
|
579
|
+
if (loadedContext.success !== true) {
|
|
580
|
+
throw runtimeFailure(
|
|
581
|
+
'ARCANE_AI_LOAD_FAILED',
|
|
582
|
+
'Wllama failed to create the model context.'
|
|
583
|
+
);
|
|
584
|
+
}
|
|
578
585
|
let adapter = null;
|
|
579
586
|
if (webgpuRequired) {
|
|
580
587
|
const telemetryOperation = trackOperation(
|
|
@@ -146,8 +146,11 @@ bar is indeterminate. Downloaded-file completion is not activation completion.
|
|
|
146
146
|
The metadata tensor count and GPU layer assignment are descriptive only:
|
|
147
147
|
upstream reports assigned layers before model-weight loading has finished.
|
|
148
148
|
The pinned runtime does not expose a measured overall initialization fraction
|
|
149
|
-
or a shader-compilation completion count. Readiness
|
|
150
|
-
|
|
149
|
+
or a shader-compilation completion count. Readiness requires the load operation
|
|
150
|
+
to resolve, Wllama to report the model loaded, and its public
|
|
151
|
+
`getLoadedContextInfo()` result to report `success:true`. A failed model context
|
|
152
|
+
rejects loading with `ARCANE_AI_LOAD_FAILED`, releases the owned session, and
|
|
153
|
+
leaves the provider in `error` with `loaded:false` before inference can begin.
|
|
151
154
|
|
|
152
155
|
While a load remains active, the provider repeats its current record every five
|
|
153
156
|
seconds with `heartbeat:true` and an updated `elapsedMs`. During initialization,
|
|
@@ -417,6 +417,8 @@ local LLM, the transcript, session status, composer, upload, speech panel
|
|
|
417
417
|
(including application-supplied controls), language selector, and timer stay
|
|
418
418
|
hidden until that exact sticky role is `ready` and `loaded`. The existing model
|
|
419
419
|
activation area remains available for Start, progress, cancellation, and retry.
|
|
420
|
+
At viewport widths up to `44rem`, that pending local-model activation area sits
|
|
421
|
+
at the top of the chat area; wider layouts retain their existing placement.
|
|
420
422
|
A selected cloud route (`localOnly:false`) shows the conversation surfaces
|
|
421
423
|
immediately; Send still follows actual LLM availability. Later unload, failure,
|
|
422
424
|
or selection changes update visibility from the same runtime subscription
|
|
@@ -1180,8 +1182,12 @@ selects a Speech interface for voice output. Transcription activation,
|
|
|
1180
1182
|
recording, sending recorded audio, and their status/progress are unavailable;
|
|
1181
1183
|
`requestSTTActivation()` returns `false` without requesting a provider action.
|
|
1182
1184
|
The keyboard remains the voice-input path. The existing TTS mute/unmute control
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
+
remains available alongside application-supplied controls such as End. Mobile
|
|
1186
|
+
voice feedback participates in layout only while a voice load is requested or
|
|
1187
|
+
the TTS role is `loading`; it collapses in other states, including unloaded, ready, and
|
|
1188
|
+
speaking. Complete status text and error events remain maintained by the same
|
|
1189
|
+
owner, and the voice control retains its state-specific labels and retry action.
|
|
1190
|
+
Desktop speech and the dedicated `voice-transcription.html` component retain their
|
|
1185
1191
|
existing behavior.
|
|
1186
1192
|
|
|
1187
1193
|
On desktop, the Hold to talk control remains disabled unless sticky STT state
|
package/package.json
CHANGED
|
@@ -147,6 +147,10 @@
|
|
|
147
147
|
grid-column: 1;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
+
:host([data-device-class="mobile"]:not([data-voice-loading="true"])) .speech_feedback {
|
|
151
|
+
display: none;
|
|
152
|
+
}
|
|
153
|
+
|
|
150
154
|
:host([data-device-class="mobile"]) #muteButton {
|
|
151
155
|
grid-row: 1;
|
|
152
156
|
grid-column: 2;
|
|
@@ -725,6 +729,9 @@
|
|
|
725
729
|
}
|
|
726
730
|
|
|
727
731
|
function renderStatus() {
|
|
732
|
+
host.dataset.voiceLoading = String(
|
|
733
|
+
pendingTTSIntent === 'load' || ttsRole.state === 'loading'
|
|
734
|
+
);
|
|
728
735
|
const messages = [];
|
|
729
736
|
let tone = '';
|
|
730
737
|
|