ltcai 7.7.0 → 7.9.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 +38 -26
- package/docs/CHANGELOG.md +37 -0
- package/docs/DEVELOPMENT.md +1 -2
- package/docs/MULTI_AGENT_RUNTIME.md +6 -5
- package/docs/V2_ARCHITECTURE.md +3 -2
- package/frontend/src/App.tsx +3 -1
- package/frontend/src/components/ProductFlow.tsx +19 -23
- package/frontend/src/components/onboarding/RecommendationScreen.tsx +11 -12
- package/frontend/src/features/brain/BrainConversation.tsx +107 -108
- package/frontend/src/features/brain/BrainHome.tsx +32 -33
- package/frontend/src/i18n.ts +53 -19
- package/frontend/src/pages/Ask.tsx +11 -2
- package/frontend/src/pages/Brain.tsx +12 -2
- package/frontend/src/styles.css +390 -65
- package/lattice_brain/__init__.py +1 -1
- package/lattice_brain/runtime/__init__.py +8 -2
- package/lattice_brain/runtime/agent_runtime.py +17 -1
- package/lattice_brain/runtime/contracts.py +64 -1
- package/lattice_brain/runtime/multi_agent.py +1 -1
- package/latticeai/__init__.py +1 -1
- package/latticeai/core/agent.py +39 -12
- package/latticeai/core/marketplace.py +1 -1
- package/latticeai/core/workspace_os.py +1 -1
- package/latticeai/services/architecture_readiness.py +1 -1
- package/latticeai/services/product_readiness.py +22 -15
- package/latticeai/services/tool_dispatch.py +15 -3
- package/package.json +1 -1
- package/scripts/product_readiness.py +1 -1
- 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 +28 -28
- package/static/app/assets/Act-DOvf59ru.js +2 -0
- package/static/app/assets/{Act-CX5hL0Z3.js.map → Act-DOvf59ru.js.map} +1 -1
- package/static/app/assets/Brain-C7_0mEiI.js +322 -0
- package/static/app/assets/Brain-C7_0mEiI.js.map +1 -0
- package/static/app/assets/Capture-B9Tlhzqr.js +2 -0
- package/static/app/assets/{Capture-CdFSrZnA.js.map → Capture-B9Tlhzqr.js.map} +1 -1
- package/static/app/assets/{Library-CZFVGSmG.js → Library-BJPEEm5O.js} +2 -2
- package/static/app/assets/{Library-CZFVGSmG.js.map → Library-BJPEEm5O.js.map} +1 -1
- package/static/app/assets/System-D6t9jo9V.js +2 -0
- package/static/app/assets/{System-CMoOoUrZ.js.map → System-D6t9jo9V.js.map} +1 -1
- package/static/app/assets/index-C7g26IF6.css +2 -0
- package/static/app/assets/index-DbcEYJQ2.js +17 -0
- package/static/app/assets/{index-B4_drWel.js.map → index-DbcEYJQ2.js.map} +1 -1
- package/static/app/assets/primitives-CD38lt4n.js +2 -0
- package/static/app/assets/{primitives-CFhU5Rka.js.map → primitives-CD38lt4n.js.map} +1 -1
- package/static/app/assets/textarea-BZk6ybp5.js +2 -0
- package/static/app/assets/{textarea-uBpGDOJM.js.map → textarea-BZk6ybp5.js.map} +1 -1
- package/static/app/index.html +2 -2
- package/frontend/src/components/BrainConversation.tsx +0 -533
- package/frontend/src/components/FirstRunGuide.tsx +0 -99
- package/static/app/assets/Act-CX5hL0Z3.js +0 -2
- package/static/app/assets/Brain-m19en5wz.js +0 -322
- package/static/app/assets/Brain-m19en5wz.js.map +0 -1
- package/static/app/assets/Capture-CdFSrZnA.js +0 -2
- package/static/app/assets/System-CMoOoUrZ.js +0 -2
- package/static/app/assets/index-B4_drWel.js +0 -17
- package/static/app/assets/index-DjpDeE0c.css +0 -2
- package/static/app/assets/primitives-CFhU5Rka.js +0 -2
- package/static/app/assets/textarea-uBpGDOJM.js +0 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Lattice AI
|
|
2
2
|
|
|
3
|
-
**Lattice AI 7.
|
|
3
|
+
**Lattice AI 7.9 is the local-first Digital Brain product with cleaner runtime boundaries. It keeps your knowledge durable across any AI model, with Brain Chat Home ready for immediate use and agent execution hardened behind explicit runtime ports.**
|
|
4
4
|
|
|
5
5
|
**Lattice AI는 모델이 바뀌어도 내 지식과 맥락을 보존하는 로컬 우선 AI 브레인입니다.**
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ downloads, update checks, and other external communication happen only after
|
|
|
11
11
|
explicit consent.
|
|
12
12
|
|
|
13
13
|
It is not a ChatGPT clone, a model launcher, a graph database, or a note app.
|
|
14
|
-
It is the finished private AI memory layer wrapped in a Living Brain experience — 7.
|
|
14
|
+
It is the finished private AI memory layer wrapped in a Living Brain experience — now with a clearer 7.9 agent-runtime boundary.
|
|
15
15
|
|
|
16
16
|
[](https://pypi.org/project/ltcai/)
|
|
17
17
|
[](https://www.npmjs.com/package/ltcai)
|
|
@@ -64,6 +64,10 @@ You need Lattice AI when:
|
|
|
64
64
|
|
|
65
65
|
## Living Brain Flow
|
|
66
66
|
|
|
67
|
+
The screenshots below are release evidence captures. The 7.9 line keeps the
|
|
68
|
+
same first-run flow and rebuilds the Brain Chat Home layout so chat and the
|
|
69
|
+
composer are the first visible action.
|
|
70
|
+
|
|
67
71
|
### 1. Wake Brain
|
|
68
72
|
|
|
69
73
|
The first screen makes the Brain the product. It explains the three-step path:
|
|
@@ -74,28 +78,28 @@ confirm owner, check the computer, choose the Brain voice.
|
|
|
74
78
|
Choose the owner of the Brain. The profile is not a SaaS account by default; it
|
|
75
79
|
is the local identity for the knowledge you keep.
|
|
76
80
|
|
|
77
|
-

|
|
78
82
|
|
|
79
83
|
### 3. Environment Analysis
|
|
80
84
|
|
|
81
85
|
See what kind of local AI experience this computer can support before choosing a
|
|
82
86
|
model.
|
|
83
87
|
|
|
84
|
-

|
|
85
89
|
|
|
86
90
|
### 4. Recommended Models
|
|
87
91
|
|
|
88
92
|
Start with a short list: safest recommendation, faster model, stronger model.
|
|
89
93
|
Advanced details stay available without overwhelming first-time users.
|
|
90
94
|
|
|
91
|
-

|
|
92
96
|
|
|
93
97
|
### 5. Install And Load
|
|
94
98
|
|
|
95
99
|
Download and load only after consent. Lattice explains model size, local
|
|
96
100
|
execution, and network use before work starts.
|
|
97
101
|
|
|
98
|
-

|
|
99
103
|
|
|
100
104
|
### 6. Brain Chat
|
|
101
105
|
|
|
@@ -103,14 +107,14 @@ Talk normally. Useful decisions and context become memory, then appear later as
|
|
|
103
107
|
topics, relationships, graph structure, and the concentric memory rings around
|
|
104
108
|
the Brain.
|
|
105
109
|
|
|
106
|
-

|
|
107
111
|
|
|
108
112
|
### 7. Review Center
|
|
109
113
|
|
|
110
114
|
Automation results are staged for review before they become durable decisions.
|
|
111
115
|
Snooze, unsnooze, run now, approve, and dismiss actions stay explicit.
|
|
112
116
|
|
|
113
|
-

|
|
114
118
|
|
|
115
119
|
## Brain Depths
|
|
116
120
|
|
|
@@ -126,10 +130,10 @@ The user travels inward from everyday memory to deeper structure:
|
|
|
126
130
|
|
|
127
131
|
Walkthrough:
|
|
128
132
|
|
|
129
|
-

|
|
130
134
|
|
|
131
135
|
Screenshot index and capture notes:
|
|
132
|
-
[output/release/v7.
|
|
136
|
+
[output/release/v7.8.0/SCREENSHOT_INDEX.md](output/release/v7.8.0/SCREENSHOT_INDEX.md)
|
|
133
137
|
|
|
134
138
|
## Install
|
|
135
139
|
|
|
@@ -206,30 +210,36 @@ See [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for developer workflow details.
|
|
|
206
210
|
|
|
207
211
|
## Current Release
|
|
208
212
|
|
|
209
|
-
The current release is **7.
|
|
210
|
-
|
|
211
|
-
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
The current release is **7.9.0 — Agent Runtime Boundary Hardening**:
|
|
214
|
+
|
|
215
|
+
- The single-agent state machine is now named `SingleAgentRuntime`, while the
|
|
216
|
+
historical `AgentRuntime` import remains as a compatibility alias.
|
|
217
|
+
- The product AgentRuntime facade in `lattice_brain.runtime.agent_runtime`
|
|
218
|
+
remains the unambiguous `/agents` execution and observability boundary.
|
|
219
|
+
- Agent rollback is now an injected runtime port wired through
|
|
220
|
+
`ToolDispatchService`, so the core state machine no longer shells out directly.
|
|
221
|
+
- Both runtime surfaces expose a `runtime-boundary/v1` descriptor so tests and
|
|
222
|
+
API clients can identify the owning execution boundary without relying on
|
|
223
|
+
ambiguous class names.
|
|
224
|
+
- A shared `RuntimeBoundaryProtocol` now fixes the common inspection surface
|
|
225
|
+
while letting each runtime keep its own execution methods.
|
|
216
226
|
- Product readiness is machine-checkable through `product_readiness()`, which
|
|
217
227
|
composes the architecture contract with exact artifact/docs/workflow evidence.
|
|
218
228
|
- CI and release workflows now run frontend lint/typecheck/build gates plus the
|
|
219
|
-
7.
|
|
229
|
+
7.9 product readiness score before a tag can be treated as release-safe.
|
|
220
230
|
|
|
221
|
-
Expected artifacts for 7.
|
|
231
|
+
Expected artifacts for 7.9.0 release must use exact filenames:
|
|
222
232
|
|
|
223
|
-
- `dist/ltcai-7.
|
|
224
|
-
- `dist/ltcai-7.
|
|
225
|
-
- `ltcai-7.
|
|
226
|
-
- `dist/ltcai-7.
|
|
227
|
-
- `src-tauri/target/release/bundle/dmg/Lattice AI_7.
|
|
233
|
+
- `dist/ltcai-7.9.0-py3-none-any.whl`
|
|
234
|
+
- `dist/ltcai-7.9.0.tar.gz`
|
|
235
|
+
- `ltcai-7.9.0.tgz`
|
|
236
|
+
- `dist/ltcai-7.9.0.vsix`
|
|
237
|
+
- `src-tauri/target/release/bundle/dmg/Lattice AI_7.9.0_aarch64.dmg`
|
|
228
238
|
|
|
229
|
-
Do not
|
|
239
|
+
Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
|
|
230
240
|
|
|
231
241
|
See [docs/ROADMAP_RECOMMENDATIONS.md](docs/ROADMAP_RECOMMENDATIONS.md) for the
|
|
232
|
-
strategic roadmap slices applied through 7.
|
|
242
|
+
strategic roadmap slices applied through 7.9.0 and the follow-up tracks.
|
|
233
243
|
|
|
234
244
|
## Known Limitations
|
|
235
245
|
|
|
@@ -246,6 +256,8 @@ strategic roadmap slices applied through 7.7.0 and the follow-up tracks.
|
|
|
246
256
|
|
|
247
257
|
| Version | Theme |
|
|
248
258
|
| --- | --- |
|
|
259
|
+
| 7.9.0 | Agent Runtime Boundary Hardening: explicit `SingleAgentRuntime`, compatibility alias preservation, injected rollback port, and release/readiness docs aligned to the product AgentRuntime facade |
|
|
260
|
+
| 7.8.0 | Brain Chat Home UX Simplification: chat-first first viewport, visible workspace navigation, collapsed source/status utilities, hidden default depth controls, and removal of obsolete Brain UX components |
|
|
249
261
|
| 7.7.0 | Complete Product Polish: command-center Brain Home, repaired Review Center evidence, exact 7.7 docs/artifacts, product readiness gate, and stronger CI/release checks |
|
|
250
262
|
| 7.6.0 | Brain-Centered UX & Architecture Closure: Wake Brain first-run surface, concentric memory rings with direct depth controls, and machine-checkable closure of the two architecture/UX review files |
|
|
251
263
|
| 7.5.0 | Runtime Debt Burn-down & Release Risk Cleanup: API consumers get normalized contract views, retrieval quality uses a 250+ record corpus fixture, stale artifact risk is removed, npm audit is clean, and Tauri is updated past the old block warning |
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,43 @@ 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
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [7.9.0] - 2026-06-23
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Added `SingleAgentRuntime` as the explicit name for the legacy single-agent
|
|
13
|
+
state machine while preserving `AgentRuntime` as a compatibility alias.
|
|
14
|
+
- Updated tool dispatch to build `SingleAgentRuntime` directly.
|
|
15
|
+
- Moved single-agent git rollback behind an injected `rollback_file` port owned
|
|
16
|
+
by `ToolDispatchService`, keeping shell execution out of the core state
|
|
17
|
+
machine.
|
|
18
|
+
- Added a shared `runtime-boundary/v1` descriptor so product and single-agent
|
|
19
|
+
runtime boundaries are machine-readable in config/tests.
|
|
20
|
+
- Added `RuntimeBoundaryProtocol` as the minimal shared inspection surface for
|
|
21
|
+
runtime-boundary-aware dependency injection.
|
|
22
|
+
- Updated architecture and product readiness targets to 7.9.0.
|
|
23
|
+
|
|
24
|
+
## [7.8.0] - 2026-06-22
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
- Rebuilt Brain Chat Home around immediate conversation: chat purpose, starter
|
|
28
|
+
prompts, and the composer now occupy the first viewport.
|
|
29
|
+
- Collapsed source ingestion, readiness, proof, timeline, overview, model
|
|
30
|
+
continuity, and care controls behind one utility drawer.
|
|
31
|
+
- Kept workspace navigation visible on the default Brain surface.
|
|
32
|
+
- Hid default depth controls until the user intentionally travels deeper.
|
|
33
|
+
- Integrated the six post-7.7 UX drafts into the canonical Brain experience:
|
|
34
|
+
first-run value cards, stronger recommendation affordances, product-toned
|
|
35
|
+
Brain Home copy, and routed legacy Brain conversation entry points to the
|
|
36
|
+
canonical Brain Home surface.
|
|
37
|
+
- Removed obsolete Brain conversation and first-run guide components.
|
|
38
|
+
- Moved draft onboarding polish out of inline styles and into the shared design
|
|
39
|
+
stylesheet with responsive behavior and bilingual copy.
|
|
40
|
+
- Updated architecture and product readiness targets to 7.8.0.
|
|
41
|
+
- Refreshed 7.8.0 release screenshots, walkthrough video/GIF, and capture
|
|
42
|
+
notes under `output/release/v7.8.0/`.
|
|
43
|
+
|
|
7
44
|
## [7.7.0] - 2026-06-22
|
|
8
45
|
|
|
9
46
|
> 7.7.0 marks the complete, finished product stage for Lattice AI.
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -95,5 +95,4 @@ For user-facing, API, runtime, release, or packaging changes, check:
|
|
|
95
95
|
- `docs/LEGACY_COMPATIBILITY.md` when root compatibility files change
|
|
96
96
|
|
|
97
97
|
Release/publish examples must use exact target-version filenames. Do not
|
|
98
|
-
document wildcard upload commands
|
|
99
|
-
|
|
98
|
+
document wildcard artifact upload commands.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The Multi-Agent Runtime is the **orchestration layer** introduced in v2.0.0 and
|
|
4
4
|
operationalized in v2.2.0. It sits
|
|
5
|
-
*above* the v1.x single-agent state machine ([`
|
|
5
|
+
*above* the v1.x single-agent state machine ([`SingleAgentRuntime`](../latticeai/core/agent.py))
|
|
6
6
|
and coordinates a pipeline of named **roles** that hand off work to one another,
|
|
7
7
|
retry on a failing review, and emit a fully observable, replayable timeline.
|
|
8
8
|
|
|
@@ -34,20 +34,21 @@ objects durable and inspectable:
|
|
|
34
34
|
|
|
35
35
|
## How it relates to the v1 single-agent runtime
|
|
36
36
|
|
|
37
|
-
v1.x shipped a single-agent state machine — `
|
|
37
|
+
v1.x shipped a single-agent state machine — `SingleAgentRuntime` driving
|
|
38
38
|
`PLAN → EXECUTE → VERIFY → DONE` (with `ROLLBACK` / `FAILED` recovery paths) over an
|
|
39
|
-
injected `AgentDeps` port.
|
|
39
|
+
injected `AgentDeps` port. The historical `AgentRuntime` import remains as a
|
|
40
|
+
compatibility alias.
|
|
40
41
|
|
|
41
42
|
v2.0 adds the *orchestration* layer on top: instead of one agent looping through
|
|
42
43
|
internal phases, the `MultiAgentOrchestrator` drives a **pipeline of distinct roles**
|
|
43
44
|
(researcher, planner, executor, reviewer, release) that hand off to one another and
|
|
44
45
|
can rewind on a failing review. The two layers are complementary — the v2
|
|
45
46
|
orchestrator coordinates roles; an individual role's runner could itself be backed by
|
|
46
|
-
the v1 `
|
|
47
|
+
the v1 `SingleAgentRuntime` loop or an LLM, but that is an implementation choice behind the
|
|
47
48
|
injected runner port.
|
|
48
49
|
|
|
49
50
|
> **Compatibility.** The Multi-Agent Runtime is purely additive. The v1
|
|
50
|
-
> `
|
|
51
|
+
> `SingleAgentRuntime` state machine and its `/agent` endpoints are untouched, and the v2
|
|
51
52
|
> API is namespaced under `/agents` (plural) so it never collides with the existing
|
|
52
53
|
> single-agent `/agent` routes. Existing v1.x data is preserved; new runs are appended
|
|
53
54
|
> to workspace state and the Knowledge Graph alongside it.
|
package/docs/V2_ARCHITECTURE.md
CHANGED
|
@@ -141,8 +141,9 @@ portable JSON representation (definition only — no run history or scope).
|
|
|
141
141
|
|
|
142
142
|
### 1.3 Multi-Agent Runtime 2.0 (`latticeai.core.multi_agent`)
|
|
143
143
|
|
|
144
|
-
v1.x shipped a single-agent state machine (`latticeai.core.agent.
|
|
145
|
-
|
|
144
|
+
v1.x shipped a single-agent state machine (`latticeai.core.agent.SingleAgentRuntime`;
|
|
145
|
+
`latticeai.core.agent.AgentRuntime` remains a compatibility alias) that drives
|
|
146
|
+
PLAN → EXECUTE → VERIFY → DONE. v2.0 adds the **orchestration** layer above it:
|
|
146
147
|
a pipeline of named roles that hand off to one another, retry on a failing
|
|
147
148
|
review, and emit a structured timeline that drops straight into the Workspace
|
|
148
149
|
timeline / Knowledge Graph.
|
package/frontend/src/App.tsx
CHANGED
|
@@ -88,7 +88,9 @@ export default function App() {
|
|
|
88
88
|
</React.Suspense>
|
|
89
89
|
</BrainShell>
|
|
90
90
|
) : (
|
|
91
|
-
<
|
|
91
|
+
<BrainShell active="brain">
|
|
92
|
+
<BrainHome brainState={brainState} intensity={intensity} onBrainChange={setBrain} />
|
|
93
|
+
</BrainShell>
|
|
92
94
|
)}
|
|
93
95
|
</div>
|
|
94
96
|
);
|
|
@@ -3,7 +3,7 @@ import { latticeApi } from "@/api/client";
|
|
|
3
3
|
import { type BrainState, LivingBrain } from "@/components/LivingBrain";
|
|
4
4
|
import { t } from "@/i18n";
|
|
5
5
|
import { useAppStore } from "@/store/appStore";
|
|
6
|
-
import { ArrowRight, Shield, Zap
|
|
6
|
+
import { ArrowRight, Cpu, Shield, Zap } from "lucide-react";
|
|
7
7
|
import {
|
|
8
8
|
AnalysisScreen,
|
|
9
9
|
InstallScreen,
|
|
@@ -107,25 +107,26 @@ export function ProductFlow({ onComplete }: { onComplete: () => void }) {
|
|
|
107
107
|
|
|
108
108
|
function WakeBrainScreen({ onWake, onUseExisting }: { onWake: () => void; onUseExisting: () => void }) {
|
|
109
109
|
const language = useAppStore((state) => state.language);
|
|
110
|
+
const valueCards = [
|
|
111
|
+
{ icon: Shield, label: t(language, "flow.wake.value.local.k"), body: t(language, "flow.wake.value.local.v") },
|
|
112
|
+
{ icon: Zap, label: t(language, "flow.wake.value.instant.k"), body: t(language, "flow.wake.value.instant.v") },
|
|
113
|
+
{ icon: Cpu, label: t(language, "flow.wake.value.brain.k"), body: t(language, "flow.wake.value.brain.v") },
|
|
114
|
+
];
|
|
110
115
|
return (
|
|
111
116
|
<section className="ritual-wake" aria-label={t(language, "flow.wake.aria")}>
|
|
112
117
|
<div className="ritual-title">{t(language, "flow.wake.title")}</div>
|
|
113
118
|
<div className="ritual-subtitle">{t(language, "flow.wake.body")}</div>
|
|
114
119
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
<div style={{border: "1px solid hsl(var(--border)/0.5)", borderRadius: "12px", padding: "0.7rem 0.8rem", background: "hsl(var(--surface))", textAlign: "left"}}>
|
|
126
|
-
<div style={{display: "flex", alignItems: "center", gap: "0.4rem", color: "hsl(var(--brain-core))", fontSize: "0.75rem", fontWeight: 700}}><Cpu size={14}/> 영원한 Brain</div>
|
|
127
|
-
<div style={{fontSize: "0.85rem", marginTop: "0.2rem", fontWeight: 600}}>모델 바꿔도 지식은 그대로 영원히</div>
|
|
128
|
-
</div>
|
|
120
|
+
<div className="ritual-value-grid" aria-label={t(language, "flow.wake.value.aria")}>
|
|
121
|
+
{valueCards.map((card) => {
|
|
122
|
+
const Icon = card.icon;
|
|
123
|
+
return (
|
|
124
|
+
<div className="ritual-value-card" key={card.label}>
|
|
125
|
+
<div className="ritual-value-label"><Icon size={14} /> {card.label}</div>
|
|
126
|
+
<div className="ritual-value-body">{card.body}</div>
|
|
127
|
+
</div>
|
|
128
|
+
);
|
|
129
|
+
})}
|
|
129
130
|
</div>
|
|
130
131
|
|
|
131
132
|
<div className="ritual-wake-plan" aria-label={t(language, "flow.wake.plan.aria")}>
|
|
@@ -143,20 +144,15 @@ function WakeBrainScreen({ onWake, onUseExisting }: { onWake: () => void; onUseE
|
|
|
143
144
|
</div>
|
|
144
145
|
</div>
|
|
145
146
|
|
|
146
|
-
<div className="ritual-button-row
|
|
147
|
-
<button
|
|
148
|
-
type="button"
|
|
149
|
-
className="ritual-full-button"
|
|
150
|
-
onClick={onWake}
|
|
151
|
-
style={{fontSize: "1.05rem", padding: "0.85rem 2.2rem", display: "inline-flex", alignItems: "center", gap: "0.5rem"}}
|
|
152
|
-
>
|
|
147
|
+
<div className="ritual-button-row ritual-button-row-primary">
|
|
148
|
+
<button type="button" className="ritual-full-button ritual-full-button-primary" onClick={onWake}>
|
|
153
149
|
{t(language, "flow.wake.primary")} <ArrowRight size={18} />
|
|
154
150
|
</button>
|
|
155
151
|
<button type="button" className="ritual-secondary-button" onClick={onUseExisting}>
|
|
156
152
|
{t(language, "flow.wake.existing")}
|
|
157
153
|
</button>
|
|
158
154
|
</div>
|
|
159
|
-
<div
|
|
155
|
+
<div className="ritual-start-note">{t(language, "flow.wake.startNote")}</div>
|
|
160
156
|
</section>
|
|
161
157
|
);
|
|
162
158
|
}
|
|
@@ -2,7 +2,7 @@ import { Button } from "@/components/ui/button";
|
|
|
2
2
|
import { t, type Language } from "@/i18n";
|
|
3
3
|
import { useAppStore } from "@/store/appStore";
|
|
4
4
|
import { fallbackModel, type RecommendedModel } from "./recommendationModel";
|
|
5
|
-
import {
|
|
5
|
+
import { ArrowRight, Gauge, Star, Zap } from "lucide-react";
|
|
6
6
|
|
|
7
7
|
export function RecommendationScreen({
|
|
8
8
|
recommendations,
|
|
@@ -24,9 +24,9 @@ export function RecommendationScreen({
|
|
|
24
24
|
|
|
25
25
|
<div className="ritual-model-list">
|
|
26
26
|
{items[0]?.supported ? (
|
|
27
|
-
<div className="ritual-primary-cta"
|
|
28
|
-
<Button onClick={() => onSelect(items[0])} className="ritual-primary-model-button"
|
|
29
|
-
{t(language, "flow.recommend.primary")} <ArrowRight size={16}/>
|
|
27
|
+
<div className="ritual-primary-cta">
|
|
28
|
+
<Button onClick={() => onSelect(items[0])} className="ritual-primary-model-button">
|
|
29
|
+
{t(language, "flow.recommend.primary")} <ArrowRight size={16} />
|
|
30
30
|
</Button>
|
|
31
31
|
<div className="ritual-time-estimate ritual-primary-note">{primaryNote(items[0], language)}</div>
|
|
32
32
|
<div className="ritual-muted-hint ritual-next-hint">{t(language, "flow.recommend.nextHint")}</div>
|
|
@@ -40,24 +40,23 @@ export function RecommendationScreen({
|
|
|
40
40
|
className="ritual-model-card"
|
|
41
41
|
onClick={() => model.supported && onSelect(model)}
|
|
42
42
|
disabled={!model.supported}
|
|
43
|
-
style={{display: "flex", flexDirection: "column", alignItems: "flex-start", gap: "0.3rem"}}
|
|
44
43
|
>
|
|
45
|
-
<div
|
|
46
|
-
<Icon size={16}
|
|
47
|
-
<div className="role"
|
|
44
|
+
<div className="ritual-model-heading">
|
|
45
|
+
<Icon size={16} />
|
|
46
|
+
<div className="role">{rankLabel(model.role, index, language)}</div>
|
|
48
47
|
</div>
|
|
49
|
-
<div className="name"
|
|
50
|
-
<div className="reason"
|
|
48
|
+
<div className="name">{model.shortName}</div>
|
|
49
|
+
<div className="reason">
|
|
51
50
|
{model.reason} · {model.size || t(language, "flow.recommend.sizeReady")}
|
|
52
51
|
{comparisonLabel(model.role, language) ? (
|
|
53
52
|
<span className="ritual-model-comparison"> {comparisonLabel(model.role, language)}</span>
|
|
54
53
|
) : null}
|
|
55
54
|
</div>
|
|
56
|
-
<div className="ritual-model-stats"
|
|
55
|
+
<div className="ritual-model-stats">
|
|
57
56
|
<span className="ritual-time-estimate">{timeEstimate(model, language)}</span>
|
|
58
57
|
</div>
|
|
59
58
|
{model.supported ? (
|
|
60
|
-
<span className="ritual-model-choose"
|
|
59
|
+
<span className="ritual-model-choose">{t(language, "flow.recommend.choose")} <ArrowRight size={14} /></span>
|
|
61
60
|
) : (
|
|
62
61
|
<div className="ritual-model-warning">{t(language, "flow.recommend.unsupported")}</div>
|
|
63
62
|
)}
|