Commit Graph

4211 Commits

Author SHA1 Message Date
Taylor Ho 35d7813a6e feat(acp): emit session usage updates for context window tracking
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
2026-04-16 13:12:13 -10:00
Taylor Ho cbf6732ee0 fix: preserve pathless browser-uploaded file attachments on retry/edit 2026-04-16 13:05:03 -10:00
Taylor Ho 143ab86766 fix: address 3 review blockers — unify deferred sends, gate retry, narrow TS union
Blocker 1: Narrow ChatAttachmentDraft union in attachments.test.ts before
asserting base64 — fixes TS compilation error that broke CI.

Blocker 2: Unify pendingEditSend + deferredSend into a single pendingSend
ref with a reason discriminator. Edit path now uses flushSync to commit
state synchronously and calls sendMessage immediately — no timing gap,
no race condition. Persona path keeps the deferred effect with the
unified ref.

Blocker 3: Re-add !isUser guard on retry button in MessageBubble so
retry only shows on assistant messages (edit covers user messages).

Bonus: TODO comment on rebuildAttachmentDrafts dedup heuristic explaining
the assumption that all images produce both a content block and metadata
entry.
2026-04-16 13:05:03 -10:00
Taylor Ho 4f68bb6571 fix: retry/edit preserve attachments & persona, remove MessageBranch dead code
Bug 1: retryMessage no longer truncates history on image-only messages.
Content is validated BEFORE truncation — if there's nothing to re-send
(no text, no images, no attachments), the operation bails cleanly.

Bug 2: retryMessage and handleSaveEdit now forward attachments and persona
from the original message. Added rebuildAttachmentDrafts() to reconstruct
ChatAttachmentDraft[] from stored message content (ImageContent blocks)
and metadata.attachments (file/directory refs).

Dead code: Removed MessageBranch components (~210 lines) from message.tsx
and messageBranch i18n keys from en/es common.json. Unused forking artifacts.

Tests: +6 new tests covering image-only retry safety, attachment preservation,
assistant edit-button exclusion, Shift+Enter multiline, and chatStore
editingMessageId set/clear/cleanup. 430 tests green.
2026-04-16 13:05:03 -10:00
Taylor Ho 79b2836663 style: even padding on user message bubble
Replace px-4 py-2.5 with p-3 for consistent 12px padding on all sides.
2026-04-16 13:05:02 -10:00
Taylor Ho 2eecade457 style: restyle inline edit action bar — default buttons, flipped layout
Removed size=sm and h-7/px-3/text-xs overrides from Save/Cancel.
Hint text now left-aligned, buttons right-anchored via ml-auto.
2026-04-16 13:05:02 -10:00
Taylor Ho 6456a768fa fix: lower z-index on bare HoverCard so popovers/menus win
Bare variant now z-40 instead of z-50. Popovers and dropdowns
at z-50 will always paint on top of message action hovercards.
2026-04-16 13:05:02 -10:00
Taylor Ho 2348e1ea07 fix: increase bottom padding so last message hover actions aren't clipped
Replace py-4 with pt-4 pb-12 on the timeline inner container to
give the last message enough room for HoverCard actions to render.
2026-04-16 13:05:02 -10:00
Taylor Ho e5061bcf30 cleanup: HoverCard bare variant, dedup resize, gate edit state, es locale
1. Added variant='bare' to HoverCardContent — strips all chrome.
   MessageBubble uses it instead of six !important overrides.
2. Removed duplicate height calc from ChatInput handleInput —
   useLayoutEffect([text]) already covers it.
3. Edit state (editText, editTextareaRef, effects) gated on
   role==='user' via canEdit flag.
4. Added edit.hint to Spanish locale.
2026-04-16 13:05:01 -10:00
Taylor Ho 553de5b55a fix: guard handleSaveEdit against vanished messages
If editIndex is -1 (message deleted between click and save), bail
early instead of sending to untruncated history. Clears edit state.
2026-04-16 13:05:01 -10:00
Taylor Ho 6a8567e824 test: add inline edit tests and fix hover test for HoverCard
8 new tests: inline textarea pre-fill, save/cancel clicks, Enter/Escape
keys, disabled save on empty text, edit hint visibility, retry click.
Updated existing hover test to trigger HoverCard via userEvent.hover.
All 49 tests green (25 MessageBubble + 24 ChatInput).
2026-04-16 13:05:01 -10:00
Taylor Ho 18690e7d8c fix: add sideOffset to HoverCard actions for breathing room 2026-04-16 13:05:01 -10:00
Taylor Ho 536d623c9c fix: restore Radix open/close animations on HoverCard actions
Remove !animate-none override so fade and slide transitions from
the base HoverCardContent are preserved. All other chrome overrides
(shadow, border, bg, padding, rounded) remain.
2026-04-16 13:05:00 -10:00
Taylor Ho 5d6e8bf664 fix: strip all visual chrome from HoverCard actions, add gap for overlap
Force-override base HoverCardContent styles (shadow, border, bg,
animations, rounded, padding) with !important. Add mb-6 to user
content div so the portal actions float in the reserved gap.
2026-04-16 13:05:00 -10:00
Taylor Ho b7dcb1a515 refactor: replace CSS group-hover with Radix HoverCard for message actions
Swap the fragile CSS group-hover opacity pattern for Radix HoverCard
which handles hover intent, open/close delays, and portal rendering.
Actions appear below the bubble on hover via stripped HoverCardContent
(no border, shadow, padding, or background). Removes group class.
2026-04-16 13:05:00 -10:00
Taylor Ho 4ece14d64b style: user bubble with bg-muted on content div, max-w-640px, no avatar
User messages render as rounded bg-muted bubbles on the content div
only — action buttons and timestamp sit outside. Max width capped at
640px. Avatar removed. Outer group/gap-3 hover structure preserved.
2026-04-16 13:05:00 -10:00
Taylor Ho 0bdae1ea54 fix: stale closure, focus churn, dead draft write, dead i18n keys
1. handleSaveEdit now forces chatState to idle via store and defers
   sendMessage via pendingEditSend ref + useEffect, avoiding the stale
   closure where sendMessage would bail on old chatState.
2. Split focus into a separate useEffect keyed only on isEditing so it
   doesn't fire on every keystroke and reset cursor position.
3. Removed dead setDraft call in editMessage — inline edit reads text
   directly from the message, not the draft store.
4. Removed unused edit.label and edit.cancel i18n keys.
2026-04-16 13:04:59 -10:00
Taylor Ho 7486ec56c5 feat: full-width inline edit with hinted background and info message
When editing, the container breaks out of the 80% user bubble constraint
to span the full timeline width with a subtle bg-muted/40 background.
Hides the user avatar during edit. Adds hint text indicating editing
will start a new conversation.
2026-04-16 13:04:59 -10:00
Taylor Ho 5eef9496a0 feat: inline edit UX — edit message in-place with Save/Cancel
Pivot from bottom-ChatInput editing to inline editing. When clicking
edit, the message bubble transforms into a textarea with Save and
Cancel buttons. Enter saves, Escape cancels.

- MessageBubble: add isEditing mode with inline textarea, auto-resize,
  focus, and keyboard shortcuts (Enter=save, Escape=cancel)
- MessageTimeline: pass editingMessageId, onSaveEdit, onCancelEdit
- ChatView: add handleSaveEdit (truncate + send), wire to timeline
- ChatInput: remove edit indicator bar, editingMessageId prop, and
  edit-mode focus effect
2026-04-16 13:04:59 -10:00
Taylor Ho 47d1154d4e fix: focus textarea when entering edit mode
The focus effect only ran on mount. Now keyed on editingMessageId so the
textarea receives focus whenever the user clicks edit.
2026-04-16 13:04:59 -10:00
Taylor Ho 71a9323773 fix: sync ChatInput text state when initialValue prop changes
ChatInput initialized local text via useState(initialValue) which only
reads the prop on mount. Subsequent changes (e.g. cancel edit then
re-edit) were ignored. Added useEffect to re-sync setTextRaw when
initialValue changes. Uses setTextRaw (not setText) to avoid redundant
onDraftChange callback since the store already holds the correct value.
2026-04-16 13:04:58 -10:00
Taylor Ho e5dc7095fd feat: wire retry and edit buttons on user messages
- Add retryMessage(messageId) to useChat — truncates from the target
  message onward and resends the preceding user message. Works for
  both user and assistant messages.
- Add editMessage(messageId) to useChat — truncates from the target
  user message onward and populates the chat input draft with the
  original text for revision.
- Wire onRetryMessage and onEditMessage from ChatView through
  MessageTimeline to MessageBubble.
- Remove role gate so retry icon shows on both user and assistant
  messages (edit remains user-only).
2026-04-16 13:04:58 -10:00
morgmart bd14186214 polish: refine sidebar activity indicators, add placeholder token, and tidy search field (#8606)
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
2026-04-16 19:28:32 +00:00
Adam Miller fdd8ada032 feat: add /edit command to cli for on-demand prompt editing (#8566)
Signed-off-by: Adam Miller <admiller@redhat.com>
2026-04-16 18:51:40 +00:00
Dan425953 0766d34237 docs(mcp): add Rendex MCP Server extension tutorial (#8541)
Signed-off-by: DanE <daniel@nexgroup.info>
2026-04-16 18:11:46 +00:00
Lifei Zhou e7a91c7d4f Lifei/delete tauri backend acp (#8582)
Co-authored-by: Jack Amadeo <jackamadeo@squareup.com>
2026-04-16 16:46:37 +00:00
Jack Amadeo 67b90205ed chore: set goose binaries as executable in package.json (#8589) 2026-04-16 15:36:53 +00:00
Alex fd93865951 feat: add Novita AI as declarative provider (#8432)
Signed-off-by: Alex-wuhu <yanglongwei06@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 12:54:31 +00:00
이대희 93e6f8d521 feat: add Kimi Code provider with OAuth device flow authentication (#8466)
Signed-off-by: DaeHee Lee <lee111dae11@proton.me>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 10:13:50 +00:00
g.sunilkumar 05d99f89a3 fix: chat loading-state model placeholder (#8431)
Signed-off-by: sunilkumarvalmiki <g.sunilkumarvalmiki@gmail.com>
Co-authored-by: jh-block <jhugo@block.xyz>
2026-04-16 08:42:13 +00:00
Jiri Luzny fd61058a74 fix: expand tool calls by default when Response Style is Detailed (#8478)
Signed-off-by: Jiri Luzny <jiri.luzny@gmail.com>
Co-authored-by: ximi <liyuan851277048@icloud.com>
2026-04-16 07:53:06 +00:00
Juan Palomino aa8ea99584 fix: create logs dir before writing llm request log (#8522)
Signed-off-by: Juan Palomino <jpalomino09@gmail.com>
2026-04-16 07:50:34 +00:00
Kasper Jensen a6e5d70df0 fix: enable token usage tracking and configurable stream timeout for Ollama provider (#8493) 2026-04-16 07:49:39 +00:00
morgmart d17688330d fix tauri-plugin-dialog version constraint to match other plugins (#8542)
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
2026-04-16 07:41:58 +00:00
Lifei Zhou 50ac3dc0b2 call goose serve from tauri frontend via goose-acp client (#8549)
Co-authored-by: Jack Amadeo <jackamadeo@squareup.com>
2026-04-16 07:34:19 +00:00
Lifei Zhou 625f2d75fe failed the script when bundle:default fails and cleanup "alpha" (#8580) 2026-04-16 05:51:23 +00:00
Lifei Zhou a5a497b341 pass globally unique conversation identifier as sessionId in databricks api call (#8576) 2026-04-16 04:32:19 +00:00
Matt Toohey c29e3203b4 fix: use sqlx chrono decode for thread timestamps instead of manual parsing (#8575)
Signed-off-by: Matt Toohey <contact@matttoohey.com>
2026-04-16 03:06:52 +00:00
Michael Neale d3881897a1 docs: remove stale gemini-acp references (#8572)
Signed-off-by: Michael Neale <michael.neale@gmail.com>
2026-04-16 02:34:41 +00:00
morgmart 19ce336a36 show individual untracked files in git changes widget (#8574)
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
2026-04-16 00:57:58 +00:00
Alex Hancock d627a6556f fix: update publishing flow to include new sdk dir (#8573) 2026-04-16 00:52:56 +00:00
Matt Toohey dc052f4447 fix: remove double border on content in chat (#8545)
Signed-off-by: Matt Toohey <contact@matttoohey.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 00:27:26 +00:00
Matt Toohey bae26d6302 chore(goose2): just goose2 <command> with the addition of just goose2 kill (#8570)
Signed-off-by: Matt Toohey <contact@matttoohey.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 00:08:58 +00:00
Lifei Zhou 23755aa458 Lifei/oltp data (#8458) 2026-04-15 23:47:09 +00:00
tulsi 8b2c6e0129 Sidebar polish: search copy, dividers, project reorder, fix DnD (#8568)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 23:26:03 +00:00
Jack Amadeo 0ec73c80f3 remove the workflow_dispatch check (#8563) 2026-04-15 16:14:17 -04:00
Alex Hancock fb81f0de02 fix: one more rename (#8562) 2026-04-15 15:38:04 -04:00
Gandalf_Le_Dev 890ad15934 fix(desktop): accept self-signed certs from configured external goosed host (#8400)
Signed-off-by: jh-block <jhugo@block.xyz>
Co-authored-by: Mathis Rocher <mathis.rocher@corp.ovh.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: jh-block <jhugo@block.xyz>
2026-04-15 19:10:37 +00:00
Alex Hancock cff0992aef alexhancock/npm-bumps (#8557) 2026-04-15 15:09:12 -04:00
Jack Amadeo e099754b77 Remove npm publish from release for now (#8558) 2026-04-15 18:13:29 +00:00