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
2 changes: 1 addition & 1 deletion 0-AI-MANIFEST.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ vm-wasm = "vm/wasm/" # Zig WASM backend
dlc = "dlc/" # Downloadable content / puzzle packs
escape-hatch = "escape-hatch/" # Rust TUI (5 tabs, Podman integration)
containers = "containers/" # Stapeln-style Containerfiles
idaptik-ums = "idaptik-ums/" # Unified Modding Studio (Tauri 2, Idris2 ABI, Zig FFI)
idaptik-ums = "idaptik-ums/" # Unified Modding Studio (Gossamer / Ephapax, Idris2 ABI, Zig FFI)
idaptik-developers = "idaptik-developers/" # Developer portal (17 ADRs, white paper)
tools = "tools/" # Balance analyser (Julia)
locales = "locales/" # i18n JSON locale files (polyglot-i18n)
Expand Down
10 changes: 5 additions & 5 deletions QUICKSTART-USER.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ reversible VM, multiplayer sync, and a developer portal.
| 0.14+
| `asdf install zig 0.14.0`

| Rust _(UMS Tauri + escape-hatch only)_
| Rust _(escape-hatch only; UMS shell is now Gossamer/Ephapax)_
| nightly
| `asdf install rust nightly`

Expand Down Expand Up @@ -107,7 +107,7 @@ just test-vm # VM instruction tests
just test-deno # Deno-native tests
----

=== Validate Everything (tests + UMS Zig + UMS Tauri)
=== Validate Everything (tests + UMS Zig + UMS Gossamer)

[source,bash]
----
Expand All @@ -126,7 +126,7 @@ just lint # Deno lint
just clean # Clean build artifacts
just balance # Run balance analysis on level configs
just ums-build # Build UMS Zig FFI
just ums-tauri # Check UMS Tauri shell
just ums-gossamer # Run UMS under Gossamer (Ephapax-based webview shell)
just doctor # Check prerequisites
just tour # Guided walkthrough
just help-me # What to do when stuck
Expand Down Expand Up @@ -155,12 +155,12 @@ cargo run

Developer TUI with 5 tabs and Podman integration.

=== Unified Modding Studio (Tauri 2)
=== Unified Modding Studio (Gossamer / Ephapax)

[source,bash]
----
just ums-build # Zig FFI
just ums-tauri # Rust shell check
just ums-gossamer # Run UMS under Gossamer (Ephapax-based webview shell)
----

== SAFETY NOTE
Expand Down
10 changes: 5 additions & 5 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Originally created by Joshua B. Jewell, developed under hyperpolymath.
| Elixir/Phoenix (WebSocket channels, ETS sessions)

| Modding Studio
| Tauri 2 (Rust backend, PixiJS editor, procedural WorldGen)
| Gossamer (Ephapax-based webview shell, PixiJS editor, procedural WorldGen)

| ABI
| Idris2 (17 modules in `idaptik-ums/src/abi/` + 1 root module at `src/abi/Types.idr`, dependent-type proofs)
Expand Down Expand Up @@ -93,7 +93,7 @@ Originally created by Joshua B. Jewell, developed under hyperpolymath.
| `sync-server/`

| Universal Modding Studio
| Tauri 2 desktop app -- WorldGen (8 presets), PixiJS level editor
| Gossamer desktop app (Ephapax-based webview shell) -- WorldGen (8 presets), PixiJS level editor
| `idaptik-ums/`

| Developer Portal
Expand Down Expand Up @@ -189,7 +189,7 @@ Uses the Julia balance analyser in `tools/balance-analyser.jl`.

== Universal Modding Studio (UMS)

The UMS is a Tauri 2 desktop application for level design and modding.
The UMS is a Gossamer desktop application (Ephapax-based webview shell) for level design and modding.

* **WorldGen**: Procedural world generation with 8 presets
* **PixiJS Editor**: Visual level editor
Expand Down Expand Up @@ -251,11 +251,11 @@ idaptik/
│ ├── lib/ # Compiled output
│ └── tests/ # 640+ tests across 20+ suites
├── sync-server/ # Elixir/Phoenix multiplayer
├── idaptik-ums/ # Universal Modding Studio (Tauri 2)
├── idaptik-ums/ # Universal Modding Studio (Gossamer / Ephapax)
│ ├── src/abi/ # Idris2 ABI (15 modules)
│ ├── ffi/zig/ # Zig FFI (12 exports)
│ ├── src/ # Editor UI + WorldGen + PixiJS
│ └── src-tauri/ # Rust backend
│ └── gossamer/ # Gossamer webview shell (Ephapax-based; replaces Tauri)
├── idaptik-developers/ # Developer portal
│ ├── src/escape-hatch/ # Rust TUI (ratatui)
│ └── docs/ # White papers
Expand Down
2 changes: 1 addition & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ This file tracks the current state and future direction of IDApTIK.

- [ ] Grumble voice protocol (Mumble-inspired, in-game comms between Jessica and Q)
- [ ] Remaining 4 team-specific PanLL panels
- [ ] Mobile builds via Tauri 2 (iOS and Android targets)
- [ ] Mobile builds via Gossamer (iOS and Android targets — parked pending Gossamer mobile target support)
- [ ] UMS distribution packaging (AppImage, .dmg, .msi)
- [ ] Network infrastructure Phase 2: LDAP, SIEM, internal DNS
- [ ] Jessica's skills tree — **parked for co-design with son**
Expand Down
6 changes: 3 additions & 3 deletions STAPEL-VOLL-AUDIT.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,9 @@ Per the existing migration-ordering memory (toolchain → bindings → src/app
- Add `/.well-known/groove/manifest.json` to each service.

### Wave 3 — Language migrations (independent of containerization)
- ReScript → AffineScript→typed-wasm (`src/`, `vm/lib/ocaml/`, `shared/src/` — ~542 files; per memory, app layer before kernel).
- TS → AffineScript→typed-wasm (DLC packs in `dlc/idaptik-dlc-reversible/`, `idaptiky/`, `idaptik-reversibley/` — ~80 files).
- Rust → Rust/SPARK (escape-hatch, verisimdb).
- ReScript → AffineScript→typed-wasm (`src/`, `vm/lib/ocaml/`, `shared/src/` — ~462 files as of 2026-06-01; per memory, app layer before kernel).
- TS → AffineScript→typed-wasm (DLC packs in the `dlc/idaptik-dlc-reversible/` submodule — the only DLC submodule per `.gitmodules`; earlier drafts mentioned `idaptiky/` and `idaptik-reversibley/` as siblings but those never existed and have been removed from this audit).
- Rust → Rust/SPARK (escape-hatch under `idaptik-developers/src/escape-hatch/`, verisimdb).

Wave 3 happens **inside the containers built in Waves 0–1**, so it's gated on (and benefits from) Wave 0 being complete.

Expand Down
4 changes: 2 additions & 2 deletions TOPOLOGY.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ idaptik/
│ ├── config/ # Server configuration (dev, prod)
│ └── mix.exs # Elixir dependencies
├── idaptik-ums/ # Universal Modding Studio (Tauri 2)
├── idaptik-ums/ # Universal Modding Studio (Gossamer / Ephapax)
│ ├── src/ # Editor UI, WorldGen, PixiJS
│ │ ├── abi/ # Idris2 ABI definitions (15 modules)
│ │ └── editor/ # Visual level editor
Expand Down Expand Up @@ -152,7 +152,7 @@ idaptik/

┌──────────────┐ ABI/FFI ┌──────────────┐
│ UMS Editor │◄──────────────────►│ Idris2+Zig │
│ (Tauri 2) │ │ ABI/FFI │
│ (Gossamer) │ │ ABI/FFI │
└──────────────┘ └──────────────┘
```

Expand Down
12 changes: 6 additions & 6 deletions idaptik-developers/docs/DEVELOPER-WHITEPAPER.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ IDApTIK is designed for extensibility. Third-party developers can create:
can be shared across multiple levels.

All content creation flows through the Universal Modding Studio (UMS), a
Tauri-based desktop application that provides visual editors, validation
tooling, and distribution infrastructure.
Gossamer-based desktop application (Ephapax webview shell) that provides
visual editors, validation tooling, and distribution infrastructure.


== Architecture Overview
Expand All @@ -65,10 +65,10 @@ tooling, and distribution infrastructure.
....
+---------------------------+ +---------------------------+
| Browser Client | | Universal Modding |
| (ReScript + Vite) | | Studio (Tauri 2.0) |
| (ReScript + Vite) | | Studio (Gossamer) |
+----------+----------------+ +----------+----------------+
| |
| Phoenix Channels | Tauri IPC / Zig FFI
| Phoenix Channels | Gossamer IPC / Zig FFI
| |
+----------v---------------------------------v----------------+
| Sync Server (Elixir/OTP) |
Expand All @@ -92,7 +92,7 @@ tooling, and distribution infrastructure.
| Frontend | ReScript 12.1.0 + Vite | Game UI, canvas rendering, VM integration, i18n
| Virtual Machine | ReScript | 23-instruction reversible VM with execute/invert symmetry
| Sync Server | Elixir + Phoenix 1.7 + Bandit | Real-time multiplayer, state synchronisation
| Content Tooling | Tauri 2.0 (Rust + ReScript) | Universal Modding Studio desktop application
| Content Tooling | Gossamer (Ephapax + ReScript) | Universal Modding Studio desktop application
| ABI Definitions | Idris2 0.8.0 | Formal verification of level data with dependent types
| FFI Implementation | Zig 0.13 | C-ABI shared library for cross-language interop
| Caching | ETS | In-process session and VM state caching
Expand Down Expand Up @@ -381,7 +381,7 @@ information via `broadcast_from!/3`.

. *Idris2 ABI* (15 modules in `src/abi/`) -- compile-time proofs.
. *Zig FFI* (4 files in `ffi/zig/`) -- runtime validation via `libidaptik_ums.so`.
. *ReScript bridge* -- game integration through Tauri IPC or Deno FFI.
. *ReScript bridge* -- game integration through Gossamer IPC or Deno FFI.

=== The Five Cross-Domain Proofs

Expand Down
14 changes: 7 additions & 7 deletions idaptik-ums/ABI-FFI-README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The Universal Modding Studio uses the hyperpolymath standard ABI/FFI/API archite
| **ABI** | Idris2 | Level data model with dependent type proofs | `src/abi/` |
| **FFI** | Zig | C-compatible shared library | `ffi/zig/` |
| **Headers** | C (generated) | Bridge between ABI and FFI consumers | `generated/abi/` |
| **Shell** | Rust (Tauri 2.0) | Desktop app with IPC commands | `src-tauri/` |
| **Shell** | Ephapax (Gossamer) | Desktop app with IPC commands | `gossamer/` |
| **Frontend** | ReScript | Editor UI and generators | `src/` |

## ABI Layer (Idris2)
Expand Down Expand Up @@ -77,11 +77,11 @@ cd ffi/zig && zig build
# Run Zig tests (20 integration tests)
cd ffi/zig && zig build test

# Build Tauri desktop app
cd src-tauri && cargo build
# Build Gossamer desktop app
cd gossamer && ephapax build

# Run Rust tests (13 tests)
cd src-tauri && cargo test
# Run Gossamer tests (13 tests)
cd gossamer && ephapax test
```

## Data Flow
Expand All @@ -90,8 +90,8 @@ cd src-tauri && cargo test
User interaction (Canvas UI)
↓ ReScript editor state
JSON serialisation (LevelConfigCodec)
Tauri IPC
Rust validation (mirrors Idris2 proofs)
Gossamer IPC
Ephapax validation (mirrors Idris2 proofs)
↓ or alternatively
Zig FFI validation (libidaptik_ums.so)
Expand Down
14 changes: 7 additions & 7 deletions idaptik-ums/TOPOLOGY.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
│ Editor UI (ReScript) │
│ App.res → Editor.res → Canvas/Toolbar/Properties │
├─────────────────────────────────────────────────────┤
Tauri 2.0 Shell (Rust)
lib.rscommands.rs (6 IPC commands)
Gossamer Shell (Ephapax)
main.ephShell.eph (18 IPC commands) │
├─────────────────────────────────────────────────────┤
│ ReScript Generators (26 modules) │
│ LevelGen → NetworkGen → LevelExport → LevelRender │
Expand Down Expand Up @@ -57,7 +57,7 @@ idaptik-ums/
│ │ ├── EditorToolbar.res # Tool palette sidebar
│ │ ├── EditorProperties.res # Property inspector
│ │ ├── EditorValidation.res # ABI proof badges
│ │ ├── EditorCmd.res # Tauri IPC wrappers
│ │ ├── EditorCmd.res # Gossamer IPC wrappers
│ │ └── Editor.res # Main TEA compositor
│ ├── generator/ # Procedural level generation (16 modules)
│ │ ├── LevelGen.res.mjs # Grid-based generation
Expand Down Expand Up @@ -103,8 +103,8 @@ idaptik-ums/
```
User (canvas click) → EditorEngine (entity CRUD)
→ EditorCanvas (render) + EditorProperties (inspect)
→ EditorCmd.saveLevel → Tauri IPC
commands.rs validate_level_abi → 5 proof checks
→ EditorCmd.saveLevel → Gossamer IPC
Shell.eph validate_level_abi → 5 proof checks
→ EditorValidation (display results)
→ EditorCmd.exportLevelConfig → ReScript LevelConfig
→ game/src/shared/UmsLevelLoader.res → LevelConfig.levelConfig
Expand All @@ -117,7 +117,7 @@ User (canvas click) → EditorEngine (entity CRUD)
|-------|----------|---------------|------|
| Compile-time | Idris2 | Dependent type proofs (erased) | `idris2 --check` |
| Build-time | Zig | Type safety, memory safety | `zig build test` |
| Runtime | Rust | 5 ABI proofs (mirrors Idris2) | Tauri command |
| Runtime | Ephapax | 5 ABI proofs (mirrors Idris2) | Gossamer command |
| Runtime | Zig FFI | 5 ABI proofs (via libidaptik_ums) | FFI call |
| Cross-panel | TypeLL | Level data type checking | PanLL validation |
| Cross-panel | BoJ | UMS cartridge routing | ums-mcp |
Expand All @@ -128,5 +128,5 @@ User (canvas click) → EditorEngine (entity CRUD)
|-------|-------|--------|
| Idris2 ABI | type-checks | `idris2 --check` |
| Zig FFI | 20 | `zig build test` |
| Rust shell | 17 | `cargo test` |
| Gossamer shell | 17 | `ephapax test` |
| Test data | 2 fixtures | used by Rust tests |
4 changes: 2 additions & 2 deletions idaptik-ums/docs/design/GAME-INTEGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ at runtime, bypassing the hardcoded database.
2. **Game side**: `UmsLevelLoader.loadFromJson(jsonString)` parses that JSON
into the game's native `LevelConfig.levelConfig` type.
3. **File loading**: `UmsLevelLoader.loadFromFile(path)` reads a JSON file via
Tauri's `readTextFile` and feeds it through `loadFromJson`.
Gossamer's `readTextFile` and feeds it through `loadFromJson`.

## JSON Schema

Expand Down Expand Up @@ -193,7 +193,7 @@ switch UmsLevelLoader.loadFromJson(jsonFromUms) {
}
```

### From a file (Tauri desktop/mobile)
### From a file (Gossamer desktop/mobile)

```rescript
// Loading a .json file exported by the UMS level editor:
Expand Down
4 changes: 2 additions & 2 deletions llm-warmup-dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Author: Jonathan D.A. Jewell. LIVE repo (not staging).
| Module system | esmodule (in-source, .res.mjs) |
| Multiplayer | Elixir/Phoenix (port 4030) |
| Escape hatch | Rust + ratatui (TUI) |
| Modding studio | Tauri 2 + Zig FFI + Idris2 ABI |
| Modding studio | Gossamer (Ephapax) + Zig FFI + Idris2 ABI |
| Audio | @pixi/sound |
| Animation | motion (tweening) |
| Assets | AssetPack (raw-assets/ -> public/assets/) |
Expand Down Expand Up @@ -91,7 +91,7 @@ Elixir/Phoenix. Port 4030. 6/6 connectivity tests pass.
Config: `sync-server/config/`. Start: `deno task sync-server`.

### UMS (`idaptik-ums/`)
Tauri 2 shell (Rust). Zig FFI (`ffi/zig/`, 20 tests).
Gossamer shell (Ephapax, at `idaptik-ums/gossamer/`). Zig FFI (`ffi/zig/`, 20 tests).
Idris2 ABI definitions.

### Escape Hatch (`escape-hatch/`)
Expand Down
8 changes: 4 additions & 4 deletions llm-warmup-user.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ just doctor # Check prerequisites
## Prerequisites

**Core**: Deno 2.0+, just.
**Optional**: Zig (UMS FFI), Rust (UMS Tauri + escape-hatch), Elixir
(sync server), Julia (testing toolkit).
**Optional**: Zig (UMS FFI), Ephapax (UMS Gossamer shell), Rust (escape-hatch),
Elixir (sync server), Julia (testing toolkit).

After cloning: `deno install` to fetch all dependencies.

Expand All @@ -33,14 +33,14 @@ After cloning: `deno install` to fetch all dependencies.
- `vm/` — Pure reversible VM (23 instructions, all reversible)
- `shared/` — Cross-component types (224 modules, 422 tests)
- `sync-server/` — Elixir/Phoenix multiplayer (port 4030)
- `idaptik-ums/` — Unified Modding Studio (Tauri 2)
- `idaptik-ums/` — Unified Modding Studio (Gossamer/Ephapax shell)
- `escape-hatch/` — Rust TUI developer tool
- `dlc/` — Downloadable content packs

## Technology

ReScript 12.2.0, Deno runtime, PixiJS 8.8.1, Vite 6.2.0,
Elixir/Phoenix (sync), Rust + ratatui (escape-hatch), Tauri 2 (UMS).
Elixir/Phoenix (sync), Rust + ratatui (escape-hatch), Gossamer/Ephapax (UMS).

## SAFETY

Expand Down
2 changes: 1 addition & 1 deletion locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
"integrations.createDesktop": "Desktop-Verknpfung erstellen",
"integrations.createMenu": "Men-Verknpfung erstellen",
"integrations.tray": "System-Tray",
"integrations.requires": "Bentigt Linux (Desktop/Men) oder Tauri (Tray)",
"integrations.requires": "Bentigt Linux (Desktop/Men) oder Gossamer (Tray)",
"settings.ok": "OK",
"worldmap.title": "ORT AUSWHLEN",
"worldmap.subtitle": "Whle einen Ort zum Infiltrieren",
Expand Down
2 changes: 1 addition & 1 deletion locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
"integrations.createDesktop": "Create Desktop Shortcut",
"integrations.createMenu": "Create Application Menu Shortcut",
"integrations.tray": "System Tray",
"integrations.requires": "Requires Linux (Desktop/Menu) or Tauri (Tray)",
"integrations.requires": "Requires Linux (Desktop/Menu) or Gossamer (Tray)",
"settings.ok": "OK",
"worldmap.title": "SELECT LOCATION",
"worldmap.subtitle": "Choose a location to infiltrate",
Expand Down
2 changes: 1 addition & 1 deletion locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
"integrations.createDesktop": "Crear acceso directo en escritorio",
"integrations.createMenu": "Crear acceso directo en el men",
"integrations.tray": "Bandeja del sistema",
"integrations.requires": "Requiere Linux (Escritorio/Men) o Tauri (Bandeja)",
"integrations.requires": "Requiere Linux (Escritorio/Men) o Gossamer (Bandeja)",
"settings.ok": "OK",
"worldmap.title": "SELECCIONAR UBICACIN",
"worldmap.subtitle": "Elige una ubicacin para infiltrar",
Expand Down
2 changes: 1 addition & 1 deletion locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
"integrations.createDesktop": "Crer un raccourci sur le bureau",
"integrations.createMenu": "Crer un raccourci dans le menu",
"integrations.tray": "Barre d'tat systme",
"integrations.requires": "Ncessite Linux (Bureau/Menu) ou Tauri (Barre d'tat)",
"integrations.requires": "Ncessite Linux (Bureau/Menu) ou Gossamer (Barre d'tat)",
"settings.ok": "OK",
"worldmap.title": "CHOISIR UN LIEU",
"worldmap.subtitle": "Choisissez un lieu infiltrer",
Expand Down
2 changes: 1 addition & 1 deletion locales/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
"integrations.createDesktop": "",
"integrations.createMenu": "",
"integrations.tray": "",
"integrations.requires": "Linux (/) Tauri () ",
"integrations.requires": "Linux (/) Gossamer () ",
"settings.ok": "OK",
"worldmap.title": "",
"worldmap.subtitle": "",
Expand Down
Loading