arcane-os 0.11.0 → 0.11.1
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 +6 -0
- package/README.md +8 -8
- package/docs/reference/runtime-components.md +12 -0
- package/package.json +1 -1
- package/runtime/arcane/components/chat.html +18 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.11.1
|
|
4
|
+
|
|
5
|
+
- Keep the shared Chat transcript, composer, speech controls, language selector,
|
|
6
|
+
and timer hidden until the selected local language model is ready and loaded.
|
|
7
|
+
Cloud routes remain visible immediately, and completed transcripts remain readable.
|
|
8
|
+
|
|
3
9
|
## 0.11.0
|
|
4
10
|
|
|
5
11
|
- Add explicit browser chat CPU selection with `loadDefaults:{gpuLayers:0}`
|
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.1` 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.1 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.1 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.1
|
|
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.1` 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.1.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.1` 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.1` 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
|
|
@@ -411,6 +411,18 @@ comes from sticky runtime role state; the method never forwards standalone
|
|
|
411
411
|
speech booleans or synthesizes ready speech roles without a selected, loaded
|
|
412
412
|
provider.
|
|
413
413
|
|
|
414
|
+
Before model selection is available, conversation surfaces remain hidden unless
|
|
415
|
+
the host supplies LLM availability through `setAIAvailability()`. For a selected
|
|
416
|
+
local LLM, the transcript, session status, composer, upload, speech panel
|
|
417
|
+
(including application-supplied controls), language selector, and timer stay
|
|
418
|
+
hidden until that exact sticky role is `ready` and `loaded`. The existing model
|
|
419
|
+
activation area remains available for Start, progress, cancellation, and retry.
|
|
420
|
+
A selected cloud route (`localOnly:false`) shows the conversation surfaces
|
|
421
|
+
immediately; Send still follows actual LLM availability. Later unload, failure,
|
|
422
|
+
or selection changes update visibility from the same runtime subscription
|
|
423
|
+
without starting model work or changing retained conversation content. A
|
|
424
|
+
completed conversation keeps its transcript visible and its controls hidden.
|
|
425
|
+
|
|
414
426
|
When a selected LLM route is `unloaded` or in `error`, the component exposes a
|
|
415
427
|
keyboard-operable Start/Try again control while Send stays disabled. During
|
|
416
428
|
`loading`, the control becomes Cancel loading and reflects sticky progress
|
package/package.json
CHANGED
|
@@ -112,6 +112,15 @@
|
|
|
112
112
|
display:none;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
.chat_area[data-model-start-required="true"]:not([data-conversation-complete="true"]) > .conversation_timebox,
|
|
116
|
+
.chat_area[data-model-start-required="true"]:not([data-conversation-complete="true"]) > .chat_output,
|
|
117
|
+
.chat_area[data-model-start-required="true"]:not([data-conversation-complete="true"]) > .chat_session_status,
|
|
118
|
+
.chat_area[data-model-start-required="true"]:not([data-conversation-complete="true"]) > .chat_input_area,
|
|
119
|
+
.chat_area[data-model-start-required="true"]:not([data-conversation-complete="true"]) > #speech,
|
|
120
|
+
.chat_area[data-model-start-required="true"]:not([data-conversation-complete="true"]) > .controls {
|
|
121
|
+
display: none;
|
|
122
|
+
}
|
|
123
|
+
|
|
115
124
|
.conversation_timebox[data-error="true"]{
|
|
116
125
|
color:var(--danger-color,var(--text-color));
|
|
117
126
|
}
|
|
@@ -570,7 +579,7 @@
|
|
|
570
579
|
}
|
|
571
580
|
</style>
|
|
572
581
|
|
|
573
|
-
<section class="chat_area">
|
|
582
|
+
<section class="chat_area" data-model-start-required="true">
|
|
574
583
|
<section
|
|
575
584
|
id="conversation_timebox"
|
|
576
585
|
class="conversation_timebox"
|
|
@@ -1985,6 +1994,14 @@
|
|
|
1985
1994
|
|
|
1986
1995
|
function applyAIAvailability(availability){
|
|
1987
1996
|
host.aiAvailability={...availability};
|
|
1997
|
+
const selectedRole = hasSelectedAIRuntimeRole('llm')
|
|
1998
|
+
? latestAIRuntimeRoles.llm
|
|
1999
|
+
: null;
|
|
2000
|
+
const conversationVisible = selectedRole
|
|
2001
|
+
? selectedRole.localOnly === false
|
|
2002
|
+
|| (selectedRole.state === 'ready' && selectedRole.loaded)
|
|
2003
|
+
: availability.llm;
|
|
2004
|
+
chatArea.dataset.modelStartRequired = String(!conversationVisible);
|
|
1988
2005
|
send.disabled=host.conversationComplete
|
|
1989
2006
|
||!availability.llm
|
|
1990
2007
|
||sessionMessagePending
|