@wenathlan/saddle 1.8.9 → 1.8.10

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/README.md CHANGED
@@ -181,6 +181,10 @@ scrape/ robots, cache, extraction, schema, normalization and grouped craw
181
181
  queue/ queue, idempotency, saga and recovery
182
182
  browser/ fingerprint, session, agent and Playwright adapter contracts
183
183
  extension/ Manifest V3 reference surface and packager
184
+ desktop/ Tauri browser application for Windows, Linux and macOS
185
+ android/ Capacitor Android conversion target and optimized Gradle release
186
+ ios/ Capacitor iOS conversion target and caller-owned Xcode signing
187
+ capacitor.config.ts shared web-to-native configuration for Android and iOS
184
188
  protocol/ JSON, NDJSON, SSE and block serializers
185
189
  workflow/ manifests, templates and registry contracts
186
190
  release/ checksums, SBOM and provenance metadata
@@ -191,7 +195,7 @@ tests/ deterministic engine and extension coverage
191
195
  docs/ architecture, API, security, release and registry notes
192
196
  ```
193
197
 
194
- The engine is TypeScript-first ESM with English JSDoc comments and a generated JavaScript `dist/` publication surface. The web surface is TypeScript/React, and no source or generated artifact hardcodes a host, port or credential.
198
+ The engine is TypeScript-first ESM with English JSDoc comments and a generated JavaScript `dist/` publication surface. The web surface is TypeScript/React. Desktop is the browser application and uses Tauri; Android and iOS convert the same web output through Capacitor. No source or generated artifact hardcodes a host, port or credential.
195
199
 
196
200
  ## Historical documentation
197
201
 
@@ -199,7 +203,7 @@ Earlier README snapshots remain in `docs/plans/README.md`, `docs/talks9/README.m
199
203
 
200
204
  ## Current scope
201
205
 
202
- Version 1.8.9 extends the 1.8.8 engine with TypeScript-first source conversion, dist-only compilation, target-plan manifests and web source consolidation. Browser binaries, provider credentials, n8n host registration, persistent databases, captcha solvers and production deployment remain caller-selected adapters. Future work should extend contracts without coupling the core to one forge, registry, browser or storage vendor.
206
+ Version 1.8.10 extends the TypeScript-first engine with explicit Android, iOS and browser surface boundaries, optimized Android release configuration, dotted release asset naming and helper-binary rejection. Browser binaries, provider credentials, n8n host registration, persistent databases, captcha solvers and production deployment remain caller-selected adapters. Future work should extend contracts without coupling the core to one forge, registry, browser or storage vendor.
203
207
 
204
208
  ## License
205
209
 
@@ -22,10 +22,10 @@ export declare function appregistry(options?: {}): {
22
22
  missing?: undefined;
23
23
  appid?: undefined;
24
24
  } | {
25
- reason?: undefined;
26
25
  allowed: boolean;
27
26
  missing: any[];
28
27
  appid: any;
28
+ reason?: undefined;
29
29
  };
30
30
  get: (id: any) => any;
31
31
  list: () => any[];
@@ -4,14 +4,15 @@ export declare function mcpserver(options?: {}): {
4
4
  description: string;
5
5
  }[];
6
6
  handle(request: any): Promise<{
7
+ error?: undefined;
7
8
  jsonrpc: string;
8
9
  id: any;
9
10
  result: {
10
11
  tools: any;
11
12
  content?: undefined;
12
13
  };
13
- error?: undefined;
14
14
  } | {
15
+ error?: undefined;
15
16
  jsonrpc: string;
16
17
  id: any;
17
18
  result: {
@@ -21,7 +22,6 @@ export declare function mcpserver(options?: {}): {
21
22
  text: string;
22
23
  }[];
23
24
  };
24
- error?: undefined;
25
25
  } | {
26
26
  result?: undefined;
27
27
  jsonrpc: string;
@@ -15,9 +15,9 @@ export declare function memoryengine(options?: {}): {
15
15
  data: any;
16
16
  error?: undefined;
17
17
  } | {
18
+ data?: undefined;
18
19
  success: boolean;
19
20
  error: any;
20
- data?: undefined;
21
21
  }>;
22
22
  sync: (key: any, options?: {}) => Promise<any[]>;
23
23
  capabilities: () => any;
@@ -9,6 +9,8 @@ export declare const artifactformats: Readonly<{
9
9
  web: readonly string[];
10
10
  package: readonly string[];
11
11
  }>;
12
+ /** Creates the public dotted artifact stem for a target and version. */
13
+ export declare function artifactname(target: any, version: any, format: any): string;
12
14
  /** Creates a distribution manifest for caller-owned build and publication steps. */
13
15
  export declare function distributionmanifest(options?: {}): {
14
16
  name: any;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../packager/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAC;AAEH,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,OAAO,KAAK;IAG7C,IAAI;IACJ,OAAO;IACP,KAAK;IACL,KAAK;IACL,OAAO;IACP,KAAK;IACL,QAAQ;EAEX;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,QAAQ,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAK;;;;;;;;;;;EAKxD;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAK;IACtC,IAAI;IAA0B,OAAO;IAA8F,KAAK;IAAkB,OAAO;EAC3K;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAK;;;;;EAOnD"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../packager/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAC;AAIH,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,MAAM,KAAA,EAAE,OAAO,KAAA,EAAE,MAAM,KAAA,UAKnD;AAED,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,OAAO,KAAK;IAG7C,IAAI;IACJ,OAAO;IACP,KAAK;IACL,KAAK;IACL,OAAO;IACP,KAAK;IACL,QAAQ;EAEX;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,QAAQ,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAK;;;;;;;;;;;EAKxD;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAK;IACtC,IAAI;IAA0B,OAAO;IAA8F,KAAK;IAAkB,OAAO;EAC3K;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAK;;;;;EAOnD"}
@@ -9,6 +9,15 @@ export const artifactformats = Object.freeze({
9
9
  web: Object.freeze(["html", "pwa", "ssg", "ssr", "wasm"]),
10
10
  package: Object.freeze(["npm", "github", "maven", "nuget", "rubygems", "oci", "vsix", "oxt"])
11
11
  });
12
+ const publicsurfaces = Object.freeze({ desktopapp: "browser", mobileapp: "mobile" });
13
+ /** Creates the public dotted artifact stem for a target and version. */
14
+ export function artifactname(target, version, format) {
15
+ const surface = publicsurfaces[target] ?? target;
16
+ const normalized = `${surface}.${version}.${format}`.toLowerCase();
17
+ if (!/^[a-z0-9]+(?:\.[a-z0-9]+)+$/.test(normalized))
18
+ throw new TypeError("artifact name contains unsupported characters");
19
+ return normalized;
20
+ }
12
21
  /** Creates a distribution manifest for caller-owned build and publication steps. */
13
22
  export function distributionmanifest(options = {}) {
14
23
  if (!options.name || !options.version || !options.entry)
@@ -30,7 +39,7 @@ export function targetplan(manifest, target, options = {}) {
30
39
  if (!target)
31
40
  throw new TypeError("target plan requires a target");
32
41
  const format = options.format ?? target;
33
- return { name: manifest.name, version: manifest.version, target, format, entry: manifest.entry, output: options.output ?? `build/artifacts/${target}.${format}`, command: options.command ?? `caller-build ${target} ${format}`, generated: true, credentials: "caller-managed", metadata: options.metadata ?? {} };
42
+ return { name: manifest.name, version: manifest.version, target, format, entry: manifest.entry, output: options.output ?? `build/artifacts/${artifactname(target, manifest.version, format)}`, command: options.command ?? `caller-build ${target} ${format}`, generated: true, credentials: "caller-managed", metadata: options.metadata ?? {} };
34
43
  }
35
44
  /** Creates a declarative Node SEA or caller-selected binary build plan. */
36
45
  export function binaryplan(manifest, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../packager/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../packager/manifest.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,14 @@
4
4
  */
5
5
  import { mkdir, readFile, writeFile } from "node:fs/promises";
6
6
  import { resolve } from "node:path";
7
- import { targetplan } from "./manifest.js";
7
+ import { artifactname, targetplan } from "./manifest.js";
8
8
  /** Reads the distribution manifest and writes one target plan. */
9
9
  export async function writeTargetPlan(target, format = target, output = "build/targets") {
10
10
  const packagejson = JSON.parse(await readFile(resolve("package.json"), "utf8"));
11
11
  const manifest = { name: packagejson.name, version: packagejson.version, entry: "dist/index.js" };
12
12
  const plan = targetplan(manifest, target, { format });
13
13
  await mkdir(resolve(output), { recursive: true });
14
- const filename = resolve(output, `${target}-${format}.json`);
14
+ const filename = resolve(output, `manifest.${artifactname(target, manifest.version, format)}.json`);
15
15
  await writeFile(filename, `${JSON.stringify(plan, null, 2)}\n`);
16
16
  return filename;
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"targetcli.js","sourceRoot":"","sources":["../../packager/targetcli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,eAAe;IAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAClG,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,OAAO,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;IAC3F,MAAM,CAAC,EAAE,AAAD,EAAG,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACzF,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChL,CAAC"}
1
+ {"version":3,"file":"targetcli.js","sourceRoot":"","sources":["../../packager/targetcli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzD,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,eAAe;IAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAClG,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,YAAY,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACpG,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;IAC3F,MAAM,CAAC,EAAE,AAAD,EAAG,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACzF,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChL,CAAC"}
@@ -7,6 +7,7 @@ export declare function createassets(options?: {}): Promise<{
7
7
  output: string;
8
8
  files: {
9
9
  checksums: string;
10
+ manifest: string;
10
11
  sbom: string;
11
12
  provenance: string;
12
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../release/assets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,iFAAiF;AACjF,wBAAsB,YAAY,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;;;YA6BsH,SAAS;gBAAI,IAAI;gBAAiB,IAAI;gBAA4B,OAAO;;;;;;;;;;;;;;;;;gBAKtJ,MAAM;;;;;YAC0C,eAAe;gBAAI,SAAS;gBAAiD,kBAAkB;oBAAI,OAAO;oBAA4B,OAAO;;gBAAoD,kBAAkB;;YAAQ,UAAU;gBAAI,OAAO;oBAAI,EAAE;;gBAAiD,QAAQ;oBAAI,YAAY;;;;;GAjBtc;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,WAAW,KAAA,EAAE,QAAQ,KAAK;;;;;;QAQgH,SAAS;YAAI,IAAI;YAAiB,IAAI;YAA4B,OAAO;;;;;;;;;;;EAC7O;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,WAAW,KAAA,EAAE,QAAQ,QAAK,EAAE,OAAO,KAAK;IAE9D,KAAK;IAAqC,OAAO;;;YAD4B,MAAM;;;IACpB,aAAa;IAAoC,SAAS;QAAI,eAAe;YAAI,SAAS;YAAiD,kBAAkB;gBAAI,OAAO;gBAA4B,OAAO;;YAAoD,kBAAkB;;QAAQ,UAAU;YAAI,OAAO;gBAAI,EAAE;;YAAiD,QAAQ;gBAAI,YAAY;;;;EACtc"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../release/assets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,iFAAiF;AACjF,wBAAsB,YAAY,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;;;;YA0CsH,SAAS;gBAAI,IAAI;gBAAiB,IAAI;gBAA4B,OAAO;;;;;;;;;;;;;;;;;gBAKtJ,MAAM;;;;;YAC0C,eAAe;gBAAI,SAAS;gBAAiD,kBAAkB;oBAAI,OAAO;oBAA4B,OAAO;;gBAAoD,kBAAkB;;YAAQ,UAAU;gBAAI,OAAO;oBAAI,EAAE;;gBAAiD,QAAQ;oBAAI,YAAY;;;;;GAjBtc;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,WAAW,KAAA,EAAE,QAAQ,KAAK;;;;;;QAQgH,SAAS;YAAI,IAAI;YAAiB,IAAI;YAA4B,OAAO;;;;;;;;;;;EAC7O;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,WAAW,KAAA,EAAE,QAAQ,QAAK,EAAE,OAAO,KAAK;IAE9D,KAAK;IAAqC,OAAO;;;YAD4B,MAAM;;;IACpB,aAAa;IAAoC,SAAS;QAAI,eAAe;YAAI,SAAS;YAAiD,kBAAkB;gBAAI,OAAO;gBAA4B,OAAO;;YAAoD,kBAAkB;;QAAQ,UAAU;YAAI,OAAO;gBAAI,EAAE;;YAAiD,QAAQ;gBAAI,YAAY;;;;EACtc"}
@@ -4,9 +4,11 @@
4
4
  */
5
5
  import { createHash } from "node:crypto";
6
6
  import { mkdir, readFile, writeFile } from "node:fs/promises";
7
- import { dirname, join, relative, resolve } from "node:path";
7
+ import { basename, dirname, join, relative, resolve, sep } from "node:path";
8
8
  import { fileURLToPath } from "node:url";
9
- const rootpath = resolve(dirname(fileURLToPath(import.meta.url)), "..");
9
+ const modulepath = dirname(fileURLToPath(import.meta.url));
10
+ const moduleparts = modulepath.split(sep);
11
+ const rootpath = moduleparts.at(-1) === "release" && moduleparts.at(-2) === "dist" ? resolve(modulepath, "..", "..") : resolve(modulepath, "..");
10
12
  /** Builds deterministic release metadata files for caller-selected artifacts. */
11
13
  export async function createassets(options = {}) {
12
14
  const packagefile = resolve(options.packagefile ?? join(rootpath, "package.json"));
@@ -16,13 +18,26 @@ export async function createassets(options = {}) {
16
18
  const packagejson = JSON.parse(await readFile(packagefile, "utf8"));
17
19
  const lockjson = JSON.parse(await readFile(lockfile, "utf8"));
18
20
  const artifacts = [...new Set((options.artifacts ?? []).map((artifact) => resolve(String(artifact))))].sort();
19
- const subjects = await Promise.all(artifacts.map(async (artifact) => ({ name: relative(artifactroot, artifact).replaceAll("\\", "/"), digest: await sha256(artifact) })));
21
+ const version = String(options.version ?? packagejson.version);
22
+ const surface = normalizeSurface(options.surface ?? "library");
23
+ const subjects = await Promise.all(artifacts.map(async (artifact) => {
24
+ const name = relative(artifactroot, artifact).replaceAll("\\", "/");
25
+ validateArtifactName(basename(name));
26
+ return { name, digest: await sha256(artifact) };
27
+ }));
20
28
  await mkdir(output, { recursive: true });
21
29
  const checksums = `${subjects.map((subject) => `${subject.digest} ${subject.name}`).join("\n")}${subjects.length ? "\n" : ""}`;
22
30
  const sbom = createsbom(packagejson, lockjson);
23
- const provenance = createprovenance(packagejson, subjects, options);
24
- const files = { checksums: join(output, "SHA256SUMS"), sbom: join(output, "sbom.cdx.json"), provenance: join(output, "provenance.intoto.jsonl") };
31
+ const provenance = createprovenance(packagejson, subjects, { ...options, version });
32
+ const manifest = { name: String(packagejson.name), version, surface, files: subjects.map((subject) => basename(subject.name)), signing: String(options.signing ?? "caller-owned") };
33
+ const files = {
34
+ checksums: join(output, `sha256.${surface}.${version}`),
35
+ manifest: join(output, `manifest.${surface}.${version}.json`),
36
+ sbom: join(output, `sbom.${surface}.${version}.cdx.json`),
37
+ provenance: join(output, `provenance.${surface}.${version}.intoto.jsonl`)
38
+ };
25
39
  await writeFile(files.checksums, checksums);
40
+ await writeFile(files.manifest, `${JSON.stringify(manifest, null, 2)}\n`);
26
41
  await writeFile(files.sbom, `${JSON.stringify(sbom, null, 2)}\n`);
27
42
  await writeFile(files.provenance, `${JSON.stringify(provenance)}\n`);
28
43
  return { output, files, subjects, sbom, provenance };
@@ -45,6 +60,12 @@ export function createprovenance(packagejson, subjects = [], options = {}) {
45
60
  }
46
61
  async function sha256(path) { const hash = createHash("sha256"); hash.update(await readFile(path)); return hash.digest("hex"); }
47
62
  function stableuuid(value) { const hex = createHash("sha256").update(String(value)).digest("hex").slice(0, 32); return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-4${hex.slice(13, 16)}-${(8 + (Number.parseInt(hex.slice(16, 17), 16) % 4).toString(16))}${hex.slice(17, 20)}-${hex.slice(20)}`; }
63
+ /** Normalizes the public release surface used in metadata filenames. */
64
+ function normalizeSurface(value) { const normalized = String(value).trim().toLowerCase(); if (!/^[a-z0-9]+(?:[.-][a-z0-9]+)*$/.test(normalized))
65
+ throw new TypeError(`invalid release surface: ${value}`); return normalized; }
66
+ /** Rejects helper binaries and ambiguous public filenames before metadata generation. */
67
+ function validateArtifactName(value) { if (value.includes("_") || /build[-_]script[-_]build|saddle[-_]desktop/i.test(value))
68
+ throw new TypeError(`forbidden release artifact filename: ${value}`); }
48
69
  function parsearguments(argumentslist) {
49
70
  const options = { artifacts: [] };
50
71
  for (let index = 0; index < argumentslist.length; index += 1) {
@@ -53,6 +74,10 @@ function parsearguments(argumentslist) {
53
74
  options.output = argumentslist[++index];
54
75
  else if (argument === "--version")
55
76
  options.version = argumentslist[++index];
77
+ else if (argument === "--surface")
78
+ options.surface = argumentslist[++index];
79
+ else if (argument === "--signing")
80
+ options.signing = argumentslist[++index];
56
81
  else if (argument === "--artifact")
57
82
  options.artifacts.push(argumentslist[++index]);
58
83
  else if (argument === "--build-type")
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../release/assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../release/assets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../../scrape/robots.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAAE;AACjH,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAAE;AAC3H,MAAM,WAAW,SAAS;IAAG,UAAU,EAAE,eAAe,EAAE,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAAE;AAK7H,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,IAAI,SAAK,GAAG,SAAS,CAA+wC;AAEh0C,qFAAqF;AACrF,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAA4nB;AAE7vB,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,SAAM,GAAG,OAAO,CAAwW;AAE3b,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,SAAM,GAAG,MAAM,GAAG,SAAS,CAAuH;AAC5M,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAAiC;AACzF,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAA4C;AACjI,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,SAAM,GAAG,MAAM,CAA6C"}
1
+ {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../../scrape/robots.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAAE;AACjH,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAAE;AAC3H,MAAM,WAAW,SAAS;IAAG,UAAU,EAAE,eAAe,EAAE,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAAE;AAK7H,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,IAAI,SAAK,GAAG,SAAS,CAA+wC;AAEh0C,qFAAqF;AACrF,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAA6nB;AAE9vB,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,SAAM,GAAG,OAAO,CAAwW;AAE3b,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,SAAM,GAAG,MAAM,GAAG,SAAS,CAAuH;AAC5M,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAAiC;AACzF,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAA4C;AACjI,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,SAAM,GAAG,MAAM,CAA6C"}
@@ -43,7 +43,7 @@ export function robotsrules(text = "") { const directives = []; const groups = [
43
43
  /** Fetches and caches a site's robots policy without failing the caller's scrape. */
44
44
  export async function fetchRobotsTxt(siteUrl, options = {}) { const base = siteUrl.replace(/\/$/, ""); const robotsUrl = `${base}/robots.txt`; const cached = cache.get(robotsUrl); if (cached && Date.now() - cached.fetchedAt < cachettl)
45
45
  return cached.robots; try {
46
- const response = await fetch(robotsUrl, { headers: { "User-Agent": options.userAgent ?? "Saddle/1.8.9" }, signal: AbortSignal.timeout(options.timeout ?? 5000) });
46
+ const response = await fetch(robotsUrl, { headers: { "User-Agent": options.userAgent ?? "Saddle/1.8.10" }, signal: AbortSignal.timeout(options.timeout ?? 5000) });
47
47
  const robots = response.ok ? robotsrules(await response.text()) : robotsrules();
48
48
  cache.set(robotsUrl, { robots, fetchedAt: Date.now() });
49
49
  return robots;
@@ -1 +1 @@
1
- {"version":3,"file":"robots.js","sourceRoot":"","sources":["../../scrape/robots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"robots.js","sourceRoot":"","sources":["../../scrape/robots.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../surfaces/targets.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc;;QACV,OAAO;QAAY,KAAK;QAAmB,YAAY;QAAoC,OAAO;;;QACrG,OAAO;QAAU,KAAK;QAAmB,YAAY;QAAmC,OAAO;;;QAC7F,OAAO;QAAY,KAAK;QAAmB,YAAY;QAAiC,OAAO;;;QAChG,OAAO;QAAa,KAAK;QAAmB,YAAY;QAAoC,OAAO;;;QACrG,OAAO;QAAa,KAAK;QAAmB,YAAY;QAAoC,OAAO;;;QACvG,OAAO;QAAS,KAAK;QAAmB,YAAY;QAAoC,OAAO;;;QAC/F,OAAO;QAAU,KAAK;QAAsB,YAAY;QAAoC,OAAO;;;QAChG,OAAO;QAAY,KAAK;QAAsB,YAAY;QAAmC,OAAO;;;QACnG,OAAO;QAAa,KAAK;QAAmB,YAAY;QAAoC,OAAO;;;QACjG,OAAO;QAAa,KAAK;QAA6B,YAAY;QAAqC,OAAO;;;QAC/G,OAAO;QAAY,KAAK;QAAmB,YAAY;QAAiC,OAAO;;;QACpG,OAAO;QAAa,KAAK;QAAgC,YAAY;QAA0B,OAAO;;;QAC9F,OAAO;QAAY,KAAK;QAAmB,YAAY;QAAuB,OAAO;;;QAC7F,OAAO;QAAY,KAAK;QAAwB,YAAY;QAAsB,OAAO;;;QACxF,OAAO;QAAY,KAAK;QAAmB,YAAY;QAA0B,OAAO;;;QACnF,OAAO;QAAU,KAAK;QAAmB,YAAY;QAAoC,OAAO;;EAC7G,CAAC;AAEH,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,MAAM,KAAA,EAAE,OAAO,KAAK;;;;;;;;EAAqZ;AAExc,2EAA2E;AAC3E,wBAAgB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAmJ"}
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../surfaces/targets.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc;;QACV,OAAO;QAAY,KAAK;QAAmB,YAAY;QAAoC,OAAO;;;QACrG,OAAO;QAAU,KAAK;QAAmB,YAAY;QAAmC,OAAO;;;QAC7F,OAAO;QAAW,KAAK;QAAuB,YAAY;QAAiC,OAAO;;;QACnG,OAAO;QAAe,KAAK;QAAgC,YAAY;QAAoC,OAAO;;;QACpH,OAAO;QAAe,KAAK;QAAa,YAAY;QAAoC,OAAO;;;QACnG,OAAO;QAAe,KAAK;QAAS,YAAY;QAAoC,OAAO;;;QAC3F,OAAO;QAAU,KAAK;QAAsB,YAAY;QAAoC,OAAO;;;QAChG,OAAO;QAAY,KAAK;QAAsB,YAAY;QAAmC,OAAO;;;QACnG,OAAO;QAAW,KAAK;QAAuB,YAAY;QAAoC,OAAO;;;QACnG,OAAO;QAAa,KAAK;QAA6B,YAAY;QAAqC,OAAO;;;QAC/G,OAAO;QAAY,KAAK;QAAmB,YAAY;QAAiC,OAAO;;;QACpG,OAAO;QAAa,KAAK;QAAgC,YAAY;QAA0B,OAAO;;;QAC9F,OAAO;QAAY,KAAK;QAAmB,YAAY;QAAuB,OAAO;;;QAC7F,OAAO;QAAY,KAAK;QAAwB,YAAY;QAAsB,OAAO;;;QACxF,OAAO;QAAY,KAAK;QAAmB,YAAY;QAA0B,OAAO;;;QACnF,OAAO;QAAU,KAAK;QAAmB,YAAY;QAAoC,OAAO;;EAC7G,CAAC;AAEH,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,MAAM,KAAA,EAAE,OAAO,KAAK;;;;;;;;EAAqZ;AAExc,2EAA2E;AAC3E,wBAAgB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAmJ"}
@@ -4,13 +4,13 @@
4
4
  export const targetprofiles = Object.freeze({
5
5
  application: { runtime: "caller", entry: "dist/index.js", capabilities: ["memory", "storage", "network"], formats: ["zip", "tarball"] },
6
6
  computer: { runtime: "node", entry: "dist/index.js", capabilities: ["memory", "storage", "runner"], formats: ["node", "bun", "deno", "singlefile"] },
7
- desktopapp: { runtime: "caller", entry: "dist/index.js", capabilities: ["memory", "file", "visible"], formats: ["appimage", "deb", "rpm", "snap", "flatpak", "dmg", "pkg", "exe", "msi", "msix"] },
8
- mobileapp: { runtime: "browser", entry: "dist/index.js", capabilities: ["memory", "network", "visible"], formats: ["apk", "aab", "ipa"] },
9
- android: { runtime: "android", entry: "dist/index.js", capabilities: ["memory", "network", "visible"], formats: ["apk", "aab"] },
10
- ios: { runtime: "ios", entry: "dist/index.js", capabilities: ["memory", "network", "visible"], formats: ["ipa"] },
7
+ desktopapp: { runtime: "tauri", entry: "desktop/src-tauri", capabilities: ["memory", "file", "visible"], formats: ["appimage", "deb", "rpm", "snap", "flatpak", "dmg", "pkg", "exe", "msi", "msix"] },
8
+ mobileapp: { runtime: "capacitor", entry: "web/dist/public/index.html", capabilities: ["memory", "network", "visible"], formats: ["apk", "aab", "ipa"] },
9
+ android: { runtime: "capacitor", entry: "android", capabilities: ["memory", "network", "visible"], formats: ["apk", "aab"] },
10
+ ios: { runtime: "capacitor", entry: "ios", capabilities: ["memory", "network", "visible"], formats: ["ipa"] },
11
11
  cli: { runtime: "node", entry: "dist/cli/main.js", capabilities: ["memory", "storage", "network"], formats: ["node", "bun", "deno", "singlefile", "exe", "deb", "rpm"] },
12
12
  binary: { runtime: "caller", entry: "dist/cli/main.js", capabilities: ["memory", "storage", "runner"], formats: ["sea", "singlefile", "wasm"] },
13
- browser: { runtime: "browser", entry: "dist/index.js", capabilities: ["memory", "network", "visible"], formats: ["html", "pwa", "wasm"] },
13
+ browser: { runtime: "tauri", entry: "desktop/src-tauri", capabilities: ["memory", "network", "visible"], formats: ["html", "pwa", "wasm", "appimage", "deb", "rpm", "dmg", "exe", "msi"] },
14
14
  extension: { runtime: "browser", entry: "dist/extension/index.js", capabilities: ["browser", "network", "visible"], formats: ["crx", "xpi", "safariextz"] },
15
15
  internet: { runtime: "caller", entry: "dist/index.js", capabilities: ["network", "webhook", "api"], formats: ["http", "websocket", "grpc", "rest"] },
16
16
  web: { runtime: "browser", entry: "web/dist/public/index.html", capabilities: ["network", "visible"], formats: ["html", "pwa", "ssg", "ssr", "wasm"] },
@@ -1 +1 @@
1
- {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../surfaces/targets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../surfaces/targets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ # Saddle 1.8.9 artifact availability
2
+
3
+ Saddle 1.8.9 is a TypeScript-first engine release with native packaging generated from the shared Tauri 2 desktop boundary. The workflows derive the release version from the release tag and attach only the files produced by the corresponding runner. Tauri documents `android build` and `ios build` as separate platform commands, while the desktop `build` command generates platform installers from the resolved frontend distribution [1].
4
+
5
+ ## Verified release assets
6
+
7
+ The following artifacts are attached to the [v1.8.9 GitHub release][3]. The desktop assets are unsigned build artifacts; code signing, notarization and store submission remain caller-owned. The Android files are debug-signed test artifacts and are not production store releases.
8
+
9
+ | Surface | Generated asset | Release status | Distribution note |
10
+ | ----------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------------- |
11
+ | Windows | [Saddle Browser 1.8.9 setup EXE](https://github.com/wenathlan/saddle/releases/download/v1.8.9/Saddle.Browser_1.8.9_x64-setup.exe) | Generated | Unsigned installer; caller-owned signing and update policy. |
12
+ | Windows | [Saddle Browser 1.8.9 MSI](https://github.com/wenathlan/saddle/releases/download/v1.8.9/Saddle.Browser_1.8.9_x64_en-US.msi) | Generated | Unsigned installer; caller-owned signing and enterprise deployment. |
13
+ | Linux | [Debian package](https://github.com/wenathlan/saddle/releases/download/v1.8.9/Saddle.Browser_1.8.9_amd64.deb) | Generated | Unsigned package; Snap and Flatpak are not part of this release. |
14
+ | Linux | [RPM package](https://github.com/wenathlan/saddle/releases/download/v1.8.9/Saddle.Browser-1.8.9-1.x86_64.rpm) | Generated | Unsigned package; repository publication remains caller-owned. |
15
+ | Linux | [AppImage](https://github.com/wenathlan/saddle/releases/download/v1.8.9/Saddle.Browser_1.8.9_amd64.AppImage) | Generated | Portable unsigned image. |
16
+ | macOS | [DMG](https://github.com/wenathlan/saddle/releases/download/v1.8.9/Saddle.Browser_1.8.9_aarch64.dmg) | Generated | Unsigned and not notarized; PKG is deferred. |
17
+ | Android | [Debug APK](https://github.com/wenathlan/saddle/releases/download/v1.8.9/app-universal-debug.apk) | Generated | Debug key for test installation; production signing is caller-owned. |
18
+ | Android | [Debug AAB](https://github.com/wenathlan/saddle/releases/download/v1.8.9/app-universal-debug.aab) | Generated | Debug key for test packaging; production signing is caller-owned. |
19
+ | Container | [Saddle container tarball](https://github.com/wenathlan/saddle/releases/download/v1.8.9/saddle-container-1.8.9.tar.gz) | Generated | OCI image exported as a tarball; deployment runtime and registry remain caller-owned. |
20
+ | Browser extension | [Saddle extension ZIP](https://github.com/wenathlan/saddle/releases/download/v1.8.9/saddle-extension-1.8.9.zip) | Generated | Deterministic extension package. |
21
+
22
+ The platform manifests and checksums are also attached. They are named `artifact-manifest-linux.json`, `artifact-manifest-windows.json`, `artifact-manifest-macos.json`, `artifact-manifest-android.json`, `container-artifact-manifest.json`, `SHA256SUMS-linux`, `SHA256SUMS-windows`, `SHA256SUMS-macos`, `SHA256SUMS-android` and `SHA256SUMS-container`.
23
+
24
+ ## Unavailable or caller-owned targets
25
+
26
+ The iOS workflow exists but is gated by `SADDLE_IOS_ENABLED` or an explicit manual dispatch input. No IPA is claimed for v1.8.9 because the release was not run with Apple Developer certificates, provisioning profiles and export credentials. The same ownership rule applies to PKG, MSIX, Snap, Flatpak, production Android signing, Windows signing, macOS signing and notarization. The package targets for npm, GitHub Packages, GHCR, Maven, NuGet and RubyGems remain separate registry workflows and are not duplicated as release binaries.
27
+
28
+ Tauri configuration is resolved from `tauri.conf.json` and can be extended with platform-specific configuration files, which keeps the core application boundary reusable without embedding signing material or infrastructure endpoints [2].
29
+
30
+ ## References
31
+
32
+ [1]: https://v2.tauri.app/reference/cli/ "Tauri Command Line Interface"
33
+ [2]: https://v2.tauri.app/develop/configuration-files/ "Tauri Configuration Files"
34
+ [3]: https://github.com/wenathlan/saddle/releases/tag/v1.8.9 "Saddle v1.8.9 GitHub Release"
35
+
36
+ ## 1.8.10 conversion contract
37
+
38
+ Version 1.8.10 keeps the Tauri desktop browser and adds explicit Capacitor Android and iOS conversion targets. The shared source is the TypeScript library plus the compiled `web/dist/public` output; the native folders do not fork engine logic. The Android release build enables R8 and resource shrinking, and the workflow creates an ephemeral CI test key when caller production signing secrets are absent.
39
+
40
+ The 1.8.10 workflow names the public outputs `saddle.browser.1.8.10.<format>`, `saddle.apk.1.8.10.apk`, `saddle.aab.1.8.10.aab`, `saddle.ipa.1.8.10.ipa`, `saddle.container.1.8.10.tar.gz` and `saddle.extension.1.8.10.zip`. Surface manifests and checksums use the corresponding `manifest.<surface>.1.8.10.json` and `sha256.<surface>.1.8.10` forms. The release is not considered complete until the live GitHub asset list matches these generated names.
@@ -0,0 +1,42 @@
1
+ # Artifact research 1.8.9
2
+
3
+ ## Decision summary
4
+
5
+ The missing release artifacts require a shared desktop browser shell plus platform-specific CI jobs. The source boundary should remain one TypeScript application and one compiled Saddle library; platform jobs should package that boundary rather than create independent application logic.
6
+
7
+ | Surface | Recommended build boundary | Required runner or toolchain | Release status |
8
+ | --- | --- | --- | --- |
9
+ | Desktop browser shell | Tauri 2 or an equivalent caller-selected shell around the existing web build | Rust, platform WebView and platform packaging tools | Can generate platform bundles in CI; signing remains caller-owned |
10
+ | Windows | Tauri Windows bundle or Electron Forge maker when an Electron shell is explicitly selected | Windows runner; EXE/MSI/MSIX maker and optional signing certificate | Unsigned installers can be generated by configured CI; store distribution requires signing |
11
+ | Linux | Tauri Debian, RPM, AppImage, Snap or Flatpak bundle | Linux runner and format-specific tools | Debian and AppImage are practical first artifacts; Snap/Flatpak require their own validation and publishing channels |
12
+ | macOS | Tauri app/DMG/PKG bundle | macOS runner with Xcode toolchain | App, DMG and PKG need signing; outside the App Store also needs notarization |
13
+ | Android | Shared web application through Tauri Android or a native Gradle wrapper | Linux runner with Android SDK/Gradle | Debug APK can be produced without the owner's release key; release APK/AAB requires private signing material |
14
+ | iOS | Shared web application through Tauri iOS or a native Xcode project | macOS runner with Xcode | IPA/archive requires Xcode, provisioning and signing inputs; no unsigned App Store artifact is a valid release product |
15
+
16
+ ## Primary findings
17
+
18
+ Tauri 2 exposes `build`, `android build` and `ios build` commands and automatically bundles configured platform formats. Its distribution documentation lists Debian, Snap, AppImage, Flatpak and RPM for Linux, DMG and app bundles for macOS, Windows installers, and Android/iOS distribution surfaces. The same documentation states that most platforms require code signing, so an artifact workflow must distinguish generated unsigned output from store-ready signed output [1].
19
+
20
+ Tauri's development documentation confirms that the web UI is displayed inside the platform WebView and that the mobile commands use Android Studio or Xcode when the caller needs an IDE. It also warns that mobile iOS physical-device development requires the `TAURI_DEV_HOST` address and an Xcode-connected device, which is why the repository should expose that value as workflow configuration rather than hardcoding a host [2].
21
+
22
+ Electron Forge is a viable alternative when the project explicitly chooses Electron. Its makers are configured per platform and can produce formats such as DMG, AppX and Flatpak [3]. The Debian maker requires Linux or macOS plus `fakeroot` and `dpkg`, so Debian packaging belongs on a Linux CI job with those packages available [4]. The project should not add Electron merely to produce installers if a lighter Tauri shell satisfies the browser requirement.
23
+
24
+ Android's official command-line guidance distinguishes debug and release output. `assembleDebug` creates a debug APK signed by the SDK's debug key for testing, while release APKs and bundles require the owner's private signing key. The same documentation describes Gradle `bundle<Variant>` tasks for AAB output and explains that an AAB is not directly installable on a device [5]. Consequently, the workflow may publish a debug APK as a clearly labeled test artifact, but must require a repository secret or environment-provided keystore before claiming a release APK or AAB.
25
+
26
+ Apple's Xcode command-line guidance identifies `xcodebuild` as the tool for building, testing, archiving and exporting Xcode projects. iOS packaging therefore belongs on a macOS runner and must receive a scheme, archive path, export options, provisioning profile and certificate from the caller or repository secrets [6]. The workflow can prepare an archive contract when those inputs are absent, but it must not fabricate an IPA or signing identity.
27
+
28
+ GitHub-hosted runners provide standard Linux, Windows and macOS labels. The runner reference documents `ubuntu-latest`, `windows-latest` and `macos-latest` families and notes Android SDK acceleration on Linux runners [7]. The release workflow should use those labels for platform jobs and derive every version from the release tag; it should not assume that a Linux sandbox can cross-build a signed Windows, Android or iOS artifact.
29
+
30
+ ## Implementation consequence
31
+
32
+ The first implementation should add a shared desktop application manifest and a Tauri-oriented workflow contract, then add Windows and Linux jobs that can generate unsigned installers when their native tools are present. Android and iOS jobs should be caller-configured and should report `unavailable` rather than emitting a misleading artifact when SDKs, certificates or provisioning inputs are missing. Every generated file must be checksumed, uploaded to the existing GitHub release and listed in a machine-readable release asset manifest.
33
+
34
+ ## References
35
+
36
+ [1]: https://v2.tauri.app/distribute/ "Tauri 2 distribution and signing guidance"
37
+ [2]: https://v2.tauri.app/develop/ "Tauri 2 desktop and mobile development guidance"
38
+ [3]: https://www.electronforge.io/config/makers "Electron Forge makers"
39
+ [4]: https://www.electronforge.io/config/makers/deb "Electron Forge Debian maker requirements"
40
+ [5]: https://developer.android.com/build/building-cmdline "Android command-line build, APK, AAB and signing guidance"
41
+ [6]: https://developer.apple.com/library/archive/technotes/tn2339/_index.html "Apple Xcode command-line build and archive guidance"
42
+ [7]: https://docs.github.com/en/actions/reference/runners/github-hosted-runners "GitHub-hosted runner platforms and capabilities"
@@ -0,0 +1,59 @@
1
+ # Mobile conversion research for Saddle 1.8.10
2
+
3
+ ## Scope and date
4
+
5
+ This research was reviewed on 13 August 2026 for the 1.8.10 planning cycle. The objective is to preserve one TypeScript-first library core, reuse the compiled web surface, create explicit Android and iOS boundaries, keep the Tauri desktop browser, reduce Android release size and make release filenames predictable.
6
+
7
+ ## Framework comparison
8
+
9
+ | Approach | Strengths | Tradeoffs | Setup complexity | Decision |
10
+ | --- | --- | --- | --- | --- |
11
+ | Tauri 2 for desktop and mobile | Reuses any HTML, CSS and JavaScript frontend; uses the system webview; already builds Saddle desktop; Rust boundary remains available for native capabilities. Tauri documents a small native footprint because the webview is not bundled with every application [1]. | Android and iOS projects are generated through Tauri’s mobile commands; native signing and store configuration remain platform-specific. The current Android debug build is not a valid production-size benchmark. | Medium for desktop, medium-high for mobile | Keep for the desktop browser and retain as a supported mobile alternative. |
12
+ | Capacitor 8.5.0 for Android and iOS | Designed to drop into an existing web project. The documented requirements are a package manifest, a built web directory and a root `index.html`; `npx cap add android`, `npx cap add ios` and `npx cap sync` create and synchronize the native projects [2]. Android uses the system WebView and exposes a JavaScript bridge to Java or Kotlin [3]. | Adds native Android and iOS project trees and a separate plugin boundary. It does not automatically make a web bundle small; release shrinking, asset selection and ABI strategy still control the final size. | Medium | Select as the primary 1.8.10 conversion path for explicit `android/` and `ios/` folders. |
13
+ | Ionic Framework 7.2.1 with Capacitor | Provides a mobile UI component system and navigation conventions on top of the web stack. It can be adopted where mobile-specific controls are required. | It is optional for Capacitor. Adding Ionic to Saddle’s existing React/Tailwind surface would duplicate or replace UI primitives and would not, by itself, solve the 119 MiB debug APK problem. | Medium-high | Do not migrate the current design to Ionic in 1.8.10. Evaluate Ionic components later only for a clearly identified mobile interaction gap. |
14
+
15
+ ## Chosen architecture
16
+
17
+ The library remains the source of truth. The existing `desktop/` Tauri shell remains the browser and desktop application surface. The existing root `browser/` directory remains the transport-neutral browser-agent logic and must not be duplicated as a second browser implementation.
18
+
19
+ The 1.8.10 work introduces explicit `android/` and `ios/` surface boundaries using Capacitor configuration and native project inputs. Both surfaces consume the same compiled web distribution and import the same library contracts. They do not fork the engine, reimplement browser actions or store credentials in source control. The generated native projects are conversion targets; the TypeScript and TSX source remains authoritative.
20
+
21
+ The browser naming is normalized at the release boundary rather than by renaming the transport-neutral `browser/` logic into a second application. The desktop browser bundle is named from the Saddle product identity, while the internal browser modules keep their API-compatible names.
22
+
23
+ ## Why the 1.8.9 debug APK is large
24
+
25
+ The v1.8.9 APK is `125,242,132` bytes, approximately 119.5 MiB. It was generated by the workflow with Tauri’s `--debug --apk --aab` path, so it is a debug test artifact rather than a production-size release benchmark. The release AAB is `35,494,095` bytes, approximately 33.8 MiB, but it is also debug-signed.
26
+
27
+ The primary optimization path is therefore to generate a release build, enable R8 code shrinking and resource shrinking, and measure the result with Android’s APK Analyzer. Android documents that R8 removes unreachable code, optimizes and obfuscates the remaining code, while resource shrinking removes unused resources [4]. Android also documents that App Bundles allow Google Play to generate device-specific APKs and that `--split-per-abi` is useful for testing or distribution outside Google Play [5]. APK Analyzer reports raw size, estimated download size and side-by-side differences between builds [6].
28
+
29
+ The 1.8.10 workflow will keep a debug artifact only as an explicitly named test output. The release path will produce a release AAB and an architecture-specific APK when signing inputs are available. It will not claim that a debug universal APK is store-ready.
30
+
31
+ ### Measured 1.8.9 APK composition
32
+
33
+ The downloaded `app-universal-debug.apk` is 120 MiB on disk and contains 925 archive entries with 133,213,007 bytes of uncompressed content. The dominant entry is `lib/arm64-v8a/libsaddle_desktop.so` at 118,076,216 bytes. The web distribution is approximately 3.3 MiB, so the web assets are not the primary cause of the APK size. The first optimization target is the debug Rust shared library: release compilation, symbol stripping, native profile selection and inspection of the generated `.so` are required before evaluating a framework change.
34
+
35
+ ## Release naming policy
36
+
37
+ Public artifact names use lowercase product identity, dots as separators and the release version. The policy avoids underscores, build-helper names and ambiguous generic files.
38
+
39
+ | Surface | 1.8.10 naming pattern |
40
+ | --- | --- |
41
+ | Desktop browser | `saddle.browser.1.8.10.<format>` |
42
+ | Android APK | `saddle.apk.1.8.10.<abi>.apk` |
43
+ | Android AAB | `saddle.aab.1.8.10.aab` |
44
+ | iOS IPA | `saddle.ipa.1.8.10.ipa` |
45
+ | Container | `saddle.container.1.8.10.tar.gz` |
46
+ | Extension | `saddle.extension.1.8.10.zip` |
47
+ | Checksums | `sha256.<surface>.1.8.10` |
48
+ | Manifest | `manifest.<surface>.1.8.10.json` |
49
+
50
+ The workflow must reject `build_script_build*.exe`, `build-script-build.exe`, `saddle_desktop.exe`, generic `artifact-manifest.json`, generic `SHA256SUMS` and any public filename containing an underscore. Rust build-script executables are intermediate compilation outputs and are never release assets.
51
+
52
+ ## References
53
+
54
+ [1]: https://v2.tauri.app/start/ "Tauri: What is Tauri?"
55
+ [2]: https://capacitorjs.com/docs/getting-started "Capacitor: Installing Capacitor"
56
+ [3]: https://capacitorjs.com/docs/android "Capacitor Android Documentation"
57
+ [4]: https://developer.android.com/topic/performance/app-optimization/enable-app-optimization "Android Developers: Enable app optimization with R8"
58
+ [5]: https://v2.tauri.app/distribute/google-play/ "Tauri: Google Play distribution"
59
+ [6]: https://developer.android.com/studio/debug/apk-analyzer "Android Developers: Analyze your build with the APK Analyzer"
@@ -1,16 +1,17 @@
1
1
  # Release assets
2
2
 
3
- The Node-only release adapter creates deterministic metadata for caller-selected artifacts. It writes `SHA256SUMS`, `sbom.cdx.json` in CycloneDX 1.5 shape and `provenance.intoto.jsonl` in an in-toto statement shape. The adapter never publishes, authenticates or selects a registry.
3
+ The Node-only release adapter creates deterministic metadata for caller-selected artifacts. For version `1.8.10`, it writes dotted surface-specific names such as `sha256.desktop.1.8.10`, `manifest.desktop.1.8.10.json`, `sbom.desktop.1.8.10.cdx.json` and `provenance.desktop.1.8.10.intoto.jsonl`. The adapter rejects underscore-based public names and Rust build-helper executables. It never publishes, authenticates or selects a registry.
4
4
 
5
5
  ```bash
6
6
  npm run release:assets -- \
7
- --version 1.8.9 \
7
+ --version 1.8.10 \
8
+ --surface desktop \
8
9
  --output build/release \
9
10
  --artifact build/saddle.tgz \
10
11
  --build-type caller-build \
11
12
  --builder caller-ci
12
13
  ```
13
14
 
14
- The artifact paths are supplied by the caller and are sorted before the checksum and provenance files are written. Package dependencies are read from the root lockfile to build a compact component list. The output can be attached to a release or checked by a registry-specific workflow without adding credentials to the library.
15
+ The artifact paths are supplied by the caller and are sorted before the checksum, manifest, SBOM and provenance files are written. Package dependencies are read from the root lockfile to build a compact component list. The output can be attached to a release or checked by a registry-specific workflow without adding credentials to the library.
15
16
 
16
17
  The package also exports the adapter as `@wenathlan/saddle/release-assets`. It is intentionally Node-only because release metadata reads files and uses the Node crypto implementation; the transport-neutral root remains free of Node imports.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "Saddle browser bridge",
4
- "version": "1.8.9",
4
+ "version": "1.8.10",
5
5
  "description": "User initiated page snapshots through the Saddle browser contract.",
6
6
  "minimum_chrome_version": "110",
7
7
  "permissions": ["activeTab", "scripting", "storage"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wenathlan/saddle",
3
- "version": "1.8.9",
3
+ "version": "1.8.10",
4
4
  "description": "binary computing engine that turns distributed storage into a publishable working set",
5
5
  "type": "module",
6
6
  "private": false,
@@ -15,6 +15,11 @@
15
15
  "publishConfig": {
16
16
  "access": "public"
17
17
  },
18
+ "overrides": {
19
+ "xcode": {
20
+ "uuid": "11.1.1"
21
+ }
22
+ },
18
23
  "repository": {
19
24
  "type": "git",
20
25
  "url": "https://github.com/wenathlan/saddle.git"
@@ -90,12 +95,19 @@
90
95
  "target:manifest": "npm run build:engine && node dist/packager/targetcli.js",
91
96
  "pack:check": "npm run check && npm run formatcheck && npm test && npm pack --dry-run",
92
97
  "prepublishOnly": "npm run pack:check",
98
+ "tauri": "npx --yes @tauri-apps/cli@2.11.4",
99
+ "capacitor:sync:android": "npm run web:build:pages && cap sync android",
100
+ "capacitor:sync:ios": "npm run web:build:pages && cap sync ios",
93
101
  "web:dev": "vite --config web/vite.config.ts --host",
94
102
  "web:check": "tsc --project web/tsconfig.json --noEmit",
95
103
  "web:build": "vite build --config web/vite.config.ts",
96
104
  "web:build:pages": "vite build --config web/vite.config.ts"
97
105
  },
98
106
  "devDependencies": {
107
+ "@capacitor/android": "^8.5.0",
108
+ "@capacitor/cli": "^8.5.0",
109
+ "@capacitor/core": "^8.5.0",
110
+ "@capacitor/ios": "^8.5.0",
99
111
  "@hookform/resolvers": "^5.2.2",
100
112
  "@radix-ui/react-accordion": "^1.2.12",
101
113
  "@radix-ui/react-alert-dialog": "^1.1.15",