ltcai 2.2.0 → 2.2.1

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 CHANGED
@@ -1,84 +1,82 @@
1
- # Lattice AI
1
+ <div align="center">
2
+ <img src="docs/images/logo.svg" alt="Lattice AI" width="120" />
2
3
 
3
- Lattice AI is an **AI Knowledge OS** for personal and organization workspaces.
4
- It is not a simple chat app, local LLM launcher, or model manager.
4
+ # Lattice AI
5
5
 
6
- Lattice AI turns files, documents, images, screenshots, conversations,
7
- decisions, notes, work history, and generated artifacts into knowledge. That
8
- knowledge is linked into a Knowledge Graph, and AI works on top of the graph to
9
- advise, analyze, generate documents, and automate work.
6
+ **A local-first AI workspace** Plan Execute → Review with multiple LLMs,
7
+ on top of a durable Knowledge Graph.
10
8
 
11
- The product rule for v2.2.0 is direct:
12
-
13
- > Do not control the user in the name of protection. Explain clearly, disclose
14
- > sources and risks, then let the user decide.
15
-
16
- ## Current release
17
-
18
- **2.2.0 — Multimodal-First Knowledge OS Release.** Lattice AI now centers the
19
- product on a multimodal Knowledge Graph, Gemma-4-first recommendations, source
20
- disclosure, and equal feature access across basic and advanced modes. Admin mode
21
- is the only mode with additional authority.
9
+ Apple Silicon (MLX) local model management · Personal & Organization workspaces ·
10
+ Multi-agent workflows · SSO for teams
11
+ </div>
22
12
 
23
13
  ---
24
14
 
25
- ## What Lattice AI Does
26
-
27
- - Accepts PDFs, Word files, spreadsheets, slide decks, images, screenshots,
28
- notes, code, web content, conversations, and work logs without asking the user
29
- to pre-convert them.
30
- - Extracts entities, relationships, evidence, decisions, and artifacts into the
31
- Knowledge Graph.
32
- - Uses AI models as replaceable workers on top of the graph.
33
- - Recommends current-generation multimodal models based on CPU, GPU, RAM,
34
- storage, OS, and observed usage.
35
- - Shows every model's source facts before use:
36
- 1. 제작 국가
37
- 2. 제작 회사
38
- 3. 실행 방식
39
- 4. 인터넷 사용 여부
40
- 5. 모델명
41
- - Keeps text-only local model recommendations out of the product path.
42
-
43
- ## Core Principles
44
-
45
- - Users should not work for AI. AI should work for users.
46
- - Do not hide features, sources, limitations, or risks.
47
- - Basic and advanced modes expose the same capabilities.
48
- - Basic mode explains in plain language.
49
- - Advanced mode shows deeper technical reasoning.
50
- - Admin mode is reserved for user management, permissions, audit logs,
51
- organization policy, security policy, model approval, and Private VPC.
52
- - Knowledge Graph durability matters more than any single model.
53
- - Old model generations are removed when a newer generation in the same family
54
- is available.
55
-
56
- ## Multimodal Model Policy
57
-
58
- Lattice AI v2.2.0 removes the old text-only recommendation path.
59
-
60
- Current local recommendations focus on:
61
-
62
- | Family | Default role | Example current recommendation |
63
- | --- | --- | --- |
64
- | Gemma 4 | Default Google multimodal family | `mlx-community/gemma-4-12b-it-4bit` |
65
- | Gemma 4 large | Higher-quality local multimodal work | `mlx-community/gemma-4-31b-it-4bit` |
66
- | Qwen3-VL | Smaller and balanced multimodal options | `mlx-community/Qwen3-VL-4B-Instruct-4bit` |
67
- | Llama 4 | Meta multimodal option | `mlx-community/Llama-4-Scout-17B-16E-Instruct-4bit` |
68
-
69
- Removed from current recommendation catalogs:
15
+ Lattice AI turns your files, documents, images, screenshots, conversations,
16
+ decisions, notes, and work history into linked knowledge. AI then works on top of
17
+ that Knowledge Graph to advise, analyze, generate documents, and automate work.
70
18
 
71
- - `mlx-lm` as a local text-only execution path
72
- - Gemma 2 and Gemma 3 recommendations
73
- - Qwen2.5-VL recommendations
74
- - SmolLM, Phi, Mistral, DeepSeek, GPT-OSS, and Llama 3.x local recommendation
75
- entries
76
- - text-only fallback logic for low-spec machines
19
+ It is built around a simple product rule:
77
20
 
78
- Low-spec machines are handled with smaller or quantized multimodal models,
79
- not older text-only models.
21
+ > Do not control the user in the name of protection. Explain clearly, disclose
22
+ > sources and risks, then let the user decide.
80
23
 
81
- ## Knowledge Graph Flow
24
+ ## What Lattice AI is
25
+
26
+ Lattice AI is four things working together, not an operating system and not a
27
+ simple chat front-end:
28
+
29
+ - **Local-first AI Workspace** — runs on your machine first; your data and graph
30
+ stay local by default.
31
+ - **AI Pipeline Platform** — a Plan → Execute → Review loop that can route across
32
+ multiple LLMs for each stage.
33
+ - **Knowledge Graph Platform** — multimodal inputs become entities,
34
+ relationships, evidence, and artifacts that outlive any single model.
35
+ - **Workspace Platform** — Personal and Organization workspaces, role-based
36
+ access, and SSO for teams.
37
+
38
+ ## Highlights
39
+
40
+ - **Multimodal ingestion** — accepts PDFs, Word, spreadsheets, slide decks,
41
+ images, screenshots, notes, code, web content, conversations, and work logs
42
+ without asking you to pre-convert them.
43
+ - **Knowledge Graph core** — extracts entities, relationships, evidence,
44
+ decisions, and artifacts so your work memory survives model changes.
45
+ - **Multi-agent workflow** — agents hand off work with structured context
46
+ packets, review/retry loops, and replayable timelines.
47
+ - **Local model management** — MLX-VLM on Apple Silicon, with current-generation
48
+ multimodal model recommendations based on your CPU, GPU, RAM, storage, and OS.
49
+ - **Source disclosure** — every recommended model shows its facts in plain
50
+ language before use: maker country, maker company, run mode (local/cloud),
51
+ internet requirement, and model name.
52
+ - **Basic / Advanced / Admin modes** — the same features everywhere; the modes
53
+ differ only in how much is explained. Admin mode adds authority
54
+ (user management, permissions, audit logs, org/security policy, model approval).
55
+
56
+ ## v2.2.1 — Frontend & UX overhaul
57
+
58
+ v2.2.1 is a UX-focused release. No features were removed; the interface was
59
+ re-laid out and re-themed.
60
+
61
+ - **Responsive, mobile-first UI** — phone, tablet, laptop, desktop, ultrawide,
62
+ and 4K. Content is re-laid out for each size, never hidden.
63
+ - **Light / Dark themes via design tokens** — a single source of truth in
64
+ [`static/css/tokens.css`](static/css/tokens.css). `:root` holds light values,
65
+ `[data-lt-theme="dark"]` holds dark values. The theme toggle, OS preference
66
+ detection, and persistence live in
67
+ [`static/scripts/ux.js`](static/scripts/ux.js).
68
+ - **Accessibility** — 44px touch targets, `:focus-visible` rings, a
69
+ keyboard-safe chat composer (uses `visualViewport` insets), iOS no-zoom inputs,
70
+ and reduced-motion support.
71
+ - **Knowledge Graph UX** — responsive canvas that re-fits on resize, zoom
72
+ buttons, fullscreen, minimap, relationship filtering, a mobile graph↔card
73
+ view, and a theme-aware palette.
74
+ - **Admin UX** — wide tables reflow to cards on mobile, with larger touch targets
75
+ and full dark/light support.
76
+ - **File UX** — drag & drop and screenshot paste to attach. Model cards explain
77
+ country, company, run mode, and internet use in plain language.
78
+
79
+ ## Knowledge Graph flow
82
80
 
83
81
  ```text
84
82
  files / documents / images / conversations / work history
@@ -90,122 +88,118 @@ files / documents / images / conversations / work history
90
88
  -> advice / analysis / document generation / automation
91
89
  ```
92
90
 
93
- The graph preserves the user's work memory even when the model changes.
91
+ The graph preserves your work memory even when the model changes.
94
92
 
95
- ## Quick Start
93
+ ## Local model policy
96
94
 
97
- ```bash
98
- npm install
99
- npm run dev
100
- ```
95
+ Lattice AI recommends current-generation **multimodal** models for local use and
96
+ keeps text-only recommendation paths out of the product:
101
97
 
102
- Then open:
98
+ | Family | Default role | Example current recommendation |
99
+ | --- | --- | --- |
100
+ | Gemma 4 | Default Google multimodal family | `mlx-community/gemma-4-12b-it-4bit` |
101
+ | Gemma 4 large | Higher-quality local multimodal work | `mlx-community/gemma-4-31b-it-4bit` |
102
+ | Qwen3-VL | Smaller, balanced multimodal options | `mlx-community/Qwen3-VL-4B-Instruct-4bit` |
103
+ | Llama 4 | Meta multimodal option | `mlx-community/Llama-4-Scout-17B-16E-Instruct-4bit` |
103
104
 
104
- ```text
105
- http://127.0.0.1:4825
106
- ```
105
+ Low-spec machines use smaller or quantized multimodal models rather than older
106
+ text-only models. See [MODEL_POLICY.md](MODEL_POLICY.md) for the full policy.
107
107
 
108
- Useful commands:
108
+ ## Requirements
109
109
 
110
- ```bash
111
- npm test
112
- npm run check:python
113
- npm run build
114
- ```
110
+ - Python **3.11+**
111
+ - macOS, Windows, or Linux for the workspace server
112
+ - Apple Silicon for local MLX-VLM model execution (optional; cloud models work
113
+ without it)
115
114
 
116
- VS Code extension:
115
+ ## Quick start
117
116
 
118
- ```bash
119
- cd vscode-extension
120
- npm install
121
- npm run build
122
- npm run package:vsix
123
- ```
124
-
125
- ## Python Package
117
+ Lattice AI is a Python + FastAPI app. The CLI entry point is `ltcai_cli.py`.
126
118
 
127
119
  ```bash
128
- python3 -m build
120
+ npm install # installs the npm package and dev tooling
121
+ npm run dev # runs: python3 ltcai_cli.py --reload
129
122
  ```
130
123
 
131
- Expected v2.2.0 Python artifacts:
124
+ Then open:
132
125
 
133
126
  ```text
134
- dist/ltcai-2.2.0-py3-none-any.whl
135
- dist/ltcai-2.2.0.tar.gz
127
+ http://127.0.0.1:4825
136
128
  ```
137
129
 
138
- ## VS Code Package
130
+ Prefer Python directly?
139
131
 
140
132
  ```bash
141
- cd vscode-extension
142
- npm run build
143
- npm run package:vsix
144
- ```
145
-
146
- Expected v2.2.0 VSIX artifact:
147
-
148
- ```text
149
- dist/ltcai-2.2.0.vsix
133
+ python3 ltcai_cli.py
134
+ # host/port: --host 127.0.0.1 --port 4825
150
135
  ```
151
136
 
152
- ## npm Package
137
+ For local model execution on Apple Silicon, install the optional extra:
153
138
 
154
139
  ```bash
155
- npm pack
140
+ pip install "ltcai[local]" # adds mlx-vlm
156
141
  ```
157
142
 
158
- Expected v2.2.0 npm artifact:
143
+ Useful commands:
159
144
 
160
- ```text
161
- ltcai-2.2.0.tgz
145
+ ```bash
146
+ npm test # python3 -m pytest tests/ -v
147
+ npm run check:python # py_compile across core modules
148
+ npm run build # python3 -m build
162
149
  ```
163
150
 
164
- ## Manual Publishing
165
-
166
- Publishing is intentionally manual. Do not publish with globs.
151
+ ## VS Code extension
167
152
 
168
- PyPI:
153
+ A companion VS Code extension lives in [`vscode-extension/`](vscode-extension).
169
154
 
170
155
  ```bash
171
- python3 -m twine upload dist/ltcai-2.2.0-py3-none-any.whl dist/ltcai-2.2.0.tar.gz
156
+ cd vscode-extension
157
+ npm install
158
+ npm run build
159
+ npm run package:vsix
172
160
  ```
173
161
 
174
- VS Code Marketplace:
162
+ ## Build & packaging
175
163
 
176
- ```bash
177
- npx vsce publish --packagePath dist/ltcai-2.2.0.vsix
178
- ```
179
-
180
- Open VSX:
164
+ Lattice AI ships as a Python package (`ltcai`), an npm package (`ltcai`), and a
165
+ VS Code extension.
181
166
 
182
167
  ```bash
183
- npx ovsx publish dist/ltcai-2.2.0.vsix
168
+ python3 -m build # Python wheel + sdist
169
+ npm pack # npm tarball
184
170
  ```
185
171
 
186
- npm:
187
-
188
- ```bash
189
- npm publish --access public
190
- ```
172
+ Publishing is intentionally manual — no glob uploads. See [RELEASE.md](RELEASE.md)
173
+ for the exact, version-scoped publish steps for PyPI, npm, the VS Code
174
+ Marketplace, and Open VSX.
191
175
 
192
176
  ## Documentation
193
177
 
194
- - [ARCHITECTURE.md](ARCHITECTURE.md)
195
- - [PROJECT_PRINCIPLES.md](PROJECT_PRINCIPLES.md)
196
- - [AI_PHILOSOPHY.md](AI_PHILOSOPHY.md)
197
- - [MODEL_POLICY.md](MODEL_POLICY.md)
198
- - [KNOWLEDGE_GRAPH.md](KNOWLEDGE_GRAPH.md)
199
- - [RELEASE_NOTES.md](RELEASE_NOTES.md)
200
- - [docs/CHANGELOG.md](docs/CHANGELOG.md)
201
-
202
- ## Release History
178
+ - [ARCHITECTURE.md](ARCHITECTURE.md) — system shape and runtime policy
179
+ - [docs/architecture.md](docs/architecture.md) — full architecture reference
180
+ - [PROJECT_PRINCIPLES.md](PROJECT_PRINCIPLES.md) — product principles
181
+ - [AI_PHILOSOPHY.md](AI_PHILOSOPHY.md) — how AI is used here
182
+ - [MODEL_POLICY.md](MODEL_POLICY.md) — local model recommendation policy
183
+ - [KNOWLEDGE_GRAPH.md](KNOWLEDGE_GRAPH.md) — graph model and behavior
184
+ - [docs/MULTI_AGENT_RUNTIME.md](docs/MULTI_AGENT_RUNTIME.md) — multi-agent runtime
185
+ - [docs/WORKFLOW_DESIGNER.md](docs/WORKFLOW_DESIGNER.md) — workflow designer
186
+ - [docs/REALTIME_COLLABORATION.md](docs/REALTIME_COLLABORATION.md) — realtime collaboration
187
+ - [docs/ENTERPRISE.md](docs/ENTERPRISE.md) — Organization workspaces & SSO (Okta / Microsoft Entra ID)
188
+ - [docs/security-model.md](docs/security-model.md) — security model
189
+ - [docs/PLUGIN_SDK.md](docs/PLUGIN_SDK.md) — plugin SDK
190
+ - [RELEASE_NOTES.md](RELEASE_NOTES.md) · [docs/CHANGELOG.md](docs/CHANGELOG.md)
191
+
192
+ ## Release history
203
193
 
204
194
  | Version | Theme |
205
195
  | --- | --- |
206
- | **2.2.0** | Multimodal-first Knowledge OS, source disclosure, Gemma-4 recommendation policy |
207
- | 2.1.0 | Agent Platform Maturity |
208
- | 2.0.0 | Agentic Workspace Platform |
196
+ | **2.2.1** | Frontend & UX overhaul — responsive, design-token theming, accessibility, graph/admin UX |
197
+ | 2.2.0 | Multimodal-first Knowledge Graph, source disclosure, Gemma-4 recommendation policy |
198
+ | 2.1.0 | Agent platform maturity |
199
+ | 2.0.0 | Agentic workspace platform |
209
200
  | 1.7.0 | Graph and collaboration |
210
201
  | 1.6.0 | Product experience deepening |
211
- | 1.5.0 | Unified product release |
202
+
203
+ ## License
204
+
205
+ MIT
package/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.2.1] - 2026-06-04
4
+
5
+ > Frontend / UX Overhaul Release — Lattice AI keeps feature behavior stable
6
+ > while improving responsive layout, theme handling, accessibility, graph UX,
7
+ > admin tables, file attachment, and release packaging readiness.
8
+
9
+ ### Added
10
+
11
+ - **Light/dark mode** — OS detection, manual theme toggle, and persisted theme
12
+ state.
13
+ - **File attachment UX** — drag-and-drop and screenshot paste support for
14
+ attachments.
15
+ - **Knowledge Graph controls** — zoom buttons, fullscreen, minimap,
16
+ relationship filter, mobile graph/card view, and theme-aware palette.
17
+
18
+ ### Changed
19
+
20
+ - **Responsive UI** — phone/tablet/laptop/desktop/ultrawide/4K layouts now use
21
+ mobile-first reflow. Content is not hidden on smaller screens.
22
+ - **Design tokens** — `static/css/tokens.css` is the single source of truth for
23
+ UI tokens, and theme styling no longer depends on `!important`.
24
+ - **Accessibility** — 44px touch targets, `:focus-visible` focus rings,
25
+ keyboard-safe chat composer behavior, iOS no-zoom inputs, and reduced-motion
26
+ support.
27
+ - **Admin UX** — wide admin tables reflow to mobile cards with larger touch
28
+ targets and light/dark support.
29
+ - **Model cards** — country, company, run mode, and internet usage are shown in
30
+ plain language.
31
+ - **Manual release scripts** — local publish scripts now build exact-version
32
+ artifacts before upload and validate the same artifact set used by CI.
33
+
34
+ ### Validation
35
+
36
+ - Unit/integration suites, Python build, npm pack, VSIX package, and
37
+ exact-version release artifact validation are the release targets.
38
+ - Package-store publishing remains manual and must use the exact 2.2.1
39
+ filenames.
40
+
3
41
  ## [2.2.0] - 2026-06-04
4
42
 
5
43
  > Multimodal-First Knowledge OS Release — Lattice AI is aligned around the
@@ -1,9 +1,9 @@
1
1
  # Lattice AI Architecture
2
2
 
3
- Lattice AI v2.2.0 is a local-first **AI Knowledge OS**. The architecture is
4
- organized around one durable center: the Knowledge Graph. Models, tools,
5
- agents, workflows, and UI modes are replaceable layers that operate on top of
6
- the graph.
3
+ Lattice AI is a local-first **AI Workspace and Knowledge Graph platform**. The
4
+ architecture is organized around one durable center: the Knowledge Graph.
5
+ Models, tools, agents, workflows, and UI modes are replaceable layers that
6
+ operate on top of the graph.
7
7
 
8
8
  ## Architecture Goals
9
9
 
@@ -20,7 +20,7 @@
20
20
  PPT 명세는 "한 코드·다섯 화면" — Shared Core(Design Tokens, UI Components, Business Logic, AI/Graph Core) 위에서 Tauri(데스크탑) / Capacitor·RN(모바일) 렌더러가 같은 결과를 낸다.
21
21
 
22
22
  **현재 구현**
23
- - `static/chat.html`, `static/graph.html`, `static/admin.html`, `static/account.html` 4개 HTML — 각자 자체 CSS 변수 보유
23
+ - `static/chat.html`, `static/graph.html`, `static/admin.html`, `static/account.html` 4개 HTML — `static/css/tokens.css` 단일 토큰을 공유 (v2.2.1)
24
24
  - `vscode-extension/` — TypeScript VSCode 통합
25
25
  - `static/manifest.json` + `static/sw.js` — PWA 부분 지원 (iOS/Android 홈 화면 추가는 됨)
26
26
  - `telegram_bot.py` — Telegram 미러
@@ -28,11 +28,11 @@ PPT 명세는 "한 코드·다섯 화면" — Shared Core(Design Tokens, UI Comp
28
28
  **갭**
29
29
  - 데스크탑 네이티브 셸 (Tauri) 미구현
30
30
  - 모바일 네이티브 (Capacitor / RN) 미구현
31
- - 4개 HTML이 각자 다른 색 토큰 사용 → 같은 화면이 같게 안 보임
32
31
  - 다국어(i18n) 시스템화 안 됨 (HTML에 한글 하드코딩)
33
32
 
34
- **보강 결과물**
35
- - `static/css/tokens.css` (이번 PR에서 추가) — 4개 HTML이 공유할 단일 진실 토큰
33
+ **보강 결과물 (완료, v2.2.1)**
34
+ - `static/css/tokens.css` — 4개 HTML이 공유하는 단일 진실 토큰 (`:root` = 라이트, `[data-lt-theme="dark"]` = 다크)
35
+ - `static/css/responsive.css` + `static/scripts/ux.js` — 반응형 레이아웃 / 라이트·다크 토글 + OS 감지 + 지속화
36
36
  - 로드맵: `apps/desktop/` (Tauri 셸) · `apps/mobile/` (Capacitor 셸) 차후 단계
37
37
 
38
38
  ---
@@ -91,7 +91,9 @@ chunks ( id, source_node, text, metadata_json, created_at )
91
91
 
92
92
  ## 4. 디자인 일관성
93
93
 
94
- | 파일 | 현재 --bg | 현재 --accent |
94
+ 기존(v2.2.1 이전)에는 4개 HTML 각자 다른 토큰을 갖고 있었다:
95
+
96
+ | 파일 | 이전 --bg | 이전 --accent |
95
97
  |------|-----------|---------------|
96
98
  | `chat.html` | `#182332` 다크 블루그린 | `#22d3a0` 민트 |
97
99
  | `graph.html` | `#282a36` 다크 그레이 | `#a77cff` 라일락 |
@@ -100,9 +102,10 @@ chunks ( id, source_node, text, metadata_json, created_at )
100
102
  | `lattice-reference.css` | (라이트, PPT) | `#6f42e8` Lattice 보라 |
101
103
  | **PPT 명세** | `#FFFFFF` 또는 `#0B0B16` | `#6E4AE6` Lattice 보라 |
102
104
 
103
- **보강 결과물**
104
- - `static/css/tokens.css` — 단일 토큰 (PPT 명세 그대로)
105
- - 4개 HTML 의 `:root {}` 블록을 `@import` 줄로 대체 가능하도록 토큰 명 호환
105
+ **보강 결과물 (완료, v2.2.1)**
106
+ - `static/css/tokens.css` — 단일 토큰을 모든 화면이 공유. `:root` 가 라이트 값,
107
+ `[data-lt-theme="dark"]` 다크 값을 정의하는 단일 진실 소스
108
+ - 라이트/다크 토글 + OS 다크모드 감지 + 지속화는 `static/scripts/ux.js` 가 담당
106
109
 
107
110
  ---
108
111
 
@@ -124,9 +127,9 @@ PPT 화면 1, 13 (login, security) 에 한국어 / Microsoft Entra ID / Okta SSO
124
127
  | 순위 | 파일 | 무엇 |
125
128
  |------|------|------|
126
129
  | 1 | `docs/kg-schema.md`, `kg_schema.py` | KG 스키마 정식화 (10 노드 · 12 엣지 · embedding · confidence) |
127
- | 2 | `static/css/tokens.css` | 디자인 토큰 통합 (PPT 색팔레트) |
130
+ | 2 | `static/css/tokens.css` (+ `responsive.css`, `ux.js`) | 디자인 토큰 통합 + 라이트/다크 — v2.2.1 완료 |
128
131
  | 3 | `auto_setup.py` | OS 프로빙 + 모델 추천 + 설치 어댑터 |
129
132
  | 4 | `docs/architecture.md` 보강 | 위 변경 반영 |
130
133
  | 5 | (차후) `apps/desktop`, `apps/mobile` 스캐폴딩 | Tauri/Capacitor |
131
134
 
132
- 항목은 이번 PR 함께 들어간다 (1~3은 코드, 4는 문서, 5는 청사진만).
135
+ 1~4 구현/문서로 반영되었고 (디자인 토큰·라이트/다크는 v2.2.1 에서 완료), 5 는 청사진만 유지한다.
@@ -1,3 +1,3 @@
1
1
  """Lattice AI - modular server package."""
2
2
 
3
- __version__ = "2.2.0"
3
+ __version__ = "2.2.1"
@@ -18,7 +18,7 @@ from pathlib import Path
18
18
  from typing import Any, Callable, Dict, Iterable, List, Optional
19
19
 
20
20
 
21
- WORKSPACE_OS_VERSION = "2.2.0"
21
+ WORKSPACE_OS_VERSION = "2.2.1"
22
22
 
23
23
  # Workspace types separate single-user Personal workspaces from shared
24
24
  # Organization workspaces. Both keep the same local-first JSON store; the type
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ltcai",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Lattice AI Workspace OS for local-first graph, memory, agent, workflow, and skill operations",
5
5
  "homepage": "https://github.com/TaeSooPark-PTS/LatticeAI#readme",
6
6
  "repository": {
@@ -29,8 +29,13 @@
29
29
  "capture:skills": "node scripts/capture/capture_skills.js",
30
30
  "capture:enterprise": "node scripts/capture/capture_enterprise.js",
31
31
  "capture:onboarding": "node scripts/capture/capture_onboarding.js",
32
- "publish:npm": "npm publish --access public",
33
- "publish:pypi": "python3 -m twine upload --skip-existing dist/ltcai-$npm_package_version.tar.gz dist/ltcai-$npm_package_version-py3-none-any.whl"
32
+ "release:artifacts": "npm run build:python && npm pack && cd vscode-extension && npm run package:vsix",
33
+ "release:validate": "python3 scripts/validate_release_artifacts.py $npm_package_version --require-vsix --require-tgz",
34
+ "publish:npm": "npm pack && npm publish ltcai-$npm_package_version.tgz --access public",
35
+ "publish:pypi": "npm run build:python && python3 -m twine upload --skip-existing dist/ltcai-$npm_package_version.tar.gz dist/ltcai-$npm_package_version-py3-none-any.whl",
36
+ "publish:vscode": "cd vscode-extension && npm run package:vsix && npm run publish:vscode",
37
+ "publish:openvsx": "cd vscode-extension && npm run package:vsix && npm run publish:openvsx",
38
+ "publish:all": "npm run release:artifacts && npm run release:validate && npm publish ltcai-$npm_package_version.tgz --access public && python3 -m twine upload --skip-existing dist/ltcai-$npm_package_version.tar.gz dist/ltcai-$npm_package_version-py3-none-any.whl && cd vscode-extension && npm run publish:vscode && npm run publish:openvsx"
34
39
  },
35
40
  "keywords": [
36
41
  "ltcai",
@@ -2,8 +2,9 @@
2
2
  <html lang="ko">
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content">
6
6
  <title>Lattice AI</title>
7
+ <script src="/static/scripts/ux.js?v=2.2.1"></script>
7
8
  <link rel="manifest" href="/manifest.json">
8
9
  <meta name="theme-color" content="#f3ecff">
9
10
  <meta name="apple-mobile-web-app-capable" content="yes">
@@ -14,6 +15,7 @@
14
15
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap">
15
16
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/tabler-icons.min.css">
16
17
  <link rel="stylesheet" href="/static/lattice-reference.css?v=0.3.3">
18
+ <link rel="stylesheet" href="/static/css/responsive.css?v=2.2.1">
17
19
  </head>
18
20
  <body class="lattice-ref-auth">
19
21
  <div class="orb orb-1"></div>
@@ -2,9 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content" />
6
6
  <title>Realtime Activity — Lattice AI</title>
7
- <link rel="stylesheet" href="/static/platform.css" />
7
+ <script src="/static/scripts/ux.js?v=2.2.1"></script>
8
+ <link rel="stylesheet" href="/static/css/tokens.css?v=2.2.1" />
9
+ <link rel="stylesheet" href="/static/platform.css?v=2.2.1" />
10
+ <link rel="stylesheet" href="/static/css/responsive.css?v=2.2.1" />
8
11
  </head>
9
12
  <body>
10
13
  <main>
package/static/admin.html CHANGED
@@ -3,8 +3,9 @@
3
3
 
4
4
  <head>
5
5
  <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content">
7
7
  <title>Lattice AI Admin</title>
8
+ <script src="/static/scripts/ux.js?v=2.2.1"></script>
8
9
  <link rel="manifest" href="/manifest.json">
9
10
  <meta name="theme-color" content="#f3ecff">
10
11
  <meta name="apple-mobile-web-app-capable" content="yes">
@@ -15,10 +16,13 @@
15
16
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap">
16
17
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/tabler-icons.min.css">
17
18
  <link rel="stylesheet" href="/static/lattice-reference.css?v=0.3.3">
19
+ <link rel="stylesheet" href="/static/css/responsive.css?v=2.2.1">
18
20
  <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
19
21
  </head>
20
22
 
21
23
  <body class="lattice-ref-admin">
24
+ <div class="sidebar-overlay" onclick="closeAdminRail&&closeAdminRail()"></div>
25
+ <button class="admin-rail-toggle graph-nav-toggle" onclick="toggleAdminRail&&toggleAdminRail()" title="메뉴" aria-label="관리자 메뉴 열기"><i class="ti ti-menu-2"></i></button>
22
26
  <aside class="reference-rail admin-rail">
23
27
  <div class="rail-brand"><i class="ti ti-shield-lock"></i><strong>LATTICE AI</strong><span>Administrator</span></div>
24
28
  <nav>
@@ -2,9 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content" />
6
6
  <title>Multi-Agent Runtime — Lattice AI</title>
7
- <link rel="stylesheet" href="/static/platform.css" />
7
+ <script src="/static/scripts/ux.js?v=2.2.1"></script>
8
+ <link rel="stylesheet" href="/static/css/tokens.css?v=2.2.1" />
9
+ <link rel="stylesheet" href="/static/platform.css?v=2.2.1" />
10
+ <link rel="stylesheet" href="/static/css/responsive.css?v=2.2.1" />
8
11
  </head>
9
12
  <body>
10
13
  <main>
package/static/chat.html CHANGED
@@ -3,8 +3,9 @@
3
3
 
4
4
  <head>
5
5
  <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content">
7
7
  <title>Lattice AI — All-in-One Multimodal Workspace</title>
8
+ <script src="/static/scripts/ux.js?v=2.2.1"></script>
8
9
 
9
10
  <!-- PWA -->
10
11
  <link rel="manifest" href="/manifest.json">
@@ -24,6 +25,7 @@
24
25
 
25
26
  <!-- ── Setup Wizard Styles ──────────────────────────────────────────── -->
26
27
  <link rel="stylesheet" href="/static/lattice-reference.css?v=0.3.3">
28
+ <link rel="stylesheet" href="/static/css/responsive.css?v=2.2.1">
27
29
  </head>
28
30
 
29
31
  <body class="lattice-ref-chat">
@@ -37,7 +39,7 @@
37
39
 
38
40
 
39
41
  <div class="app-layout">
40
- <div class="sidebar-overlay" onclick="closeSidebar()"></div>
42
+ <div class="sidebar-overlay" onclick="closeSidebar();closeGraphNav&&closeGraphNav();closeAdminRail&&closeAdminRail()"></div>
41
43
  <!-- Sidebar -->
42
44
  <aside class="sidebar">
43
45
  <div class="sidebar-header">
@@ -81,6 +83,7 @@
81
83
  <div class="mode-segmented" id="mode-segmented" role="tablist" aria-label="작업 모드"></div>
82
84
  </div>
83
85
  <div class="header-pills">
86
+ <button class="theme-toggle" onclick="toggleTheme()" title="테마 전환" aria-label="라이트/다크 테마 전환"><i class="ti ti-moon"></i><i class="ti ti-sun"></i></button>
84
87
  <div class="lang-picker" id="header-lang-picker">
85
88
  <button class="logout-btn" id="lang-btn" onclick="toggleLangMenu('header-lang-picker')" title="Language"><i class="ti ti-language"></i> Language</button>
86
89
  <div class="lang-picker-menu" id="header-lang-picker-menu">
@@ -93,7 +96,7 @@
93
96
  </div>
94
97
  </header>
95
98
 
96
- <div class="acct-modal-overlay" id="acct-modal-overlay">
99
+ <div class="acct-modal-overlay" id="acct-modal-overlay" onclick="if(event.target===this)closeAcctModal()">
97
100
  <div class="acct-modal">
98
101
  <div class="acct-tabs">
99
102
  <button class="acct-tab active" id="tab-profile" onclick="switchAcctTab('profile')" data-i18n="tab_profile">프로필</button>
@@ -477,7 +480,7 @@
477
480
 
478
481
  <!-- ── 파일 에디터 ── -->
479
482
  <div id="file-editor-overlay" class="admin-overlay" style="display:none">
480
- <section class="admin-panel" style="max-width:720px;height:85vh;display:flex;flex-direction:column">
483
+ <section class="admin-panel" style="max-width:720px;height:min(85dvh, calc(100dvh - 24px));display:flex;flex-direction:column">
481
484
  <div class="admin-header" style="flex-shrink:0">
482
485
  <div style="min-width:0;flex:1">
483
486
  <h2><i class="ti ti-file-pencil" style="color:var(--accent)"></i> 파일 편집</h2>