Skip to content

Conversation

@jamadeo
Copy link
Collaborator

@jamadeo jamadeo commented Oct 1, 2025

Session history at the API level is quite fast now thanks to the SQLite switch. But the client still renders thousands of session history tiles somewhat slowly. This speeds things up by adding a lazy infinite scroll. If we want to speed even more, we could actually paginate at the API level, but we'd have to implement some other solution for search, or fetch them all when you cmd+F.

@jamadeo jamadeo requested a review from zanesq October 1, 2025 15:25
Copy link
Collaborator

@zanesq zanesq left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Tested locally with a lot of sessions and find as well.

I think this is a quick win to improve perceived performance and memory usage compared to rendering everything immediately but eventually we should use a virtualized approach where items are not actually loaded in the dom until they are needed.

Also when we do that we can share the infinite loading and search with the extensions view but that is a future task.

@jamadeo jamadeo merged commit 5fa1efb into main Oct 1, 2025
11 checks passed
@jamadeo jamadeo deleted the jackamadeo/faster-session-history branch October 1, 2025 18:14
@jamadeo
Copy link
Collaborator Author

jamadeo commented Oct 1, 2025

Yeah, something virtualized is also a good option. I imagine though with session history you either pick something very close to the top, or you search, and scrolling a lot is probably uncommon.

@zanesq
Copy link
Collaborator

zanesq commented Oct 1, 2025

True! The only issue is it can take up a lot of memory with long session history lists since its in the dom without virtualization

katzdave added a commit that referenced this pull request Oct 1, 2025
* 'main' of github.com:block/goose:
  fix: session timestamps (#4913)
  feat: lazy infinite scroller for session history view (#4922)
  chore: properly identify when to try oauth (#4918)
  Make token counter safer (#4924)
  Rename Hacktoberfest Blog to Hacktoberfest Content (#4926)
  Include Session ID appropriately in UI (#4901)
zanesq added a commit that referenced this pull request Oct 1, 2025
…-deeplink

* 'main' of github.com:block/goose: (57 commits)
  Don't set agent props twice (#4872)
  fix: conversation fixer merges assistant text blocks and drops empty text messages (#4898)
  Batch fetch remaining issues for documentation updates
  fix: session timestamps (#4913)
  feat: lazy infinite scroller for session history view (#4922)
  chore: properly identify when to try oauth (#4918)
  Make token counter safer (#4924)
  Rename Hacktoberfest Blog to Hacktoberfest Content (#4926)
  Include Session ID appropriately in UI (#4901)
  fix mcp integration test flakiness (#4871)
  Add type field to empty schemas for anthropic (#4911)
  docs: remove subagents from experimental (#4907)
  CLI: dont show logs to user (#4902)
  patching the security scanner to redact environment variables (#4908)
  rmcp upgrade (#4792)
  feat: Use the screen, goose (#4905)
  added claude-sonnet-4-5 (#4906)
  Tiny: fix github casing  (#4903)
  remove anyOf from create_task tool (#4897)
  chore(deps): bump tracing-subscriber from 0.3.19 to 0.3.20 (#4442)
  ...
zanesq added a commit that referenced this pull request Oct 1, 2025
* 'main' of github.com:block/goose:
  Don't set agent props twice (#4872)
  fix: conversation fixer merges assistant text blocks and drops empty text messages (#4898)
  Batch fetch remaining issues for documentation updates
  fix: session timestamps (#4913)
  feat: lazy infinite scroller for session history view (#4922)
  chore: properly identify when to try oauth (#4918)
  Make token counter safer (#4924)
  Rename Hacktoberfest Blog to Hacktoberfest Content (#4926)
  Include Session ID appropriately in UI (#4901)
  fix mcp integration test flakiness (#4871)
  Add type field to empty schemas for anthropic (#4911)
  docs: remove subagents from experimental (#4907)
  CLI: dont show logs to user (#4902)
  patching the security scanner to redact environment variables (#4908)
  rmcp upgrade (#4792)
  feat: Use the screen, goose (#4905)

# Conflicts:
#	ui/desktop/src/components/ui/scroll-area.tsx
michaelneale added a commit that referenced this pull request Oct 2, 2025
* main:
  Fix auto scroll to bottom during chat (#4923)
  Fix Typo, Add Description to Hacktoberfest Content Issue Template (#4931)
  Don't set agent props twice (#4872)
  fix: conversation fixer merges assistant text blocks and drops empty text messages (#4898)
  Batch fetch remaining issues for documentation updates
  fix: session timestamps (#4913)
  feat: lazy infinite scroller for session history view (#4922)
  chore: properly identify when to try oauth (#4918)
  Make token counter safer (#4924)
  Rename Hacktoberfest Blog to Hacktoberfest Content (#4926)
  Include Session ID appropriately in UI (#4901)
  fix mcp integration test flakiness (#4871)
michaelneale added a commit that referenced this pull request Oct 2, 2025
* main: (44 commits)
  Add PR template (#4934)
  Using --resume with --name should still accept session IDs (#4937)
  Fix auto scroll to bottom during chat (#4923)
  Fix Typo, Add Description to Hacktoberfest Content Issue Template (#4931)
  Don't set agent props twice (#4872)
  fix: conversation fixer merges assistant text blocks and drops empty text messages (#4898)
  Batch fetch remaining issues for documentation updates
  fix: session timestamps (#4913)
  feat: lazy infinite scroller for session history view (#4922)
  chore: properly identify when to try oauth (#4918)
  Make token counter safer (#4924)
  Rename Hacktoberfest Blog to Hacktoberfest Content (#4926)
  Include Session ID appropriately in UI (#4901)
  fix mcp integration test flakiness (#4871)
  Add type field to empty schemas for anthropic (#4911)
  docs: remove subagents from experimental (#4907)
  CLI: dont show logs to user (#4902)
  patching the security scanner to redact environment variables (#4908)
  rmcp upgrade (#4792)
  feat: Use the screen, goose (#4905)
  ...
zanesq added a commit that referenced this pull request Oct 2, 2025
…-unification

* 'main' of github.com:block/goose: (24 commits)
  Fix auto scroll to bottom during chat (#4923)
  Fix Typo, Add Description to Hacktoberfest Content Issue Template (#4931)
  Don't set agent props twice (#4872)
  fix: conversation fixer merges assistant text blocks and drops empty text messages (#4898)
  Batch fetch remaining issues for documentation updates
  fix: session timestamps (#4913)
  feat: lazy infinite scroller for session history view (#4922)
  chore: properly identify when to try oauth (#4918)
  Make token counter safer (#4924)
  Rename Hacktoberfest Blog to Hacktoberfest Content (#4926)
  Include Session ID appropriately in UI (#4901)
  fix mcp integration test flakiness (#4871)
  Add type field to empty schemas for anthropic (#4911)
  docs: remove subagents from experimental (#4907)
  CLI: dont show logs to user (#4902)
  patching the security scanner to redact environment variables (#4908)
  rmcp upgrade (#4792)
  feat: Use the screen, goose (#4905)
  added claude-sonnet-4-5 (#4906)
  Tiny: fix github casing  (#4903)
  ...

# Conflicts:
#	ui/desktop/src/components/BaseChat.tsx
wpfleger96 added a commit to wpfleger96/goose that referenced this pull request Oct 2, 2025
* main: (30 commits)
  feat(nightly): build nightlies from main shas (block#4888)
  Add missing library for fedora/rhel/centos docs (block#4819)
  feat(process): Add GOVERNANCE and MAINTAINERS documents (block#4962)
  Pause test finder, have it run cargo fmt (block#4958)
  Disable the issue comment trigger on pr-comment-bundle (block#4961)
  fix(providers): update Claude Sonnet 4 model identifier (block#4884)
  fix redirect to extensions page after deeplink install and show toast with success message (block#4863)
  Remove wait-for-ready log (block#4956)
  docs: add a new goose tip (block#4940)
  Add PR template (block#4934)
  Using --resume with --name should still accept session IDs (block#4937)
  Fix auto scroll to bottom during chat (block#4923)
  Fix Typo, Add Description to Hacktoberfest Content Issue Template (block#4931)
  Don't set agent props twice (block#4872)
  fix: conversation fixer merges assistant text blocks and drops empty text messages (block#4898)
  Batch fetch remaining issues for documentation updates
  fix: session timestamps (block#4913)
  feat: lazy infinite scroller for session history view (block#4922)
  chore: properly identify when to try oauth (block#4918)
  Make token counter safer (block#4924)
  ...
michaelneale added a commit that referenced this pull request Oct 3, 2025
* main: (24 commits)
  Lifei/create save recipe to file (#4895)
  feat(nightly): build nightlies from main shas (#4888)
  Add missing library for fedora/rhel/centos docs (#4819)
  feat(process): Add GOVERNANCE and MAINTAINERS documents (#4962)
  Pause test finder, have it run cargo fmt (#4958)
  Disable the issue comment trigger on pr-comment-bundle (#4961)
  fix(providers): update Claude Sonnet 4 model identifier (#4884)
  fix redirect to extensions page after deeplink install and show toast with success message (#4863)
  Remove wait-for-ready log (#4956)
  docs: add a new goose tip (#4940)
  Add PR template (#4934)
  Using --resume with --name should still accept session IDs (#4937)
  Fix auto scroll to bottom during chat (#4923)
  Fix Typo, Add Description to Hacktoberfest Content Issue Template (#4931)
  Don't set agent props twice (#4872)
  fix: conversation fixer merges assistant text blocks and drops empty text messages (#4898)
  Batch fetch remaining issues for documentation updates
  fix: session timestamps (#4913)
  feat: lazy infinite scroller for session history view (#4922)
  chore: properly identify when to try oauth (#4918)
  ...
HikaruEgashira pushed a commit to HikaruEgashira/goose that referenced this pull request Oct 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants