ltcai 8.5.0 → 8.6.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 (43) hide show
  1. package/README.md +22 -22
  2. package/desktop/electron/main.cjs +13 -1
  3. package/desktop/electron/preload.cjs +5 -0
  4. package/docs/CHANGELOG.md +24 -0
  5. package/docs/COMMUNITY_AND_PLUGINS.md +2 -2
  6. package/docs/DEVELOPMENT.md +8 -8
  7. package/docs/LEGACY_COMPATIBILITY.md +3 -3
  8. package/docs/ONBOARDING.md +4 -4
  9. package/docs/TRUST_MODEL.md +1 -1
  10. package/docs/WHY_LATTICE.md +2 -2
  11. package/docs/kg-schema.md +1 -1
  12. package/lattice_brain/__init__.py +1 -1
  13. package/lattice_brain/runtime/multi_agent.py +1 -1
  14. package/latticeai/__init__.py +1 -1
  15. package/latticeai/core/marketplace.py +1 -1
  16. package/latticeai/core/workspace_os.py +1 -1
  17. package/latticeai/services/architecture_readiness.py +2 -2
  18. package/latticeai/services/product_readiness.py +11 -11
  19. package/package.json +1 -1
  20. package/src-tauri/Cargo.lock +1 -1
  21. package/src-tauri/Cargo.toml +1 -1
  22. package/src-tauri/capabilities/default.json +3 -0
  23. package/src-tauri/src/main.rs +32 -1
  24. package/src-tauri/tauri.conf.json +1 -1
  25. package/static/app/asset-manifest.json +11 -11
  26. package/static/app/assets/{Act-D5mo4tE4.js → Act-IrojDEWY.js} +1 -1
  27. package/static/app/assets/{Brain-BVWyQw8A.js → Brain--VODO4HM.js} +2 -2
  28. package/static/app/assets/Capture-BUP_wJ7s.js +1 -0
  29. package/static/app/assets/Library-DrVto3cO.js +1 -0
  30. package/static/app/assets/System-DNrVbcMX.js +1 -0
  31. package/static/app/assets/index-BaaPtsLp.js +16 -0
  32. package/static/app/assets/index-_M5aCv21.css +2 -0
  33. package/static/app/assets/primitives-lz45ZfWY.js +1 -0
  34. package/static/app/assets/{textarea-e7qaj6Hm.js → textarea-C7uwJsxy.js} +1 -1
  35. package/static/app/index.html +2 -2
  36. package/static/app/theme-boot.js +2 -2
  37. package/static/sw.js +1 -1
  38. package/static/app/assets/Capture-C1R6GT0t.js +0 -1
  39. package/static/app/assets/Library-C2wIxpTs.js +0 -1
  40. package/static/app/assets/System-DE5GRyQR.js +0 -1
  41. package/static/app/assets/index-CoiuIFFP.js +0 -16
  42. package/static/app/assets/index-ty1iGgZu.css +0 -2
  43. package/static/app/assets/primitives-BdsUNXa6.js +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Lattice AI
2
2
 
3
- **Lattice AI 8.5.0 is the local-first Digital Brain platform. This release hardens the Tool Registry (now drift-free and ready) and improves dependency injection for configuration (e.g. timezone flows through Config to automation runtimes) after full codebase scan and targeted refactors.**
3
+ **Lattice AI 8.6.0 is the local-first Digital Brain platform. This release fixes desktop folder selection for the Tauri localhost app, improves Capture feedback for folder and web source saving, and aligns the new Brain shell navigation with CI-verified visual coverage.**
4
4
 
5
5
  **Lattice AI는 모델이 바뀌어도 내 지식과 맥락을 보존하는 로컬 우선 AI 브레인입니다.**
6
6
 
@@ -11,7 +11,7 @@ downloads, update checks, and other external communication happen only after
11
11
  explicit consent.
12
12
 
13
13
  It is not a ChatGPT clone, a model launcher, a graph database, or a note app.
14
- It is the finished private AI memory layer wrapped in a Living Brain experience — with ToolRegistry readiness, Config-driven DI for automation, and continued AgentRuntime/Tool wiring seams.
14
+ It is the finished private AI memory layer wrapped in a Living Brain experience — with desktop source capture that uses native folder selection, ToolRegistry readiness, Config-driven DI for automation, and continued AgentRuntime/Tool wiring seams.
15
15
 
16
16
  [![PyPI Version](https://img.shields.io/pypi/v/ltcai?label=PyPI)](https://pypi.org/project/ltcai/)
17
17
  [![npm Version](https://img.shields.io/npm/v/ltcai?label=npm)](https://www.npmjs.com/package/ltcai)
@@ -41,7 +41,7 @@ You need Lattice AI when:
41
41
 
42
42
  - Chat with a Brain that remembers useful context instead of treating every
43
43
  session as disposable.
44
- - Add documents, local folders, notes, screenshots, and conversations with
44
+ - Add documents, selected local folders, notes, screenshots, and web pages with
45
45
  source-aware memory.
46
46
  - See recent memories, older memories, topics, relationships, and the full
47
47
  knowledge graph when you want deeper structure.
@@ -204,32 +204,30 @@ See [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for developer workflow details.
204
204
 
205
205
  ## Current Release
206
206
 
207
- The current release is **8.5.0 — Tool Registry Readiness & Config DI**:
207
+ The current release is **8.6.0 — Desktop Capture & Navigation Reliability**:
208
208
 
209
- - Brain Chat now routes explicit file create/write/save/edit requests through
210
- the governed workspace file tool instead of treating them as ordinary prose
211
- generation.
212
- - Requests such as `hello.md 파일 만들어줘` are executed through
213
- `write_file`/`edit_file` style tool paths, and created artifacts are returned
214
- in the chat response.
215
- - Normal Q&A stays on the low-friction `/chat` generation path; only explicit
216
- side-effect requests move into the tool-running agent loop.
217
- - The release keeps the 8.3.0 managed legacy inventory, AgentRuntime/workflow
218
- boundaries, unified graph ingestion, and workspace-safe duplicate content
219
- protections active.
209
+ - The desktop Capture flow can open a native folder picker from the Tauri
210
+ localhost app, fill the selected path, and immediately scan/connect it.
211
+ - Folder picker failures now surface an actionable message instead of silently
212
+ doing nothing, while manual path entry remains available.
213
+ - Web page capture keeps paste, Enter-to-save, and `https://` normalization for
214
+ bare domains.
215
+ - The Brain shell sidebar/navigation and admin entry points are covered by
216
+ updated Visual Smoke tests, while the 8.5 ToolRegistry and Config DI
217
+ hardening remains active.
220
218
 
221
- Expected artifacts for 8.5.0 release must use exact filenames:
219
+ Expected artifacts for 8.6.0 release must use exact filenames:
222
220
 
223
- - `dist/ltcai-8.5.0-py3-none-any.whl`
224
- - `dist/ltcai-8.5.0.tar.gz`
225
- - `ltcai-8.5.0.tgz`
226
- - `dist/ltcai-8.5.0.vsix`
227
- - `src-tauri/target/release/bundle/dmg/Lattice AI_8.5.0_aarch64.dmg`
221
+ - `dist/ltcai-8.6.0-py3-none-any.whl`
222
+ - `dist/ltcai-8.6.0.tar.gz`
223
+ - `ltcai-8.6.0.tgz`
224
+ - `dist/ltcai-8.6.0.vsix`
225
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_8.6.0_aarch64.dmg`
228
226
 
229
227
  Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
230
228
 
231
229
  See [docs/ROADMAP_RECOMMENDATIONS.md](docs/ROADMAP_RECOMMENDATIONS.md) for the
232
- strategic roadmap slices applied through 8.5.0 and the follow-up tracks.
230
+ strategic roadmap slices applied through 8.6.0 and the follow-up tracks.
233
231
 
234
232
  ## Known Limitations
235
233
 
@@ -246,6 +244,8 @@ strategic roadmap slices applied through 8.5.0 and the follow-up tracks.
246
244
 
247
245
  | Version | Theme |
248
246
  | --- | --- |
247
+ | 8.6.0 | Desktop Capture & Navigation Reliability: native folder selection works from the Tauri localhost app, picker failures surface in Capture, web saving remains one-action, and the Brain shell sidebar/admin flow is CI-covered |
248
+ | 8.5.0 | Tool Registry Readiness & Config DI: ToolRegistry drift removed, `tz_name` flows through central Config into automation runtimes, and current-release documentation is synchronized |
249
249
  | 8.4.0 | Action-Aware Brain Chat: explicit file create/write/save/edit requests from Brain Chat route into the governed workspace file tool so files are actually created instead of returned as code-only answers |
250
250
  | 8.3.0 | Orchestrated Brain Readiness: managed legacy shim inventory, stronger AgentRuntime/workflow boundaries, unified graph ingestion, workspace-safe duplicate content, first-run onboarding, and explicit community/plugin growth path |
251
251
  | 8.2.0 | Brain Brief: evidence-backed home briefing, honest empty-state guidance, recall/graph/model-proof next actions, and continued model/workspace runtime extraction |
@@ -1,10 +1,21 @@
1
- const { app, BrowserWindow } = require("electron");
1
+ const { app, BrowserWindow, dialog, ipcMain } = require("electron");
2
2
  const { spawn } = require("node:child_process");
3
3
  const path = require("node:path");
4
4
 
5
5
  const origin = process.env.LATTICEAI_DESKTOP_BACKEND_ORIGIN || "http://127.0.0.1:8765";
6
6
  let backend = null;
7
7
 
8
+ ipcMain.handle("lattice:select-folder", async (event) => {
9
+ const win = BrowserWindow.fromWebContents(event.sender);
10
+ const options = {
11
+ title: "Choose a folder for Lattice AI",
12
+ properties: ["openDirectory"],
13
+ };
14
+ const result = win ? await dialog.showOpenDialog(win, options) : await dialog.showOpenDialog(options);
15
+ if (result.canceled || !result.filePaths.length) return null;
16
+ return result.filePaths[0];
17
+ });
18
+
8
19
  function startBackend() {
9
20
  if (process.env.LATTICEAI_DESKTOP_NO_BACKEND) return;
10
21
  const command = process.env.LATTICEAI_DESKTOP_BACKEND_CMD || "python3 ltcai_cli.py --host 127.0.0.1 --port 8765";
@@ -25,6 +36,7 @@ function createWindow() {
25
36
  minHeight: 720,
26
37
  title: "Lattice AI",
27
38
  webPreferences: {
39
+ preload: path.join(__dirname, "preload.cjs"),
28
40
  contextIsolation: true,
29
41
  nodeIntegration: false,
30
42
  sandbox: true,
@@ -0,0 +1,5 @@
1
+ const { contextBridge, ipcRenderer } = require("electron");
2
+
3
+ contextBridge.exposeInMainWorld("latticeDesktop", {
4
+ selectFolder: () => ipcRenderer.invoke("lattice:select-folder"),
5
+ });
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,30 @@ existed at that release.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ No unreleased changes.
10
+
11
+ ## [8.6.0] - 2026-07-05
12
+
13
+ ### Added
14
+ - Added Tauri localhost remote capability coverage so the desktop app can keep
15
+ using local IPC commands after navigating to the FastAPI-served `/app`.
16
+ - Added a regression trust gate for the Tauri localhost capability.
17
+
18
+ ### Changed
19
+ - Improved the Capture source flow: desktop users can choose a folder with the
20
+ native folder picker and immediately scan/connect it, while web page capture
21
+ now supports paste, Enter-to-save, and `https://` normalization for bare
22
+ domains.
23
+ - Updated Visual Smoke coverage for the new Brain shell sidebar and admin
24
+ console entry flow.
25
+ - Version bumped to 8.6.0 across Python, npm, VS Code extension, Tauri, static
26
+ metadata, readiness gates, and current-release documentation.
27
+
28
+ ### Fixed
29
+ - Fixed native folder selection from the Tauri production app's localhost
30
+ webview and added visible fallback feedback when the picker is unavailable.
31
+ - Removed negative letter spacing from updated frontend shell styling.
32
+
9
33
  ## [8.5.0] - 2026-07-01
10
34
 
11
35
  ### Added
@@ -1,8 +1,8 @@
1
1
  # Community And Plugins
2
2
 
3
- Current release: **8.5.0 - Registry Polish & Config DI**.
3
+ Current release: **8.6.0 Desktop Capture & Navigation Reliability**.
4
4
 
5
- LatticeAI defines the path from a strong local-first framework (8.4.0 action-aware baseline, 8.5.0 registry+DI hardening) to a
5
+ LatticeAI defines the path from a strong local-first framework (8.4.0 action-aware baseline, 8.5.0 registry+DI hardening, 8.6.0 capture/navigation reliability) to a
6
6
  product ecosystem. The immediate goal is small and practical: make it clear how
7
7
  contributors can extend the Brain without weakening local-first trust,
8
8
  workspace scoping, or release quality.
@@ -1,10 +1,10 @@
1
1
  # Lattice AI Development
2
2
 
3
- Current release: **8.5.0 — Tool Registry Readiness & Config DI**.
3
+ Current release: **8.6.0 — Desktop Capture & Navigation Reliability**.
4
4
 
5
5
  This document is for contributors working on the local-first Digital Brain
6
6
  codebase. Product positioning and quick start stay in `README.md`; release
7
- history is intentionally limited to 7.0.0-8.5.0 in `docs/CHANGELOG.md` and
7
+ history is intentionally limited to 7.0.0-8.6.0 in `docs/CHANGELOG.md` and
8
8
  `RELEASE.md`.
9
9
 
10
10
  ## Product Contract
@@ -112,10 +112,10 @@ For user-facing, API, runtime, release, or packaging changes, check:
112
112
  Release/publish examples must use exact target-version filenames. Do not
113
113
  document wildcard artifact upload commands.
114
114
 
115
- For 8.5.0 release work, exact artifacts are:
115
+ For 8.6.0 release work, exact artifacts are:
116
116
 
117
- - `dist/ltcai-8.5.0-py3-none-any.whl`
118
- - `dist/ltcai-8.5.0.tar.gz`
119
- - `ltcai-8.5.0.tgz`
120
- - `dist/ltcai-8.5.0.vsix`
121
- - `src-tauri/target/release/bundle/dmg/Lattice AI_8.5.0_aarch64.dmg`
117
+ - `dist/ltcai-8.6.0-py3-none-any.whl`
118
+ - `dist/ltcai-8.6.0.tar.gz`
119
+ - `ltcai-8.6.0.tgz`
120
+ - `dist/ltcai-8.6.0.vsix`
121
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_8.6.0_aarch64.dmg`
@@ -1,14 +1,14 @@
1
1
  # Legacy Compatibility Map
2
2
 
3
- Current release: **8.5.0 — Tool Registry Readiness & Config DI**.
3
+ Current release: **8.6.0 — Desktop Capture & Navigation Reliability**.
4
4
 
5
5
  Lattice AI is moving toward a smaller, modular architecture centered on
6
6
  `lattice_brain`, `latticeai.services`, `latticeai.api`, and `latticeai.runtime`.
7
7
  Some root-level modules remain packaged for compatibility with older imports,
8
8
  CLI entrypoints, or extension workflows. Their presence does not define the
9
- current 8.5.0 architecture.
9
+ current 8.6.0 architecture.
10
10
 
11
- 8.5.0 also tracks the inner compatibility layers that sit below the root
11
+ 8.6.0 also tracks the inner compatibility layers that sit below the root
12
12
  modules. The managed inventory lives in `latticeai.core.legacy_compatibility`
13
13
  and groups shims by layer:
14
14
 
@@ -1,6 +1,6 @@
1
1
  # Lattice AI Onboarding
2
2
 
3
- Current release: **8.5.0 — Tool Registry Readiness & Config DI**.
3
+ Current release: **8.6.0 — Desktop Capture & Navigation Reliability**.
4
4
 
5
5
  The first-run goal is a five-minute path from "I opened the app" to "my Brain
6
6
  has a source, a question, and proof." This page is the product contract behind
@@ -12,8 +12,8 @@ read the docs first.
12
12
  1. Wake the Brain and confirm the local owner profile.
13
13
  2. Let Lattice inspect local model/runtime readiness.
14
14
  3. Pick the recommended Brain voice or skip model loading.
15
- 4. Add one source: upload a file, connect a folder, save a note, or capture a
16
- browser/source event.
15
+ 4. Add one source: upload a file, choose and scan a folder, save a note, or
16
+ capture a browser/source event.
17
17
  5. Ask one grounded question and inspect the answer proof.
18
18
  6. Open the Knowledge Graph only when the user wants source-level evidence.
19
19
  7. Back up the Brain once useful memory exists.
@@ -32,7 +32,7 @@ read the docs first.
32
32
 
33
33
  ## Release Gate
34
34
 
35
- 8.5.0 treats onboarding as a release gate, not marketing copy. The current
35
+ 8.6.0 treats onboarding as a release gate, not marketing copy. The current
36
36
  machine-checkable product readiness report requires this five-minute contract,
37
37
  the Brain Home surface, setup helpers, graph ingestion tests, and exact release
38
38
  artifact documentation before the release can be called complete.
@@ -1,6 +1,6 @@
1
1
  # Lattice AI Trust Model
2
2
 
3
- Current release: **8.5.0 — Tool Registry Readiness & Config DI**.
3
+ Current release: **8.6.0 — Desktop Capture & Navigation Reliability**.
4
4
 
5
5
  Lattice AI is local-first, explicit about external communication, and honest
6
6
  when a capability is unavailable.
@@ -1,6 +1,6 @@
1
1
  # Why Lattice AI Exists
2
2
 
3
- Current release: **8.5.0 — Tool Registry Readiness & Config DI**.
3
+ Current release: **8.6.0 — Desktop Capture & Navigation Reliability**.
4
4
 
5
5
  **Lattice AI is a local-first Digital Brain that keeps your knowledge durable
6
6
  across any AI model.**
@@ -32,7 +32,7 @@ The graph matters, but it is not the product identity. The product identity is a
32
32
  local-first Digital Brain: a place where the user can talk, add sources, watch
33
33
  memory grow, and inspect the Knowledge Graph when they need proof.
34
34
 
35
- In 8.5.0 the first screen is intentionally not a dashboard. The living Brain,
35
+ In 8.6.0 the first screen is intentionally not a dashboard. The living Brain,
36
36
  conversation composer, evidence-backed Brain Brief, and five-minute onboarding
37
37
  path appear together so the user immediately knows what matters, what to add,
38
38
  and why the answer is grounded in local memory.
package/docs/kg-schema.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Knowledge Graph Schema
2
2
 
3
- Current release: **8.5.0 — Tool Registry Readiness & Config DI**.
3
+ Current release: **8.6.0 — Desktop Capture & Navigation Reliability**.
4
4
 
5
5
  명세 출처: `lattice_ai_full_spec.pptx` 슬라이드 20·21·22
6
6
  구현: `kg_schema.py`
@@ -26,7 +26,7 @@ from .storage import (
26
26
  storage_from_env,
27
27
  )
28
28
 
29
- __version__ = "8.5.0"
29
+ __version__ = "8.6.0"
30
30
 
31
31
  __all__ = [
32
32
  "AgentRuntime",
@@ -21,7 +21,7 @@ from typing import Any, Callable, Dict, List, Optional
21
21
  from .contracts import multi_agent_contract
22
22
 
23
23
 
24
- MULTI_AGENT_VERSION = "8.5.0"
24
+ MULTI_AGENT_VERSION = "8.6.0"
25
25
 
26
26
  AGENT_ROLES = ("researcher", "planner", "executor", "reviewer", "release")
27
27
  CORE_PIPELINE = ("planner", "executor", "reviewer")
@@ -1,3 +1,3 @@
1
1
  """Lattice AI - modular server package."""
2
2
 
3
- __version__ = "8.5.0"
3
+ __version__ = "8.6.0"
@@ -11,7 +11,7 @@ from copy import deepcopy
11
11
  from typing import Any, Dict, List, Optional
12
12
 
13
13
 
14
- MARKETPLACE_VERSION = "8.5.0"
14
+ MARKETPLACE_VERSION = "8.6.0"
15
15
  TEMPLATE_KINDS = ("plugin", "workflow", "agent")
16
16
 
17
17
 
@@ -49,7 +49,7 @@ __all__ = [
49
49
  "remove_skill_directory",
50
50
  ]
51
51
 
52
- WORKSPACE_OS_VERSION = "8.5.0"
52
+ WORKSPACE_OS_VERSION = "8.6.0"
53
53
 
54
54
  # Workspace types separate single-user Personal workspaces from shared
55
55
  # Organization workspaces. Both keep the same local-first JSON store; the type
@@ -1,6 +1,6 @@
1
1
  """Machine-checkable architecture readiness gates for release work.
2
2
 
3
- 8.5.0 keeps the major architecture priorities under an explicit release
3
+ 8.6.0 keeps the major architecture priorities under an explicit release
4
4
  contract while product maturity work reduces visible beta seams. AgentRuntime, ToolRegistry,
5
5
  central Config, decomposed server runtime, and Knowledge Graph stabilization
6
6
  must remain discoverable, ordered, and backed by tests before the release can be
@@ -17,7 +17,7 @@ from typing import Any, Dict, List
17
17
  from latticeai.core.legacy_compatibility import legacy_shim_report
18
18
 
19
19
 
20
- ARCHITECTURE_VERSION_TARGET = "8.5.0"
20
+ ARCHITECTURE_VERSION_TARGET = "8.6.0"
21
21
 
22
22
  PREFERRED_REFACTORING_ORDER = [
23
23
  "agent-runtime",
@@ -18,7 +18,7 @@ from typing import Any, Dict, List
18
18
 
19
19
  from latticeai.services.architecture_readiness import architecture_readiness
20
20
 
21
- PRODUCT_VERSION_TARGET = "8.5.0"
21
+ PRODUCT_VERSION_TARGET = "8.6.0"
22
22
 
23
23
 
24
24
  @dataclass(frozen=True)
@@ -76,10 +76,10 @@ PRODUCT_GATES: List[ProductGate] = [
76
76
  evidence=[
77
77
  "package.json::release:artifacts",
78
78
  "package.json::release:validate",
79
- "README.md::dist/ltcai-8.5.0-py3-none-any.whl",
80
- "README.md::dist/ltcai-8.5.0.tar.gz",
81
- "README.md::dist/ltcai-8.5.0.vsix",
82
- "README.md::ltcai-8.5.0.tgz",
79
+ "README.md::dist/ltcai-8.6.0-py3-none-any.whl",
80
+ "README.md::dist/ltcai-8.6.0.tar.gz",
81
+ "README.md::dist/ltcai-8.6.0.vsix",
82
+ "README.md::ltcai-8.6.0.tgz",
83
83
  "scripts/validate_release_artifacts.py",
84
84
  "scripts/release_smoke.py",
85
85
  "Dockerfile",
@@ -95,12 +95,12 @@ PRODUCT_GATES: List[ProductGate] = [
95
95
  title="Release story is documented and honest",
96
96
  evidence=[
97
97
  "README.md",
98
- "README.md::The current release is **8.5.0",
99
- "SECURITY.md::8.5.x (latest)",
100
- "vscode-extension/README.md::**8.5.0",
101
- "docs/CHANGELOG.md::## [8.5.0]",
98
+ "README.md::The current release is **8.6.0",
99
+ "SECURITY.md::8.6.x (latest)",
100
+ "vscode-extension/README.md::**8.6.0",
101
+ "docs/CHANGELOG.md::## [8.6.0]",
102
102
  "FEATURE_STATUS.md",
103
- "RELEASE_NOTES_v8.4.0.md",
103
+ "RELEASE_NOTES_v8.6.0.md",
104
104
  "latticeai/core/agent.py::SingleAgentRuntime",
105
105
  "latticeai/core/agent.py::AgentRuntime = SingleAgentRuntime",
106
106
  "lattice_brain/runtime/contracts.py::runtime-boundary/v1",
@@ -115,7 +115,7 @@ PRODUCT_GATES: List[ProductGate] = [
115
115
  id="ecosystem-path",
116
116
  title="Community and plugin growth path is explicit",
117
117
  evidence=[
118
- "docs/COMMUNITY_AND_PLUGINS.md::8.5.0",
118
+ "docs/COMMUNITY_AND_PLUGINS.md::8.6.0",
119
119
  "docs/PLUGIN_SDK.md",
120
120
  "plugins/README.md",
121
121
  "plugins/hello-world/plugin.json",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ltcai",
3
- "version": "8.5.0",
3
+ "version": "8.6.0",
4
4
  "description": "Lattice AI — local-first Digital Brain that keeps your knowledge durable across any AI model.",
5
5
  "homepage": "https://github.com/TaeSooPark-PTS/LatticeAI#readme",
6
6
  "repository": {
@@ -1584,7 +1584,7 @@ dependencies = [
1584
1584
 
1585
1585
  [[package]]
1586
1586
  name = "lattice-ai-desktop"
1587
- version = "8.4.0"
1587
+ version = "8.6.0"
1588
1588
  dependencies = [
1589
1589
  "plist",
1590
1590
  "serde",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lattice-ai-desktop"
3
- version = "8.5.0"
3
+ version = "8.6.0"
4
4
  description = "Lattice AI Digital Brain desktop shell"
5
5
  authors = ["TaeSoo Park"]
6
6
  edition = "2021"
@@ -3,5 +3,8 @@
3
3
  "identifier": "default",
4
4
  "description": "Default Lattice AI desktop capability set.",
5
5
  "windows": ["main"],
6
+ "remote": {
7
+ "urls": ["http://127.0.0.1:*", "http://localhost:*"]
8
+ },
6
9
  "permissions": ["core:default"]
7
10
  }
@@ -66,6 +66,36 @@ fn shutdown_backend(state: State<'_, BackendState>) -> BackendStatus {
66
66
  status_from_state(&state)
67
67
  }
68
68
 
69
+ #[tauri::command]
70
+ fn select_folder() -> Option<String> {
71
+ native_select_folder()
72
+ }
73
+
74
+ #[cfg(target_os = "macos")]
75
+ fn native_select_folder() -> Option<String> {
76
+ let output = Command::new("osascript")
77
+ .args([
78
+ "-e",
79
+ r#"POSIX path of (choose folder with prompt "Choose a folder for Lattice AI")"#,
80
+ ])
81
+ .output()
82
+ .ok()?;
83
+ if !output.status.success() {
84
+ return None;
85
+ }
86
+ let path = String::from_utf8_lossy(&output.stdout).trim().to_string();
87
+ if path.is_empty() {
88
+ None
89
+ } else {
90
+ Some(path)
91
+ }
92
+ }
93
+
94
+ #[cfg(not(target_os = "macos"))]
95
+ fn native_select_folder() -> Option<String> {
96
+ None
97
+ }
98
+
69
99
  fn split_command(command: &str) -> Vec<String> {
70
100
  command.split_whitespace().map(|part| part.to_string()).collect()
71
101
  }
@@ -379,7 +409,8 @@ fn main() {
379
409
  backend_origin,
380
410
  backend_status,
381
411
  restart_backend,
382
- shutdown_backend
412
+ shutdown_backend,
413
+ select_folder
383
414
  ])
384
415
  .setup(|app| {
385
416
  if let Some(window) = app.get_webview_window("main") {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://schema.tauri.app/config/2",
3
3
  "productName": "Lattice AI",
4
- "version": "8.5.0",
4
+ "version": "8.6.0",
5
5
  "identifier": "ai.lattice.desktop",
6
6
  "build": {
7
7
  "beforeDevCommand": "npm run frontend:dev",
@@ -1,19 +1,19 @@
1
1
  {
2
- "version": "8.5.0",
2
+ "version": "8.6.0",
3
3
  "generated_at": "vite",
4
4
  "entrypoints": {
5
- "app": "/static/app/assets/index-CoiuIFFP.js"
5
+ "app": "/static/app/assets/index-BaaPtsLp.js"
6
6
  },
7
7
  "assets": {
8
8
  "../node_modules/@tauri-apps/api/core.js": "/static/app/assets/core-CwxXejkd.js",
9
- "_primitives-BdsUNXa6.js": "/static/app/assets/primitives-BdsUNXa6.js",
10
- "_textarea-e7qaj6Hm.js": "/static/app/assets/textarea-e7qaj6Hm.js",
11
- "index.html": "/static/app/assets/index-CoiuIFFP.js",
12
- "assets/index-ty1iGgZu.css": "/static/app/assets/index-ty1iGgZu.css",
13
- "src/pages/Act.tsx": "/static/app/assets/Act-D5mo4tE4.js",
14
- "src/pages/Brain.tsx": "/static/app/assets/Brain-BVWyQw8A.js",
15
- "src/pages/Capture.tsx": "/static/app/assets/Capture-C1R6GT0t.js",
16
- "src/pages/Library.tsx": "/static/app/assets/Library-C2wIxpTs.js",
17
- "src/pages/System.tsx": "/static/app/assets/System-DE5GRyQR.js"
9
+ "_primitives-lz45ZfWY.js": "/static/app/assets/primitives-lz45ZfWY.js",
10
+ "_textarea-C7uwJsxy.js": "/static/app/assets/textarea-C7uwJsxy.js",
11
+ "index.html": "/static/app/assets/index-BaaPtsLp.js",
12
+ "assets/index-_M5aCv21.css": "/static/app/assets/index-_M5aCv21.css",
13
+ "src/pages/Act.tsx": "/static/app/assets/Act-IrojDEWY.js",
14
+ "src/pages/Brain.tsx": "/static/app/assets/Brain--VODO4HM.js",
15
+ "src/pages/Capture.tsx": "/static/app/assets/Capture-BUP_wJ7s.js",
16
+ "src/pages/Library.tsx": "/static/app/assets/Library-DrVto3cO.js",
17
+ "src/pages/System.tsx": "/static/app/assets/System-DNrVbcMX.js"
18
18
  }
19
19
  }