ltcai 4.0.1 → 4.1.0

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.
Files changed (150) hide show
  1. package/README.md +28 -23
  2. package/desktop/electron/main.cjs +44 -0
  3. package/docs/CHANGELOG.md +42 -0
  4. package/docs/V4_1_FRONTEND_ARCHITECTURE_REVIEW.md +65 -0
  5. package/docs/V4_1_FRONTEND_MIGRATION_REPORT.md +70 -0
  6. package/docs/V4_1_VALIDATION_REPORT.md +47 -0
  7. package/docs/V4_DIGITAL_BRAIN_RECOVERY.md +26 -19
  8. package/frontend/index.html +24 -0
  9. package/frontend/openapi.json +14190 -0
  10. package/frontend/src/App.tsx +184 -0
  11. package/frontend/src/api/client.ts +317 -0
  12. package/frontend/src/api/openapi.ts +16637 -0
  13. package/frontend/src/components/primitives.tsx +204 -0
  14. package/frontend/src/components/ui/badge.tsx +27 -0
  15. package/frontend/src/components/ui/button.tsx +37 -0
  16. package/frontend/src/components/ui/card.tsx +22 -0
  17. package/frontend/src/components/ui/input.tsx +16 -0
  18. package/frontend/src/components/ui/textarea.tsx +16 -0
  19. package/frontend/src/lib/utils.ts +33 -0
  20. package/frontend/src/main.tsx +23 -0
  21. package/frontend/src/pages/Act.tsx +245 -0
  22. package/frontend/src/pages/Ask.tsx +200 -0
  23. package/frontend/src/pages/Brain.tsx +267 -0
  24. package/frontend/src/pages/Capture.tsx +158 -0
  25. package/frontend/src/pages/Library.tsx +187 -0
  26. package/frontend/src/pages/System.tsx +344 -0
  27. package/frontend/src/routes.ts +85 -0
  28. package/frontend/src/store/appStore.ts +54 -0
  29. package/frontend/src/styles.css +107 -0
  30. package/latticeai/__init__.py +1 -1
  31. package/latticeai/api/setup.py +5 -4
  32. package/latticeai/api/static_routes.py +4 -4
  33. package/latticeai/core/marketplace.py +1 -1
  34. package/latticeai/core/multi_agent.py +1 -1
  35. package/latticeai/core/workspace_os.py +1 -1
  36. package/package.json +54 -15
  37. package/scripts/build_frontend_assets.mjs +38 -0
  38. package/scripts/bump_version.py +1 -1
  39. package/scripts/export_openapi.py +31 -0
  40. package/scripts/lint_frontend.mjs +86 -0
  41. package/scripts/run_python.mjs +47 -0
  42. package/src-tauri/Cargo.lock +4833 -0
  43. package/src-tauri/Cargo.toml +19 -0
  44. package/src-tauri/build.rs +3 -0
  45. package/src-tauri/capabilities/default.json +7 -0
  46. package/src-tauri/src/main.rs +78 -0
  47. package/src-tauri/tauri.conf.json +36 -0
  48. package/static/app/asset-manifest.json +32 -0
  49. package/static/app/assets/core-CwxXejkd.js +2 -0
  50. package/static/app/assets/core-CwxXejkd.js.map +1 -0
  51. package/static/app/assets/index-CJRAzNnf.js +333 -0
  52. package/static/app/assets/index-CJRAzNnf.js.map +1 -0
  53. package/static/app/assets/index-CSwBBgf4.css +2 -0
  54. package/static/app/index.html +25 -0
  55. package/static/manifest.json +2 -2
  56. package/static/sw.js +4 -4
  57. package/scripts/build_v3_assets.mjs +0 -170
  58. package/scripts/lint_v3.mjs +0 -120
  59. package/static/v3/asset-manifest.json +0 -63
  60. package/static/v3/css/lattice.base.49deefb5.css +0 -128
  61. package/static/v3/css/lattice.base.css +0 -128
  62. package/static/v3/css/lattice.components.cde18231.css +0 -472
  63. package/static/v3/css/lattice.components.css +0 -472
  64. package/static/v3/css/lattice.shell.29d36d85.css +0 -452
  65. package/static/v3/css/lattice.shell.css +0 -452
  66. package/static/v3/css/lattice.tokens.304cbc40.css +0 -135
  67. package/static/v3/css/lattice.tokens.css +0 -135
  68. package/static/v3/css/lattice.views.0a18b6c5.css +0 -360
  69. package/static/v3/css/lattice.views.css +0 -360
  70. package/static/v3/index.html +0 -68
  71. package/static/v3/js/app.c5c80c46.js +0 -26
  72. package/static/v3/js/app.js +0 -26
  73. package/static/v3/js/core/api.ba0fbf14.js +0 -625
  74. package/static/v3/js/core/api.js +0 -625
  75. package/static/v3/js/core/components.f25b3b93.js +0 -230
  76. package/static/v3/js/core/components.js +0 -230
  77. package/static/v3/js/core/dom.a2773eb0.js +0 -148
  78. package/static/v3/js/core/dom.js +0 -148
  79. package/static/v3/js/core/i18n.880e1fec.js +0 -575
  80. package/static/v3/js/core/i18n.js +0 -575
  81. package/static/v3/js/core/router.584570f2.js +0 -37
  82. package/static/v3/js/core/router.js +0 -37
  83. package/static/v3/js/core/routes.37522821.js +0 -101
  84. package/static/v3/js/core/routes.js +0 -101
  85. package/static/v3/js/core/shell.e3f6bbfa.js +0 -420
  86. package/static/v3/js/core/shell.js +0 -420
  87. package/static/v3/js/core/store.7b2aa044.js +0 -123
  88. package/static/v3/js/core/store.js +0 -123
  89. package/static/v3/js/views/account.eff40715.js +0 -143
  90. package/static/v3/js/views/account.js +0 -143
  91. package/static/v3/js/views/activity.0d271ef9.js +0 -67
  92. package/static/v3/js/views/activity.js +0 -67
  93. package/static/v3/js/views/admin-audit.660a1fb1.js +0 -185
  94. package/static/v3/js/views/admin-audit.js +0 -185
  95. package/static/v3/js/views/admin-permissions.a7ae5f09.js +0 -177
  96. package/static/v3/js/views/admin-permissions.js +0 -177
  97. package/static/v3/js/views/admin-policies.3658fd86.js +0 -102
  98. package/static/v3/js/views/admin-policies.js +0 -102
  99. package/static/v3/js/views/admin-private-vpc.7d342d36.js +0 -135
  100. package/static/v3/js/views/admin-private-vpc.js +0 -135
  101. package/static/v3/js/views/admin-security.07c66b72.js +0 -180
  102. package/static/v3/js/views/admin-security.js +0 -180
  103. package/static/v3/js/views/admin-users.f7ac7b43.js +0 -166
  104. package/static/v3/js/views/admin-users.js +0 -166
  105. package/static/v3/js/views/agents.17c5288d.js +0 -564
  106. package/static/v3/js/views/agents.js +0 -564
  107. package/static/v3/js/views/chat.e250e2cc.js +0 -624
  108. package/static/v3/js/views/chat.js +0 -624
  109. package/static/v3/js/views/files.adad14c1.js +0 -365
  110. package/static/v3/js/views/files.js +0 -365
  111. package/static/v3/js/views/graph-canvas.17c15d65.js +0 -509
  112. package/static/v3/js/views/graph-canvas.js +0 -509
  113. package/static/v3/js/views/home.24f8b8ae.js +0 -200
  114. package/static/v3/js/views/home.js +0 -200
  115. package/static/v3/js/views/hooks.37895880.js +0 -220
  116. package/static/v3/js/views/hooks.js +0 -220
  117. package/static/v3/js/views/hybrid-search.2fb63ed9.js +0 -194
  118. package/static/v3/js/views/hybrid-search.js +0 -194
  119. package/static/v3/js/views/knowledge-graph.4d09c537.js +0 -529
  120. package/static/v3/js/views/knowledge-graph.js +0 -529
  121. package/static/v3/js/views/marketplace.ab0583d4.js +0 -141
  122. package/static/v3/js/views/marketplace.js +0 -141
  123. package/static/v3/js/views/mcp.99b5c6a7.js +0 -114
  124. package/static/v3/js/views/mcp.js +0 -114
  125. package/static/v3/js/views/memory.4ebdf474.js +0 -147
  126. package/static/v3/js/views/memory.js +0 -147
  127. package/static/v3/js/views/models.a1ffa147.js +0 -256
  128. package/static/v3/js/views/models.js +0 -256
  129. package/static/v3/js/views/my-computer.d9d9ae1c.js +0 -463
  130. package/static/v3/js/views/my-computer.js +0 -463
  131. package/static/v3/js/views/network.52a4f181.js +0 -97
  132. package/static/v3/js/views/network.js +0 -97
  133. package/static/v3/js/views/pipeline.c522f1ce.js +0 -157
  134. package/static/v3/js/views/pipeline.js +0 -157
  135. package/static/v3/js/views/planning.4876fd77.js +0 -174
  136. package/static/v3/js/views/planning.js +0 -174
  137. package/static/v3/js/views/runs.b63b2afa.js +0 -144
  138. package/static/v3/js/views/runs.js +0 -144
  139. package/static/v3/js/views/settings.b7140634.js +0 -317
  140. package/static/v3/js/views/settings.js +0 -317
  141. package/static/v3/js/views/skills.c6c2f965.js +0 -109
  142. package/static/v3/js/views/skills.js +0 -109
  143. package/static/v3/js/views/snapshots.6f5db095.js +0 -135
  144. package/static/v3/js/views/snapshots.js +0 -135
  145. package/static/v3/js/views/tools.e4f11276.js +0 -108
  146. package/static/v3/js/views/tools.js +0 -108
  147. package/static/v3/js/views/workflows.7752225a.js +0 -213
  148. package/static/v3/js/views/workflows.js +0 -213
  149. package/static/v3/js/views/workspace-admin.c466029b.js +0 -156
  150. package/static/v3/js/views/workspace-admin.js +0 -156
package/README.md CHANGED
@@ -203,34 +203,34 @@ npm run dev
203
203
 
204
204
  ## Latest Release
205
205
 
206
- ### v4.0.1Digital Brain Platform Maintenance
207
-
208
- - **Brain store architecture** — `knowledge_graph.py` is now a compatibility
209
- shim over focused `latticeai/brain/` modules.
210
- - **v2 write-mastered graph** — `nodes_v2` / `edges_v2` are authoritative;
211
- legacy tables stay as a compatibility projection, with pre-flip backup and
212
- DB-format guard.
213
- - **Durable memory and context** conversations, decisions, experiences, and
214
- context traces live in the brain database family.
215
- - **Real act/runtime foundation** workflows execute governed tools, pause for
216
- approval, run asynchronously with SSE progress/cancellation, and LLM-backed
217
- agent runs fail closed instead of fabricating output.
218
- - **Durable workspace governance** stable user UUIDs, enforced policy,
219
- invitations, and SQLite-backed Workspace OS state preserve identity and
220
- workspace history without destructive migration.
221
- - **Local sovereignty** — signed exports, device identity, scoped graph export,
222
- and Brain Network peer exchange are implemented at the API layer.
223
- - **Post-v4 parity closure** — durable async runs, stable identity/workspace
224
- state, and the complete `/app` SPA parity/legacy-retirement work are included
225
- in this maintenance release.
226
-
227
- See [RELEASE_NOTES_v4.0.1.md](RELEASE_NOTES_v4.0.1.md),
206
+ ### v4.1.0 RC Frontend & Desktop Rebuild
207
+
208
+ - **React desktop SPA** — `/app` is now a React + TypeScript + Vite application
209
+ with TanStack Query, Zustand, React Flow, Cytoscape.js, Tailwind CSS, and
210
+ local shadcn-style primitives.
211
+ - **Generated API client** frontend JSON calls consume the existing FastAPI
212
+ contract through a generated OpenAPI TypeScript client; streaming chat and
213
+ multipart upload remain honest fetch special cases.
214
+ - **Tauri-first desktop shell** — Tauri 2.0 is the primary desktop target,
215
+ launching the local backend by default; Electron is retained as a fallback
216
+ shell only.
217
+ - **Graph-first navigation** the primary surfaces are Brain, Ask, Capture,
218
+ Act, Library, and System, with old `/app#...` routes mapped into the new
219
+ capability groups.
220
+ - **No CDN / offline-capable** — shipped app assets are built into
221
+ `static/app`, service-worker precached, and verified to avoid CDN
222
+ dependencies.
223
+ - **v4.0.1 capability preservation** — Brain Core, storage, agent/workflow
224
+ runtime, privacy model, local-first operation, and backend API contracts are
225
+ preserved.
226
+
227
+ See [RELEASE_NOTES_v4.1.0.md](RELEASE_NOTES_v4.1.0.md),
228
228
  [docs/kg-schema.md](docs/kg-schema.md),
229
229
  [FEATURE_STATUS.md](FEATURE_STATUS.md).
230
230
 
231
231
  ## How it works — every source converges into the graph
232
232
 
233
- As of v4.0.1, data sources flow through the brain ingestion pipeline into
233
+ As of v4.1.0, data sources flow through the brain ingestion pipeline into
234
234
  the Knowledge Graph — no source bypasses it, none becomes an isolated silo:
235
235
 
236
236
  ```text
@@ -264,6 +264,9 @@ For the deeper design, see [ARCHITECTURE.md](ARCHITECTURE.md) and
264
264
 
265
265
  - [ARCHITECTURE.md](ARCHITECTURE.md) — workspace, graph, pipeline, and model overview
266
266
  - [docs/architecture.md](docs/architecture.md) — full architecture reference
267
+ - [docs/V4_1_FRONTEND_ARCHITECTURE_REVIEW.md](docs/V4_1_FRONTEND_ARCHITECTURE_REVIEW.md) — v4.1.0 frontend and desktop architecture review
268
+ - [docs/V4_1_FRONTEND_MIGRATION_REPORT.md](docs/V4_1_FRONTEND_MIGRATION_REPORT.md) — v4.1.0 capability migration report
269
+ - [docs/V4_1_VALIDATION_REPORT.md](docs/V4_1_VALIDATION_REPORT.md) — v4.1.0 validation report
267
270
  - [docs/V3_BACKEND_ARCHITECTURE.md](docs/V3_BACKEND_ARCHITECTURE.md) — backend storage, search, and retrieval
268
271
 
269
272
  ### Knowledge and retrieval
@@ -282,6 +285,7 @@ For the deeper design, see [ARCHITECTURE.md](ARCHITECTURE.md) and
282
285
  ### Releases
283
286
 
284
287
  - [RELEASE_NOTES.md](RELEASE_NOTES.md) — current release notes
288
+ - [RELEASE_NOTES_v4.1.0.md](RELEASE_NOTES_v4.1.0.md)
285
289
  - [RELEASE_NOTES_v4.0.1.md](RELEASE_NOTES_v4.0.1.md)
286
290
  - [RELEASE_NOTES_v4.0.0.md](RELEASE_NOTES_v4.0.0.md)
287
291
  - [RELEASE_NOTES_v3.6.0.md](RELEASE_NOTES_v3.6.0.md)
@@ -294,6 +298,7 @@ For the deeper design, see [ARCHITECTURE.md](ARCHITECTURE.md) and
294
298
 
295
299
  | Version | Theme |
296
300
  | --- | --- |
301
+ | **4.1.0** | Frontend & Desktop Rebuild RC — React/Vite/OpenAPI desktop SPA, Tauri 2.0 primary shell, graph-first navigation, and legacy static frontend removal |
297
302
  | **4.0.1** | Digital Brain Platform maintenance — closes post-tag v4 gaps with durable async runs, stable identity/workspace state, full `/app` parity, and legacy UI retirement |
298
303
  | **4.0.0** | Digital Brain Platform — decomposed brain store, v2 write-mastered Knowledge Graph, durable memory/context, real workflow/agent foundations, signed brain exchange |
299
304
  | 3.6.0 | Knowledge Graph First — unified ingestion pipeline, formalized entity/relationship model, browser/web ingestion, local export/import/backup, provenance, KG as the primary surface |
@@ -0,0 +1,44 @@
1
+ const { app, BrowserWindow } = require("electron");
2
+ const { spawn } = require("node:child_process");
3
+ const path = require("node:path");
4
+
5
+ const origin = process.env.LATTICEAI_DESKTOP_BACKEND_ORIGIN || "http://127.0.0.1:8765";
6
+ let backend = null;
7
+
8
+ function startBackend() {
9
+ if (process.env.LATTICEAI_DESKTOP_NO_BACKEND) return;
10
+ const command = process.env.LATTICEAI_DESKTOP_BACKEND_CMD || "python3 ltcai_cli.py --host 127.0.0.1 --port 8765";
11
+ const [bin, ...args] = command.split(/\s+/).filter(Boolean);
12
+ if (!bin) return;
13
+ backend = spawn(bin, args, {
14
+ cwd: process.env.LATTICEAI_DESKTOP_BACKEND_CWD || path.resolve(__dirname, "../.."),
15
+ env: { ...process.env, LATTICEAI_HOST: "127.0.0.1", LATTICEAI_PORT: "8765", LATTICEAI_TUNNEL: "false" },
16
+ stdio: "ignore",
17
+ });
18
+ }
19
+
20
+ function createWindow() {
21
+ const win = new BrowserWindow({
22
+ width: 1440,
23
+ height: 920,
24
+ minWidth: 1024,
25
+ minHeight: 720,
26
+ title: "Lattice AI",
27
+ webPreferences: {
28
+ contextIsolation: true,
29
+ nodeIntegration: false,
30
+ sandbox: true,
31
+ },
32
+ });
33
+ win.loadURL(`${origin}/app`);
34
+ }
35
+
36
+ app.whenReady().then(() => {
37
+ startBackend();
38
+ createWindow();
39
+ });
40
+
41
+ app.on("window-all-closed", () => {
42
+ if (backend) backend.kill();
43
+ if (process.platform !== "darwin") app.quit();
44
+ });
package/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.1.0] - 2026-06-12
4
+
5
+ > Frontend & Desktop Rebuild release candidate. The existing FastAPI backend,
6
+ > Brain Core, storage architecture, and agent/workflow runtime remain the
7
+ > source of truth; the frontend and desktop shell are replaced by a React/Vite
8
+ > desktop architecture.
9
+
10
+ ### Added
11
+
12
+ - React + TypeScript + Vite SPA under `frontend/`, using TanStack Query,
13
+ Zustand, React Flow, Cytoscape.js, Tailwind CSS, local shadcn-style
14
+ primitives, and a generated OpenAPI TypeScript client.
15
+ - Tauri 2.0 desktop shell under `src-tauri/` that launches the local backend
16
+ and exposes the backend origin to the SPA; Electron fallback shell retained
17
+ under `desktop/electron/`.
18
+ - Primary graph-first navigation: Brain, Ask, Capture, Act, Library, System.
19
+ - OpenAPI export/generation script and frontend lint guard for generated-client
20
+ usage, no-CDN static assets, and stale frontend references.
21
+
22
+ ### Changed
23
+
24
+ - `/app` now serves the built React/Vite bundle from `static/app`.
25
+ - Legacy static v3 frontend assets and v3 build/lint scripts are removed after
26
+ capability parity was migrated into the new React surfaces.
27
+ - Release/build scripts now build Vite app assets and preserve Python, npm, and
28
+ VSIX packaging flows at version `4.1.0`.
29
+ - npm Python-backed scripts use `scripts/run_python.mjs` to prefer
30
+ `LTCAI_PYTHON` or the repo virtualenv before falling back to system Python.
31
+
32
+ ### Validation Scope
33
+
34
+ - Python compile check, ruff, unit tests, live integration tests, frontend lint,
35
+ TypeScript build, Playwright visual tests, desktop shell checks, no-CDN
36
+ verification, release artifact validation, wheel smoke, and npm pack dry-run.
37
+
38
+ ### Expected Artifacts
39
+
40
+ - `dist/ltcai-4.1.0-py3-none-any.whl`
41
+ - `dist/ltcai-4.1.0.tar.gz`
42
+ - `dist/ltcai-4.1.0.vsix`
43
+ - `ltcai-4.1.0.tgz`
44
+
3
45
  ## [4.0.1] - 2026-06-12
4
46
 
5
47
  > Digital Brain Platform maintenance release for commits on `main` after tag
@@ -0,0 +1,65 @@
1
+ # v4.1.0 Frontend Architecture Review
2
+
3
+ ## Scope
4
+
5
+ This review covers the v4.1.0 replacement of the `/app` frontend and desktop
6
+ shell. It does not redesign Brain Core, storage, backend API contracts, or the
7
+ agent/workflow runtime.
8
+
9
+ ## Baseline
10
+
11
+ v4.0.1 served a static frontend assembled under `static/v3` with bespoke build
12
+ and lint scripts. Capability parity existed, but the implementation duplicated
13
+ view systems, carried legacy static route assumptions, and could not cleanly
14
+ share typed API contracts with the FastAPI backend.
15
+
16
+ ## Target Architecture
17
+
18
+ - Desktop shell: Tauri 2.0 primary, Electron fallback only.
19
+ - Frontend: React, TypeScript, Vite, TanStack Query, Zustand, React Flow,
20
+ Cytoscape.js, Tailwind CSS, local shadcn-style primitives.
21
+ - API: generated OpenAPI TypeScript client from the existing FastAPI app.
22
+ - Runtime: single client-side SPA, no SSR, no CDN.
23
+ - Backend: existing FastAPI app remains the source of truth.
24
+
25
+ ## Implemented Architecture
26
+
27
+ - `frontend/` owns the React/Vite source.
28
+ - `frontend/src/api/openapi.ts` is generated from `frontend/openapi.json`.
29
+ - `frontend/src/api/client.ts` wraps generated-client JSON calls and keeps
30
+ streaming chat plus multipart upload as explicit fetch special cases.
31
+ - `frontend/src/routes.ts` defines Brain, Ask, Capture, Act, Library, System and
32
+ maps legacy hash routes into those groups.
33
+ - `static/app` is the shipped build output and is served by `/app`.
34
+ - `src-tauri/` contains the Tauri 2.0 shell and backend-origin bridge.
35
+ - `desktop/electron/` contains the fallback shell.
36
+ - `static/sw.js` precaches the React app manifest/assets for offline-capable
37
+ local startup.
38
+
39
+ ## Boundary Decisions
40
+
41
+ - The backend contract was preserved; only the frontend consumer changed.
42
+ - Brain Core and storage modules were not modified for UI convenience.
43
+ - No CDN fallback was introduced; all visual/runtime dependencies are bundled.
44
+ - No demo-only controls were added. Unavailable capabilities render explicit
45
+ unavailable/error states based on API responses.
46
+ - npm runtime installs are kept lean: React/Vite/Tauri/Electron toolchains are
47
+ development dependencies because the distributable app ships built assets.
48
+
49
+ ## Capability Mapping
50
+
51
+ | v4.0.1 capability | v4.1.0 surface |
52
+ | --- | --- |
53
+ | Knowledge Graph, hybrid search, memory, provenance, portability | Brain |
54
+ | Chat, conversations, context trace, attachments | Ask |
55
+ | Uploads, connected folders, local runtime, URL capture, index pipeline | Capture |
56
+ | Agents, runs, approvals, workflows, triggers, hooks, tools | Act |
57
+ | Models, embeddings, skills, MCP, templates/plugins | Library |
58
+ | Account, auth, workspaces, snapshots, activity, network, settings, admin/security | System |
59
+
60
+ ## Residual Risk
61
+
62
+ - The first Vite bundle is larger than 500 kB after minification because graph,
63
+ workflow, and app shell libraries are included in the initial desktop SPA
64
+ bundle. This is a performance optimization target, not a capability blocker,
65
+ and the build remains fully local/offline.
@@ -0,0 +1,70 @@
1
+ # v4.1.0 Frontend Migration Report
2
+
3
+ ## Objective
4
+
5
+ Replace the v4.0.1 static frontend implementation with the Digital Brain
6
+ desktop architecture while preserving capabilities, user data, backend API
7
+ contracts, and local-first/offline operation.
8
+
9
+ ## Migration Summary
10
+
11
+ - Added React + TypeScript + Vite source under `frontend/`.
12
+ - Added generated OpenAPI schema/client files under `frontend/openapi.json` and
13
+ `frontend/src/api/openapi.ts`.
14
+ - Added React capability pages for Brain, Ask, Capture, Act, Library, System.
15
+ - Added Tauri 2.0 desktop shell under `src-tauri/`.
16
+ - Added Electron fallback shell under `desktop/electron/`.
17
+ - Replaced `/app` static serving with `static/app/index.html`.
18
+ - Replaced v3 asset build/lint scripts with Vite build and frontend lint guards.
19
+ - Removed `static/v3` and retired `scripts/build_v3_assets.mjs` /
20
+ `scripts/lint_v3.mjs`.
21
+ - Updated package metadata so Python wheel/sdist, npm tgz, and VSIX builds ship
22
+ the new `static/app` assets.
23
+
24
+ ## Compatibility
25
+
26
+ - Existing FastAPI routes are preserved.
27
+ - The generated OpenAPI client is produced from the live app schema.
28
+ - Legacy app hash routes are mapped into the new primary navigation groups.
29
+ - Service worker caching now targets the Vite app manifest instead of v3 assets.
30
+ - User data formats, Brain database files, Workspace OS state, snapshots,
31
+ conversations, memories, and graph data are not migrated or destructively
32
+ changed by the frontend rebuild.
33
+
34
+ ## Capability Parity
35
+
36
+ | Capability | Migration result |
37
+ | --- | --- |
38
+ | Brain graph exploration | Cytoscape.js graph view in Brain |
39
+ | Hybrid search | Brain search tab backed by `/api/search/hybrid` |
40
+ | Memory recall | Brain memory tab backed by memory APIs |
41
+ | Provenance and portability | Brain provenance/portability actions |
42
+ | Chat and context trace | Ask surface with streaming chat and context panel |
43
+ | Conversation management | Ask history backed by conversation APIs |
44
+ | Document upload | Capture upload using multipart backend endpoint |
45
+ | Connected folders/local runtime | Capture desktop/local runtime APIs |
46
+ | Index pipeline and URL capture | Capture pipeline/browser ingestion APIs |
47
+ | Agents and run records | Act agents/runs/approvals backed by runtime APIs |
48
+ | Workflow graph | Act React Flow visualization and workflow APIs |
49
+ | Triggers, hooks, tools | Act surfaces backed by trigger/hook/tool APIs |
50
+ | Models and embeddings | Library model/embedding APIs |
51
+ | Skills, MCP, templates/plugins | Library registry APIs |
52
+ | Account/auth/profile/password | System account APIs |
53
+ | Workspaces/invitations | System workspace APIs |
54
+ | Snapshots/time-machine | System snapshot APIs |
55
+ | Activity/presence/network | System activity and network APIs |
56
+ | Admin/security/settings | System admin and settings APIs |
57
+
58
+ ## Removed Frontend Debt
59
+
60
+ - Duplicate static v3 view modules.
61
+ - Legacy frontend build pipeline.
62
+ - Legacy v3 frontend lint script.
63
+ - Static v3 asset tree in release packages.
64
+ - Direct current-release references to v4.0.1 in latest docs.
65
+
66
+ ## Data Preservation
67
+
68
+ No user data migration is required for v4.1.0. All persisted state remains owned
69
+ by the existing backend stores. The frontend rebuild only changes the client and
70
+ desktop shell used to access those stores.
@@ -0,0 +1,47 @@
1
+ # v4.1.0 Validation Report
2
+
3
+ ## Summary
4
+
5
+ v4.1.0 RC validation passed for the React/Vite frontend, Tauri desktop shell,
6
+ FastAPI backend compatibility, release artifacts, and installed-wheel smoke.
7
+
8
+ ## Commands Run
9
+
10
+ | Area | Command | Result |
11
+ | --- | --- | --- |
12
+ | OpenAPI generation | `npm run frontend:openapi` | Pass; generated 308 paths |
13
+ | Static app build | `npm run build:assets` | Pass; wrote `static/app/asset-manifest.json` |
14
+ | Frontend lint / no CDN / API compatibility | `npm run lint` | Pass; scanned 28 frontend/static files; OpenAPI exposes 308 paths |
15
+ | TypeScript build | `npm run typecheck` | Pass; frontend TS + VS Code extension build |
16
+ | Python compile | `npm run check:python` | Pass; compiled 206 modules |
17
+ | Ruff | `node scripts/run_python.mjs -m ruff check .` | Pass |
18
+ | Unit tests | `npm run test:unit -- --tb=short` | Pass; 585 passed, 2 warnings |
19
+ | Live integration tests | `LTCAI_TEST_BASE_URL=http://127.0.0.1:8899 npm run test:integration -- --tb=short` | Pass; 9 passed |
20
+ | Playwright visual/offline tests | `npx playwright test tests/visual/v3.spec.js` | Pass; 12 passed |
21
+ | Tauri cargo check | `npm run desktop:tauri:check` | Pass |
22
+ | Tauri desktop build | `LATTICEAI_DESKTOP_NO_BACKEND=1 npm run desktop:tauri:build` | Pass; built `.app` and DMG |
23
+ | Electron fallback syntax/version | `node --check desktop/electron/main.cjs && npx electron --version` | Pass; Electron v42.4.0 |
24
+ | Release artifacts | `npm run release:artifacts` plus resumed `npm pack && npm run package:vsix` | Pass |
25
+ | Artifact validation | `npm run release:validate` | Pass; exact v4.1.0 wheel/sdist/VSIX/tgz found |
26
+ | Wheel smoke | `node scripts/run_python.mjs scripts/wheel_smoke.py --wheel dist/ltcai-4.1.0-py3-none-any.whl` | Pass; imports 19 modules and `/health` reports 4.1.0 |
27
+ | npm pack dry-run | `npm pack --dry-run` | Pass; `ltcai-4.1.0.tgz`, 259 files, 2.9 MB |
28
+
29
+ ## Generated Artifacts
30
+
31
+ - `dist/ltcai-4.1.0-py3-none-any.whl`
32
+ - `dist/ltcai-4.1.0.tar.gz`
33
+ - `dist/ltcai-4.1.0.vsix`
34
+ - `ltcai-4.1.0.tgz`
35
+ - `src-tauri/target/release/bundle/macos/Lattice AI.app`
36
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_4.1.0_aarch64.dmg`
37
+
38
+ ## Notes
39
+
40
+ - Vite reports one large initial bundle warning after minification. The app
41
+ remains fully local/offline and passes visual/offline startup validation.
42
+ - `cargo check` reports a future-incompatibility warning in transitive
43
+ `block v0.1.6`; the current Tauri 2.0 build passes on Rust 1.96.
44
+ - Release artifact validation warns that historical artifacts remain in
45
+ `dist/`; this is expected and reinforces the rule to upload only exact
46
+ v4.1.0 filenames, never `dist/*`.
47
+ - No external registry publish was performed.
@@ -5,24 +5,30 @@
5
5
  > completed analysis. **Update this file before ending any phase and before any
6
6
  > likely session/context/usage limit.**
7
7
  >
8
- > Last updated: 2026-06-12 — v4.0.1 maintenance release prep; T9 remainder remains closed
8
+ > Last updated: 2026-06-12 — v4.1.0 frontend/desktop rebuild RC; Remaining Gaps remain empty
9
9
 
10
10
  ---
11
11
 
12
- ## 0. RC STATUS (final)
13
-
14
- **v4.0.1 packages the `main` commits after tag `v4.0.0`; implementation gaps are empty.**
15
- Latest verified implementation milestone: T9 remainder closed with full unit coverage
16
- (`585 passed`), ruff, Python compile, `npm run lint`, `npm run build:assets`,
17
- Playwright v3 visual coverage, Python sdist/wheel build, installed-wheel smoke,
18
- and `npm pack --dry-run`.
19
- The v4.0.1 release process builds and validates artifacts for GitHub Release
20
- attachment only. It does not publish to PyPI, npm Registry, VS Code Marketplace,
21
- Open VSX, or production deployment targets.
22
- v4.0.1 validation completed: Python compile, ruff, 585 unit tests, 9 live
23
- integration tests, frontend lint, VS Code typecheck, 16 Playwright visual tests,
12
+ ## 0. RC STATUS (v4.1.0 RC)
13
+
14
+ **v4.1.0 replaces the frontend implementation and desktop shell on top of
15
+ `main @ v4.0.1`; implementation gaps remain empty.**
16
+ Latest implementation milestone: `/app` is now a React + TypeScript + Vite SPA
17
+ with TanStack Query, Zustand, generated OpenAPI client usage, Cytoscape.js
18
+ Brain graph, React Flow Act graph, Tailwind CSS, and local shadcn-style
19
+ primitives. Tauri 2.0 is the primary desktop shell; Electron is fallback only.
20
+ The existing FastAPI backend, Brain Core, storage architecture, and
21
+ agent/workflow runtime remain the source of truth.
22
+ The v4.1.0 RC process builds and validates local artifacts only. It does not
23
+ publish to PyPI, npm Registry, VS Code Marketplace, Open VSX, or production
24
+ deployment targets.
25
+ v4.1.0 validation completed: OpenAPI generation (308 paths), Python compile,
26
+ ruff, 585 unit tests, 9 live integration tests, frontend lint/no-CDN/API
27
+ compatibility, TypeScript build, 12 Playwright visual/offline tests, Tauri
28
+ cargo check, Tauri `.app` + DMG build, Electron fallback syntax/version check,
24
29
  Python wheel/sdist build, npm tgz build, VSIX build, release artifact
25
- validation, wheel smoke, and npm pack dry-run all passed.
30
+ validation, wheel smoke, and npm pack dry-run all passed. See
31
+ `docs/V4_1_VALIDATION_REPORT.md`.
26
32
  Remaining implementation gaps: **none**.
27
33
  Owner-only blockers: pptx history rewrite (requires force-push/owner decision)
28
34
  and consent-gated production embedder provisioning (silent default download is
@@ -30,11 +36,12 @@ not permitted).
30
36
 
31
37
  ## Remaining Gaps
32
38
 
33
- None. The T9 remainder was closed on main with legacy page deletion, `/app`
34
- parity views, token-native account UI, en/ko i18n, approval/run inbox,
35
- workflow-trigger controls, Brain Network UI, chat context-trace panel, and
36
- Knowledge Graph provenance coverage surfaced in the SPA. Owner-only blockers
37
- above are intentionally not implementation gaps.
39
+ None. v4.1.0 closes the frontend/desktop rebuild on top of the already-empty
40
+ v4.0.1 gap list: legacy static v3 frontend assets are removed, `/app` is served
41
+ from `static/app`, Brain/Ask/Capture/Act/Library/System cover the existing
42
+ capability surface, and every visible control either calls an existing backend
43
+ API or presents an honest unavailable/error state. Owner-only blockers above
44
+ are intentionally not implementation gaps.
38
45
 
39
46
  ## 1. Program Charter (from the user's v4.0.0 directive)
40
47
 
@@ -0,0 +1,24 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
+ <meta name="color-scheme" content="dark light" />
7
+ <title>Lattice AI · Digital Brain</title>
8
+ <link rel="manifest" href="/manifest.json" />
9
+ <link rel="icon" type="image/png" sizes="32x32" href="/icons/favicon-32.png" />
10
+ <script>
11
+ (function () {
12
+ try {
13
+ var theme = localStorage.getItem("lattice.theme");
14
+ if (theme === "light" || theme === "dark") document.documentElement.dataset.theme = theme;
15
+ } catch (e) {}
16
+ })();
17
+ </script>
18
+ </head>
19
+ <body>
20
+ <div id="root"></div>
21
+ <noscript>Lattice AI requires JavaScript for the local Digital Brain desktop shell.</noscript>
22
+ <script type="module" src="/src/main.tsx"></script>
23
+ </body>
24
+ </html>