@aivorynet/slaide 1.0.2 → 1.0.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 -1
- package/README.md +29 -8
- package/dist/cli.js +70 -5
- package/dist/cli.js.map +1 -1
- package/dist/desktop/bootstrap.d.ts +31 -0
- package/dist/desktop/bootstrap.js +203 -0
- package/dist/desktop/bootstrap.js.map +1 -0
- package/dist/desktop/paths.d.ts +28 -0
- package/dist/desktop/paths.js +62 -0
- package/dist/desktop/paths.js.map +1 -0
- package/dist/desktop/verify.d.ts +20 -0
- package/dist/desktop/verify.js +77 -0
- package/dist/desktop/verify.js.map +1 -0
- package/dist/engine-entry.js +6 -0
- package/dist/engine-entry.js.map +1 -1
- package/dist/render/css.js +2 -2
- package/dist/update.d.ts +5 -0
- package/dist/update.js +112 -0
- package/dist/update.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ All notable changes to slaide are recorded here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.0.3] - 2026-06-30
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `slaide app [deck]` opens a deck in the native viewer/editor. The app (viewer + engine) is fetched and verified (checksum + signature) on first run, and the `.slaide` file type is registered — so `npm install -g @aivorynet/slaide` is the only install step. `slaide upgrade` updates the app in place.
|
|
14
|
+
- `slaide auth login | logout | status` signs in to Slaide Pro from the CLI (unlocks in-place editing).
|
|
15
|
+
- The CLI checks npm for a newer release once a day and prints a one-line update notice. Set `SLAIDE_AUTO_UPDATE=1` to update automatically, or `SLAIDE_NO_UPDATE=1` to silence it.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- `slaide --version` now reports the real package version (was hardcoded).
|
|
20
|
+
|
|
9
21
|
## [1.0.2] - 2026-06-29
|
|
10
22
|
|
|
11
23
|
### Fixed
|
|
@@ -42,7 +54,8 @@ First public release.
|
|
|
42
54
|
- `.slaidec` packing and unpacking, and the `compare` fidelity tool.
|
|
43
55
|
- The bundled `aurora` theme.
|
|
44
56
|
|
|
45
|
-
[Unreleased]: https://github.com/aivorynet/slaide/compare/v1.0.
|
|
57
|
+
[Unreleased]: https://github.com/aivorynet/slaide/compare/v1.0.3...HEAD
|
|
58
|
+
[1.0.3]: https://github.com/aivorynet/slaide/releases/tag/v1.0.3
|
|
46
59
|
[1.0.2]: https://github.com/aivorynet/slaide/releases/tag/v1.0.2
|
|
47
60
|
[1.0.1]: https://github.com/aivorynet/slaide/releases/tag/v1.0.1
|
|
48
61
|
[1.0.0]: https://github.com/aivorynet/slaide/releases/tag/v1.0.0
|
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
A new presentation file format, built for AI.
|
|
4
4
|
|
|
5
|
+
[](https://www.npmjs.com/package/@aivorynet/slaide) [](https://github.com/aivorynet/slaide/releases/latest) [](https://github.com/aivorynet/slaide/actions/workflows/ci.yml) [](LICENSE)
|
|
6
|
+
|
|
5
7
|

|
|
6
8
|
|
|
7
9
|
`.slaide` is a native, plain-text format for presentations: Markdown plus a small YAML theme. PowerPoint's `.pptx` is bulky XML that language models get wrong. A `.slaide` file is a few kilobytes of text an AI writes correctly, every time. One file renders to a navigable web deck, a high-fidelity PDF, and editable PowerPoint. A reusable theme carries the design, so nobody hand-places pixels.
|
|
@@ -12,16 +14,17 @@ Most of slaide is free and open source. The language, the renderer, the native v
|
|
|
12
14
|
|
|
13
15
|
## Install
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
One command — nothing else to set up:
|
|
16
18
|
|
|
17
19
|
```bash
|
|
18
|
-
|
|
20
|
+
npm install -g @aivorynet/slaide
|
|
19
21
|
```
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
That gives you the `slaide` command (write, validate, render, export, import) **and** `slaide app`,
|
|
24
|
+
which opens decks in the native viewer/editor — the app is fetched automatically the first time you
|
|
25
|
+
run it. Want to try it with no install at all? `npx @aivorynet/slaide new talk.slaide`.
|
|
22
26
|
|
|
23
27
|
```bash
|
|
24
|
-
npm install -g @aivorynet/slaide
|
|
25
28
|
npx playwright install chromium # only for PDF, PPTX, and image export
|
|
26
29
|
```
|
|
27
30
|
|
|
@@ -31,6 +34,7 @@ npx playwright install chromium # only for PDF, PPTX, and image export
|
|
|
31
34
|
slaide new talk.slaide # scaffold a deck
|
|
32
35
|
slaide validate talk.slaide # check it before rendering
|
|
33
36
|
slaide dev talk.slaide # live preview at http://localhost:4321
|
|
37
|
+
slaide app talk.slaide # open in the native viewer/editor (fetched on first run)
|
|
34
38
|
slaide build talk.slaide --out out # self-contained out/index.html
|
|
35
39
|
slaide export talk.slaide --pdf out/talk.pdf
|
|
36
40
|
slaide export talk.slaide --pptx out/talk.pptx # real text boxes, shapes, images
|
|
@@ -64,17 +68,34 @@ layout: title-content
|
|
|
64
68
|
|
|
65
69
|
Slides split on `---`. `:: name ::` routes Markdown into a theme slot. `>>>` is a build step. `??? ` is a speaker note. Reference layouts, colors, and fonts by name. The full grammar is in [docs/](docs/).
|
|
66
70
|
|
|
67
|
-
## The
|
|
71
|
+
## The desktop app
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
slaide app talk.slaide
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The native viewer opens folders, single files, and packed `.slaidec` bundles, presents full screen, and exports PDF. The first time you run `slaide app`, the CLI downloads the viewer + engine (verified by checksum and signature), registers the `.slaide` file type so double-click works, and opens the deck. `slaide upgrade` updates it in place.
|
|
78
|
+
|
|
79
|
+
**No Node?** Install the standalone app without npm — same signed binaries, fetched, verified, and registered for you:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# macOS / Linux
|
|
83
|
+
curl -fsSL https://github.com/aivorynet/slaide/releases/latest/download/install.sh | sh
|
|
84
|
+
# Windows (PowerShell)
|
|
85
|
+
irm https://github.com/aivorynet/slaide/releases/latest/download/install.ps1 | iex
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
…or a package manager (`scoop install slaide`, `brew install --cask slaide`, `winget install Slaide`), or download the archive from [Releases](https://github.com/aivorynet/slaide/releases), unzip, and run the bundled installer (it installs the binaries shipped inside, no network) — or just run `slaide-view` directly. (Or build from source with `npm run build:viewer`.)
|
|
68
89
|
|
|
69
|
-
|
|
90
|
+
Editing is Pro: run `slaide auth login` (or click **Sign in** in the app) — Slaide fetches the Pro engine and unlocks it for a licensed account.
|
|
70
91
|
|
|
71
92
|
## For AI agents
|
|
72
93
|
|
|
73
|
-
slaide ships an agent skill and an MCP server. Install the skill into Claude Code, Codex, or Gemini with `slaide install`. Point a custom agent at the server with `slaide mcp`. Both run the same engine as the CLI.
|
|
94
|
+
slaide ships an agent skill and an MCP server. Install the skill into Claude Code, Codex, or Gemini with `slaide install`. Point a custom agent at the server with `slaide mcp`. Both run the same engine as the CLI. (`slaide install` sets up the *agent skill* — distinct from `slaide app`, which installs the *desktop viewer*.)
|
|
74
95
|
|
|
75
96
|
## Free and Pro
|
|
76
97
|
|
|
77
|
-
Everything above is free, forever. Slaide Pro adds in-place visual editing and high-fidelity PowerPoint import.
|
|
98
|
+
Everything above is free, forever. Slaide Pro adds in-place visual editing and high-fidelity PowerPoint import. Run `slaide auth login` (or click **Sign in**, top-right, in the app): Slaide fetches the Pro engine and unlocks editing for a licensed account — the same binary serves everyone, the license is the only difference. Building from a source clone stays read-only by design: the Pro editor engine is proprietary and isn't in this repo, so there's nothing to patch out (a clone can't *build* Pro; the downloaded app *fetches* it on sign-in). See [docs/open-core.md](docs/open-core.md). Plans and prices are at [getslaide.com](https://getslaide.com).
|
|
78
99
|
|
|
79
100
|
## How it works
|
|
80
101
|
|
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// CLI — thin wrapper over @aivorynet/slaide.
|
|
5
5
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
6
6
|
import { dirname, resolve, join, basename } from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
7
8
|
import { tmpdir } from 'node:os';
|
|
8
9
|
import { createServer } from 'node:http';
|
|
9
10
|
import { compileFile, renderFileHtml, renderDeckHtml, validateSource, renderPdf, listThemes, openDeck, packDeck, unpackDeck, } from './index.js';
|
|
@@ -25,6 +26,16 @@ function positional(n) {
|
|
|
25
26
|
function deckStem(p) {
|
|
26
27
|
return basename(p).replace(/\.(slaidec|slaide)$/i, '');
|
|
27
28
|
}
|
|
29
|
+
/** The package version, read at runtime (dist/cli.js → ../package.json; src/cli.ts → ../package.json). */
|
|
30
|
+
function pkgVersion() {
|
|
31
|
+
try {
|
|
32
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
33
|
+
return JSON.parse(readFileSync(join(here, '..', 'package.json'), 'utf8')).version ?? '0.0.0';
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return '0.0.0';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
28
39
|
const COLORS = { red: '\x1b[31m', yellow: '\x1b[33m', green: '\x1b[32m', dim: '\x1b[2m', reset: '\x1b[0m', bold: '\x1b[1m' };
|
|
29
40
|
function printDiagnostics(diags) {
|
|
30
41
|
for (const d of diags) {
|
|
@@ -40,7 +51,9 @@ Usage:
|
|
|
40
51
|
slaide build <deck.slaide> [--out <dir>] [--quality <1-100>] [--max-width <px>] [--no-bake]
|
|
41
52
|
Self-contained HTML; charts baked to SVG (no engine dep); optional image shrink
|
|
42
53
|
slaide render <deck.slaide> [--print --meta] Print self-contained HTML to stdout (for the viewer)
|
|
43
|
-
slaide view <deck.slaide> Open the deck in your default browser
|
|
54
|
+
slaide view <deck.slaide> Open the deck in your default browser (no install)
|
|
55
|
+
slaide app [deck.slaide] Open in the native viewer/editor (fetches it on first use)
|
|
56
|
+
(--install: set up without launching; --register; --uninstall)
|
|
44
57
|
slaide export <deck.slaide> [--pdf <file>] Export to PDF (needs Playwright)
|
|
45
58
|
slaide export <deck.slaide> --pptx [<file>] Export to editable PowerPoint (needs Playwright)
|
|
46
59
|
(--no-embed-fonts: skip font embedding; --no-builds: skip animations)
|
|
@@ -62,9 +75,12 @@ Usage:
|
|
|
62
75
|
slaide unpack <file.slaidec> [-o <dir>] Extract a .slaidec back to an editable folder
|
|
63
76
|
slaide themes List bundled themes & layouts
|
|
64
77
|
slaide mcp Run the MCP server (stdio)
|
|
78
|
+
slaide upgrade Update the native viewer/engine to the latest release
|
|
79
|
+
slaide auth <login|logout|status> Sign in to Slaide Pro (unlocks in-place editing)
|
|
65
80
|
slaide install [--cli <id,…>] [--scope project|global|<dir>] [--skills] [--no-mcp] [--yes] [--list]
|
|
66
|
-
|
|
67
|
-
|
|
81
|
+
Install the slaide skill (+ MCP server) into your AI coding CLIs
|
|
82
|
+
(note: this installs the AGENT skill — for the desktop app use \`slaide app\`)
|
|
83
|
+
slaide --help (--version for the version)`);
|
|
68
84
|
}
|
|
69
85
|
async function main() {
|
|
70
86
|
switch (cmd) {
|
|
@@ -371,6 +387,48 @@ async function main() {
|
|
|
371
387
|
console.log(dim(' * = master-defined custom animation'));
|
|
372
388
|
break;
|
|
373
389
|
}
|
|
390
|
+
case 'app': {
|
|
391
|
+
// Open the deck in the native desktop viewer, fetching + verifying it on first use.
|
|
392
|
+
// --install: download/register without launching; --register/--uninstall: file-type assoc.
|
|
393
|
+
const { ensureInstalled, installBinaries, launchApp, uninstall } = await import('./desktop/bootstrap.js');
|
|
394
|
+
const opts = { yes: has('--yes') || has('-y'), force: has('--force') };
|
|
395
|
+
if (has('--uninstall')) {
|
|
396
|
+
uninstall();
|
|
397
|
+
console.log(`${COLORS.green}✓${COLORS.reset} Removed the installed Slaide app binaries.`);
|
|
398
|
+
break;
|
|
399
|
+
}
|
|
400
|
+
if (has('--register')) {
|
|
401
|
+
await ensureInstalled(opts);
|
|
402
|
+
const { detectPlatform, viewerExe } = await import('./desktop/paths.js');
|
|
403
|
+
const { spawnSync } = await import('node:child_process');
|
|
404
|
+
spawnSync(viewerExe(detectPlatform()), ['--register'], { stdio: 'ignore' });
|
|
405
|
+
console.log(`${COLORS.green}✓${COLORS.reset} Registered the .slaide file type.`);
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
if (has('--install')) {
|
|
409
|
+
await installBinaries(opts);
|
|
410
|
+
break;
|
|
411
|
+
}
|
|
412
|
+
await launchApp(positional(1), opts);
|
|
413
|
+
break;
|
|
414
|
+
}
|
|
415
|
+
case 'upgrade': {
|
|
416
|
+
// Re-fetch the latest native viewer + engine in place.
|
|
417
|
+
const { installBinaries } = await import('./desktop/bootstrap.js');
|
|
418
|
+
await installBinaries({ yes: true, force: true });
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
case 'auth': {
|
|
422
|
+
// Sign in / out of Slaide Pro through the engine (upgrades the OSS engine to Pro on login).
|
|
423
|
+
const sub = positional(1) ?? 'status';
|
|
424
|
+
if (!['login', 'logout', 'status'].includes(sub))
|
|
425
|
+
return fail('auth needs login | logout | status');
|
|
426
|
+
const { runAuth } = await import('./desktop/bootstrap.js');
|
|
427
|
+
const code = await runAuth(sub, { yes: has('--yes') || has('-y') });
|
|
428
|
+
if (code)
|
|
429
|
+
process.exit(code);
|
|
430
|
+
break;
|
|
431
|
+
}
|
|
374
432
|
case 'mcp': {
|
|
375
433
|
const { runStdio } = await import('./mcp/server.js');
|
|
376
434
|
await runStdio();
|
|
@@ -409,7 +467,8 @@ async function main() {
|
|
|
409
467
|
help();
|
|
410
468
|
break;
|
|
411
469
|
case '--version':
|
|
412
|
-
|
|
470
|
+
case '-v':
|
|
471
|
+
console.log(pkgVersion());
|
|
413
472
|
break;
|
|
414
473
|
default:
|
|
415
474
|
fail(`unknown command "${cmd}"`);
|
|
@@ -426,7 +485,13 @@ function fail(msg) {
|
|
|
426
485
|
console.error(`Run ${COLORS.bold}slaide --help${COLORS.reset} for usage.`);
|
|
427
486
|
process.exit(1);
|
|
428
487
|
}
|
|
429
|
-
main()
|
|
488
|
+
main()
|
|
489
|
+
.then(async () => {
|
|
490
|
+
// Best-effort, once-a-day npm update notice (silent on machine/piped output). Never throws.
|
|
491
|
+
const { maybeNotifyUpdate } = await import('./update.js');
|
|
492
|
+
await maybeNotifyUpdate(pkgVersion(), cmd);
|
|
493
|
+
})
|
|
494
|
+
.catch((e) => {
|
|
430
495
|
console.error(`${COLORS.red}error:${COLORS.reset} ${e.message}`);
|
|
431
496
|
process.exit(1);
|
|
432
497
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Platform } from './paths.js';
|
|
2
|
+
export interface EnsureOptions {
|
|
3
|
+
/** Skip the download confirmation prompt. */
|
|
4
|
+
yes?: boolean;
|
|
5
|
+
/** Re-download even if the binaries are already present. */
|
|
6
|
+
force?: boolean;
|
|
7
|
+
/** Suppress progress chatter (errors still surface). */
|
|
8
|
+
quiet?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** Are the native viewer + engine already installed? */
|
|
11
|
+
export declare function isInstalled(p?: Platform): boolean;
|
|
12
|
+
/** Download + verify + extract the full bundle into ~/.slaide/bin, then register + (Windows) WebView2. */
|
|
13
|
+
export declare function installBinaries(opts?: EnsureOptions): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Ensure the native viewer + engine are installed; download them on first use. Returns the viewer
|
|
16
|
+
* path. Prompts for confirmation when interactive (skip with `yes`); proceeds automatically for an
|
|
17
|
+
* explicit, non-interactive `slaide app` invocation.
|
|
18
|
+
*/
|
|
19
|
+
export declare function ensureInstalled(opts?: EnsureOptions): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Swap the render-only OSS engine for the Pro superset — the same public, signed download the
|
|
22
|
+
* viewer performs on Sign-in (core/viewer/src/upgrade.rs). Idempotent: a no-op if already Pro.
|
|
23
|
+
* A license still gates editing at runtime; the binary itself is public.
|
|
24
|
+
*/
|
|
25
|
+
export declare function ensureProEngine(opts?: EnsureOptions): Promise<void>;
|
|
26
|
+
/** Launch the native viewer (installing it first if needed). Detaches so the CLI returns. */
|
|
27
|
+
export declare function launchApp(deck: string | undefined, opts?: EnsureOptions): Promise<void>;
|
|
28
|
+
/** Run the engine's `auth` flow (login/logout/status), upgrading to the Pro engine first. */
|
|
29
|
+
export declare function runAuth(sub: string, opts?: EnsureOptions): Promise<number>;
|
|
30
|
+
/** Remove the installed binaries (leaves auth/license caches under ~/.slaide untouched). */
|
|
31
|
+
export declare function uninstall(): void;
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// Copyright 2026 AIVory, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// Lazy bootstrap of the native desktop app from the npm CLI. `slaide app` fetches the signed
|
|
4
|
+
// viewer + render-only engine into ~/.slaide/bin on first use, verifies them, registers the
|
|
5
|
+
// `.slaide` file type, and launches. This is the JS analogue of the viewer's own self-upgrade
|
|
6
|
+
// (core/viewer/src/upgrade.rs) — it bootstraps the FIRST binary, which the viewer can't fetch for
|
|
7
|
+
// itself (chicken-and-egg). `slaide auth login` additionally swaps the OSS engine for the Pro
|
|
8
|
+
// superset (same public download the viewer does on Sign-in); a license gates editing at runtime.
|
|
9
|
+
// Editing/Pro source never ships here — only public, signed binaries are pulled. No new deps.
|
|
10
|
+
import { existsSync, mkdirSync, writeFileSync, rmSync, chmodSync, renameSync } from 'node:fs';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
import { tmpdir } from 'node:os';
|
|
13
|
+
import { spawn, spawnSync } from 'node:child_process';
|
|
14
|
+
import { gunzipSync } from 'node:zlib';
|
|
15
|
+
import { detectPlatform, binDir, distBase, bundleAsset, engineAsset, viewerExe, engineExe, cliExe, } from './paths.js';
|
|
16
|
+
import { verifySha256, verifyMinisign, isPubkeyConfigured } from './verify.js';
|
|
17
|
+
const C = { green: '\x1b[32m', dim: '\x1b[2m', red: '\x1b[31m', bold: '\x1b[1m', reset: '\x1b[0m' };
|
|
18
|
+
function log(opts, msg) {
|
|
19
|
+
if (!opts.quiet)
|
|
20
|
+
console.error(msg);
|
|
21
|
+
}
|
|
22
|
+
/** Are the native viewer + engine already installed? */
|
|
23
|
+
export function isInstalled(p = detectPlatform()) {
|
|
24
|
+
return existsSync(viewerExe(p)) && existsSync(engineExe(p));
|
|
25
|
+
}
|
|
26
|
+
async function fetchBytes(url) {
|
|
27
|
+
const res = await fetch(url, { redirect: 'follow' });
|
|
28
|
+
if (!res.ok)
|
|
29
|
+
throw new Error(`GET ${url} → ${res.status} ${res.statusText}`);
|
|
30
|
+
return Buffer.from(await res.arrayBuffer());
|
|
31
|
+
}
|
|
32
|
+
async function fetchText(url) {
|
|
33
|
+
return (await fetchBytes(url)).toString('utf8');
|
|
34
|
+
}
|
|
35
|
+
async function confirm(question, def) {
|
|
36
|
+
const { createInterface } = await import('node:readline/promises');
|
|
37
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
38
|
+
try {
|
|
39
|
+
const ans = (await rl.question(`${question} ${def ? '[Y/n]' : '[y/N]'} `)).trim();
|
|
40
|
+
return ans ? /^y/i.test(ans) : def;
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
rl.close();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Verify a downloaded asset: SHA-256 always, minisign once a signing key is configured. */
|
|
47
|
+
async function verifyAsset(base, asset, data, opts) {
|
|
48
|
+
verifySha256(data, await fetchText(`${base}/${asset}.sha256`));
|
|
49
|
+
if (isPubkeyConfigured()) {
|
|
50
|
+
verifyMinisign(data, await fetchText(`${base}/${asset}.minisig`));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
log(opts, `${C.dim} (signature not verified — no signing key configured yet; checksum OK)${C.reset}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Best-effort: write the per-user `.slaide` file association (no-op where unimplemented). */
|
|
57
|
+
function register(p) {
|
|
58
|
+
spawnSync(viewerExe(p), ['--register'], { stdio: 'ignore' });
|
|
59
|
+
}
|
|
60
|
+
/** On Windows, make sure the WebView2 Evergreen runtime is present (the viewer needs it). */
|
|
61
|
+
function ensureWebView2(opts) {
|
|
62
|
+
if (process.platform !== 'win32')
|
|
63
|
+
return;
|
|
64
|
+
const key = 'HKLM\\SOFTWARE\\WOW6432Node\\Microsoft\\EdgeUpdate\\Clients\\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}';
|
|
65
|
+
const present = spawnSync('reg', ['query', key], { stdio: 'ignore' }).status === 0;
|
|
66
|
+
if (present)
|
|
67
|
+
return;
|
|
68
|
+
log(opts, 'Installing the Microsoft WebView2 runtime…');
|
|
69
|
+
const bs = join(tmpdir(), 'MicrosoftEdgeWebview2Setup.exe');
|
|
70
|
+
try {
|
|
71
|
+
const r = spawnSync('powershell', [
|
|
72
|
+
'-NoProfile',
|
|
73
|
+
'-Command',
|
|
74
|
+
`Invoke-WebRequest -Uri 'https://go.microsoft.com/fwlink/p/?LinkId=2124703' -OutFile '${bs}' -UseBasicParsing; Start-Process -FilePath '${bs}' -ArgumentList '/silent','/install' -Wait`,
|
|
75
|
+
], { stdio: 'ignore' });
|
|
76
|
+
if (r.status !== 0)
|
|
77
|
+
throw new Error('bootstrapper failed');
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
log(opts, `${C.dim} Could not auto-install WebView2; install it from microsoft.com if the viewer won't open.${C.reset}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Extract a release archive flat into the bin dir. Windows zips go through PowerShell
|
|
85
|
+
* `Expand-Archive` (matches install.ps1, and sidesteps the GNU-tar `C:`-is-a-remote-host quirk
|
|
86
|
+
* when a user runs from Git Bash); tar.gz uses the system `tar`.
|
|
87
|
+
*/
|
|
88
|
+
function extractBundle(archive, dest, p) {
|
|
89
|
+
mkdirSync(dest, { recursive: true });
|
|
90
|
+
const r = p.os === 'windows'
|
|
91
|
+
? spawnSync('powershell', ['-NoProfile', '-Command', `Expand-Archive -Path '${archive}' -DestinationPath '${dest}' -Force`], { stdio: 'ignore' })
|
|
92
|
+
: spawnSync('tar', ['-xzf', archive, '-C', dest], { stdio: 'ignore' });
|
|
93
|
+
if (r.error || r.status !== 0) {
|
|
94
|
+
throw new Error('could not extract the release archive. Install via the one-liner instead: ' +
|
|
95
|
+
'https://github.com/aivorynet/slaide#install');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/** Download + verify + extract the full bundle into ~/.slaide/bin, then register + (Windows) WebView2. */
|
|
99
|
+
export async function installBinaries(opts = {}) {
|
|
100
|
+
const p = detectPlatform();
|
|
101
|
+
const base = distBase();
|
|
102
|
+
const asset = bundleAsset(p);
|
|
103
|
+
const dir = binDir();
|
|
104
|
+
const tmp = join(tmpdir(), `slaide-dl-${process.pid}-${asset}`);
|
|
105
|
+
log(opts, `Downloading the Slaide app (${asset})…`);
|
|
106
|
+
const data = await fetchBytes(`${base}/${asset}`);
|
|
107
|
+
log(opts, 'Verifying…');
|
|
108
|
+
await verifyAsset(base, asset, data, opts);
|
|
109
|
+
writeFileSync(tmp, data);
|
|
110
|
+
try {
|
|
111
|
+
log(opts, `Installing to ${dir}…`);
|
|
112
|
+
extractBundle(tmp, dir, p);
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
rmSync(tmp, { force: true });
|
|
116
|
+
}
|
|
117
|
+
if (p.os !== 'windows') {
|
|
118
|
+
for (const exe of [viewerExe(p), engineExe(p), cliExe(p)]) {
|
|
119
|
+
if (existsSync(exe))
|
|
120
|
+
chmodSync(exe, 0o755);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
ensureWebView2(opts);
|
|
124
|
+
register(p);
|
|
125
|
+
log(opts, `${C.green}✓${C.reset} Slaide app installed. ${C.dim}Sign in (top-right) to unlock editing.${C.reset}`);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Ensure the native viewer + engine are installed; download them on first use. Returns the viewer
|
|
129
|
+
* path. Prompts for confirmation when interactive (skip with `yes`); proceeds automatically for an
|
|
130
|
+
* explicit, non-interactive `slaide app` invocation.
|
|
131
|
+
*/
|
|
132
|
+
export async function ensureInstalled(opts = {}) {
|
|
133
|
+
const p = detectPlatform();
|
|
134
|
+
if (isInstalled(p) && !opts.force)
|
|
135
|
+
return viewerExe(p);
|
|
136
|
+
if (!opts.yes && process.stdin.isTTY && process.stdout.isTTY) {
|
|
137
|
+
log(opts, 'The Slaide desktop app (native viewer + engine, ~50 MB) is not installed yet.');
|
|
138
|
+
if (!(await confirm('Download it now?', true))) {
|
|
139
|
+
throw new Error('declined. Install later with `slaide app --install`, or the Node-free one-liner at ' +
|
|
140
|
+
'https://github.com/aivorynet/slaide#install');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
await installBinaries(opts);
|
|
144
|
+
return viewerExe(p);
|
|
145
|
+
}
|
|
146
|
+
/** Ask the engine its edition; true only if it explicitly reports `oss`. */
|
|
147
|
+
function engineIsOss(p) {
|
|
148
|
+
const out = spawnSync(engineExe(p), ['edition'], { encoding: 'utf8' });
|
|
149
|
+
return out.status === 0 && out.stdout.trim() === 'oss';
|
|
150
|
+
}
|
|
151
|
+
function atomicReplace(target, bytes) {
|
|
152
|
+
const tmp = `${target}.upgrade-${process.pid}`;
|
|
153
|
+
writeFileSync(tmp, bytes);
|
|
154
|
+
if (process.platform !== 'win32')
|
|
155
|
+
chmodSync(tmp, 0o755);
|
|
156
|
+
try {
|
|
157
|
+
renameSync(tmp, target);
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
rmSync(tmp, { force: true });
|
|
161
|
+
throw e;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Swap the render-only OSS engine for the Pro superset — the same public, signed download the
|
|
166
|
+
* viewer performs on Sign-in (core/viewer/src/upgrade.rs). Idempotent: a no-op if already Pro.
|
|
167
|
+
* A license still gates editing at runtime; the binary itself is public.
|
|
168
|
+
*/
|
|
169
|
+
export async function ensureProEngine(opts = {}) {
|
|
170
|
+
const p = detectPlatform();
|
|
171
|
+
if (!engineIsOss(p))
|
|
172
|
+
return; // already Pro (or not probeable)
|
|
173
|
+
const base = distBase();
|
|
174
|
+
const asset = engineAsset(p);
|
|
175
|
+
log(opts, 'Fetching the Pro engine…');
|
|
176
|
+
const gz = await fetchBytes(`${base}/${asset}`);
|
|
177
|
+
await verifyAsset(base, asset, gz, opts);
|
|
178
|
+
atomicReplace(engineExe(p), gunzipSync(gz));
|
|
179
|
+
log(opts, `${C.green}✓${C.reset} Pro engine installed.`);
|
|
180
|
+
}
|
|
181
|
+
/** Launch the native viewer (installing it first if needed). Detaches so the CLI returns. */
|
|
182
|
+
export async function launchApp(deck, opts = {}) {
|
|
183
|
+
const viewer = await ensureInstalled(opts);
|
|
184
|
+
const child = spawn(viewer, deck ? [deck] : [], { detached: true, stdio: 'ignore' });
|
|
185
|
+
child.unref();
|
|
186
|
+
}
|
|
187
|
+
/** Run the engine's `auth` flow (login/logout/status), upgrading to the Pro engine first. */
|
|
188
|
+
export async function runAuth(sub, opts = {}) {
|
|
189
|
+
await ensureInstalled(opts);
|
|
190
|
+
if (sub === 'login')
|
|
191
|
+
await ensureProEngine(opts);
|
|
192
|
+
const p = detectPlatform();
|
|
193
|
+
const r = spawnSync(engineExe(p), ['auth', sub], { stdio: 'inherit' });
|
|
194
|
+
return r.status ?? 0;
|
|
195
|
+
}
|
|
196
|
+
/** Remove the installed binaries (leaves auth/license caches under ~/.slaide untouched). */
|
|
197
|
+
export function uninstall() {
|
|
198
|
+
const p = detectPlatform();
|
|
199
|
+
spawnSync(viewerExe(p), ['--unregister'], { stdio: 'ignore' });
|
|
200
|
+
for (const exe of [viewerExe(p), engineExe(p), cliExe(p)])
|
|
201
|
+
rmSync(exe, { force: true });
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/desktop/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface Platform {
|
|
2
|
+
/** Release token for the OS — matches release/package-dist.ts PLATS. */
|
|
3
|
+
os: 'linux' | 'macos' | 'windows';
|
|
4
|
+
/** Release token for the CPU — matches release/package-dist.ts ARCHES. */
|
|
5
|
+
arch: 'x64' | 'arm64';
|
|
6
|
+
/** Executable suffix (`.exe` on Windows, else empty). */
|
|
7
|
+
exe: string;
|
|
8
|
+
/** Bundle archive extension (`zip` on Windows, else `tar.gz`). */
|
|
9
|
+
ext: 'zip' | 'tar.gz';
|
|
10
|
+
}
|
|
11
|
+
/** Map this process's platform/arch onto the release tokens. Throws on an unsupported target. */
|
|
12
|
+
export declare function detectPlatform(): Platform;
|
|
13
|
+
/**
|
|
14
|
+
* The install root, shared with the installers (must match them exactly): `SLAIDE_HOME` if set,
|
|
15
|
+
* else `%LOCALAPPDATA%\Slaide` on Windows (install.ps1) or `~/.slaide` elsewhere (install.sh).
|
|
16
|
+
*/
|
|
17
|
+
export declare function slaideHome(): string;
|
|
18
|
+
/** The bin dir where slaide-view / slaide-engine are installed. */
|
|
19
|
+
export declare function binDir(): string;
|
|
20
|
+
/** Base URL the binaries are fetched from (the GitHub Releases "latest" by default). */
|
|
21
|
+
export declare function distBase(): string;
|
|
22
|
+
/** Full-bundle asset name: `slaide-<os>-<arch>.<ext>` (flat: slaide, slaide-view, slaide-engine[, themes]). */
|
|
23
|
+
export declare function bundleAsset(p?: Platform): string;
|
|
24
|
+
/** Standalone gzipped engine: `slaide-engine-<os>-<arch>[.exe].gz` (the Sign-in self-upgrade asset). */
|
|
25
|
+
export declare function engineAsset(p?: Platform): string;
|
|
26
|
+
export declare function viewerExe(p?: Platform): string;
|
|
27
|
+
export declare function engineExe(p?: Platform): string;
|
|
28
|
+
export declare function cliExe(p?: Platform): string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// Copyright 2026 AIVory, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// Single source of truth for where the native desktop binaries live and how the release
|
|
4
|
+
// assets are named. The npm CLI bootstrap (bootstrap.ts), the native viewer's self-upgrade
|
|
5
|
+
// (core/viewer/src/upgrade.rs), and the installers (pro/installer/install.{sh,ps1}) MUST agree
|
|
6
|
+
// on these names — see release/ASSETS.md. Keep this file in lockstep with release/package-dist.ts.
|
|
7
|
+
import { homedir } from 'node:os';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
/** Map this process's platform/arch onto the release tokens. Throws on an unsupported target. */
|
|
10
|
+
export function detectPlatform() {
|
|
11
|
+
const os = process.platform === 'win32'
|
|
12
|
+
? 'windows'
|
|
13
|
+
: process.platform === 'darwin'
|
|
14
|
+
? 'macos'
|
|
15
|
+
: process.platform === 'linux'
|
|
16
|
+
? 'linux'
|
|
17
|
+
: null;
|
|
18
|
+
if (!os)
|
|
19
|
+
throw new Error(`unsupported OS for the native viewer: ${process.platform}`);
|
|
20
|
+
const arch = process.arch === 'x64' ? 'x64' : process.arch === 'arm64' ? 'arm64' : null;
|
|
21
|
+
if (!arch)
|
|
22
|
+
throw new Error(`unsupported CPU for the native viewer: ${process.arch}`);
|
|
23
|
+
return { os, arch, exe: os === 'windows' ? '.exe' : '', ext: os === 'windows' ? 'zip' : 'tar.gz' };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The install root, shared with the installers (must match them exactly): `SLAIDE_HOME` if set,
|
|
27
|
+
* else `%LOCALAPPDATA%\Slaide` on Windows (install.ps1) or `~/.slaide` elsewhere (install.sh).
|
|
28
|
+
*/
|
|
29
|
+
export function slaideHome() {
|
|
30
|
+
if (process.env.SLAIDE_HOME && process.env.SLAIDE_HOME.trim())
|
|
31
|
+
return process.env.SLAIDE_HOME;
|
|
32
|
+
if (process.platform === 'win32' && process.env.LOCALAPPDATA)
|
|
33
|
+
return join(process.env.LOCALAPPDATA, 'Slaide');
|
|
34
|
+
return join(homedir(), '.slaide');
|
|
35
|
+
}
|
|
36
|
+
/** The bin dir where slaide-view / slaide-engine are installed. */
|
|
37
|
+
export function binDir() {
|
|
38
|
+
return join(slaideHome(), 'bin');
|
|
39
|
+
}
|
|
40
|
+
/** Base URL the binaries are fetched from (the GitHub Releases "latest" by default). */
|
|
41
|
+
export function distBase() {
|
|
42
|
+
const v = process.env.SLAIDE_DIST_BASE_URL;
|
|
43
|
+
return v && v.trim() ? v.replace(/\/+$/, '') : 'https://github.com/aivorynet/slaide/releases/latest/download';
|
|
44
|
+
}
|
|
45
|
+
/** Full-bundle asset name: `slaide-<os>-<arch>.<ext>` (flat: slaide, slaide-view, slaide-engine[, themes]). */
|
|
46
|
+
export function bundleAsset(p = detectPlatform()) {
|
|
47
|
+
return `slaide-${p.os}-${p.arch}.${p.ext}`;
|
|
48
|
+
}
|
|
49
|
+
/** Standalone gzipped engine: `slaide-engine-<os>-<arch>[.exe].gz` (the Sign-in self-upgrade asset). */
|
|
50
|
+
export function engineAsset(p = detectPlatform()) {
|
|
51
|
+
return `slaide-engine-${p.os}-${p.arch}${p.exe}.gz`;
|
|
52
|
+
}
|
|
53
|
+
export function viewerExe(p = detectPlatform()) {
|
|
54
|
+
return join(binDir(), `slaide-view${p.exe}`);
|
|
55
|
+
}
|
|
56
|
+
export function engineExe(p = detectPlatform()) {
|
|
57
|
+
return join(binDir(), `slaide-engine${p.exe}`);
|
|
58
|
+
}
|
|
59
|
+
export function cliExe(p = detectPlatform()) {
|
|
60
|
+
return join(binDir(), `slaide${p.exe}`);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/desktop/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* minisign public key — the base64 key line of `release/keys/slaide-binary-public.txt`, baked in
|
|
3
|
+
* at publish time. Until the production key is generated (`minisign -G -W`, see release/SIGNING.md)
|
|
4
|
+
* this stays a `REPLACE_ME` placeholder and signature verification is skipped (checksum still
|
|
5
|
+
* enforced, exactly as upgrade.rs does). Once set, a missing/invalid signature aborts the install.
|
|
6
|
+
*
|
|
7
|
+
* MUST equal SLAIDE_BINARY_PUBKEY in core/viewer/src/upgrade.rs.
|
|
8
|
+
*/
|
|
9
|
+
export declare const BINARY_PUBKEY = "RWQ0000000000000000000000000000000000000000000000000000REPLACE_ME";
|
|
10
|
+
/** True once a real minisign key has replaced the placeholder. */
|
|
11
|
+
export declare function isPubkeyConfigured(): boolean;
|
|
12
|
+
/** Verify `data` against a `.sha256` file body (`"<hex> <name>"`). Throws on mismatch. */
|
|
13
|
+
export declare function verifySha256(data: Buffer, shaFile: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Verify a minisign `.minisig` signature over `data` using the embedded trusted key.
|
|
16
|
+
* Supports both the legacy (`Ed`, signs the raw data) and prehashed (`ED`, signs BLAKE2b-512 of
|
|
17
|
+
* the data) algorithms, matching minisign / minisign-verify. Throws if the signature does not
|
|
18
|
+
* verify, the key id disagrees, or the key/sig is malformed.
|
|
19
|
+
*/
|
|
20
|
+
export declare function verifyMinisign(data: Buffer, sigFile: string, pubkeyB64?: string): void;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Copyright 2026 AIVory, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// Integrity + authenticity checks for downloaded release assets. SHA-256 is always enforced;
|
|
4
|
+
// minisign (Ed25519) is enforced once a real signing key is configured below. This mirrors the
|
|
5
|
+
// native viewer's verifier (core/viewer/src/upgrade.rs) byte-for-byte so the CLI and the viewer
|
|
6
|
+
// trust the same key and reject the same tampering. No third-party deps — node:crypto only.
|
|
7
|
+
import { createHash, createPublicKey, verify as cryptoVerify } from 'node:crypto';
|
|
8
|
+
/**
|
|
9
|
+
* minisign public key — the base64 key line of `release/keys/slaide-binary-public.txt`, baked in
|
|
10
|
+
* at publish time. Until the production key is generated (`minisign -G -W`, see release/SIGNING.md)
|
|
11
|
+
* this stays a `REPLACE_ME` placeholder and signature verification is skipped (checksum still
|
|
12
|
+
* enforced, exactly as upgrade.rs does). Once set, a missing/invalid signature aborts the install.
|
|
13
|
+
*
|
|
14
|
+
* MUST equal SLAIDE_BINARY_PUBKEY in core/viewer/src/upgrade.rs.
|
|
15
|
+
*/
|
|
16
|
+
export const BINARY_PUBKEY = 'RWQ0000000000000000000000000000000000000000000000000000REPLACE_ME';
|
|
17
|
+
/** True once a real minisign key has replaced the placeholder. */
|
|
18
|
+
export function isPubkeyConfigured() {
|
|
19
|
+
return !BINARY_PUBKEY.includes('REPLACE_ME');
|
|
20
|
+
}
|
|
21
|
+
/** Verify `data` against a `.sha256` file body (`"<hex> <name>"`). Throws on mismatch. */
|
|
22
|
+
export function verifySha256(data, shaFile) {
|
|
23
|
+
const expected = shaFile.trim().split(/\s+/)[0]?.toLowerCase() ?? '';
|
|
24
|
+
if (expected.length !== 64)
|
|
25
|
+
throw new Error('malformed .sha256 file');
|
|
26
|
+
const actual = createHash('sha256').update(data).digest('hex');
|
|
27
|
+
if (actual !== expected)
|
|
28
|
+
throw new Error('checksum mismatch — refusing to install');
|
|
29
|
+
}
|
|
30
|
+
/** Wrap a raw 32-byte Ed25519 public key in a DER SPKI so node:crypto can consume it. */
|
|
31
|
+
function ed25519PublicKey(raw) {
|
|
32
|
+
// SPKI prefix for id-Ed25519 (RFC 8410), followed by the 32-byte key.
|
|
33
|
+
const prefix = Buffer.from('302a300506032b6570032100', 'hex');
|
|
34
|
+
return createPublicKey({ key: Buffer.concat([prefix, raw]), format: 'der', type: 'spki' });
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Verify a minisign `.minisig` signature over `data` using the embedded trusted key.
|
|
38
|
+
* Supports both the legacy (`Ed`, signs the raw data) and prehashed (`ED`, signs BLAKE2b-512 of
|
|
39
|
+
* the data) algorithms, matching minisign / minisign-verify. Throws if the signature does not
|
|
40
|
+
* verify, the key id disagrees, or the key/sig is malformed.
|
|
41
|
+
*/
|
|
42
|
+
export function verifyMinisign(data, sigFile, pubkeyB64 = BINARY_PUBKEY) {
|
|
43
|
+
const pub = Buffer.from(pubkeyB64, 'base64');
|
|
44
|
+
if (pub.length !== 42)
|
|
45
|
+
throw new Error('bad trusted pubkey');
|
|
46
|
+
const pubAlg = pub.subarray(0, 2);
|
|
47
|
+
const pubKeyId = pub.subarray(2, 10);
|
|
48
|
+
const pubKey = pub.subarray(10, 42);
|
|
49
|
+
if (pubAlg.toString('latin1') !== 'Ed')
|
|
50
|
+
throw new Error('unexpected trusted pubkey algorithm');
|
|
51
|
+
// The signature line is the first base64 line that is not an `untrusted/trusted comment:` header.
|
|
52
|
+
const sigB64 = sigFile
|
|
53
|
+
.split(/\r?\n/)
|
|
54
|
+
.map((l) => l.trim())
|
|
55
|
+
.find((l) => l.length > 0 && !/^untrusted comment:/i.test(l) && !/^trusted comment:/i.test(l));
|
|
56
|
+
if (!sigB64)
|
|
57
|
+
throw new Error('bad signature file: no signature line');
|
|
58
|
+
const sig = Buffer.from(sigB64, 'base64');
|
|
59
|
+
if (sig.length !== 74)
|
|
60
|
+
throw new Error('bad signature file: wrong length');
|
|
61
|
+
const sigAlg = sig.subarray(0, 2).toString('latin1');
|
|
62
|
+
const sigKeyId = sig.subarray(2, 10);
|
|
63
|
+
const signature = sig.subarray(10, 74);
|
|
64
|
+
if (!sigKeyId.equals(pubKeyId))
|
|
65
|
+
throw new Error('signature key id does not match the trusted key');
|
|
66
|
+
let message;
|
|
67
|
+
if (sigAlg === 'ED')
|
|
68
|
+
message = createHash('blake2b512').update(data).digest(); // prehashed
|
|
69
|
+
else if (sigAlg === 'Ed')
|
|
70
|
+
message = data; // legacy
|
|
71
|
+
else
|
|
72
|
+
throw new Error(`unsupported signature algorithm "${sigAlg}"`);
|
|
73
|
+
if (!cryptoVerify(null, message, ed25519PublicKey(pubKey), signature)) {
|
|
74
|
+
throw new Error('signature does not verify — refusing to install');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/desktop/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/engine-entry.js
CHANGED
|
@@ -14,6 +14,12 @@ const flag = (n) => {
|
|
|
14
14
|
};
|
|
15
15
|
const positional = (n) => args.filter((a) => !a.startsWith('--'))[n];
|
|
16
16
|
async function main() {
|
|
17
|
+
if (cmd === 'edition') {
|
|
18
|
+
// Edition probe for the native viewer: the OSS engine can only render. The viewer reads this
|
|
19
|
+
// to decide whether Sign-in should fetch + swap in the Pro engine (see core/viewer upgrade.rs).
|
|
20
|
+
process.stdout.write('oss\n');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
17
23
|
if (cmd === 'render') {
|
|
18
24
|
const deck = positional(1);
|
|
19
25
|
if (!deck) {
|
package/dist/engine-entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-entry.js","sourceRoot":"","sources":["../src/engine-entry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine-entry.js","sourceRoot":"","sources":["../src/engine-entry.ts"],"names":[],"mappings":"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"}
|
package/dist/render/css.js
CHANGED
|
@@ -7,14 +7,14 @@ const STATIC_CSS = `
|
|
|
7
7
|
*,*::before,*::after{box-sizing:border-box;}
|
|
8
8
|
html,body{margin:0;height:100%;}
|
|
9
9
|
body{
|
|
10
|
-
background
|
|
10
|
+
background:var(--sl-stage-bg,#0a0a0e);
|
|
11
11
|
font-family:var(--font-sans, system-ui, sans-serif);
|
|
12
12
|
color:var(--color-text,#eee);
|
|
13
13
|
overflow:hidden;
|
|
14
14
|
-webkit-font-smoothing:antialiased;
|
|
15
15
|
text-rendering:optimizeLegibility;
|
|
16
16
|
}
|
|
17
|
-
.sl-viewport{position:fixed;inset:0;overflow:hidden;background
|
|
17
|
+
.sl-viewport{position:fixed;inset:0;overflow:hidden;background:var(--sl-stage-bg,#0a0a0e);}
|
|
18
18
|
|
|
19
19
|
/* thin, unobtrusive scrollbars wherever the deck scrolls (notes, code, help) */
|
|
20
20
|
*{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent;}
|
package/dist/update.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notify (or, with SLAIDE_AUTO_UPDATE=1, install) when a newer @aivorynet/slaide is published.
|
|
3
|
+
* Throttled to once per day via a cache in the Slaide home dir. Never throws.
|
|
4
|
+
*/
|
|
5
|
+
export declare function maybeNotifyUpdate(current: string, cmd?: string): Promise<void>;
|
package/dist/update.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// Copyright 2026 AIVory, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// Lightweight npm update notifier. Once a day, checks the registry for a newer published version
|
|
4
|
+
// and prints a one-line notice (to stderr, so machine output on stdout is untouched). Opt out with
|
|
5
|
+
// SLAIDE_NO_UPDATE=1; set SLAIDE_AUTO_UPDATE=1 to actually run `npm i -g` when an update exists.
|
|
6
|
+
// Best-effort and fully swallowed: a failed/slow check never affects the command. No deps.
|
|
7
|
+
import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { slaideHome } from './desktop/paths.js';
|
|
10
|
+
const PKG = '@aivorynet/slaide';
|
|
11
|
+
const REGISTRY = `https://registry.npmjs.org/${PKG}/latest`;
|
|
12
|
+
const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
13
|
+
const FETCH_TIMEOUT_MS = 1500;
|
|
14
|
+
// Machine-contract commands: never emit chatter or spend time on a network check.
|
|
15
|
+
const QUIET_COMMANDS = new Set(['mcp', 'render', 'compile']);
|
|
16
|
+
function stateFile() {
|
|
17
|
+
return join(slaideHome(), 'update-check.json');
|
|
18
|
+
}
|
|
19
|
+
function shouldSkip(cmd) {
|
|
20
|
+
if (process.env.SLAIDE_NO_UPDATE || process.env.NO_UPDATE_NOTIFIER || process.env.CI)
|
|
21
|
+
return true;
|
|
22
|
+
if (!process.stderr.isTTY)
|
|
23
|
+
return true; // piped / non-interactive — stay silent
|
|
24
|
+
return QUIET_COMMANDS.has(cmd ?? '');
|
|
25
|
+
}
|
|
26
|
+
function parseVer(v) {
|
|
27
|
+
return v.replace(/^v/, '').split('-')[0].split('.').map((n) => parseInt(n, 10) || 0);
|
|
28
|
+
}
|
|
29
|
+
/** True if `a` is a strictly higher release than `b` (ignores prerelease tags). */
|
|
30
|
+
function semverGt(a, b) {
|
|
31
|
+
const pa = parseVer(a);
|
|
32
|
+
const pb = parseVer(b);
|
|
33
|
+
for (let i = 0; i < 3; i++) {
|
|
34
|
+
const x = pa[i] ?? 0;
|
|
35
|
+
const y = pb[i] ?? 0;
|
|
36
|
+
if (x !== y)
|
|
37
|
+
return x > y;
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
function readState() {
|
|
42
|
+
try {
|
|
43
|
+
return JSON.parse(readFileSync(stateFile(), 'utf8'));
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function writeState(s) {
|
|
50
|
+
try {
|
|
51
|
+
mkdirSync(slaideHome(), { recursive: true });
|
|
52
|
+
writeFileSync(stateFile(), JSON.stringify(s));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
/* cache is best-effort */
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function fetchLatest() {
|
|
59
|
+
const ctrl = new AbortController();
|
|
60
|
+
const t = setTimeout(() => ctrl.abort(), FETCH_TIMEOUT_MS);
|
|
61
|
+
try {
|
|
62
|
+
const res = await fetch(REGISTRY, { signal: ctrl.signal, headers: { accept: 'application/json' } });
|
|
63
|
+
if (!res.ok)
|
|
64
|
+
return undefined;
|
|
65
|
+
return (await res.json())?.version;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
clearTimeout(t);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Notify (or, with SLAIDE_AUTO_UPDATE=1, install) when a newer @aivorynet/slaide is published.
|
|
76
|
+
* Throttled to once per day via a cache in the Slaide home dir. Never throws.
|
|
77
|
+
*/
|
|
78
|
+
export async function maybeNotifyUpdate(current, cmd) {
|
|
79
|
+
if (shouldSkip(cmd))
|
|
80
|
+
return;
|
|
81
|
+
try {
|
|
82
|
+
const st = readState();
|
|
83
|
+
const now = Date.now();
|
|
84
|
+
let latest = st.latest;
|
|
85
|
+
if (!st.lastCheck || now - st.lastCheck > CHECK_INTERVAL_MS) {
|
|
86
|
+
const fetched = await fetchLatest();
|
|
87
|
+
if (fetched)
|
|
88
|
+
latest = fetched;
|
|
89
|
+
writeState({ lastCheck: now, latest });
|
|
90
|
+
}
|
|
91
|
+
if (!latest || !semverGt(latest, current))
|
|
92
|
+
return;
|
|
93
|
+
if (process.env.SLAIDE_AUTO_UPDATE === '1') {
|
|
94
|
+
process.stderr.write(`\n ▲ Updating slaide ${current} → ${latest}…\n`);
|
|
95
|
+
const { spawnSync } = await import('node:child_process');
|
|
96
|
+
const r = spawnSync('npm', ['i', '-g', `${PKG}@latest`], {
|
|
97
|
+
stdio: 'inherit',
|
|
98
|
+
shell: process.platform === 'win32',
|
|
99
|
+
});
|
|
100
|
+
if (r.status !== 0)
|
|
101
|
+
process.stderr.write(` update failed — run: npm i -g ${PKG}@latest\n`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
process.stderr.write(`\n ▲ slaide ${current} → ${latest} available · npm i -g ${PKG}@latest` +
|
|
105
|
+
` (SLAIDE_AUTO_UPDATE=1 to auto-update)\n`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
/* never let an update check break the command */
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
|