ltcai 10.6.3 → 10.8.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.
- package/README.md +56 -59
- package/docs/CHANGELOG.md +68 -0
- package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
- package/docs/DEVELOPMENT.md +1 -1
- package/docs/LAYOUT_REBUILD_SPEC.md +810 -0
- package/docs/ONBOARDING.md +1 -1
- package/docs/OPERATIONS.md +29 -1
- package/docs/TRUST_MODEL.md +1 -1
- package/docs/WHY_LATTICE.md +1 -1
- package/docs/kg-schema.md +1 -1
- package/lattice_brain/__init__.py +1 -1
- package/lattice_brain/graph/retrieval_vector.py +69 -33
- package/lattice_brain/runtime/multi_agent.py +96 -15
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/admin.py +81 -6
- package/latticeai/api/auth.py +37 -38
- package/latticeai/api/automation_intelligence.py +112 -0
- package/latticeai/api/browser.py +7 -6
- package/latticeai/api/knowledge_graph.py +133 -0
- package/latticeai/api/static_routes.py +35 -1
- package/latticeai/core/file_generation.py +141 -8
- package/latticeai/core/legacy_compatibility.py +1 -1
- package/latticeai/core/marketplace.py +1 -1
- package/latticeai/core/messages.py +230 -0
- package/latticeai/core/workspace_computer_memory.py +84 -0
- package/latticeai/core/workspace_indexing.py +102 -0
- package/latticeai/core/workspace_onboarding.py +104 -0
- package/latticeai/core/workspace_os.py +27 -207
- package/latticeai/core/workspace_os_constants.py +1 -1
- package/latticeai/core/workspace_relationships.py +99 -0
- package/latticeai/core/workspace_runs.py +111 -0
- package/latticeai/services/architecture_readiness.py +1 -1
- package/latticeai/services/product_readiness.py +1 -1
- package/package.json +5 -3
- package/scripts/capture_release_evidence.mjs +335 -1
- package/scripts/check_current_release_docs.mjs +1 -1
- package/scripts/check_release_evidence_bound.mjs +116 -0
- package/scripts/check_screenshot_pixel_delta.py +517 -0
- package/scripts/measure_brain_home_fill.mjs +141 -0
- package/scripts/release_screen_claims.json +37 -0
- package/src-tauri/Cargo.lock +1 -1
- package/src-tauri/Cargo.toml +1 -1
- package/src-tauri/tauri.conf.json +1 -1
- package/static/app/asset-manifest.json +37 -39
- package/static/app/assets/{Act-05uZSgyw.js → Act-CbQNsFgc.js} +1 -1
- package/static/app/assets/AdminConsole-Bs8SR8fE.js +1 -0
- package/static/app/assets/{Brain-jjMYTdnU.js → Brain-BZIPsZlH.js} +2 -2
- package/static/app/assets/BrainHome-BaH5MDce.js +2 -0
- package/static/app/assets/{BrainSignals-BYxDqBH3.js → BrainSignals-aDt-nSsW.js} +1 -1
- package/static/app/assets/Capture-DDv940Bv.js +1 -0
- package/static/app/assets/{CommandPalette-Cj7z-qUE.js → CommandPalette-Dq_MmPBl.js} +1 -1
- package/static/app/assets/Library-BkShbqmN.js +1 -0
- package/static/app/assets/{LivingBrain-CTokkZn1.js → LivingBrain-CXb8094H.js} +1 -1
- package/static/app/assets/ProductFlow-BaiqFWLO.js +1 -0
- package/static/app/assets/{ReviewCard-uAII_l9v.js → ReviewCard-Be7E7X18.js} +2 -2
- package/static/app/assets/System-DCstbTxC.js +1 -0
- package/static/app/assets/arrow-left-DC9Oquhs.js +1 -0
- package/static/app/assets/{bot-CkrHFdUl.js → bot-BR0eoeXY.js} +1 -1
- package/static/app/assets/brain-BmWa1wea.js +1 -0
- package/static/app/assets/{button-Ic6omIbs.js → button-U1nU7xX4.js} +1 -1
- package/static/app/assets/{circle-pause-DBaaUR08.js → circle-pause-DG5KHjDL.js} +1 -1
- package/static/app/assets/{circle-play-Dz0OLYN9.js → circle-play-Chhcuq90.js} +1 -1
- package/static/app/assets/{cpu-N8uE9ono.js → cpu-pkOSlT9h.js} +1 -1
- package/static/app/assets/{download-CCjhOjms.js → download-CSRwz923.js} +1 -1
- package/static/app/assets/{folder-open-Bld9TtHp.js → folder-open-DiMJ7W_7.js} +1 -1
- package/static/app/assets/{hard-drive-BMIqDSyY.js → hard-drive-iyLPAPdp.js} +1 -1
- package/static/app/assets/index-BZRvGOM2.css +2 -0
- package/static/app/assets/{index-yNtiRyw3.js → index-_ldE9TAX.js} +4 -4
- package/static/app/assets/{input-DW1tXtc0.js → input-e_r2hFAY.js} +1 -1
- package/static/app/assets/{permissionCopy-Djpwn54H.js → permissionCopy-9uOHktz3.js} +1 -1
- package/static/app/assets/{primitives-B6WtkLgB.js → primitives-CnEAOmg2.js} +1 -1
- package/static/app/assets/search-veep4n6f.js +1 -0
- package/static/app/assets/{share-2-DR5L1qRc.js → share-2-DLDJJKmI.js} +1 -1
- package/static/app/assets/{shield-alert-CVE5eXsl.js → shield-alert-BTtE-2EZ.js} +1 -1
- package/static/app/assets/{textarea-DdaVFgvk.js → textarea-Bbzkcgqe.js} +1 -1
- package/static/app/assets/{useFocusTrap-B5TyGaiB.js → useFocusTrap-DJzQd-Za.js} +1 -1
- package/static/app/assets/{useQuery-CiRdTQlD.js → useQuery-6R_tqHRe.js} +1 -1
- package/static/app/assets/utils-XDsjcrhS.js +4 -0
- package/static/app/assets/workspace-CwrG8LHq.js +1 -0
- package/static/app/index.html +4 -4
- package/static/sw.js +1 -1
- package/static/app/assets/AdminConsole-C8yz1Cs_.js +0 -1
- package/static/app/assets/BrainHome-D3t45_D4.js +0 -2
- package/static/app/assets/Capture-DKgu7fB0.js +0 -1
- package/static/app/assets/Library-CO76FWeO.js +0 -1
- package/static/app/assets/ProductFlow-Bmted2ys.js +0 -1
- package/static/app/assets/System-PUMzDmof.js +0 -1
- package/static/app/assets/activity-C_7182GG.js +0 -1
- package/static/app/assets/arrow-left-BQCpWR37.js +0 -1
- package/static/app/assets/brain-CdPX7svt.js +0 -1
- package/static/app/assets/index-DYUs0cWy.css +0 -2
- package/static/app/assets/search-CkHYuKpY.js +0 -1
- package/static/app/assets/users-pZqCRxdD.js +0 -1
- package/static/app/assets/utils-C3rXoa-U.js +0 -4
- package/static/app/assets/workspace-DfxKEttN.js +0 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml)
|
|
12
12
|
[](LICENSE)
|
|
13
13
|
|
|
14
|
-

|
|
15
15
|
|
|
16
16
|
Chat, files, folders, notes, and web pages all flow into one durable knowledge
|
|
17
17
|
graph on your computer. Any model — local MLX or cloud — can speak with that
|
|
@@ -24,10 +24,10 @@ memory. Nothing leaves your machine without explicit consent.
|
|
|
24
24
|
|
|
25
25
|
| | |
|
|
26
26
|
| --- | --- |
|
|
27
|
-
| **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory  | **See how knowledge connects** — a real relationship graph, not a file list  |
|
|
28
|
+
| **Capture anything** — files, whole folders, notes, screenshots, web pages  | **Automate with review** — agent changes become proposals you approve first  |
|
|
29
|
+
| **Pick a model in one click** — recommended local models for your hardware  | **Stay in control** — audit, roles, retention in a separate admin surface  |
|
|
30
|
+
| **Watch a file become memory** — three named steps, not a pipeline diagram  | **Say how much it may do alone** — one dial in plain words; dangerous actions stay blocked either way  |
|
|
31
31
|
|
|
32
32
|
## Why Lattice AI
|
|
33
33
|
|
|
@@ -58,69 +58,63 @@ First-run flow — wake the Brain, pick the owner, load a recommended model:
|
|
|
58
58
|
|
|
59
59
|
| | | |
|
|
60
60
|
| --- | --- | --- |
|
|
61
|
-
|  |  |  |
|
|
62
62
|
|
|
63
63
|
Screenshot index and capture notes:
|
|
64
|
-
[output/release/v10.
|
|
64
|
+
[output/release/v10.8.0/SCREENSHOT_INDEX.md](output/release/v10.8.0/SCREENSHOT_INDEX.md)
|
|
65
65
|
|
|
66
66
|
## Current Release
|
|
67
67
|
|
|
68
|
-
The current release is **10.
|
|
69
|
-
|
|
70
|
-
10.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
- **Guarded, not asserted.** Unit tests hold the split itself — station, deck
|
|
109
|
-
and footer as three siblings, with the suggestions provably *not* inside the
|
|
110
|
-
station. Browser tests hold what only a browser can see: the popover opens
|
|
111
|
-
unclipped, the cards fill their card, they collapse to chips under 900px and
|
|
112
|
-
stay visible under 760px, reduced motion is honoured, the empty-state pill row
|
|
113
|
-
renders, and the halo is measured against the Brain it surrounds.
|
|
68
|
+
The current release is **10.8.0 — Within Reach**:
|
|
69
|
+
|
|
70
|
+
10.7.0 rearranged all twelve screens. 10.8.0 is about the things that were
|
|
71
|
+
already there but out of reach: a button below the fold, a message in a
|
|
72
|
+
language you did not choose, a file a small model nearly produced.
|
|
73
|
+
|
|
74
|
+
- **The first three screens fit on the screen.** Onboarding rendered a 390px
|
|
75
|
+
decorative Brain above *every* step, so on a 1440×900 display the login
|
|
76
|
+
form, the recommended model and the install progress all began below the
|
|
77
|
+
fold — the first thing the product asked a new person to do was scroll. The
|
|
78
|
+
organism is a hero on the welcome step and a 104px mark after it; the
|
|
79
|
+
welcome screen itself went from 1175px of content to 770px, so its primary
|
|
80
|
+
button is visible without scrolling.
|
|
81
|
+
- **One language per screen, including the ones the server writes.** API
|
|
82
|
+
messages were literals at the raise site, written in whichever language the
|
|
83
|
+
endpoint's author was thinking in — Korean from `auth.py`, English from
|
|
84
|
+
`browser.py`. `latticeai/core/messages.py` is a catalog with both, resolved
|
|
85
|
+
from `X-Lattice-Language` (falling back to `Accept-Language`); the browser
|
|
86
|
+
extension, which showed English and Korean in the same popup, has one too.
|
|
87
|
+
`tests/unit/test_server_messages.py` fails on a message that exists in only
|
|
88
|
+
one language, and on a router that reverts to a hardcoded literal.
|
|
89
|
+
- **A small model's near-miss is no longer thrown away.** File generation
|
|
90
|
+
picked the *longest* rejected reply to repair, so a 900-character apology
|
|
91
|
+
beat a truncated-but-real HTML document; it now scores candidates by how
|
|
92
|
+
close they are to being a file. A byte-identical repeated reply buys one
|
|
93
|
+
extra attempt with a prompt that names the repetition. Prose file types
|
|
94
|
+
(`.md`, `.txt`) had no validation at all and would save "Sure! Here is the
|
|
95
|
+
document:" as the document.
|
|
96
|
+
- **Re-indexing costs what changed.** The incremental vector rebuild
|
|
97
|
+
materialised every node and chunk in memory and asked one `SELECT` per item
|
|
98
|
+
whether it had changed. It streams now, with a single prefetched hash map —
|
|
99
|
+
and a settled index performs zero embeddings, asserted rather than assumed.
|
|
100
|
+
- **More ground under the frontend.** Statement coverage 47.35% → 52.26%,
|
|
101
|
+
424 → 504 tests, including the app shell (`App.tsx`, previously 0%), the
|
|
102
|
+
admin console (0%), the folder picker (2.7%) and the API client.
|
|
103
|
+
- **Evidence bound to this build.** `output/release/v10.8.0/` holds the twelve
|
|
104
|
+
capture screens, walkthrough gif/webm, and the asset-manifest / mock-server
|
|
105
|
+
fingerprints that lint re-checks before merge.
|
|
106
|
+
- **Exact artifact names only.** Publish paths list `dist/ltcai-10.8.0-*` and
|
|
107
|
+
`ltcai-10.8.0.tgz` — never `dist/*`.
|
|
114
108
|
|
|
115
109
|
Release notes: [RELEASE.md](RELEASE.md) · Full history: [docs/CHANGELOG.md](docs/CHANGELOG.md)
|
|
116
110
|
|
|
117
|
-
Expected artifacts for 10.
|
|
111
|
+
Expected artifacts for 10.8.0 release must use exact filenames:
|
|
118
112
|
|
|
119
|
-
- `dist/ltcai-10.
|
|
120
|
-
- `dist/ltcai-10.
|
|
121
|
-
- `ltcai-10.
|
|
122
|
-
- `dist/ltcai-10.
|
|
123
|
-
- `src-tauri/target/release/bundle/dmg/Lattice AI_10.
|
|
113
|
+
- `dist/ltcai-10.8.0-py3-none-any.whl`
|
|
114
|
+
- `dist/ltcai-10.8.0.tar.gz`
|
|
115
|
+
- `ltcai-10.8.0.tgz`
|
|
116
|
+
- `dist/ltcai-10.8.0.vsix`
|
|
117
|
+
- `src-tauri/target/release/bundle/dmg/Lattice AI_10.8.0_aarch64.dmg`
|
|
124
118
|
|
|
125
119
|
Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
|
|
126
120
|
|
|
@@ -155,6 +149,9 @@ See [ARCHITECTURE.md](ARCHITECTURE.md) for details and
|
|
|
155
149
|
|
|
156
150
|
| Version | Theme |
|
|
157
151
|
| --- | --- |
|
|
152
|
+
| 10.8.0 | Within Reach |
|
|
153
|
+
| 10.7.0 | Plain Surface |
|
|
154
|
+
| 10.6.4 | Loud Limits |
|
|
158
155
|
| 10.6.3 | Loud Limits |
|
|
159
156
|
| 10.6.2 | Ask First |
|
|
160
157
|
| 10.6.1 | First Things |
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,74 @@ 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
|
+
## [10.8.0] - 2026-08-04
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- 온보딩 login/recommend/install 3개 화면에서 주 작업이 접힌 부분 아래에서
|
|
11
|
+
시작하던 문제 — 히어로 브레인을 단계별 크기(`data-scale`)로 분리.
|
|
12
|
+
- 설치 화면이 번역 키 원문(`flow.install.stage.idle`)을 사용자에게 출력하던
|
|
13
|
+
문제 — `t()`가 `defaultValue` 옵션을 읽지 않았고, 옵션 자체가 보간 값으로
|
|
14
|
+
새어 들어가고 있었습니다.
|
|
15
|
+
- 추천 모델 화면이 셸 중앙에서 왼쪽으로 치우쳐 있던 문제(`margin-inline`).
|
|
16
|
+
- Brain 대화 홈의 추천 칩이 4글자를 담은 채 952px로 늘어나던 문제 —
|
|
17
|
+
`@media (max-height)` 블록이 `display:flex`만 재선언하고 `flex-direction`을
|
|
18
|
+
다시 쓰지 않아 기본 규칙의 `column` 축을 물려받고 있었습니다.
|
|
19
|
+
- 브라우저 확장 팝업이 한 창 안에서 한국어와 영어를 섞어 보여주던 문제.
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
- `latticeai/core/messages.py` — 서버 사이드 메시지 카탈로그(ko/en)와
|
|
23
|
+
요청 기반 언어 결정(`X-Lattice-Language` → `Accept-Language`).
|
|
24
|
+
- `frontend/src/styles/mediaQueryOverride.test.ts` — 미디어 쿼리가 `display`를
|
|
25
|
+
재선언하면서 축을 다시 쓰지 않는 부분 오버라이드 가드.
|
|
26
|
+
- 신규 테스트 스위트: `App.tsx`, `AdminConsole.tsx`, `lib/folderPicker.ts`,
|
|
27
|
+
`api/client.ts` 확장, 멀티에이전트 JSON 복구, 증분 인덱스 재빌드.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
- 파일 생성이 실패 응답 중 "가장 긴" 것이 아니라 "가장 파일에 가까운" 것을
|
|
31
|
+
복구에 넘깁니다. 동일 응답 반복 시 1회 한정 추가 시도.
|
|
32
|
+
- 산문 파일 타입(`.md`/`.txt`/…)에도 검증 추가 — 파일에 *대한* 답변은 파일이
|
|
33
|
+
아닙니다.
|
|
34
|
+
- 멀티에이전트 계획 파서: 균형 스팬 스캔 + `<think>` 제거 + trailing comma 복구.
|
|
35
|
+
- 증분 벡터 재빌드가 스트리밍 + 단일 해시맵 조회로 전환.
|
|
36
|
+
- `latticeai/core/workspace_os.py` 1128 → 945줄.
|
|
37
|
+
|
|
38
|
+
## [10.7.0] - 2026-08-04
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
- **12개 화면 전면 재구성** — `frontend/src`의 다단 격자 클래스 22 → 6
|
|
42
|
+
(테스트 단언 2건 제외하면 4). 각 화면이 사용자가 하러 온 일을 1순위로 놓고,
|
|
43
|
+
개발자용 진단·관리 표면은 접이식 영역으로 내려갔습니다. 해시 경로 38개는
|
|
44
|
+
하나도 사라지지 않았습니다(38 → 38).
|
|
45
|
+
- 승인함이 i18n 키 원문(`act.approval.action.파일_읽기`)을 표시하던 문제 수정 —
|
|
46
|
+
조회 키를 백엔드 `action` 열거값에서 만들고, 없으면 서버가 준 라벨로 폴백합니다.
|
|
47
|
+
- 관리자 요약이 HTTP 200을 건강 상태로 오인하던 문제 수정 — 서버가 보고한
|
|
48
|
+
`status`를 우선 사용합니다.
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
- `scripts/check_screenshot_pixel_delta.py` — 릴리스 캡처가 이전 버전 대비 실제로
|
|
52
|
+
달라졌는지 검사. 문구만 바뀐 화면은 실패로 잡습니다.
|
|
53
|
+
- `scripts/check_release_evidence_bound.mjs` — 캡처가 현재 빌드에서 나온 것인지
|
|
54
|
+
해시로 결속. lint 에 배선되어 있습니다.
|
|
55
|
+
|
|
56
|
+
### Removed
|
|
57
|
+
- 어느 화면에서도 렌더되지 않던 문구 키 18개 (기능은 전부 다른 경로로 도달
|
|
58
|
+
가능함을 확인 후 삭제). 문구 키에는 자동 게이트가 없어 수동 대조입니다.
|
|
59
|
+
|
|
60
|
+
## [10.6.4] - 2026-08-04
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
- 패키지·문서·릴리스 증거를 **10.6.4**로 정렬 — `product_readiness` packaging /
|
|
64
|
+
trust-docs / ecosystem-path 게이트가 현재 버전 문자열을 찾도록 README,
|
|
65
|
+
CHANGELOG, RELEASE_NOTES, 커뮤니티 문서, VS Code 확장 README 동기화
|
|
66
|
+
- 릴리스 캡처 경로 `output/release/v10.6.4/` (12 스크린샷 + walkthrough gif/webm)
|
|
67
|
+
- 시각 목의 승인함은 mapped(`read` → 한글 라벨) + unmapped(`delete` 원문 키)
|
|
68
|
+
두 경로를 동시에 노출 — UI i18n 회귀를 가리지 않음
|
|
69
|
+
|
|
70
|
+
### Notes
|
|
71
|
+
- 스키마·마이그레이션 변경 없음. SQLite Brain 데이터 호환 유지.
|
|
72
|
+
- 프론트 승인 액션 키 `act.approval.action.read` / `delete` 착지는 별도 F1
|
|
73
|
+
항목; 그 전까지 캡처 09는 원문 키 노출을 증거로 남길 수 있음.
|
|
74
|
+
|
|
7
75
|
## [10.6.3] - 2026-08-04
|
|
8
76
|
|
|
9
77
|
### Security
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -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: **10.
|
|
6
|
+
Current release: **10.8.0 — Within Reach**.
|
|
7
7
|
|
|
8
8
|
This document is for contributors working on the local-first Digital Brain
|
|
9
9
|
codebase. Product positioning and quick start stay in `README.md`; release
|