Skip to content

Commit 9da6d7a

Browse files
hyperpolymathclaude
andcommitted
feat: Gossamer migration — RuntimeBridge, gossamer.conf.json, Tauri→Gossamer conversion
Added Gossamer configuration and RuntimeBridge alongside existing Tauri setup. Tauri files preserved for transition period. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 62b3b66 commit 9da6d7a

5 files changed

Lines changed: 562 additions & 61 deletions

File tree

gui/deno.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
"tasks": {
33
"dev": "deno task rescript && tauri dev",
44
"build": "deno task rescript && tauri build",
5+
"dev:gossamer": "deno task rescript && gossamer dev",
6+
"build:gossamer": "deno task rescript && gossamer build",
57
"rescript": "^12.0.0",
68
"rescript:watch": "npx rescript build -w",
79
"rescript:clean": "npx rescript clean"
@@ -11,6 +13,7 @@
1113
"@tauri-apps/plugin-shell": "npm:@tauri-apps/plugin-shell@2",
1214
"@tauri-apps/plugin-dialog": "npm:@tauri-apps/plugin-dialog@2",
1315
"@tauri-apps/plugin-fs": "npm:@tauri-apps/plugin-fs@2",
16+
"@gossamer/api": "npm:@gossamer/api@^1",
1417
"@rescript/core": "npm:@rescript/core@1"
1518
},
1619
"compilerOptions": {

gui/src-tauri/gossamer.conf.json

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
{
2+
"$schema": "https://gossamer.dev/schemas/config/v1",
3+
"productName": "intsoc-transactor",
4+
"version": "0.1.0",
5+
"identifier": "org.hyperpolymath.intsoc-transactor",
6+
"build": {
7+
"frontendDist": "../",
8+
"devUrl": "http://localhost:1420",
9+
"beforeDevCommand": "",
10+
"beforeBuildCommand": ""
11+
},
12+
"app": {
13+
"windows": [
14+
{
15+
"label": "main",
16+
"title": "intsoc-transactor - Internet Society Document Processing",
17+
"width": 1200,
18+
"height": 800,
19+
"minWidth": 800,
20+
"minHeight": 600,
21+
"maxWidth": null,
22+
"maxHeight": null,
23+
"resizable": true,
24+
"fullscreen": false,
25+
"decorations": true,
26+
"transparent": false,
27+
"center": true,
28+
"alwaysOnTop": false,
29+
"visible": true,
30+
"url": "/"
31+
}
32+
],
33+
"security": {
34+
"csp": "default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.tailwindcss.com; style-src 'self' 'unsafe-inline'",
35+
"capabilities": [
36+
"filesystem",
37+
"network",
38+
"shell",
39+
"clipboard"
40+
],
41+
"capabilityTokens": {
42+
"enabled": false,
43+
"issuer": "gossamer-runtime",
44+
"ttl": 3600
45+
},
46+
"sandbox": {
47+
"enabled": true,
48+
"allowExec": true,
49+
"allowNetwork": true,
50+
"allowFilesystem": true
51+
}
52+
},
53+
"ipc": {
54+
"protocol": "json",
55+
"bridgeInjection": true,
56+
"maxMessageSize": 16777216,
57+
"timeout": 30000
58+
},
59+
"tray": {
60+
"enabled": false,
61+
"icon": null,
62+
"tooltip": null,
63+
"menuOnLeftClick": true
64+
}
65+
},
66+
"plugins": {
67+
"shell": {
68+
"scope": [
69+
{
70+
"name": "idnits",
71+
"cmd": "idnits",
72+
"args": true
73+
},
74+
{
75+
"name": "xml2rfc",
76+
"cmd": "xml2rfc",
77+
"args": true
78+
}
79+
]
80+
}
81+
},
82+
"bundle": {
83+
"active": true,
84+
"targets": [
85+
"deb",
86+
"appimage",
87+
"dmg",
88+
"nsis"
89+
],
90+
"icon": [],
91+
"resources": [],
92+
"copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath)",
93+
"license": "PMPL-1.0-or-later",
94+
"shortDescription": "IETF document processing tool",
95+
"longDescription": "Internet Society document processing tool for validating and fixing Internet-Drafts using idnits and xml2rfc.",
96+
"linux": {
97+
"desktopEntry": true,
98+
"category": "Office",
99+
"section": "text",
100+
"depends": [],
101+
"appimage": {
102+
"bundleMediaFramework": false
103+
}
104+
},
105+
"macos": {
106+
"bundleIdentifier": "org.hyperpolymath.intsoc-transactor",
107+
"minimumSystemVersion": "11.0",
108+
"frameworks": [],
109+
"entitlements": null,
110+
"signingIdentity": null,
111+
"notarization": {
112+
"enabled": false,
113+
"teamId": null
114+
}
115+
},
116+
"windows": {
117+
"webview2": "embed",
118+
"certificateThumbprint": null,
119+
"wix": {
120+
"language": "en-US"
121+
},
122+
"nsis": {
123+
"displayLanguageSelector": false,
124+
"installerIcon": null
125+
}
126+
},
127+
"mobile": {
128+
"ios": {
129+
"minimumVersion": "14.0",
130+
"deviceFamily": [
131+
"iphone",
132+
"ipad"
133+
],
134+
"capabilities": [],
135+
"frameworks": [],
136+
"entitlements": {}
137+
},
138+
"android": {
139+
"minimumSdk": 24,
140+
"targetSdk": 34,
141+
"permissions": [],
142+
"features": []
143+
}
144+
}
145+
},
146+
"ephapax": {
147+
"modules": [],
148+
"region": "app",
149+
"linearVerification": true,
150+
"regionBoundary": "strict",
151+
"preload": []
152+
}
153+
}

gui/src/App.res

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type model = {
3333
* ASYNCHRONOUS PATTERN:
3434
* - User triggers an action (e.g., `RunCheck`).
3535
* - Update function returns a new model (`checkState: Loading`) and
36-
* a Command (`Tea_Cmd.call`) to invoke the Rust backend via Tauri.
36+
* a Command (`Tea_Cmd.call`) to invoke the Rust backend.
3737
* - When the Rust backend returns, it enqueues a completion message
3838
* (`CheckCompleted`), which the Update function then processes.
3939
*/

0 commit comments

Comments
 (0)