ltcai 10.6.2 → 10.7.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 (85) hide show
  1. package/README.md +44 -59
  2. package/docs/CHANGELOG.md +56 -0
  3. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  4. package/docs/DEVELOPMENT.md +1 -1
  5. package/docs/LAYOUT_REBUILD_SPEC.md +810 -0
  6. package/docs/ONBOARDING.md +1 -1
  7. package/docs/OPERATIONS.md +29 -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/lattice_brain/runtime/multi_agent.py +1 -1
  13. package/latticeai/__init__.py +1 -1
  14. package/latticeai/api/admin.py +72 -0
  15. package/latticeai/api/automation_intelligence.py +112 -0
  16. package/latticeai/api/knowledge_graph.py +133 -0
  17. package/latticeai/api/static_routes.py +35 -1
  18. package/latticeai/core/legacy_compatibility.py +1 -1
  19. package/latticeai/core/marketplace.py +1 -1
  20. package/latticeai/core/workspace_os.py +3 -0
  21. package/latticeai/core/workspace_os_constants.py +1 -1
  22. package/latticeai/core/workspace_runs.py +111 -0
  23. package/latticeai/services/architecture_readiness.py +1 -1
  24. package/latticeai/services/product_readiness.py +1 -1
  25. package/package.json +5 -3
  26. package/scripts/capture_release_evidence.mjs +335 -1
  27. package/scripts/check_current_release_docs.mjs +1 -1
  28. package/scripts/check_release_evidence_bound.mjs +116 -0
  29. package/scripts/check_screenshot_pixel_delta.py +435 -0
  30. package/scripts/measure_brain_home_fill.mjs +141 -0
  31. package/src-tauri/Cargo.lock +1 -1
  32. package/src-tauri/Cargo.toml +1 -1
  33. package/src-tauri/tauri.conf.json +1 -1
  34. package/static/app/asset-manifest.json +37 -39
  35. package/static/app/assets/{Act-aNud-lKL.js → Act-DIbkoJqs.js} +1 -1
  36. package/static/app/assets/AdminConsole-Cbi6Jre6.js +1 -0
  37. package/static/app/assets/{Brain-CMFh5q6k.js → Brain-BPfuXZ71.js} +2 -2
  38. package/static/app/assets/BrainHome-87XaAS4V.js +2 -0
  39. package/static/app/assets/{BrainSignals-RVMlmTGC.js → BrainSignals-ExpcdiUi.js} +1 -1
  40. package/static/app/assets/Capture-Bxe4WiVX.js +1 -0
  41. package/static/app/assets/{CommandPalette-bW5WxWWZ.js → CommandPalette-B1PV5Yd4.js} +1 -1
  42. package/static/app/assets/Library-BRlJJmwZ.js +1 -0
  43. package/static/app/assets/{LivingBrain-FlHFfu9i.js → LivingBrain-D61qG3WY.js} +1 -1
  44. package/static/app/assets/ProductFlow-BxjxI8Aa.js +1 -0
  45. package/static/app/assets/{ReviewCard-BHj86h2Z.js → ReviewCard-BoiWv0Y1.js} +2 -2
  46. package/static/app/assets/System-Ci0HEtTJ.js +1 -0
  47. package/static/app/assets/arrow-left-DArdBUxd.js +1 -0
  48. package/static/app/assets/{bot-D1gX4xks.js → bot-BaPt4PPn.js} +1 -1
  49. package/static/app/assets/brain-BSkWaj3i.js +1 -0
  50. package/static/app/assets/{button-DPFZ9lGw.js → button-CKwtO1O0.js} +1 -1
  51. package/static/app/assets/{circle-pause-B2P72YOO.js → circle-pause-CiUc5RRk.js} +1 -1
  52. package/static/app/assets/{circle-play-BiC8z2vg.js → circle-play-BaTDxzR9.js} +1 -1
  53. package/static/app/assets/{cpu-Cx-wRR_V.js → cpu-Dm1gHuP1.js} +1 -1
  54. package/static/app/assets/{download-CKxlzxsK.js → download-C32oGU-C.js} +1 -1
  55. package/static/app/assets/{folder-open-Bbjju0tt.js → folder-open-Ch2jLVdD.js} +1 -1
  56. package/static/app/assets/{hard-drive-Bon1VBvq.js → hard-drive-BBjA5st8.js} +1 -1
  57. package/static/app/assets/index-BV7Yf6Eq.css +2 -0
  58. package/static/app/assets/{index-mLP0-YNO.js → index-J6h01X78.js} +4 -4
  59. package/static/app/assets/{input-DrMc0Xns.js → input-y6ABdKWY.js} +1 -1
  60. package/static/app/assets/{permissionCopy-BGUsI7vw.js → permissionCopy-BEtc0Ihd.js} +1 -1
  61. package/static/app/assets/{primitives-CEMTjBz1.js → primitives-GSFXF2Pd.js} +1 -1
  62. package/static/app/assets/search-CaIZKyo_.js +1 -0
  63. package/static/app/assets/{share-2-D7THHq5K.js → share-2-BgGq2A63.js} +1 -1
  64. package/static/app/assets/{shield-alert-BoU4_8r9.js → shield-alert-BYA491cj.js} +1 -1
  65. package/static/app/assets/{textarea-rU1Lb7ia.js → textarea-BAcim3fs.js} +1 -1
  66. package/static/app/assets/{useFocusTrap-BgvK4Nkx.js → useFocusTrap-qLg24jiv.js} +1 -1
  67. package/static/app/assets/{useQuery-CT2ChyuU.js → useQuery-xkAu9eDX.js} +1 -1
  68. package/static/app/assets/utils-CogdofAA.js +4 -0
  69. package/static/app/assets/workspace-BMvfx9_R.js +1 -0
  70. package/static/app/index.html +4 -4
  71. package/static/sw.js +1 -1
  72. package/static/app/assets/AdminConsole-QiCTH68K.js +0 -1
  73. package/static/app/assets/BrainHome-B4Ar3atu.js +0 -2
  74. package/static/app/assets/Capture-DEBo-0vZ.js +0 -1
  75. package/static/app/assets/Library-5gFexm83.js +0 -1
  76. package/static/app/assets/ProductFlow-CFUNDOHu.js +0 -1
  77. package/static/app/assets/System-CeNHoZRu.js +0 -1
  78. package/static/app/assets/activity-7_ZmZqN0.js +0 -1
  79. package/static/app/assets/arrow-left-Dv2Tiwhe.js +0 -1
  80. package/static/app/assets/brain-Dn_bDfl4.js +0 -1
  81. package/static/app/assets/index-DYUs0cWy.css +0 -2
  82. package/static/app/assets/search-HsIji1wY.js +0 -1
  83. package/static/app/assets/users-DlbfHBQV.js +0 -1
  84. package/static/app/assets/utils-fEGWreKB.js +0 -7
  85. package/static/app/assets/workspace-ClDBz_0f.js +0 -1
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![CI Status](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml)
12
12
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
13
13
 
14
- ![v10.6.2 Living Brain walkthrough](output/release/v10.6.2/gifs/v10.6.2-living-brain-walkthrough.gif)
14
+ ![v10.7.0 Living Brain walkthrough](output/release/v10.7.0/gifs/v10.7.0-living-brain-walkthrough.gif)
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 ![Brain Chat](output/release/v10.6.2/screenshots/04-brain-chat-home.png) | **See how knowledge connects** — a real relationship graph, not a file list ![Memory Graph](output/release/v10.6.2/screenshots/05-memory-graph.png) |
28
- | **Capture anything** — files, whole folders, notes, screenshots, web pages ![Capture](output/release/v10.6.2/screenshots/06-capture.png) | **Automate with review** — agent changes become proposals you approve first ![Review Center](output/release/v10.6.2/screenshots/12-review-center.png) |
29
- | **Pick a model in one click** — recommended local models for your hardware ![Recommended Models](output/release/v10.6.2/screenshots/02-recommended-models.png) | **Stay in control** — audit, roles, retention in a separate admin surface ![Admin Console](output/release/v10.6.2/screenshots/10-admin-console.png) |
30
- | **Watch a file become memory** — three named steps, not a pipeline diagram ![Material to memory](output/release/v10.6.2/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/v10.6.2/screenshots/08-system.png) |
27
+ | **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory ![Brain Chat](output/release/v10.7.0/screenshots/04-brain-chat-home.png) | **See how knowledge connects** — a real relationship graph, not a file list ![Memory Graph](output/release/v10.7.0/screenshots/05-memory-graph.png) |
28
+ | **Capture anything** — files, whole folders, notes, screenshots, web pages ![Capture](output/release/v10.7.0/screenshots/06-capture.png) | **Automate with review** — agent changes become proposals you approve first ![Review Center](output/release/v10.7.0/screenshots/12-review-center.png) |
29
+ | **Pick a model in one click** — recommended local models for your hardware ![Recommended Models](output/release/v10.7.0/screenshots/02-recommended-models.png) | **Stay in control** — audit, roles, retention in a separate admin surface ![Admin Console](output/release/v10.7.0/screenshots/10-admin-console.png) |
30
+ | **Watch a file become memory** — three named steps, not a pipeline diagram ![Material to memory](output/release/v10.7.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/v10.7.0/screenshots/08-system.png) |
31
31
 
32
32
  ## Why Lattice AI
33
33
 
@@ -58,69 +58,51 @@ First-run flow — wake the Brain, pick the owner, load a recommended model:
58
58
 
59
59
  | | | |
60
60
  | --- | --- | --- |
61
- | ![Login](output/release/v10.6.2/screenshots/01-login.png) | ![Model install](output/release/v10.6.2/screenshots/03-install-load-progress.png) | ![Model library](output/release/v10.6.2/screenshots/07-model-library.png) |
61
+ | ![Login](output/release/v10.7.0/screenshots/01-login.png) | ![Model install](output/release/v10.7.0/screenshots/03-install-load-progress.png) | ![Model library](output/release/v10.7.0/screenshots/07-model-library.png) |
62
62
 
63
63
  Screenshot index and capture notes:
64
- [output/release/v10.6.2/SCREENSHOT_INDEX.md](output/release/v10.6.2/SCREENSHOT_INDEX.md)
64
+ [output/release/v10.7.0/SCREENSHOT_INDEX.md](output/release/v10.7.0/SCREENSHOT_INDEX.md)
65
65
 
66
66
  ## Current Release
67
67
 
68
- The current release is **10.6.2 — Ask First**:
69
-
70
- 10.6.1 rebuilt five screens, and the Brain home is the one it only half
71
- rebuilt: the order changed, the shape did not. A large Brain and a centred
72
- headline still ran down the middle of the screen before the box you type into,
73
- and the three suggestions still sat between that box and its own toolbar — so
74
- the alternative to typing wore the same border as typing, and the composer was
75
- separated from its own controls by an unrelated block. This release splits the
76
- screen into two surfaces. Nothing was removed; the second choice stopped
77
- sharing a card with the first.
78
-
79
- - **The greeting introduces the composer instead of headlining the screen.**
80
- The Brain and the greeting were a centred column above the input; they are a
81
- compact banner across the top of the card now — a small Brain beside the title
82
- and the memory count, on a tinted strip closed by a hairline. The Brain is
83
- still the button that opens the memory map, and the banner stacks back into a
84
- centred column on a phone.
85
- - **One card is the first move, and only the first move.** The station reads
86
- greeting → the box you type into → one row for 자료 추가 and 혼자 해도 되는 일,
87
- with nothing between the box and its own controls.
88
- - **What to try is a card of its own.** The three suggestions moved out of the
89
- station onto a second surface below it, where they read as an offer rather
90
- than a step. That card is a named `<section>`, so a screen reader announces it
91
- as a region — the label used to sit on a plain `<div>`, where the browser
92
- discards it.
93
- - **The empty state is designed rather than inherited.** A Brain with nothing to
94
- suggest yet — every Brain on its first day — shows starter pills instead of
95
- suggestion cards. That row had never been styled for this screen: it borrowed
96
- a pill height drawn for live conversations and sat noticeably taller than the
97
- cards it stands in for. Both branches read as peers now, and a pill fills the
98
- composer rather than sending a question you did not choose to ask.
99
- - **Three bugs that only moving things could find.** The Brain's halo is written
100
- as an inline `box-shadow`, so no stylesheet could shrink it — a 60px glow
101
- stayed wrapped around a 58px Brain until the blur became a CSS variable the
102
- host can set (every other screen keeps its old value through the fallback).
103
- Clipping the card would have hidden the 노트 / 웹 popover and turned the card
104
- into a scroll container that scrolls the greeting away on focus, so the banner
105
- clips its own corners instead. And the reduced-motion rule that cancels the
106
- card lift had to follow the cards to their new selector, or a reader who asked
107
- the system to hold still would have got the animation back.
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.7.0 — Plain Surface**:
69
+
70
+ Every screen was rebuilt. Lattice AI is a personal memory system that runs on
71
+ your own machine, and it had come to look like an operations console — dense
72
+ grids of panels, developer vocabulary in the labels, and the thing you came to
73
+ do buried under the things you rarely touch. 10.7.0 rearranges all twelve
74
+ screens around what the person is actually there for, in plain language.
75
+
76
+ **Nothing was removed to achieve it.** The 38 hash destinations in
77
+ `frontend/src/routes.ts` are the same 38 as before the rebuild — none dropped,
78
+ none added. `frontend/src/routes.test.ts` checks every one of them resolves to a
79
+ real screen, and names the landing spot outright for the paths most likely to
80
+ regress.
81
+
82
+ - **Layout actually changed.** `scripts/check_screenshot_pixel_delta.py` compares
83
+ all twelve captures against the previous release and fails when a screen only
84
+ changed its wording. Multi-column grid classes across `frontend/src` fell from
85
+ 22 occurrences to 6, 4 of them outside test assertions —
86
+ `grep -rhoE 'grid-cols-[a-z0-9]+' frontend/src | wc -l` against the
87
+ pre-rebuild tree and this one.
88
+ - **Features still reachable.** Every destination was rearranged, not retired:
89
+ 38 → 38. Copy keys have no such gate — 18 keys no screen rendered any more
90
+ were removed by hand, each after checking the feature is reachable elsewhere.
91
+ - **Evidence bound to this build.** `output/release/v10.7.0/` holds the twelve
92
+ capture screens, walkthrough gif/webm, and the asset-manifest / mock-server
93
+ fingerprints that lint re-checks before merge.
94
+ - **Exact artifact names only.** Publish paths list `dist/ltcai-10.7.0-*` and
95
+ `ltcai-10.7.0.tgz` — never `dist/*`.
114
96
 
115
97
  Release notes: [RELEASE.md](RELEASE.md) · Full history: [docs/CHANGELOG.md](docs/CHANGELOG.md)
116
98
 
117
- Expected artifacts for 10.6.2 release must use exact filenames:
99
+ Expected artifacts for 10.7.0 release must use exact filenames:
118
100
 
119
- - `dist/ltcai-10.6.2-py3-none-any.whl`
120
- - `dist/ltcai-10.6.2.tar.gz`
121
- - `ltcai-10.6.2.tgz`
122
- - `dist/ltcai-10.6.2.vsix`
123
- - `src-tauri/target/release/bundle/dmg/Lattice AI_10.6.2_aarch64.dmg`
101
+ - `dist/ltcai-10.7.0-py3-none-any.whl`
102
+ - `dist/ltcai-10.7.0.tar.gz`
103
+ - `ltcai-10.7.0.tgz`
104
+ - `dist/ltcai-10.7.0.vsix`
105
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_10.7.0_aarch64.dmg`
124
106
 
125
107
  Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
126
108
 
@@ -155,6 +137,9 @@ See [ARCHITECTURE.md](ARCHITECTURE.md) for details and
155
137
 
156
138
  | Version | Theme |
157
139
  | --- | --- |
140
+ | 10.7.0 | Plain Surface |
141
+ | 10.6.4 | Loud Limits |
142
+ | 10.6.3 | Loud Limits |
158
143
  | 10.6.2 | Ask First |
159
144
  | 10.6.1 | First Things |
160
145
  | 10.6.0 | Promoted Panels |
package/docs/CHANGELOG.md CHANGED
@@ -4,6 +4,62 @@ 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.7.0] - 2026-08-04
8
+
9
+ ### Changed
10
+ - **12개 화면 전면 재구성** — `frontend/src`의 다단 격자 클래스 22 → 6
11
+ (테스트 단언 2건 제외하면 4). 각 화면이 사용자가 하러 온 일을 1순위로 놓고,
12
+ 개발자용 진단·관리 표면은 접이식 영역으로 내려갔습니다. 해시 경로 38개는
13
+ 하나도 사라지지 않았습니다(38 → 38).
14
+ - 승인함이 i18n 키 원문(`act.approval.action.파일_읽기`)을 표시하던 문제 수정 —
15
+ 조회 키를 백엔드 `action` 열거값에서 만들고, 없으면 서버가 준 라벨로 폴백합니다.
16
+ - 관리자 요약이 HTTP 200을 건강 상태로 오인하던 문제 수정 — 서버가 보고한
17
+ `status`를 우선 사용합니다.
18
+
19
+ ### Added
20
+ - `scripts/check_screenshot_pixel_delta.py` — 릴리스 캡처가 이전 버전 대비 실제로
21
+ 달라졌는지 검사. 문구만 바뀐 화면은 실패로 잡습니다.
22
+ - `scripts/check_release_evidence_bound.mjs` — 캡처가 현재 빌드에서 나온 것인지
23
+ 해시로 결속. lint 에 배선되어 있습니다.
24
+
25
+ ### Removed
26
+ - 어느 화면에서도 렌더되지 않던 문구 키 18개 (기능은 전부 다른 경로로 도달
27
+ 가능함을 확인 후 삭제). 문구 키에는 자동 게이트가 없어 수동 대조입니다.
28
+
29
+ ## [10.6.4] - 2026-08-04
30
+
31
+ ### Changed
32
+ - 패키지·문서·릴리스 증거를 **10.6.4**로 정렬 — `product_readiness` packaging /
33
+ trust-docs / ecosystem-path 게이트가 현재 버전 문자열을 찾도록 README,
34
+ CHANGELOG, RELEASE_NOTES, 커뮤니티 문서, VS Code 확장 README 동기화
35
+ - 릴리스 캡처 경로 `output/release/v10.6.4/` (12 스크린샷 + walkthrough gif/webm)
36
+ - 시각 목의 승인함은 mapped(`read` → 한글 라벨) + unmapped(`delete` 원문 키)
37
+ 두 경로를 동시에 노출 — UI i18n 회귀를 가리지 않음
38
+
39
+ ### Notes
40
+ - 스키마·마이그레이션 변경 없음. SQLite Brain 데이터 호환 유지.
41
+ - 프론트 승인 액션 키 `act.approval.action.read` / `delete` 착지는 별도 F1
42
+ 항목; 그 전까지 캡처 09는 원문 키 노출을 증거로 남길 수 있음.
43
+
44
+ ## [10.6.3] - 2026-08-04
45
+
46
+ ### Security
47
+ - CSRF Origin/Referer 가드 (`latticeai/core/csrf.py`), `LATTICEAI_CSRF_TRUSTED_ORIGINS`
48
+ - workspace 스코프 해석 단일화 — 선택자 불일치 시 403 (`latticeai/api/workspace_scope.py`)
49
+
50
+ ### Changed
51
+ - 벡터 검색이 부분 스캔을 리포트 (`LATTICEAI_VECTOR_MAX_CANDIDATES`, `0`=전체)
52
+ - 백그라운드 수집 잡이 SQLite에 영속화되어 재시작 후 재개
53
+ - 파일 쓰기 도구 fail-closed, 모델 스트림 실패를 `ModelStreamError`로 구분
54
+ - 백업 임포트 직후 벡터 인덱스 재정렬
55
+
56
+ ### Added
57
+ - 프론트 빌드 신선도 게이트 (`scripts/check_frontend_build_freshness.mjs`)
58
+ - SSE 스트리밍 파서 분리 (`frontend/src/api/eventStream.ts`)
59
+
60
+ ### Fixed
61
+ - 대화 자동 하단 고정이 jsdom/표준모드에서 동작하지 않던 문제
62
+
7
63
  ## [10.6.2] - 2026-08-03
8
64
 
9
65
  The Brain home, re-shaped rather than re-ordered. 10.6.1 gave this screen a new
@@ -1,6 +1,6 @@
1
1
  # Community And Plugins
2
2
 
3
- Current release: **10.6.2 — Ask First**.
3
+ Current release: **10.7.0 — Plain Surface**.
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: **10.6.2 — Ask First**.
6
+ Current release: **10.7.0 — Plain Surface**.
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