Skip to content

Commit 7028329

Browse files
authored
Merge pull request #7 from dusskapark/main
feat: refactor Assistant with Prompt Kit and multimodal image input
2 parents ebc4b99 + 9a36ff2 commit 7028329

42 files changed

Lines changed: 5414 additions & 141 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# TalkToFigma Local Ollama Agent v1 - QA Report (2026-04-19)
2+
3+
## Run Context
4+
- Date: 2026-04-19 (KST)
5+
- Workspace: `/Users/jude.park/Sites/figma/TalkToFigmaDesktop`
6+
- Host: macOS (Darwin 25.4.0 arm64)
7+
8+
## Automated Checks
9+
1. `npm run -s lint`
10+
- Result: PASS
11+
2. `npm run -s test:assistant`
12+
- Result: PASS (4/4)
13+
3. `npx tsc --noEmit`
14+
- Result: PASS
15+
16+
## Runtime Environment Checks
17+
1. Ollama binary detection
18+
- Command: `which ollama`
19+
- Result: PASS (`/opt/homebrew/bin/ollama`)
20+
2. Ollama daemon reachability
21+
- Command: `curl http://127.0.0.1:11434/api/tags`
22+
- Result: PASS (JSON response returned)
23+
3. Default model availability
24+
- Command: `ollama list`
25+
- Result: PASS (`gemma4:e4b` installed)
26+
27+
## App Startup Smoke Check
28+
1. `npm run start` (electron-forge dev run)
29+
- Result: PASS
30+
- Evidence:
31+
- Main window creation succeeded
32+
- IPC handlers registered
33+
- Tray created successfully
34+
- WebSocket server started on `ws://127.0.0.1:3055`
35+
- Renderer `did-finish-load` observed
36+
37+
## Policy Verification (Code + Runtime Evidence)
38+
1. Default model fixed to `gemma4:e4b`
39+
- Result: PASS
40+
2. Guide mode only (`guideModeOnly: true`)
41+
- Result: PASS
42+
3. Missing-model gating (`MODEL_SELECTION_REQUIRED`)
43+
- Result: PASS
44+
4. Write tools require approval; unknown tools default write
45+
- Result: PASS
46+
5. Navigation order defined as `Assistant -> Terminal -> Settings -> Help`
47+
- Result: PASS
48+
49+
## Interactive UI Checks (Computer Use)
50+
1. Sidebar navigation order
51+
- Result: PASS
52+
- Observed order: `Assistant -> Terminal -> Settings -> Help`
53+
2. Page navigation by click
54+
- Result: PASS
55+
- Verified transitions: Assistant -> Settings -> Help -> Terminal
56+
3. View menu shortcuts (`CmdOrCtrl+1`, `CmdOrCtrl+2`) via key simulation
57+
- Result: PASS
58+
- `super+1` moved to Assistant, `super+2` moved to Terminal
59+
4. Read tool auto-execution
60+
- Result: PASS
61+
- Prompt triggered `connection_diagnostics`
62+
- No approval modal shown
63+
- Tool call/result rendered in chat (`[Tool Call]/[Tool Result]`)
64+
5. Write tool approval modal appears before execution
65+
- Result: PASS
66+
- Prompt triggered `join_channel`
67+
- Approval dialog displayed with tool name, safety, args
68+
6. Write tool rejection path (`Reject`)
69+
- Result: PASS
70+
- Result rendered: `tool execution rejected`
71+
7. Write tool approval path (`Approve`)
72+
- Result: FAIL (execution timeout after approval)
73+
- Observed result: `join_channel: Request to Figma timed out after 20 seconds`
74+
- Reproduced for:
75+
- `qa_approve_test`
76+
- `6x5l3zq0` (user-provided test channel)
77+
- Runtime log evidence:
78+
- command dispatched (`Sending command: join_channel`)
79+
- server broadcast observed
80+
- no successful response before timeout
81+
8. Assistant status and default model display
82+
- Result: PASS
83+
- Badge showed `Ready`
84+
- Default model text showed `gemma4:e4b`
85+
86+
## Overall Status
87+
- Automated/CLI-verifiable scope: PASS
88+
- Interactive UI scope: PARTIAL PASS
89+
- Primary regression found: approved `join_channel` write execution times out instead of returning success/failure promptly
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# TalkToFigma Local Ollama Agent v1 - Manual QA Checklist
2+
3+
## Scope
4+
- Default model policy: `gemma4:e4b`
5+
- Guide mode only setup (no auto-install, no auto-pull)
6+
- Navigation order: `Assistant -> Terminal -> Settings -> Help`
7+
- Tool safety policy: `read auto`, `write approval required`
8+
9+
## Environment Matrix
10+
- macOS build
11+
- Windows build
12+
- Store-restricted environment (MAS/MSIX equivalent constraints)
13+
14+
## Navigation & Entry
15+
1. Launch app and verify initial page is `Terminal`.
16+
2. Open sidebar and verify menu order is:
17+
- Assistant
18+
- Terminal
19+
- Settings
20+
- Help
21+
3. Open tray menu and verify same page order appears.
22+
4. Open app menu View section and verify shortcuts:
23+
- Assistant: `CmdOrCtrl+1`
24+
- Terminal: `CmdOrCtrl+2`
25+
- Settings: `CmdOrCtrl+3`
26+
- Help: `CmdOrCtrl+4`
27+
28+
## Setup States
29+
1. Stop Ollama daemon and open Assistant:
30+
- `Needs Setup` badge appears.
31+
- Setup guide card appears.
32+
- Copy command button copies default pull command.
33+
2. Start daemon with no models installed:
34+
- `Needs Model Selection` badge appears.
35+
- Model selection dialog opens automatically.
36+
- Dialog cannot be closed until a model is selected.
37+
3. Pull default model `gemma4:e4b` and refresh Assistant:
38+
- Status changes to `Ready`.
39+
- Default model text shows `gemma4:e4b`.
40+
41+
## Model Selection Rules
42+
1. With `gemma4:e4b` missing and other models installed:
43+
- Sending message is blocked.
44+
- Model selection dialog is shown.
45+
2. Select a non-default installed model:
46+
- Send message works with selected model.
47+
3. Restart app:
48+
- Last opened thread restores.
49+
- Active model for restored thread remains selected.
50+
51+
## Chat & Streaming
52+
1. Send a long prompt and verify token streaming appears incrementally.
53+
2. Click `Cancel` during streaming:
54+
- Run ends with cancelled response.
55+
- UI returns to idle input state.
56+
3. Start a new thread and verify title auto-updates from first user message.
57+
58+
## Tool Execution Policy
59+
1. Trigger a read tool:
60+
- Tool call/result appears automatically in stream.
61+
- No approval dialog appears.
62+
2. Trigger a write tool:
63+
- Approval dialog appears with tool name, safety, args.
64+
- `Reject` returns tool rejection result and run continues safely.
65+
- `Approve` executes tool and returns result.
66+
3. Trigger unknown tool (if available):
67+
- Must be treated as `write` and require approval.
68+
69+
## Figma Connectivity Fallback
70+
1. Disconnect Figma plugin and trigger Figma-dependent tool:
71+
- Assistant returns status payload indicating plugin disconnected.
72+
- User-facing guidance includes server/plugin reconnect actions.
73+
74+
## Persistence & Limits
75+
1. Create over 100 threads:
76+
- Oldest threads are pruned automatically.
77+
2. In one thread, exceed 400 messages:
78+
- Oldest messages are pruned in that thread.
79+
3. Restart app and verify:
80+
- Last opened thread is restored.
81+
- No orphan messages remain for pruned threads.
82+
83+
## Safety Regression Checks
84+
1. Search code for auto-install/auto-pull behavior:
85+
- No runtime logic should execute install/pull automatically.
86+
2. Verify all setup actions are user-guided via commands and links only.
87+

0 commit comments

Comments
 (0)