- Web search with five services in turn, no key needed, pages read like a reader view - A long video renders in the background, videos made in the chat play there, Wan 2.1 saves mp4 - A graphics card per task with two cards, AMD on Windows gets the current ROCm build, Intel Arc its own - The LU Engine plans memory from the model file, says what a long context costs, keeps one copy of the model - Settings from the chat with a confirmation card, Storage puts models, gallery and runtime in one folder - Remove refusals from a local model in the Model Manager - Native HiRes in Edit, LoRA stack with search and strength from -20 to 20 - Ask in Code asks before every external tool, REA shows only in Agent and Code - Your phone on this computer (Remote), paired by QR code - Wan 2.2 14B runs from Animate and Video, Train new on a Mac shows the trigger word field - Temperature is held to 1.5, memories can be deleted, the onboarding runs once - GitHub issues 187, 188, 190, 191, 193 and 194 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 lines
1.6 KiB
JavaScript
Executable File
40 lines
1.6 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
// Fuehrt einen JS-Ausdruck in der laufenden LU-App im iOS-Simulator aus und
|
|
// gibt das Ergebnis als JSON aus. Gegenstueck zu ../android-webview-eval.mjs.
|
|
//
|
|
// Aufruf:
|
|
// node scripts/mobile/ios/eval.mjs <udid|name|booted> '<ausdruck>'
|
|
// node scripts/mobile/ios/eval.mjs <udid|name|booted> --invoke <kommando> ['<json-argumente>']
|
|
//
|
|
// Beispiele:
|
|
// node scripts/mobile/ios/eval.mjs LU-iOS-klein 'document.title'
|
|
// node scripts/mobile/ios/eval.mjs LU-iOS-klein --invoke bundled_engine_status
|
|
//
|
|
// Die WebView muss inspizierbar sein: Debug-Bau, oder Release-Bau mit dem
|
|
// Cargo-Feature `abnahme`. Umgebung: LU_IOS_BUNDLE waehlt die Kennung.
|
|
import { connect } from "./ios-harness.mjs";
|
|
|
|
const BUNDLE = process.env.LU_IOS_BUNDLE || "com.purpledoubled.lu";
|
|
const [geraet, ...rest] = process.argv.slice(2);
|
|
let src;
|
|
if (rest[0] === "--invoke") {
|
|
const kommando = rest[1];
|
|
const args = rest[2] ? JSON.parse(rest[2]) : {};
|
|
if (!kommando) throw new Error("--invoke braucht einen Kommandonamen");
|
|
// Fehler eines Kommandos kommen als Wert zurueck, nicht als Ausnahme ohne Text.
|
|
src = `window.__TAURI_INTERNALS__.invoke(${JSON.stringify(kommando)}, ${JSON.stringify(args)})
|
|
.then((ok) => ({ ok }), (err) => ({ err: String(err && err.message ? err.message : err) }))`;
|
|
} else {
|
|
src = rest.join(" ");
|
|
}
|
|
if (!geraet || !src) {
|
|
console.error("Aufruf: eval.mjs <udid|name|booted> '<ausdruck>' | --invoke <kommando> '<json>'");
|
|
process.exit(2);
|
|
}
|
|
const s = await connect({ bundleId: BUNDLE, geraet });
|
|
try {
|
|
console.log(JSON.stringify(await s.evalJs(src), null, 1));
|
|
} finally {
|
|
await s.trennen();
|
|
}
|