arcane-os 0.42.0 → 0.42.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
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.42.1
|
|
4
|
+
|
|
5
|
+
- Keep Enter as native newline input on phones and tablets using the shared
|
|
6
|
+
browser-device classification. The visible Send button still submits.
|
|
7
|
+
- Submit desktop Enter before native newline insertion while preserving
|
|
8
|
+
Shift+Enter, input-method composition, complete draft text, and existing
|
|
9
|
+
Send, speech and programmatic submission routes. Held Enter does not submit
|
|
10
|
+
repeatedly; input changes resize the composer through its existing lifecycle.
|
|
11
|
+
|
|
3
12
|
## 0.42.0
|
|
4
13
|
|
|
5
14
|
- Accept the optional boolean `responseToUsersPromptComplete` in conversation
|
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 share the theme, packaging, event, cancellation,
|
|
20
20
|
and browser run contracts while retaining their selected application layout.
|
|
21
21
|
|
|
22
|
-
This checkout defines the `0.42.
|
|
22
|
+
This checkout defines the `0.42.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
|
|
|
@@ -314,6 +314,13 @@ extension callbacks. The component installs warning-only defaults when the host
|
|
|
314
314
|
does not supply them; applications may instead consume the corresponding
|
|
315
315
|
`chat-send-message` and `chat-language-changed` events.
|
|
316
316
|
|
|
317
|
+
The composer uses the shared browser-device classification: Enter inserts a
|
|
318
|
+
newline on mobile devices and tablets; desktop Enter submits before the native
|
|
319
|
+
newline is inserted. Shift+Enter and input-method composition retain native
|
|
320
|
+
editing. The visible Send button remains available on every device. Input
|
|
321
|
+
changes resize the composer without submitting; held desktop Enter does not
|
|
322
|
+
submit repeatedly. All input listeners follow the component's existing cleanup.
|
|
323
|
+
|
|
317
324
|
Before any session binding begins, callback-mode `sessionStatus` follows the
|
|
318
325
|
selected sticky LLM role and the existing application-owned `modelName` label
|
|
319
326
|
(or the selected model ID). Assigning `modelName` refreshes that status even
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arcane-os",
|
|
3
|
-
"version": "0.42.
|
|
3
|
+
"version": "0.42.1",
|
|
4
4
|
"description": "Arcane OS JavaScript SDK, project-local CLI, browser runtime, and repository-portable application packager.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.mjs",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"test": "npm run test:unit && npm run test:functional && npm run test:integration && npm run test:regression",
|
|
87
87
|
"test:release": "node ./bin/arcane-test.mjs test/npm-release.test.mjs",
|
|
88
88
|
"test:unit": "node ./bin/arcane-test.mjs test/app-descriptor.test.mjs test/app-schema.test.mjs test/app-selection.test.mjs test/contracts.test.mjs test/conversation-closing-report.test.mjs test/doctor.test.mjs test/mail-credentials.test.mjs test/mail-outbox.test.mjs test/mail-public-api.test.mjs test/mail-send.test.mjs test/mail-transport.test.mjs test/targets.test.mjs test/workspace-operation-lock.test.mjs",
|
|
89
|
-
"test:functional": "node ./bin/arcane-test.mjs test/ai-request-model.test.mjs test/ai-request-retry.test.mjs test/ai-stream-cancellation.test.mjs test/browser-speech-providers.test.mjs test/browser-wasm-gpu-notice.test.mjs test/browser-wasm-download-resume.test.mjs test/chat-stream-speech.test.mjs test/chat-transcript-scroll.test.mjs test/chat-transient-retention.test.mjs test/cli.test.mjs test/continuous-voice-capture.test.mjs test/dbopfs-document-library.test.mjs test/dbopfs-png.test.mjs test/dbopfs.test.mjs test/dev-server.test.mjs test/dev-pwa.test.mjs test/dom-event-instrumentation.test.mjs test/event-manager.test.mjs test/events.test.mjs test/file-preview.test.mjs test/import-map.test.mjs test/mail-cli.test.mjs test/mail-runtime.test.mjs test/mail-server.test.mjs test/markdown-editor.test.mjs test/markdown-source-map.test.mjs test/modal.test.mjs test/packaging.test.mjs test/pwa-packaging.test.mjs test/pwa-client.test.mjs test/pwa-install.test.mjs test/pwa-worker.test.mjs test/persistent-ai-chat-session.test.mjs test/reference-completeness.test.mjs test/runtime-api-behavior.test.mjs test/runtime.test.mjs test/scaffold.test.mjs test/speech-playback.test.mjs test/site.test.mjs test/twin-cloud.test.mjs test/update-check.test.mjs test/user-explicit-updates.test.mjs",
|
|
89
|
+
"test:functional": "node ./bin/arcane-test.mjs test/ai-request-model.test.mjs test/ai-request-retry.test.mjs test/ai-stream-cancellation.test.mjs test/browser-speech-providers.test.mjs test/browser-wasm-gpu-notice.test.mjs test/browser-wasm-download-resume.test.mjs test/chat-input.test.mjs test/chat-stream-speech.test.mjs test/chat-transcript-scroll.test.mjs test/chat-transient-retention.test.mjs test/cli.test.mjs test/continuous-voice-capture.test.mjs test/dbopfs-document-library.test.mjs test/dbopfs-png.test.mjs test/dbopfs.test.mjs test/dev-server.test.mjs test/dev-pwa.test.mjs test/dom-event-instrumentation.test.mjs test/event-manager.test.mjs test/events.test.mjs test/file-preview.test.mjs test/import-map.test.mjs test/mail-cli.test.mjs test/mail-runtime.test.mjs test/mail-server.test.mjs test/markdown-editor.test.mjs test/markdown-source-map.test.mjs test/modal.test.mjs test/packaging.test.mjs test/pwa-packaging.test.mjs test/pwa-client.test.mjs test/pwa-install.test.mjs test/pwa-worker.test.mjs test/persistent-ai-chat-session.test.mjs test/reference-completeness.test.mjs test/runtime-api-behavior.test.mjs test/runtime.test.mjs test/scaffold.test.mjs test/speech-playback.test.mjs test/site.test.mjs test/twin-cloud.test.mjs test/update-check.test.mjs test/user-explicit-updates.test.mjs",
|
|
90
90
|
"test:integration": "node ./bin/arcane-test.mjs test/installed-package-runtime.test.mjs test/root-app-layout.test.mjs test/integrated-shared.test.mjs test/integrated-workspace.test.mjs test/mail-browser.test.mjs test/native-plan.test.mjs test/native-provider-loader.test.mjs test/npm-release.test.mjs test/release-bundle.test.mjs test/release-capability-smoke.test.mjs test/shared-payload-batch.test.mjs test/tarball.test.mjs test/browser-wasm-cpu.test.mjs test/wllama-webgpu-runtime.test.mjs",
|
|
91
91
|
"test:regression": "node ./bin/arcane-test.mjs test/channel-workflows.test.mjs test/html-import-registration.test.mjs test/logging-regression.test.mjs test/markdown-speech.test.mjs test/prepared-speech.test.mjs test/native-provider-generation.test.mjs test/speech-queue-regression.test.mjs test/testing.test.mjs test/test-sets.test.mjs",
|
|
92
92
|
"check": "node tools/check-source.mjs && npm test",
|
|
@@ -889,14 +889,17 @@
|
|
|
889
889
|
{default:FileEntity},
|
|
890
890
|
{ConversationSubmissionBarrier,requireConversationTimeboxDelivery},
|
|
891
891
|
{requestAIRuntimeIntent,subscribeAIRuntimeState},
|
|
892
|
-
{createPersistentAIChatSession}
|
|
892
|
+
{createPersistentAIChatSession},
|
|
893
|
+
{getBrowserDeviceClass}
|
|
893
894
|
]=await Promise.all([
|
|
894
895
|
import('../modules/MD.js'),
|
|
895
896
|
import('../entities/File.js'),
|
|
896
897
|
import('../modules/ConversationTimebox.js'),
|
|
897
898
|
import('../modules/AIRuntimeState.js'),
|
|
898
|
-
import('../modules/PersistentAIChatSession.js')
|
|
899
|
+
import('../modules/PersistentAIChatSession.js'),
|
|
900
|
+
import('arcane-os/browser-device')
|
|
899
901
|
]);
|
|
902
|
+
const browserDeviceClass = getBrowserDeviceClass();
|
|
900
903
|
|
|
901
904
|
host.language=host.language||'English';
|
|
902
905
|
host.name = host.name||'User';
|
|
@@ -2997,7 +3000,13 @@
|
|
|
2997
3000
|
}
|
|
2998
3001
|
|
|
2999
3002
|
textArea.addEventListener(
|
|
3000
|
-
'
|
|
3003
|
+
'keydown',
|
|
3004
|
+
handleChatKeyDown,
|
|
3005
|
+
{signal:aiRuntimeStateAbortController.signal}
|
|
3006
|
+
);
|
|
3007
|
+
|
|
3008
|
+
textArea.addEventListener(
|
|
3009
|
+
'input',
|
|
3001
3010
|
resizeTextArea,
|
|
3002
3011
|
{signal:aiRuntimeStateAbortController.signal}
|
|
3003
3012
|
);
|
|
@@ -3140,12 +3149,28 @@
|
|
|
3140
3149
|
{signal:aiRuntimeStateAbortController.signal}
|
|
3141
3150
|
);
|
|
3142
3151
|
|
|
3143
|
-
|
|
3144
|
-
if(
|
|
3145
|
-
|
|
3146
|
-
|
|
3152
|
+
function handleChatKeyDown(event) {
|
|
3153
|
+
if(browserDeviceClass === 'mobile'
|
|
3154
|
+
|| event.key !== 'Enter'
|
|
3155
|
+
|| event.shiftKey
|
|
3156
|
+
|| event.isComposing
|
|
3157
|
+
|| event.keyCode === 229
|
|
3158
|
+
|| send.disabled) {
|
|
3159
|
+
return;
|
|
3160
|
+
}
|
|
3161
|
+
|
|
3162
|
+
event.preventDefault();
|
|
3163
|
+
if(event.repeat) {
|
|
3164
|
+
return;
|
|
3147
3165
|
}
|
|
3166
|
+
void submitMessage(
|
|
3167
|
+
'',
|
|
3168
|
+
{source: 'keyboard'}
|
|
3169
|
+
);
|
|
3170
|
+
resizeTextArea();
|
|
3171
|
+
}
|
|
3148
3172
|
|
|
3173
|
+
async function resizeTextArea() {
|
|
3149
3174
|
// Reset height to shrink to content size
|
|
3150
3175
|
trackTranscriptScrollPosition();
|
|
3151
3176
|
textArea.style.height = 'auto';
|