aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/assistant/README.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-16 15:23:41 +0200
committerDanilo M. <danix@danix.xyz>2026-10-16 15:23:41 +0200
commitf5da8d8ee2cb4ace1fa6841437b4798e7799c100 (patch)
tree9a1d51d8e61782852de2779cc77bfa5d2ca94a65 /desktop/assistant/README.md
parent13a10999f53802858f87883db381842d741eab69 (diff)
downloadquickshell-f5da8d8ee2cb4ace1fa6841437b4798e7799c100.tar.gz
quickshell-f5da8d8ee2cb4ace1fa6841437b4798e7799c100.zip
feat(assistant): entry line, file state, staged files and a picker
The card has three states: an entry line, a file state for staged files with Chat about it, and the chat. SUPER+Home resumes a conversation active in the last 10 minutes and otherwise starts a new one. The paperclip opens a picker drawn in the card, since a system dialog would open beneath the overlay that holds the keyboard. Button gains a font alias for the paperclip glyph, and the canvas a socketPath property so a check can point it at a scratch daemon. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/assistant/README.md')
-rw-r--r--desktop/assistant/README.md23
1 files changed, 20 insertions, 3 deletions
diff --git a/desktop/assistant/README.md b/desktop/assistant/README.md
index 8fc200b..aabce2d 100644
--- a/desktop/assistant/README.md
+++ b/desktop/assistant/README.md
@@ -17,10 +17,20 @@ what is typed. The protocol is specified in that repo,
| `Message.qml` | one turn: question, thinking line, tool chips, reply |
| `Segments.qml` | markdown with a copy button per code block |
| `History.qml` | conversation list and full-text search |
+| `Picker.qml` | the in-card file picker behind the paperclip |
| `Md.js` | splits a message into prose and fenced code |
+| `Files.js` | a path's kind, and a dropped URL to a path |
-Keys: Enter sends, Shift+Enter is a newline, Escape closes the history
-panel and then the card. Stop replaces Send while a reply streams.
+Three states (`Assistant.qml`, `mode`): **entry**, one line, "How can I
+help you?"; **file**, files staged and nothing asked yet, with what can be
+done with them; **chat**, the transcript. SUPER+Home resumes a conversation
+active in the last 10 minutes and otherwise starts a new one. A file
+dropped on the island (`../island/`) starts a new one in the file state.
+The paperclip opens a picker drawn in the card: a system dialog would open
+beneath the overlay that holds the keyboard.
+
+Keys: Enter sends, Shift+Enter is a newline, Escape closes the picker, then
+the history panel, then the card. Stop replaces Send while a reply streams.
Notes:
@@ -49,4 +59,11 @@ Notes:
are stripped first, since a match inside a code span would show the
markers literally.
-Test the splitter: `node desktop/assistant/test_md.js`.
+- **File kinds are decided twice.** `Files.js` decides what the card
+ offers; the daemon decides what chat accepts. The lists match, but the
+ daemon also takes any `text/*` file, which the card may show as "other".
+- **`socketPath`** is a property so a check can point the canvas at a
+ scratch daemon; the desktop uses the default.
+
+Test the splitter and the kinds: `node desktop/assistant/test_md.js`,
+`node desktop/assistant/test_files.js`.