Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .trusted-base-ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# SPDX-License-Identifier: MPL-2.0
#
# .trusted-base-ignore — whole-path exemptions for the trusted-base
# reduction scanner (hyperpolymath/standards scripts/check-trusted-base.sh).
# Format mirrors .hypatia-ignore: '#' comments and blank lines are ignored;
# every other line is a path-fragment SUBSTRING that exempts each
# escape-hatch marker whose file path contains it.
#
# Idris2 *test* sources legitimately use `partial` and `assert_total`:
# test drivers, property generators, and Eq instances over test-only data
# are not required to be total and are not part of the production proof
# surface / trusted base. Per-site TRUSTED:/AXIOM: annotations remain the
# preferred mechanism for production escapes; this whole-path exemption
# covers the test fixtures only.
tests/idris2/
8 changes: 4 additions & 4 deletions EXPLAINME.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@ the entire frontend JS heap.
`src/interface/ffi/src/groove.zig`
| Every inter-service boundary in the account

| *ReScript bindings*
| `bindings/rescript/` — typed frontend IPC API
| *AffineScript bindings*
| `bindings/affinescript/` — typed frontend IPC API (`@gossamer/api`)
| idaptik, panll, gossamer-powered SPAs

| *Stapeln containers*
Expand Down Expand Up @@ -200,8 +200,8 @@ toolchain. `build.zig` produces a shared library.
`simulations/`. This is where external auditors verify the claims.

| `bindings/`
| Language bindings for Rust and ReScript — typed wrappers around the C ABI.
`bindings/rescript/` is the recommended frontend integration path.
| Language bindings for Rust and AffineScript — typed wrappers around the C ABI.
`bindings/affinescript/` is the recommended frontend integration path.

| `tests/`
| 173 integration tests (v0.3.1). CI executes against real WebKitGTK on
Expand Down
1,038 changes: 375 additions & 663 deletions LICENSE

Large diffs are not rendered by default.

21 changes: 11 additions & 10 deletions bindings/affinescript/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@

Typed AffineScript bindings to the Gossamer webview shell's IPC bridge — the
frontend/consumer API an app's UI uses to talk to the native shell over
`window.__gossamer_invoke`. This is the estate-current successor to the
ReScript bindings in `../rescript/` (ReScript is banned per the Hyperpolymath
language policy; migration tracked under `hyperpolymath/standards#252`).
`window.__gossamer_invoke`. This is the `@gossamer/api` package: the
estate-current replacement for the former ReScript bindings, now retired
(ReScript is banned per the Hyperpolymath language policy; migration tracked
under `hyperpolymath/standards#252`).

[IMPORTANT]
====
Expand All @@ -21,13 +22,13 @@ boundary.
== Status

* `src/Gossamer.affine` — *type-checks clean* against the AffineScript compiler
(`affinescript check`). Faithful 1:1 port of `../rescript/src/Gossamer.res`.
* Pending (coordinated under standards#252, deliberately not bundled with the
Android work in PR #70):
** Build/publish pipeline (the `@gossamer/api` package currently publishes the
ReScript `.res.js`; the AffineScript Deno-ESM codegen output needs the same
packaging treatment).
** Retiring `../rescript/` once downstream consumers (e.g. IDApTIK) have moved.
(`affinescript check`). Faithful 1:1 port of the (now-retired) ReScript
binding.
* `@gossamer/api` (MPL-2.0) publishes the AffineScript Deno-ESM output:
`deno task build` runs `affinescript compile --deno-esm` to (re)generate
`src/Gossamer.deno.js`, the package's `exports` entry (built at publish,
mirroring the former `.res.js` flow).
* The former `../rescript/` binding is retired as of this cutover (standards#252).

== Two faithful adaptations from the ReScript original

Expand Down
17 changes: 17 additions & 0 deletions bindings/affinescript/deno.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "@gossamer/api",
"version": "0.2.0",
"license": "MPL-2.0",
"description": "AffineScript bindings for the Gossamer webview shell — drop-in replacement for @tauri-apps/api",
"exports": "./src/Gossamer.deno.js",
"tasks": {
"build": "affinescript compile --deno-esm -o src/Gossamer.deno.js src/Gossamer.affine"
},
"publish": {
"include": [
"src/**/*.affine",
"src/**/*.deno.js",
"README.adoc"
]
}
}
4 changes: 2 additions & 2 deletions bindings/affinescript/src/Gossamer.affine
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
//
// Gossamer.affine — AffineScript bindings to the Gossamer webview shell's IPC
// bridge. Migrated from bindings/rescript/src/Gossamer.res as part of the
// estate ReScript -> AffineScript migration (standards#252).
// bridge. Migrated from the former ReScript binding (now retired) as part of
// the estate ReScript -> AffineScript migration (standards#252).
//
// The JavaScript bridge is injected by libgossamer when a channel opens,
// exposing `window.__gossamer_invoke(name, payload)` and `window.__gossamer_on`.
Expand Down
21 changes: 0 additions & 21 deletions bindings/rescript/deno.json

This file was deleted.

11 changes: 0 additions & 11 deletions bindings/rescript/rescript.json

This file was deleted.

248 changes: 0 additions & 248 deletions bindings/rescript/src/Gossamer.res

This file was deleted.

Loading