ltcai 12.1.0 → 12.2.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 (73) hide show
  1. package/README.md +33 -36
  2. package/docs/CHANGELOG.md +18 -0
  3. package/docs/CI_AND_RELEASE_GATES.md +7 -4
  4. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  5. package/docs/DEVELOPMENT.md +11 -11
  6. package/docs/ONBOARDING.md +1 -1
  7. package/docs/OPERATIONS.md +1 -1
  8. package/docs/TRUST_MODEL.md +1 -1
  9. package/docs/WHY_LATTICE.md +1 -1
  10. package/docs/kg-schema.md +1 -1
  11. package/lattice_brain/__init__.py +1 -1
  12. package/latticeai/__init__.py +1 -1
  13. package/latticeai/services/architecture_readiness.py +1 -1
  14. package/latticeai/services/product_readiness.py +1 -1
  15. package/package.json +1 -1
  16. package/scripts/check_current_release_docs.mjs +1 -1
  17. package/scripts/release_screen_claims.json +23 -0
  18. package/src-tauri/Cargo.lock +10 -10
  19. package/src-tauri/Cargo.toml +1 -1
  20. package/src-tauri/tauri.conf.json +1 -1
  21. package/static/app/asset-manifest.json +45 -45
  22. package/static/app/assets/{Act-DCRUH46a.js → Act-BjGgeuQd.js} +2 -2
  23. package/static/app/assets/{AdminConsole-BFBj6OvN.js → AdminConsole-C6hcJGMr.js} +1 -1
  24. package/static/app/assets/{Brain-BXcoxIvb.js → Brain-CNQnIaA8.js} +2 -2
  25. package/static/app/assets/BrainHome-CGJ6O69l.js +2 -0
  26. package/static/app/assets/{BrainSignals-DrfYSNjR.js → BrainSignals-DONPljxz.js} +1 -1
  27. package/static/app/assets/{Capture-BsO_OAeh.js → Capture-BMCC5544.js} +1 -1
  28. package/static/app/assets/{Chronicle-BUj_UH3D.js → Chronicle-DF6sOonx.js} +1 -1
  29. package/static/app/assets/{CommandPalette-B4SWOaR-.js → CommandPalette-DiWyutdM.js} +1 -1
  30. package/static/app/assets/{DigitalBrainExplorer-S1GSsyIT.js → DigitalBrainExplorer-BL3V6Dqz.js} +1 -1
  31. package/static/app/assets/{Library-CKUR2eVb.js → Library-B-ue9hXL.js} +1 -1
  32. package/static/app/assets/{LivingBrain--2UoV3Ki.js → LivingBrain-b1RiM5Rh.js} +1 -1
  33. package/static/app/assets/{ProductFlow-D7rB6Xsu.js → ProductFlow-wZIKJW7G.js} +1 -1
  34. package/static/app/assets/{ReviewCard-UzQZ1ULT.js → ReviewCard-D1fGTEn7.js} +1 -1
  35. package/static/app/assets/{RunsListPanel-CDGFQYMo.js → RunsListPanel-DAirtLkS.js} +1 -1
  36. package/static/app/assets/System-BEI1eoC4.js +1 -0
  37. package/static/app/assets/{WorkflowGraph-BIcWZTUQ.js → WorkflowGraph-qrI6GU4R.js} +1 -1
  38. package/static/app/assets/{WorkflowsPanel-BeT5fmbk.js → WorkflowsPanel-CIMNTw-O.js} +2 -2
  39. package/static/app/assets/{actHelpers-DhutJObL.js → actHelpers-BMukIRnQ.js} +1 -1
  40. package/static/app/assets/arrow-left-iVa1goff.js +1 -0
  41. package/static/app/assets/{bot-D8tZzKMD.js → bot-Dkd-DbiP.js} +1 -1
  42. package/static/app/assets/brain-BsexlNOA.js +1 -0
  43. package/static/app/assets/{button-Tzf5D7L1.js → button-BA0N_zId.js} +1 -1
  44. package/static/app/assets/circle-check-BxaDWjPR.js +1 -0
  45. package/static/app/assets/{circle-pause-Druue_tZ.js → circle-pause-918Kuvk0.js} +1 -1
  46. package/static/app/assets/{circle-play-BAht4SSW.js → circle-play-CS0IbVDV.js} +1 -1
  47. package/static/app/assets/{cpu-BPbmZRPp.js → cpu-BpvoWsjk.js} +1 -1
  48. package/static/app/assets/{download-BmxPZEwU.js → download-BvkMLLLN.js} +1 -1
  49. package/static/app/assets/{folder-open-DokOmFQJ.js → folder-open-YmGugIBf.js} +1 -1
  50. package/static/app/assets/{hard-drive-Cw6aEA2h.js → hard-drive-BOzmS-cq.js} +1 -1
  51. package/static/app/assets/{index-CB93CZWW.css → index-C8gwOf0C.css} +1 -1
  52. package/static/app/assets/{index-DhszK7A3.js → index-CfeqZ9Ri.js} +3 -3
  53. package/static/app/assets/{input-BCdHoZXA.js → input-CFfCfMjO.js} +1 -1
  54. package/static/app/assets/{link-2-CCModn4z.js → link-2-CcYzeM7M.js} +1 -1
  55. package/static/app/assets/{permissionCopy-BSp1jYG7.js → permissionCopy-B23r24oX.js} +1 -1
  56. package/static/app/assets/{primitives-D01WcJn7.js → primitives-BDryQl6H.js} +1 -1
  57. package/static/app/assets/search-DHsPwmPw.js +1 -0
  58. package/static/app/assets/{share-2-DMMkM8Iu.js → share-2-B-gPv2ec.js} +1 -1
  59. package/static/app/assets/{shield-alert--mrCWQko.js → shield-alert-CfyRO1p0.js} +1 -1
  60. package/static/app/assets/{sourceMeta-nvd3Cdz3.js → sourceMeta-C4LDEy1S.js} +1 -1
  61. package/static/app/assets/{textarea-DfayhQiX.js → textarea-BdVMYEb1.js} +1 -1
  62. package/static/app/assets/{useFocusTrap-C5NsTvsI.js → useFocusTrap-CV73DLHn.js} +1 -1
  63. package/static/app/assets/{useMutation-D7IMQTeI.js → useMutation-B8QKq2NW.js} +1 -1
  64. package/static/app/assets/workspace-BmfVs66W.js +1 -0
  65. package/static/app/index.html +2 -2
  66. package/static/sw.js +1 -1
  67. package/static/app/assets/BrainHome-IhcEPC3v.js +0 -2
  68. package/static/app/assets/System-0OSxZrTp.js +0 -1
  69. package/static/app/assets/arrow-left-BwJfcH8J.js +0 -1
  70. package/static/app/assets/brain-DP2JPXSV.js +0 -1
  71. package/static/app/assets/circle-check-D68nHcgS.js +0 -1
  72. package/static/app/assets/search-C_zAGfvO.js +0 -1
  73. package/static/app/assets/workspace-C7xidB7c.js +0 -1
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  [![CD Status](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/publish.yml/badge.svg)](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/publish.yml)
13
13
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
14
14
 
15
- ![v12.1.0 Living Brain walkthrough](output/release/v12.1.0/gifs/v12.1.0-living-brain-walkthrough.gif)
15
+ ![v12.2.0 Living Brain walkthrough](output/release/v12.2.0/gifs/v12.2.0-living-brain-walkthrough.gif)
16
16
 
17
17
  Chat, files, folders, notes, and web pages all flow into one durable knowledge
18
18
  graph on your computer. The default is local. Cloud is optional — an
@@ -26,10 +26,10 @@ nothing leaves your machine without explicit consent.
26
26
 
27
27
  | | |
28
28
  | --- | --- |
29
- | **See your Brain's story in time** — a growth curve, an activity heatmap, and each day's story, rewindable to any past moment ![Brain Chronicle](output/release/v12.1.0/screenshots/13-chronicle.png) | **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory ![Brain Chat](output/release/v12.1.0/screenshots/04-brain-chat-home.png) |
30
- | **See how knowledge connects** — a real relationship graph, not a file list ![Memory Graph](output/release/v12.1.0/screenshots/05-memory-graph.png) | **Capture anything** — files, whole folders, notes, screenshots, web pages ![Capture](output/release/v12.1.0/screenshots/06-capture.png) |
31
- | **Automate with review** — agent changes become proposals you approve first ![Review Center](output/release/v12.1.0/screenshots/12-review-center.png) | **Pick a model in one click** — recommended local models for your hardware ![Recommended Models](output/release/v12.1.0/screenshots/02-recommended-models.png) |
32
- | **Watch a file become memory** — three named steps, not a pipeline diagram ![Material to memory](output/release/v12.1.0/screenshots/11-knowledge-journey.png) | **Say how much it may do alone** — one dial in plain words; dangerous actions stay blocked either way ![Settings](output/release/v12.1.0/screenshots/08-system.png) |
29
+ | **See your Brain's story in time** — a growth curve, an activity heatmap, and each day's story, rewindable to any past moment ![Brain Chronicle](output/release/v12.2.0/screenshots/13-chronicle.png) | **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory ![Brain Chat](output/release/v12.2.0/screenshots/04-brain-chat-home.png) |
30
+ | **See how knowledge connects** — a real relationship graph, not a file list ![Memory Graph](output/release/v12.2.0/screenshots/05-memory-graph.png) | **Capture anything** — files, whole folders, notes, screenshots, web pages ![Capture](output/release/v12.2.0/screenshots/06-capture.png) |
31
+ | **Automate with review** — agent changes become proposals you approve first ![Review Center](output/release/v12.2.0/screenshots/12-review-center.png) | **Pick a model in one click** — recommended local models for your hardware ![Recommended Models](output/release/v12.2.0/screenshots/02-recommended-models.png) |
32
+ | **Watch a file become memory** — three named steps, not a pipeline diagram ![Material to memory](output/release/v12.2.0/screenshots/11-knowledge-journey.png) | **Say how much it may do alone** — one dial in plain words; dangerous actions stay blocked either way ![Settings](output/release/v12.2.0/screenshots/08-system.png) |
33
33
 
34
34
  ## Why Lattice AI
35
35
 
@@ -64,47 +64,43 @@ First-run flow — wake the Brain, pick the owner, load a recommended model:
64
64
 
65
65
  | | | |
66
66
  | --- | --- | --- |
67
- | ![Login](output/release/v12.1.0/screenshots/01-login.png) | ![Model install](output/release/v12.1.0/screenshots/03-install-load-progress.png) | ![Model library](output/release/v12.1.0/screenshots/07-model-library.png) |
67
+ | ![Login](output/release/v12.2.0/screenshots/01-login.png) | ![Model install](output/release/v12.2.0/screenshots/03-install-load-progress.png) | ![Model library](output/release/v12.2.0/screenshots/07-model-library.png) |
68
68
 
69
69
  Screenshot index and capture notes:
70
- [output/release/v12.1.0/SCREENSHOT_INDEX.md](output/release/v12.1.0/SCREENSHOT_INDEX.md)
70
+ [output/release/v12.2.0/SCREENSHOT_INDEX.md](output/release/v12.2.0/SCREENSHOT_INDEX.md)
71
71
 
72
72
  ## Current Release
73
73
 
74
- The current release is **12.1.0 — Fast Path**:
75
-
76
- 12.0.0 opened the house. This release makes remembering the house faster:
77
- folder ingest and vault-watch overlap parse/extract/embed across files,
78
- one `/worker/embed` call carries the document plus its chunks, rebuild
79
- hashes outside the SQLite write lock, and a Brain with 512+ vectors tries
80
- `hnsw+rescore` when a worker sidecar is bound. The door is still **422
81
- operations / 41 families** over a **20-route worker**. Cloud is still
82
- optional and the default is still local.
83
-
84
- - **Ingest is a pipeline, not a queue of one.** Up to four files parse and
85
- embed at once. Unchanged files still skip on fingerprint and never
86
- enter the pool. Writes still go through the single `GraphWriter`.
87
- - **One embed round-trip per note.** The document vector and every chunk
88
- share a `texts` body; extract runs beside it, not in front of it; the
89
- native incremental index files those vectors instead of hashing them
90
- again.
91
- - **Search stays exact until it does not need to.** Env default is still
92
- `brute`. At 512 vectors with a bound sidecar, search asks HNSW first
93
- and falls back to the exact scan with the original `brute` block if
94
- the sidecar cannot answer.
74
+ The current release is **12.2.0 — Small Voice**:
75
+
76
+ 12.1.0 made remembering faster. This release makes a small local model
77
+ able to *act*: 2B-class models can call MCP tools and skills without
78
+ emitting perfect JSON, and the home screen names those actions in
79
+ plain words. The door is still **422 operations / 41 families** over a
80
+ **20-route worker**. Cloud is still optional and the default is still local.
81
+
82
+ - **Small models speak tools.** `name`/`arguments`, Qwen XML, and
83
+ `Action: mcp.grep` parse as the same call. Compact lists stay at nine
84
+ rows. A skill's "use when" line is consulted even if the user never
85
+ typed `skill.`. A quoted search term fills a missing `pattern`.
86
+ - **The composer offers the work.** Folder search, read-and-summarize,
87
+ memory, and skill review are chips under the box. Settings says the
88
+ same in one card. MCP/skill steps in the timeline get a plain prefix.
89
+ - **12.1.0 Fast Path is unchanged.** Folder overlap, one embed body,
90
+ rebuild outside the write lock, auto-HNSW at 512.
95
91
 
96
92
  What this release does not close — small-model *content* quality, the
97
93
  mock-only `api_key` path, hash embeddings as the no-download fallback,
98
94
  watch never deleting on its own, the ad-hoc-signed dmg — is listed in
99
- [RELEASE_NOTES_v12.1.0.md](RELEASE_NOTES_v12.1.0.md).
95
+ [RELEASE_NOTES_v12.2.0.md](RELEASE_NOTES_v12.2.0.md).
100
96
 
101
- Expected artifacts for 12.1.0 release must use exact filenames:
97
+ Expected artifacts for 12.2.0 release must use exact filenames:
102
98
 
103
- - `dist/ltcai-12.1.0-py3-none-any.whl`
104
- - `dist/ltcai-12.1.0.tar.gz`
105
- - `ltcai-12.1.0.tgz`
106
- - `dist/ltcai-12.1.0.vsix`
107
- - `src-tauri/target/release/bundle/dmg/Lattice AI_12.1.0_aarch64.dmg`
99
+ - `dist/ltcai-12.2.0-py3-none-any.whl`
100
+ - `dist/ltcai-12.2.0.tar.gz`
101
+ - `ltcai-12.2.0.tgz`
102
+ - `dist/ltcai-12.2.0.vsix`
103
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_12.2.0_aarch64.dmg`
108
104
 
109
105
  Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
110
106
 
@@ -174,7 +170,7 @@ Validation via `npm run lint`, `npm run test:unit`, `npm run test:visual`.
174
170
  pending-only, no Self-Model refiner, `delete_node` leaving `PART_OF`,
175
171
  review events silent without an owner, KG-api ingest text-only, two
176
172
  store cycles per review mutation) are listed with their reasons in
177
- [RELEASE_NOTES_v12.1.0.md](RELEASE_NOTES_v12.1.0.md) and prioritized in
173
+ [RELEASE_NOTES_v12.2.0.md](RELEASE_NOTES_v12.2.0.md) and prioritized in
178
174
  [docs/ROADMAP.md](docs/ROADMAP.md).
179
175
 
180
176
  ## Release History
@@ -186,6 +182,7 @@ same boundary. Earlier notes stay in the tree as `RELEASE_NOTES_v*.md` files.
186
182
 
187
183
  | Version | Theme |
188
184
  | --- | --- |
185
+ | 12.2.0 | Small Voice |
189
186
  | 12.1.0 | Fast Path |
190
187
  | 12.0.0 | Open House |
191
188
  | 11.9.0 | Working Order |
package/docs/CHANGELOG.md CHANGED
@@ -4,6 +4,24 @@ The top entry is either the current unreleased main-branch work or the current
4
4
  release line. Older entries are historical and may describe behavior as it
5
5
  existed at that release.
6
6
 
7
+ ## [12.2.0] - 2026-08-29 — Small Voice
8
+
9
+ ### Added
10
+ - Function-calling envelope parse: `name`/`arguments`, nested `function`,
11
+ Qwen `<function=…><parameter=…>`, `Action: mcp.grep`.
12
+ - Compact executor lists cap at the guided menu size (9). Skills whose
13
+ `when` line matches the request are consulted without naming `skill.`.
14
+ - A quoted search term fills a missing MCP/native `pattern`/`query`.
15
+ - Home composer chips for folder search, read-and-summarize, memory, and
16
+ skill review. Settings card states the same. MCP/skill timeline rows
17
+ get a plain-language prefix.
18
+
19
+ ### Changed
20
+ - Compact prompt names the function-calling envelope 2B models emit.
21
+
22
+ ### Fixed
23
+ - Labeled salvage refused dotted `mcp.` / `skill.` names as chatter.
24
+
7
25
  ## [12.1.0] - 2026-08-29 — Fast Path
8
26
 
9
27
  ### Added
@@ -1,6 +1,6 @@
1
1
  # CI & Release Gates
2
2
 
3
- > Status: reference 2026-08-16
3
+ > Status: reference 2026-08-29
4
4
 
5
5
  Reference for the GitHub Actions workflows that guard `main` and releases, the
6
6
  supply-chain hardening applied to them, and the recommended branch-protection
@@ -13,6 +13,7 @@ configuration. Companion to [SECURITY_AUDIT.md](SECURITY_AUDIT.md) and
13
13
  |----------|------|----------|---------|
14
14
  | CI | `.github/workflows/ci.yml` | push/PR to `main` | Lint, typecheck, unit + coverage + integration tests, product-readiness, build + wheel smoke, Rust workspace |
15
15
  | Release | `.github/workflows/release.yml` | tags `v*` / `[0-9]*` | Build & validate artifacts (no publish; does not re-run CI lint/tests) |
16
+ | CD | `.github/workflows/publish.yml` | GitHub Release `published`, dispatch | Publish npm / PyPI / Marketplace / Open VSX (idempotent; never on a bare tag) |
16
17
  | Visual Smoke | `.github/workflows/visual.yml` | push to `main`, nightly cron, dispatch | Playwright visual smoke (not on PRs) |
17
18
  | Sidecar E2E | `.github/workflows/e2e-sidecar.yml` | nightly cron, dispatch | Live sidecar Playwright first-value loop |
18
19
  | Dependency Audit | `.github/workflows/dependency-audit.yml` | weekly cron, dispatch | pip-audit + npm audit + CycloneDX SBOMs |
@@ -183,9 +184,11 @@ It still runs:
183
184
  - `npm pack`, vsce package
184
185
  - `validate_release_artifacts.py <v> --require-vsix --require-tgz`
185
186
 
186
- Package publication (PyPI / npm / VS Code Marketplace / Open VSX) is a manual
187
- step (`npm run publish:*`) using **exact version filenames**, never a `dist/*`
188
- glob, so pushing a tag can never publish by accident. See
187
+ Package publication (PyPI / npm / VS Code Marketplace / Open VSX) is
188
+ `publish.yml` (CD). It runs when a GitHub Release is **published**, or on
189
+ `workflow_dispatch` if that version already has a pushed `v*` tag. A bare
190
+ tag push never publishes. Local `npm run publish:*` still uses **exact
191
+ version filenames**, never a `dist/*` glob. See
189
192
  [../RELEASE.md](../RELEASE.md) for the full procedure.
190
193
 
191
194
  ## Limitations (honest)
@@ -1,6 +1,6 @@
1
1
  # Community And Plugins
2
2
 
3
- Current release: **12.1.0 — Fast Path**.
3
+ Current release: **12.2.0 — Small Voice**.
4
4
 
5
5
  LatticeAI defines the path from a strong local-first framework (8.4.0
6
6
  action-aware baseline, 8.5.0 registry+DI hardening, 8.6.0 capture/navigation
@@ -3,7 +3,7 @@
3
3
  > **Status: canonical** — current contributor guidance, kept in sync with the
4
4
  > current release.
5
5
 
6
- Current release: **12.1.0 — Fast Path**.
6
+ Current release: **12.2.0 — Small Voice**.
7
7
 
8
8
  This document is the contributor onboarding path: how to boot the tree, where
9
9
  a change belongs, which gates will go red, and the house rules that keep the
@@ -80,7 +80,7 @@ worker interpreter with `LTCAI_PYTHON` when both exist.
80
80
  `rust/target/release/lattice-host`, then `rust/target/debug/lattice-host`. If
81
81
  none exist it runs `cargo build -p lattice-host` (debug). A stale
82
82
  `rust/target/release/lattice-host` wins over a current debug binary — pin or
83
- rebuild (`cargo build -p lattice-host --release`) if `-V` is not 12.1.0.
83
+ rebuild (`cargo build -p lattice-host --release`) if `-V` is not 12.2.0.
84
84
 
85
85
  Do not run `npm start` and `npm run dev` on the same port. The worker
86
86
  entrypoint defaults to `LATTICEAI_PORT` or **4825**, the same port as the
@@ -237,7 +237,7 @@ in `rust/`.
237
237
  Markdown) and `scripts/check_doc_status.mjs` (every relative link under the
238
238
  root canonical docs and `docs/**`). A red line is a broken relative path —
239
239
  fix the href or put the file where the href says. Canonical docs (this one
240
- included) must carry `Current release: **12.1.0 — …**` matching
240
+ included) must carry `Current release: **12.2.0 — …**` matching
241
241
  `package.json`; do not bump that marker here ahead of the release lane.
242
242
  `npm run docs:check-current` is the release-set version pin
243
243
  ([`scripts/check_current_release_docs.mjs`](../scripts/check_current_release_docs.mjs)).
@@ -248,7 +248,7 @@ changelog entries that mention old versions stay.
248
248
  ### Release-evidence binding
249
249
 
250
250
  `scripts/check_release_evidence_bound.mjs` (lint member 9) checks that
251
- `output/release/v12.1.0/SCREENSHOT_INDEX.md` still names the live
251
+ `output/release/v12.2.0/SCREENSHOT_INDEX.md` still names the live
252
252
  `static/app/asset-manifest.json` digest and the visual mock-server
253
253
  fingerprint. It exists so a later `npm run build:assets` cannot ship
254
254
  screenshots of an older UI, and so a mock-server edit cannot leave the
@@ -317,19 +317,19 @@ For user-facing, API, runtime, release, or packaging changes, check:
317
317
  appears
318
318
 
319
319
  The release-docs lane owns README / ARCHITECTURE / FEATURE_STATUS version
320
- bumps. Do not move this file's `Current release` marker off 12.1.0 ahead of
320
+ bumps. Do not move this file's `Current release` marker off 12.2.0 ahead of
321
321
  that lane.
322
322
 
323
323
  Release/publish examples must use exact target-version filenames. Do not
324
324
  document wildcard artifact upload commands.
325
325
 
326
- For 12.1.0 release work, exact artifacts are:
326
+ For 12.2.0 release work, exact artifacts are:
327
327
 
328
- - `dist/ltcai-12.1.0-py3-none-any.whl`
329
- - `dist/ltcai-12.1.0.tar.gz`
330
- - `ltcai-12.1.0.tgz`
331
- - `dist/ltcai-12.1.0.vsix`
332
- - `src-tauri/target/release/bundle/dmg/Lattice AI_12.1.0_aarch64.dmg`
328
+ - `dist/ltcai-12.2.0-py3-none-any.whl`
329
+ - `dist/ltcai-12.2.0.tar.gz`
330
+ - `ltcai-12.2.0.tgz`
331
+ - `dist/ltcai-12.2.0.vsix`
332
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_12.2.0_aarch64.dmg`
333
333
 
334
334
  The dmg is ad-hoc signed (effectively unsigned); `npm run release:validate`
335
335
  checks the names and presence, not a Developer ID signature.
@@ -1,6 +1,6 @@
1
1
  # Lattice AI Onboarding
2
2
 
3
- Current release: **12.1.0 — Fast Path**.
3
+ Current release: **12.2.0 — Small Voice**.
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
@@ -1,4 +1,4 @@
1
- # Lattice AI — Operations Guide (v12.1.0)
1
+ # Lattice AI — Operations Guide (v12.2.0)
2
2
 
3
3
  > **Status: canonical** — kept in sync with the current release. Storage layout
4
4
  > below reflects the SQLite live Brain store and workspace scoping, not the
@@ -1,6 +1,6 @@
1
1
  # Lattice AI Trust Model
2
2
 
3
- Current release: **12.1.0 — Fast Path**.
3
+ Current release: **12.2.0 — Small Voice**.
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: **12.1.0 — Fast Path**.
3
+ Current release: **12.2.0 — Small Voice**.
4
4
 
5
5
  **Lattice AI is a local-first Digital Brain that keeps your knowledge durable
6
6
  across any AI model.**
package/docs/kg-schema.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Knowledge Graph Schema
2
2
 
3
- Current release: **12.1.0 — Fast Path**.
3
+ Current release: **12.2.0 — Small Voice**.
4
4
 
5
5
  명세 출처: `lattice_ai_full_spec.pptx` 슬라이드 20·21·22
6
6
  구현: `lattice_brain/graph/schema.py`
@@ -31,7 +31,7 @@ from .multimodal import (
31
31
  transcribe_audio,
32
32
  )
33
33
 
34
- __version__ = "12.1.0"
34
+ __version__ = "12.2.0"
35
35
 
36
36
  __all__ = [
37
37
  "AudioFacts",
@@ -1,3 +1,3 @@
1
1
  """Lattice AI - modular server package."""
2
2
 
3
- __version__ = "12.1.0"
3
+ __version__ = "12.2.0"
@@ -19,7 +19,7 @@ from dataclasses import dataclass
19
19
  from pathlib import Path
20
20
  from typing import Any, Dict, List
21
21
 
22
- ARCHITECTURE_VERSION_TARGET = "12.1.0"
22
+ ARCHITECTURE_VERSION_TARGET = "12.2.0"
23
23
 
24
24
  PREFERRED_REFACTORING_ORDER = [
25
25
  "agent-runtime",
@@ -28,7 +28,7 @@ from typing import Any, Dict, List
28
28
 
29
29
  from latticeai.services.architecture_readiness import architecture_readiness
30
30
 
31
- PRODUCT_VERSION_TARGET = "12.1.0"
31
+ PRODUCT_VERSION_TARGET = "12.2.0"
32
32
 
33
33
 
34
34
  @dataclass(frozen=True)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ltcai",
3
- "version": "12.1.0",
3
+ "version": "12.2.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": {
@@ -6,7 +6,7 @@ const root = process.cwd();
6
6
  const pkg = JSON.parse(readFileSync(path.join(root, "package.json"), "utf8"));
7
7
  const version = pkg.version;
8
8
  const releaseDir = `output/release/v${version}`;
9
- const releaseTheme = "Fast Path";
9
+ const releaseTheme = "Small Voice";
10
10
  const title = `${version} — ${releaseTheme}`;
11
11
  const escapedVersion = version.replaceAll(".", "\\.");
12
12
 
@@ -20,6 +20,29 @@
20
20
  "whole-image delta: naming where the change is makes the claim more",
21
21
  "specific, not less."
22
22
  ],
23
+ "12.2.0": {
24
+ "_why": [
25
+ "Small Voice is a 2B tool-calling release with two visible surfaces.",
26
+ "",
27
+ "1. Brain home composer: four plain-language chips (folder search, read",
28
+ " and summarize, memory, skill review) sit under the textarea. The",
29
+ " Living Brain still dominates the shot, so the whole-image delta sits",
30
+ " under the 8% live floor; the claim uses the measured 3.96% as the",
31
+ " floor, not a redesign of the shell.",
32
+ "",
33
+ "2. Settings: a new 'small models can use tools' card with four badges.",
34
+ " That card is why 08 grew 168px.",
35
+ "",
36
+ "No other screen was redesigned. Unclaimed screens are measured and",
37
+ "printed; they are not gated."
38
+ ],
39
+ "04-brain-chat-home.png": {
40
+ "min_pct": 3.0
41
+ },
42
+ "08-system.png": {
43
+ "min_pct": 1.5
44
+ }
45
+ },
23
46
  "12.1.0": {
24
47
  "_why": [
25
48
  "Fast Path is a backend ingest/search release. Folder ingest overlaps",
@@ -1863,7 +1863,7 @@ dependencies = [
1863
1863
 
1864
1864
  [[package]]
1865
1865
  name = "lattice-agent"
1866
- version = "12.1.0"
1866
+ version = "12.2.0"
1867
1867
  dependencies = [
1868
1868
  "axum",
1869
1869
  "base64 0.22.1",
@@ -1880,7 +1880,7 @@ dependencies = [
1880
1880
 
1881
1881
  [[package]]
1882
1882
  name = "lattice-ai-desktop"
1883
- version = "12.1.0"
1883
+ version = "12.2.0"
1884
1884
  dependencies = [
1885
1885
  "lattice-host",
1886
1886
  "lattice-jobs",
@@ -1895,7 +1895,7 @@ dependencies = [
1895
1895
 
1896
1896
  [[package]]
1897
1897
  name = "lattice-auth"
1898
- version = "12.1.0"
1898
+ version = "12.2.0"
1899
1899
  dependencies = [
1900
1900
  "axum",
1901
1901
  "base64 0.22.1",
@@ -1912,7 +1912,7 @@ dependencies = [
1912
1912
 
1913
1913
  [[package]]
1914
1914
  name = "lattice-chat"
1915
- version = "12.1.0"
1915
+ version = "12.2.0"
1916
1916
  dependencies = [
1917
1917
  "axum",
1918
1918
  "bytes",
@@ -1934,7 +1934,7 @@ dependencies = [
1934
1934
 
1935
1935
  [[package]]
1936
1936
  name = "lattice-core"
1937
- version = "12.1.0"
1937
+ version = "12.2.0"
1938
1938
  dependencies = [
1939
1939
  "blake2",
1940
1940
  "bytes",
@@ -1950,7 +1950,7 @@ dependencies = [
1950
1950
 
1951
1951
  [[package]]
1952
1952
  name = "lattice-host"
1953
- version = "12.1.0"
1953
+ version = "12.2.0"
1954
1954
  dependencies = [
1955
1955
  "axum",
1956
1956
  "lattice-agent",
@@ -1971,7 +1971,7 @@ dependencies = [
1971
1971
 
1972
1972
  [[package]]
1973
1973
  name = "lattice-ingest"
1974
- version = "12.1.0"
1974
+ version = "12.2.0"
1975
1975
  dependencies = [
1976
1976
  "axum",
1977
1977
  "lattice-auth",
@@ -1986,7 +1986,7 @@ dependencies = [
1986
1986
 
1987
1987
  [[package]]
1988
1988
  name = "lattice-jobs"
1989
- version = "12.1.0"
1989
+ version = "12.2.0"
1990
1990
  dependencies = [
1991
1991
  "axum",
1992
1992
  "lattice-auth",
@@ -2001,7 +2001,7 @@ dependencies = [
2001
2001
 
2002
2002
  [[package]]
2003
2003
  name = "lattice-platform"
2004
- version = "12.1.0"
2004
+ version = "12.2.0"
2005
2005
  dependencies = [
2006
2006
  "axum",
2007
2007
  "base64 0.22.1",
@@ -2024,7 +2024,7 @@ dependencies = [
2024
2024
 
2025
2025
  [[package]]
2026
2026
  name = "lattice-retrieval"
2027
- version = "12.1.0"
2027
+ version = "12.2.0"
2028
2028
  dependencies = [
2029
2029
  "axum",
2030
2030
  "fancy-regex",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lattice-ai-desktop"
3
- version = "12.1.0"
3
+ version = "12.2.0"
4
4
  description = "Lattice AI Digital Brain desktop shell"
5
5
  authors = ["TaeSoo Park"]
6
6
  edition = "2021"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://schema.tauri.app/config/2",
3
3
  "productName": "Lattice AI",
4
- "version": "12.1.0",
4
+ "version": "12.2.0",
5
5
  "identifier": "ai.lattice.desktop",
6
6
  "build": {
7
7
  "beforeDevCommand": "npm run frontend:dev",
@@ -1,55 +1,55 @@
1
1
  {
2
- "version": "12.1.0",
2
+ "version": "12.2.0",
3
3
  "generated_at": "vite",
4
4
  "entrypoints": {
5
- "app": "/static/app/assets/index-DhszK7A3.js"
5
+ "app": "/static/app/assets/index-CfeqZ9Ri.js"
6
6
  },
7
7
  "assets": {
8
8
  "../node_modules/@tauri-apps/api/core.js": "/static/app/assets/core-CwxXejkd.js",
9
- "_BrainSignals-DrfYSNjR.js": "/static/app/assets/BrainSignals-DrfYSNjR.js",
10
- "_LivingBrain--2UoV3Ki.js": "/static/app/assets/LivingBrain--2UoV3Ki.js",
9
+ "_BrainSignals-DONPljxz.js": "/static/app/assets/BrainSignals-DONPljxz.js",
10
+ "_LivingBrain-b1RiM5Rh.js": "/static/app/assets/LivingBrain-b1RiM5Rh.js",
11
11
  "_QueryClientProvider-B3OjqSyJ.js": "/static/app/assets/QueryClientProvider-B3OjqSyJ.js",
12
- "_ReviewCard-UzQZ1ULT.js": "/static/app/assets/ReviewCard-UzQZ1ULT.js",
13
- "_actHelpers-DhutJObL.js": "/static/app/assets/actHelpers-DhutJObL.js",
14
- "_arrow-left-BwJfcH8J.js": "/static/app/assets/arrow-left-BwJfcH8J.js",
15
- "_bot-D8tZzKMD.js": "/static/app/assets/bot-D8tZzKMD.js",
16
- "_brain-DP2JPXSV.js": "/static/app/assets/brain-DP2JPXSV.js",
17
- "_button-Tzf5D7L1.js": "/static/app/assets/button-Tzf5D7L1.js",
18
- "_circle-check-D68nHcgS.js": "/static/app/assets/circle-check-D68nHcgS.js",
19
- "_circle-pause-Druue_tZ.js": "/static/app/assets/circle-pause-Druue_tZ.js",
20
- "_circle-play-BAht4SSW.js": "/static/app/assets/circle-play-BAht4SSW.js",
21
- "_cpu-BPbmZRPp.js": "/static/app/assets/cpu-BPbmZRPp.js",
22
- "_download-BmxPZEwU.js": "/static/app/assets/download-BmxPZEwU.js",
23
- "_folder-open-DokOmFQJ.js": "/static/app/assets/folder-open-DokOmFQJ.js",
24
- "_hard-drive-Cw6aEA2h.js": "/static/app/assets/hard-drive-Cw6aEA2h.js",
25
- "_input-BCdHoZXA.js": "/static/app/assets/input-BCdHoZXA.js",
12
+ "_ReviewCard-D1fGTEn7.js": "/static/app/assets/ReviewCard-D1fGTEn7.js",
13
+ "_actHelpers-BMukIRnQ.js": "/static/app/assets/actHelpers-BMukIRnQ.js",
14
+ "_arrow-left-iVa1goff.js": "/static/app/assets/arrow-left-iVa1goff.js",
15
+ "_bot-Dkd-DbiP.js": "/static/app/assets/bot-Dkd-DbiP.js",
16
+ "_brain-BsexlNOA.js": "/static/app/assets/brain-BsexlNOA.js",
17
+ "_button-BA0N_zId.js": "/static/app/assets/button-BA0N_zId.js",
18
+ "_circle-check-BxaDWjPR.js": "/static/app/assets/circle-check-BxaDWjPR.js",
19
+ "_circle-pause-918Kuvk0.js": "/static/app/assets/circle-pause-918Kuvk0.js",
20
+ "_circle-play-CS0IbVDV.js": "/static/app/assets/circle-play-CS0IbVDV.js",
21
+ "_cpu-BpvoWsjk.js": "/static/app/assets/cpu-BpvoWsjk.js",
22
+ "_download-BvkMLLLN.js": "/static/app/assets/download-BvkMLLLN.js",
23
+ "_folder-open-YmGugIBf.js": "/static/app/assets/folder-open-YmGugIBf.js",
24
+ "_hard-drive-BOzmS-cq.js": "/static/app/assets/hard-drive-BOzmS-cq.js",
25
+ "_input-CFfCfMjO.js": "/static/app/assets/input-CFfCfMjO.js",
26
26
  "_jsx-runtime-bzQ4Vb5N.js": "/static/app/assets/jsx-runtime-bzQ4Vb5N.js",
27
- "_link-2-CCModn4z.js": "/static/app/assets/link-2-CCModn4z.js",
28
- "_permissionCopy-BSp1jYG7.js": "/static/app/assets/permissionCopy-BSp1jYG7.js",
29
- "_primitives-D01WcJn7.js": "/static/app/assets/primitives-D01WcJn7.js",
30
- "_search-C_zAGfvO.js": "/static/app/assets/search-C_zAGfvO.js",
31
- "_share-2-DMMkM8Iu.js": "/static/app/assets/share-2-DMMkM8Iu.js",
32
- "_shield-alert--mrCWQko.js": "/static/app/assets/shield-alert--mrCWQko.js",
33
- "_sourceMeta-nvd3Cdz3.js": "/static/app/assets/sourceMeta-nvd3Cdz3.js",
34
- "_textarea-DfayhQiX.js": "/static/app/assets/textarea-DfayhQiX.js",
35
- "_useFocusTrap-C5NsTvsI.js": "/static/app/assets/useFocusTrap-C5NsTvsI.js",
36
- "_useMutation-D7IMQTeI.js": "/static/app/assets/useMutation-D7IMQTeI.js",
37
- "_workspace-C7xidB7c.js": "/static/app/assets/workspace-C7xidB7c.js",
38
- "index.html": "/static/app/assets/index-DhszK7A3.js",
39
- "assets/index-CB93CZWW.css": "/static/app/assets/index-CB93CZWW.css",
40
- "src/components/ProductFlow.tsx": "/static/app/assets/ProductFlow-D7rB6Xsu.js",
41
- "src/features/act/RunsListPanel.tsx": "/static/app/assets/RunsListPanel-CDGFQYMo.js",
42
- "src/features/act/WorkflowGraph.tsx": "/static/app/assets/WorkflowGraph-BIcWZTUQ.js",
43
- "src/features/act/WorkflowsPanel.tsx": "/static/app/assets/WorkflowsPanel-BeT5fmbk.js",
44
- "src/features/admin/AdminConsole.tsx": "/static/app/assets/AdminConsole-BFBj6OvN.js",
45
- "src/features/brain/BrainHome.tsx": "/static/app/assets/BrainHome-IhcEPC3v.js",
46
- "src/features/command/CommandPalette.tsx": "/static/app/assets/CommandPalette-B4SWOaR-.js",
47
- "src/pages/Act.tsx": "/static/app/assets/Act-DCRUH46a.js",
48
- "src/pages/Brain.tsx": "/static/app/assets/Brain-BXcoxIvb.js",
49
- "src/pages/Capture.tsx": "/static/app/assets/Capture-BsO_OAeh.js",
50
- "src/pages/Chronicle.tsx": "/static/app/assets/Chronicle-BUj_UH3D.js",
51
- "src/pages/Library.tsx": "/static/app/assets/Library-CKUR2eVb.js",
52
- "src/pages/System.tsx": "/static/app/assets/System-0OSxZrTp.js",
53
- "src/pages/brain/DigitalBrainExplorer.tsx": "/static/app/assets/DigitalBrainExplorer-S1GSsyIT.js"
27
+ "_link-2-CcYzeM7M.js": "/static/app/assets/link-2-CcYzeM7M.js",
28
+ "_permissionCopy-B23r24oX.js": "/static/app/assets/permissionCopy-B23r24oX.js",
29
+ "_primitives-BDryQl6H.js": "/static/app/assets/primitives-BDryQl6H.js",
30
+ "_search-DHsPwmPw.js": "/static/app/assets/search-DHsPwmPw.js",
31
+ "_share-2-B-gPv2ec.js": "/static/app/assets/share-2-B-gPv2ec.js",
32
+ "_shield-alert-CfyRO1p0.js": "/static/app/assets/shield-alert-CfyRO1p0.js",
33
+ "_sourceMeta-C4LDEy1S.js": "/static/app/assets/sourceMeta-C4LDEy1S.js",
34
+ "_textarea-BdVMYEb1.js": "/static/app/assets/textarea-BdVMYEb1.js",
35
+ "_useFocusTrap-CV73DLHn.js": "/static/app/assets/useFocusTrap-CV73DLHn.js",
36
+ "_useMutation-B8QKq2NW.js": "/static/app/assets/useMutation-B8QKq2NW.js",
37
+ "_workspace-BmfVs66W.js": "/static/app/assets/workspace-BmfVs66W.js",
38
+ "index.html": "/static/app/assets/index-CfeqZ9Ri.js",
39
+ "assets/index-C8gwOf0C.css": "/static/app/assets/index-C8gwOf0C.css",
40
+ "src/components/ProductFlow.tsx": "/static/app/assets/ProductFlow-wZIKJW7G.js",
41
+ "src/features/act/RunsListPanel.tsx": "/static/app/assets/RunsListPanel-DAirtLkS.js",
42
+ "src/features/act/WorkflowGraph.tsx": "/static/app/assets/WorkflowGraph-qrI6GU4R.js",
43
+ "src/features/act/WorkflowsPanel.tsx": "/static/app/assets/WorkflowsPanel-CIMNTw-O.js",
44
+ "src/features/admin/AdminConsole.tsx": "/static/app/assets/AdminConsole-C6hcJGMr.js",
45
+ "src/features/brain/BrainHome.tsx": "/static/app/assets/BrainHome-CGJ6O69l.js",
46
+ "src/features/command/CommandPalette.tsx": "/static/app/assets/CommandPalette-DiWyutdM.js",
47
+ "src/pages/Act.tsx": "/static/app/assets/Act-BjGgeuQd.js",
48
+ "src/pages/Brain.tsx": "/static/app/assets/Brain-CNQnIaA8.js",
49
+ "src/pages/Capture.tsx": "/static/app/assets/Capture-BMCC5544.js",
50
+ "src/pages/Chronicle.tsx": "/static/app/assets/Chronicle-DF6sOonx.js",
51
+ "src/pages/Library.tsx": "/static/app/assets/Library-B-ue9hXL.js",
52
+ "src/pages/System.tsx": "/static/app/assets/System-BEI1eoC4.js",
53
+ "src/pages/brain/DigitalBrainExplorer.tsx": "/static/app/assets/DigitalBrainExplorer-BL3V6Dqz.js"
54
54
  }
55
55
  }