Commit Graph

9 Commits

Author SHA1 Message Date
Levi Neely 36e8b0abd3 gui: fix B2/B3 mouse handling in editable TextEdit
Handle events in onPressed instead of onClicked so they work
with editable text. Remove propagateComposedEvents since we
want to intercept middle/right clicks completely.
2026-10-08 16:23:12 +02:00
Levi Neely b119668965 gui: B3-click on word expands to file path (acme-style)
RMB on text without selection now expands to the word at cursor using
acme's isfilec character set: alphanumeric + . - + / : @

This matches acme behavior for clicking on file paths like foo.go:42
2026-10-08 16:20:29 +02:00
Levi Neely 5bf29198ff gui: pass session cwd as plumb wdir for relative path resolution
Plumb messages now include the current session's cwd as wdir.
Added sessionCwd() helper to ChatPane and ChatBlockDelegate.
Updated plumber.plumb() to accept optional wdir parameter.
2026-10-08 15:44:39 +02:00
Levi Neely 5add387cc8 gui: suppress RMB context menus in prompt and chat blocks
B3 (right-click) now only plumbs selection when available — no fallback
context menu. Mouse chording (B1+B2 cut, B1+B3 paste) still works.
Removed contextMenuComponent and promptContextMenu entirely.
2026-10-08 15:40:31 +02:00
Levi Neely fa58b0f033 gui: make chat block text editable for scratchpad use
Remove readOnly from TextEdit components in ChatBlockDelegate.
Users can now edit text in-place — changes are local only, not persisted.
2026-10-08 15:35:37 +02:00
Levi Neely 9618c79232 gui: native 9P plumb client with edit receiver and mouse chording
Replace QProcess plumb binary shell-out with proper 9P2000 plumb client:
- ninep.h/cpp: minimal 9P2000 protocol client for plan9port plumber
- plumbmsg.h/cpp: plumb message pack/unpack wire codec
- plumber.h/cpp: full plumb client with:
  - socketPath() resolving $NAMESPACE/plumb or display fallback
  - send()/sendTo() write packed messages to send port via 9P
  - PlumbReader thread blocks on edit port, emits edit(file,addr,wdir)
  - startReader() starts the receive loop
  - available() checks plumb socket existence

Add Acme-style mouse chording to ChatBlockDelegate.qml:
- B1+B2 = cut (snarf)
- B1+B3 = paste
- Context menu now includes Cut/Paste with chord hints

Legacy plumb()/plumbTo() methods preserved as aliases to send()/sendTo().
2026-10-08 15:34:29 +02:00
Levi Neely eb12627ea0 kde/gui: fix binding loop and Column anchor errors
- Remove chatPane property from delegate (was shadowing id, causing binding loop)
- Remove contentArea MouseArea from inside Column (invalid anchor)
- Simplify hovered property to use only headerArea
- Edit button now copies to clipboard instead of trying to access chatPane
2026-09-04 14:20:40 +02:00
Levi Neely 75a2da080e kde/gui: Acme-style mouse actions and one-handed workflow
Add Plan 9/Acme-inspired mouse interaction:
- B2 (middle-click): Execute selected text as prompt
- B3 (right-click): Plumb selection via plan9port, fallback to context menu

Plumber integration (plumber.h/cpp):
- Wraps plan9port's plumb command for context-aware actions
- Auto-detects plumb binary in common plan9port locations
- Graceful fallback when plumber not available

Block tag line (ChatBlockDelegate):
- Hover-visible action buttons: Copy, Retry, Continue, Edit
- Per-block-type actions (Retry for assistant/error, Edit for user)

Action toolbar (ChatPane):
- Stop, Compact, Copy Last, Templates dropdown
- Mouse-first workflow without keyboard shortcuts

Input area improvements:
- Larger touch targets (48px send button, 32px toggle)
- Clear and Paste buttons
- B2/B3 mouse actions in prompt input
- Placeholder text explains mouse actions

Context menus now include:
- Execute Selection (B2)
- Plumb Selection (B3)
- Standard Cut/Copy/Paste/Select All
2026-09-04 13:47:51 +02:00
Ollie Agent 1e0f9cacd0 Integrate KDE frontend into main repository 2026-08-16 15:08:33 +02:00