Commit Graph

4284 Commits

Author SHA1 Message Date
tulsi bf3f88bf62 fix(goose2): harden home widget storage
Signed-off-by: tulsi <tulsi@block.xyz>
2026-04-29 16:16:59 -07:00
tulsi 0f977ae583 test(goose2): refresh visual redesign expectations
Signed-off-by: tulsi <tulsi@block.xyz>
2026-04-29 16:14:31 -07:00
tulsi 0cd484897c chore(goose2): checkpoint sidebar and composer polish
Signed-off-by: tulsi <tulsi@block.xyz>
2026-04-29 16:07:51 -07:00
tulsi 0f8b4e2897 chore(goose2): checkpoint visual design work
Signed-off-by: tulsi <tulsi@block.xyz>
2026-04-29 15:51:55 -07:00
tulsi 3877cffc52 Polish interactive home widgets
Signed-off-by: tulsi <tulsi@block.xyz>
2026-04-29 15:26:00 -07:00
tulsi af651ac10c Add interactive home canvas
Signed-off-by: tulsi <tulsi@block.xyz>
2026-04-29 14:52:04 -07:00
tulsi 4baa39be57 feat(goose2): Alex redesign — session history + chat pill polish
- Session history search now matches the universal search editorial
  style (transparent, 40px Cash Sans Light, opacity-10 placeholder),
  full-width within the page. Placeholder: "Search session history"
  (en + es).

- Chat composer pill expands on focus only — removed the hover
  trigger that was creating friction (click target moving as the
  user reached for it).

- focus-override added to the chat input and the session-history
  search so the global focus-visible ring rule from globals.css
  doesn't draw a stray border on click-into.

- Both pickers in the chat pill (model + project) now pin
  side="top" explicitly. Both were meant to open upward, but the
  model popover would render below when its content was small
  enough to fit in the gap below the trigger (no auto-flip needed).

- Defensive empty state in the model picker plus on-open inventory
  sync mirroring AgentModelPicker. These do not fully resolve the
  data-flow bug where the global pill shows "No models available"
  while the in-chat picker shows real models — see
  docs/codex/2026-04-29-global-composer-model-picker-empty.md for
  the handoff brief.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 11:31:15 -07:00
tulsi 8bc0af21cd feat(goose2): Alex redesign — tighten agents page
- Card and figure sized down ~20% (w-200→160, h-420→336) for a tighter grid.
- Persona name promoted out of the description paragraph onto its own row
  above the body, so the pill reads as a label rather than an inline prefix.
- Gallery container switches from fixed gap-32 to justify-evenly with a gap-8
  floor — cards redistribute evenly when the sidebar collapses and fall back
  to horizontal scroll when they overflow.
- SkeletonCard updated to match the new dimensions and the split
  name/description layout.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 10:53:06 -07:00
tulsi a9937f0f56 feat(goose2): tint app canvas by active chat's project color
Wires useActiveProjectTint into AppShell, gated by activeView === "chat",
applied as an inline --project-tint CSS variable on the bg-dot-grid
wrapper. The dot-grid utility composes the tint via color-mix() over
the base canvas/dot tokens (commit 57b007686e); non-project and non-
chat views resolve to base values automatically. 240ms cross-fade,
prefers-reduced-motion respected.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 10:42:16 -07:00
tulsi 8b1666f9f7 feat(goose2): add useActiveProjectTint hook
Pure selector: active session → project → color (or null). Route gating
lives at the application point in AppShell, not here. Unit-tested
against four cases: no active session, no project on session, in-
project, deleted project.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 10:42:16 -07:00
tulsi cb9b37297d feat(goose2): compose .bg-dot-grid with --project-tint via color-mix
No behavior change yet — --project-tint is unset everywhere, so both
color-mix() calls resolve to base values (canvas-base, dot-color-base).
Dot weight is intentionally higher than fill weight (12% vs 7%) so dots
remain visible against a tinted fill rather than disappearing into it.
oklch is the mixing color space so perceived tint weight stays
consistent across saturated and cool palette colors. Adds 240ms
cross-fade with prefers-reduced-motion override.

Tinting is wired up by a later commit (the AppShell consumer of
--project-tint).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 10:42:16 -07:00
tulsi f64a1fb4bd refactor(goose2): introduce --canvas-base / --dot-color-base
Adds canonical "-base" names for the canvas and dot-color tokens,
keeping the original --canvas / --dot-color as one-line aliases for
backward-compat. Updates .bg-dot-grid and --color-canvas-alex to read
the new names. No visual change. Prepares for project-tint composition
in a follow-up commit.

The aliases let other readers (committed BottomFade, in-flight refactors
on adjacent branches) keep working untouched. They can be removed in a
follow-up once all readers migrate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 10:42:16 -07:00
tulsi f42901e8ea fix(goose2): align macos titlebar controls
Signed-off-by: tulsi <tulsi@block.xyz>
2026-04-28 16:19:38 -07:00
tulsi 1e05a7e1f9 feat(goose2): add universal search
Signed-off-by: tulsi <tulsi@block.xyz>
2026-04-28 16:09:32 -07:00
tulsi a33bbb4b7a docs(goose2): spec — project-tinted chat canvas
Approved brainstorm. Tints the dot-grid canvas toward the active
chat's project color via color-mix() on --canvas / --dot-color, gated
by activeView === "chat". Subtle (~7% fill / ~12% dots), 240ms
cross-fade, reduced-motion respected. Dark mode deferred.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 15:19:28 -07:00
tulsi 7945b1c50f feat(goose2): Alex redesign — sidebar fully hides on collapse, toggle moves to topbar
Replace the icons-only collapsed rail with a full hide: outer wrapper width animates to 0 while padding stays constant at 12, so the sidebar's top edge never shifts vertically during the transition. Move the canonical toggle into the topbar (immediately after the macOS traffic-light clearance) and drop the now-redundant in-sidebar collapse button along with its onCollapse prop, dead Button/IconLayoutSidebarFilled imports, and corresponding test prop.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 13:55:50 -07:00
tulsi 7180a12bcd feat(goose2): Alex redesign — polish pass (sidebar typography, home/agents assets, Cash Sans Light)
Sidebar nav typography lightens (font-light + tighter px-3 py-2) and the panel gains backdrop-blur with a 3/4 height; TopBar surfaces the chat session title when in chat view. Add Cash Sans Light @font-face via the Regulator CDN self-host pattern. Refresh agents and home pages with new persona images (ralph, scout, solo, tulsi) and home person photos; swap world-cube.png and drop unused figure.png.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 13:19:07 -07:00
tulsi 8b7f7376f5 feat(goose2): Alex redesign — global composer model picker + attachments
Grow the global composer pill into a full chat entry point: model/provider picker, project picker, voice dictation, and file attachments. Thread attachments through pending-first-message so submitting from the global composer carries through to the new session. Bump AppShell file-size cap (780 → 830) to cover the new handoff wiring.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 13:17:40 -07:00
tulsi 49701b6183 feat(goose2): Alex redesign — sessions surface + topbar polish + BottomFade extract
Commit 5 of 5 — final commit. See spec at docs/superpowers/specs/2026-04-23-alex-redesign-design.md.

- SessionCard: surface-less re-skin then revised at visual review
  to subtle fill (`--surface-tile`, `rounded-xl`, `p-4`, hover
  `--surface-install`). Spec §8.1 updated. Title 14px, metadata
  10px, snippet 14px on muted token. Menu trigger uses opacity +
  focus-within so it stays keyboard-tabbable (matches PersonaCard
  pattern from Phase 4).
- SessionHistoryView: removed page header (h1 + subtitle + inline
  Import button); Import action moved to TopBar following the
  Skills/Agents pattern via useSetTopBarActions; the hidden file
  input + handleImportSession stay co-located in this view (TopBar
  button just triggers fileInputRef.current.click()). Grouped date
  headers restyled with divider-above + 10px opacity-25 label
  matching the sidebar Pinned/Recents pattern. max-w-5xl → max-w-7xl.
- BottomFade extracted to src/shared/ui/BottomFade.tsx after the
  third use trigger (Skills + Agents + Sessions). The verbatim
  inline gradient blocks in Skills + Agents replaced with one-line
  imports.
- TopBar height h-12 → h-16 (48 → 64px) for more breathing room
  above the breadcrumb on every page, matching Alex's reference
  spacing.

Branch is now 5 commits ahead of origin/main; redesign complete.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 12:54:23 -07:00
tulsi f069e51603 feat(goose2): Alex redesign — agents page (cards, topbar actions, fade)
Commit 4 of 5. See spec at docs/superpowers/specs/2026-04-23-alex-redesign-design.md.

Scope expansion at visual review (2026-04-27): same pattern as Skills.
AgentsView's inline page header / SearchBar / button row were removed;
"Import" + "New Persona" actions moved to TopBar via the existing
TopBarActionsProvider context. The dashed "Create new" card in
PersonaGallery was removed.

What landed:
- PersonaCard: full body replacement. Tall cutout figure (220px,
  shared single asset across all personas per spec §7.3), 1px rule
  (bg-black/30 — readable mid-grey, matches Alex's reference), name
  pill, description with line-clamp-6 rendering persona.systemPrompt
  (data model has no `description` field; original card already used
  systemPrompt for the body paragraph). Hover-only kebab menu uses
  opacity + focus-within so it stays keyboard-tabbable. Active state
  is bg-black/[0.03] tint instead of ring-1 ring-ring.
- PersonaGallery: passive grid renderer. useFileImportZone lifted
  out; props for dropHandlers + isDragOver. Grid bumped to
  minmax(260px,1fr) with gap-x-12 gap-y-16 for editorial spacing
  matching Alex's Figma (figures sit as islands, not clustered).
  Section wrapper rings up when isDragOver.
- AgentsView: lifted useFileImportZone, pushed Import + New Persona
  actions to TopBar via useSetTopBarActions on mount, removed inline
  header / search / button row, bumped grid container to max-w-7xl,
  added bottom fade gradient (same soft mask + backdrop blur as
  Skills page).
- StatusBar: bg-background/80 → bg-transparent (global fix — the
  white opaque footer fill was visible on every page).
- Spec §7 + plan Tasks 4.2/4.3 updated to capture corrections
  (description→systemPrompt, optionsAria→options, stopPropagation
  preserved, accessibility opacity fix) and the TopBar move scope
  expansion.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 11:56:33 -07:00
tulsi 74f42952c8 feat(goose2): Alex redesign — skills page (cards, topbar actions, soft fade)
Commit 3 of 5. See spec at docs/superpowers/specs/2026-04-23-alex-redesign-design.md.

Two scope adjustments at visual review (2026-04-27):
- Category hero tiles removed entirely. Cropped photo backgrounds read
  as visually chaotic at production fidelity, and categories aren't a
  real feature in goose2 yet. CategoryHeroTile component, 6 photo
  assets, and tile-mask SVG all dropped. Spec §6.4 + plan Tasks 3.1
  and 3.2 marked REMOVED.
- Page-body header, subtitle, SearchBar, and inline toolbar all
  removed from SkillsView. Action buttons (List view, Sort, Import,
  Add New) moved to global TopBar via a new TopBarActionsProvider
  context. Spec §6.5 + plan Task 3.5 revised.

What landed:
- New TopBarActionsContext: views push action JSX on mount and clear
  on unmount; TopBar consumes via useTopBarActions(). AppShell wraps
  the tree with the Provider so subtrees share the same slot.
- Individual skill cards: 260x260, surface-tile bg, rounded-tile, name
  pill cycling pink/olive/blue by index, hover-revealed Install pill
  (decorative — no install flow exists yet), hover-revealed menu.
- New-skill empty-state card always renders first in the grid (pill,
  italic example, arrow button opens CreateSkillDialog).
- Grid container bumped max-w-5xl → max-w-7xl so 4 columns fit when
  the window has space; auto-fill scales further on wider windows.
- Bottom fade gradient: linear-gradient with mask-image so the blur
  itself ramps in (avoids the cliff edge of a uniform backdrop-filter).
  Bumped h-48 → h-64 + blur 1.5px → 3px for soft progression near
  the floating composer pill.
- i18n keys for the new-skill empty state copy in en + es. Decorative
  Install / Sort / List view buttons annotated as i18n-check-ignore
  with placeholder reasoning.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 11:33:30 -07:00
tulsi bb8b4af812 feat(goose2): Alex redesign — chat bounded card + context panel inside card + home placeholders
Commit 2 of 5. See spec at docs/superpowers/specs/2026-04-23-alex-redesign-design.md.

- ChatView wraps conversation+composer in a bounded white card on canvas
  with 16px radius (extracted from Figma frame 227:859 → node 269:6771)
- ChatContextPanel now lives inside the chat card (scope expansion from
  spec §5.3): card becomes flex-row containing [conversation column |
  panel column]; panel's own surface stripped, replaced with a left-
  border divider; width animation + toggle position preserved
- ChatInput outer container surface-less (sits on card's own surface);
  placeholder updated via en + es i18n to "Type / for skill and @ to
  mention"
- HomeView replaces HomeScreen on activeView === "home" with a static
  decorative composition (world cube, single figure × 3 positions per
  spec §5.4 single-figure pattern, clock, sticky note); HomeScreen
  retained for chat-fallback path; ensureHomeSession wiring intact
- Spec §5.3 + plan Task 2.5 updated to reflect panel-inside-card
  decision per "spec must match implementation at commit boundary"
  constraint

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 11:05:35 -07:00
tulsi da9bc5c2ad feat(goose2): Alex redesign — foundation (tokens, shell, global composer)
Commit 1 of a 5-commit visual refactor for Alex's Q2 2026 review.
Spec: ui/goose2/docs/superpowers/specs/2026-04-23-alex-redesign-design.md
Plan: ui/goose2/docs/superpowers/plans/2026-04-23-alex-redesign.md

Foundation tokens (globals.css):
- Cash Sans Regular 400 + Italic, self-hosted from Block CDN
- Canvas (#dedede) + dot grid (24px spacing, 1px dots)
- Translucent surfaces (sidebar, composer pill); no shadows
- Text colors (#242424 default, #7f7f7f muted, #19191a title) and
  typography scale 10/14/16/24, single-weight Cash Sans
- Radii: 16 chrome, 40 composer, 20 tile
- color-scheme: light lock (dark mode deferred)

Shell:
- AppShell: bg-dot-grid root, GlobalComposerPill conditionally mounted
- TopBar: rewrite as breadcrumb title + Settings text pill, transparent
- Sidebar: token re-skin, IA preserved; section labels de-uppercased
  (10px opacity-25 sentence-case, dividers above)

Global composer pill:
- New floating pill (bottom-right), single 'Start a conversation'
  placeholder, native input chrome killed (border, focus ring)
- Auto-submit via pendingFirstMessage slice on chatStore: AppShell
  stages typed text, useChatSessionController consumes on session-init
  and calls sendMessage. One-shot delivery via consume action.
- chatStore.ts file-size exception bumped 520->560 to accommodate the
  slice; slice-extraction pass deferred to a follow-up.

Assets (12 files in src/assets/):
- Home: world-cube.png, figure.png, clock.svg, sticky-note.svg
  (Alex's Landing frame uses one figure asset reused at 3 positions)
- Skills: 6 category photos + tile-mask.svg
  (Research uses CSS gradient per asset-export fallback pattern, §10.1)
- Agents: figure.png (one shared cutout, identical across personas)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 10:37:40 -07:00
Matt Toohey 18e0668aaf feat(goose2): add cross-worktree kill support with running/kill-all recipes (#8768)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-23 15:48:01 +00:00
Alex Hancock 0b961f14d5 tui: do not build goose if connecting to a server (#8779) 2026-04-23 11:52:09 -04:00
Matt Van Horn 5f3c63ae41 feat(cli): add --check flag to goose info for provider testing (#8289)
Signed-off-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-23 13:34:06 +00:00
Matt Toohey 18127f1ff0 fix: Allow starting a new session in a project after creating one (#8766)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-23 12:08:23 +00:00
github-actions[bot] 3fbe01d3b6 chore(release): bump version to 1.32.0 (minor) (#8713)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Lifei Zhou <lifei@squareup.com>
2026-04-23 01:55:05 +00:00
Taylor Ho b8c3b83c43 chore(goose2): full width assistant message (#8760)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
2026-04-23 01:40:09 +00:00
Treebird 092a40c44b fix(goose-server): cache TLS cert to disk to avoid slow startup on first launch (#8174)
Signed-off-by: Treebird <treebird@treebird.dev>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:16:02 +00:00
Teo 78eae06d3d feat: add Exa AI-powered search tool (#8487)
Signed-off-by: Teo Gonzalez Collazo <teodorolgonzalez5@gmail.com>
2026-04-23 00:00:18 +00:00
Matt Toohey 4928ce55e2 fix: preprompt would show after loading session (#8744)
Signed-off-by: Matt Toohey <contact@matttoohey.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-22 23:06:27 +00:00
Alex Hancock e7e50320a1 commands to acp+ migration: extensions management (#8733) 2026-04-22 15:23:02 -04:00
Abhijay Jain ee46794b18 feat: desktop notification when goose finishes a task (#8647)
Signed-off-by: Abhijay Jain <Abhijay007j@gmail.com>
2026-04-22 17:56:49 +00:00
morgmart 15cfd127ca harden code review skill for async state and default-resolution bugs (#8740)
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
2026-04-22 16:04:17 +00:00
Douwe Osinga 04514c6d20 Feature/at agent mention (#8571)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-04-22 14:17:43 +00:00
Lifei Zhou 2bbf4dd229 fix: removed hardcoded dependency of goose-acp-macro (#8753) 2026-04-22 14:08:47 +00:00
Matt Toohey 37bd4e7923 perf: split agent setup into staged phases to reduce startup blocking (#8746)
Signed-off-by: Matt Toohey <contact@matttoohey.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-22 13:50:47 +00:00
Lucas Alvares Gomes bdf5c43f3d Add /skills command (#8600)
Signed-off-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
Co-authored-by: Lifei Zhou <lifei@squareup.com>
2026-04-22 12:36:39 +00:00
Lucas Alvares Gomes 501dde5570 Replace deprecated Claude ACP package links (#8625)
Signed-off-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
2026-04-22 12:35:12 +00:00
Lifei Zhou 1d0f3785c3 removed the specific code owner for documentation change (#8749) 2026-04-22 11:02:38 +00:00
g.sunilkumar 03f4bfaa99 fix(providers): handle missing delta field in streaming chunks (#8700)
Signed-off-by: sunilkumarvalmiki <g.sunilkumarvalmiki@gmail.com>
Co-authored-by: Lifei Zhou <lifei@squareup.com>
2026-04-22 09:06:45 +00:00
이대희 d18bb6e512 refactor(providers): extract http_status module and rename handle_status_openai_compat (#8620)
Signed-off-by: DaeHee Lee <lee111dae11@proton.me>
2026-04-22 08:33:26 +00:00
Sam Osborn 015b0d92d3 fix(providers/openai): accept streaming chunks with both reasoning fields (#8715)
Signed-off-by: Sam Osborn <samosborn88@gmail.com>
2026-04-22 07:35:48 +00:00
Matt Toohey c8b339e559 feat: associate threads with projects (#8745)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-22 07:08:55 +00:00
Lifei Zhou a7ccdd780d upgrade goose sdk and tui to be compatible with the latest agentclientprotocol/sdk package (#8667) 2026-04-22 02:25:13 +00:00
Taylor Ho 469c74d8bc feat: extend goose2 context window ux with auto-compaction (#8721)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
2026-04-22 01:10:22 +00:00
tulsi 7e2fb3ee5c improve goose2 agent management flows (#8737)
Signed-off-by: tulsi <tulsi@block.xyz>
2026-04-22 00:54:48 +00:00
Alex Hancock 23b3b3dcac alexhancock/tui-improvements (#8736) 2026-04-22 00:44:22 +00:00
Bradley Axen ab0c40d26a fix: add strict:false to Responses API tools and gpt-5.4 to known models (#8636)
Signed-off-by: Bradley Axen <baxen@squareup.com>
2026-04-21 22:32:24 +00:00