create-ekka-desktop-app 0.3.6 → 0.3.8
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/package.json +1 -1
- package/template/package.json +2 -1
- package/template/src/demo/DemoApp.tsx +43 -1
- package/template/src/demo/pages/DocGenPage.tsx +425 -568
- package/template/src/demo/pages/RunnerPage.tsx +10 -10
- package/template/src/ekka/ops/executionRuns.ts +147 -0
- package/template/src/ekka/ops/runner.ts +19 -5
- package/template/src/ekka/ops/workflowRuns.ts +4 -1
- package/template/src-tauri/Cargo.toml +1 -18
- package/template/src-tauri/src/main.rs +395 -239
- package/template/src-tauri/src/node_runner.rs +106 -53
package/package.json
CHANGED
package/template/package.json
CHANGED
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"preview": "vite preview",
|
|
15
15
|
"tauri": "tauri",
|
|
16
16
|
"tauri:dev": "tauri dev",
|
|
17
|
-
"
|
|
17
|
+
"prebuild:check": "node -e \"const fs=require('fs');const p=s=>{try{return fs.readFileSync(s,'utf8')}catch{return''}};const e=['.env.local','.env','src-tauri/.env.local','src-tauri/.env'].map(p).join('\\n');if(!/^EKKA_ENGINE_URL=.+/m.test(e)&&!process.env.EKKA_ENGINE_URL){console.error('\\n❌ EKKA_ENGINE_URL not set. Add to .env.local before building:\\n\\n echo \\'EKKA_ENGINE_URL=https://api.ekka.ai\\' >> .env.local\\n');process.exit(1)}console.log('✓ EKKA_ENGINE_URL configured')\"",
|
|
18
|
+
"tauri:build": "npm run prebuild:check && tauri build"
|
|
18
19
|
},
|
|
19
20
|
"dependencies": {
|
|
20
21
|
"@tauri-apps/api": "^2.0.0",
|
|
@@ -35,6 +35,34 @@ interface DemoState {
|
|
|
35
35
|
error: string | null;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
// DocGen state persisted across tab switches
|
|
39
|
+
interface DocGenPersistedState {
|
|
40
|
+
runId: string | null;
|
|
41
|
+
folder: string | null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const DOCGEN_STORAGE_KEY = 'ekka.docgen.state';
|
|
45
|
+
|
|
46
|
+
function loadDocGenState(): DocGenPersistedState {
|
|
47
|
+
try {
|
|
48
|
+
const saved = localStorage.getItem(DOCGEN_STORAGE_KEY);
|
|
49
|
+
if (saved) {
|
|
50
|
+
return JSON.parse(saved) as DocGenPersistedState;
|
|
51
|
+
}
|
|
52
|
+
} catch {
|
|
53
|
+
// Ignore parse errors
|
|
54
|
+
}
|
|
55
|
+
return { runId: null, folder: null };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function saveDocGenState(state: DocGenPersistedState): void {
|
|
59
|
+
try {
|
|
60
|
+
localStorage.setItem(DOCGEN_STORAGE_KEY, JSON.stringify(state));
|
|
61
|
+
} catch {
|
|
62
|
+
// Ignore storage errors
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
38
66
|
export function DemoApp(): ReactElement {
|
|
39
67
|
const [selectedPage, setSelectedPage] = useState<Page>('path-permissions');
|
|
40
68
|
const [darkMode, setDarkMode] = useState<boolean>(() => {
|
|
@@ -51,6 +79,14 @@ export function DemoApp(): ReactElement {
|
|
|
51
79
|
error: null,
|
|
52
80
|
});
|
|
53
81
|
|
|
82
|
+
// DocGen state - persisted to localStorage
|
|
83
|
+
const [docGenState, setDocGenState] = useState<DocGenPersistedState>(loadDocGenState);
|
|
84
|
+
|
|
85
|
+
const handleDocGenStateChange = (newState: DocGenPersistedState) => {
|
|
86
|
+
setDocGenState(newState);
|
|
87
|
+
saveDocGenState(newState);
|
|
88
|
+
};
|
|
89
|
+
|
|
54
90
|
useEffect(() => {
|
|
55
91
|
void initializeApp();
|
|
56
92
|
}, []);
|
|
@@ -251,7 +287,13 @@ export function DemoApp(): ReactElement {
|
|
|
251
287
|
{state.error && <div style={errorStyle}>{state.error}</div>}
|
|
252
288
|
{selectedPage === 'path-permissions' && <PathPermissionsPage darkMode={darkMode} />}
|
|
253
289
|
{selectedPage === 'vault' && <VaultPage darkMode={darkMode} />}
|
|
254
|
-
{selectedPage === 'doc-gen' &&
|
|
290
|
+
{selectedPage === 'doc-gen' && (
|
|
291
|
+
<DocGenPage
|
|
292
|
+
darkMode={darkMode}
|
|
293
|
+
persistedState={docGenState}
|
|
294
|
+
onStateChange={handleDocGenStateChange}
|
|
295
|
+
/>
|
|
296
|
+
)}
|
|
255
297
|
{selectedPage === 'runner' && <RunnerPage darkMode={darkMode} />}
|
|
256
298
|
{selectedPage === 'audit-log' && <AuditLogPage darkMode={darkMode} />}
|
|
257
299
|
{selectedPage === 'system' && <SystemPage darkMode={darkMode} />}
|