feat(app): add workspace browser bootstrap#4
Merged
andrewmelchor merged 2 commits intomainfrom Jan 21, 2026
Merged
Conversation
* Add treq tui command and OpenTUI/Solid bootstrap runtime * Implement workspace SDK + store-derived file tree (expand/collapse, selection, scroll-to-selection) * Add theme + header/footer layout * Add request panel with per-file loading + stable keyed rendering (prevents stale/stacked rows) * Introduce context providers (SDKProvider, StoreProvider, ExitProvider) and graceful exit handling * Fix app build pipeline: use OpenTUI Solid Bun plugin; default to single-platform builds for dev/test; keep full-matrix build for publish (build:all)
Member
Author
|
@greptile |
Greptile SummaryThis PR implements a comprehensive TUI (Terminal User Interface) for the t-req workspace browser using OpenTUI and SolidJS. The implementation introduces a new Key Changes:
Architecture Highlights:
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant CLI as CLI (tui.ts)
participant Entry as TUI Entry (index.tsx)
participant SDK as SDK Client
participant Store as Reactive Store
participant App as App Component
participant Tree as FileTree Component
participant Requests as RequestList Component
participant Server as HTTP Server
CLI->>Entry: startTui(config)
Entry->>SDK: createSDK(serverUrl, token)
Entry->>Store: createStore()
Note over Entry: Setup signal handlers (SIGINT, SIGTERM)
Entry->>Server: sdk.listWorkspaceFiles()
activate Server
Note over Entry,App: Render immediately in 'connecting' state
Entry->>App: render() with providers
App->>Tree: render with empty state
App->>Requests: render placeholder
Server-->>Entry: {files, workspaceRoot}
deactivate Server
Entry->>Store: setWorkspaceRoot(root)
Entry->>Store: setFiles(files)
Entry->>Store: setConnectionStatus('connected')
Note over Store: Build tree structure from files
Store->>Store: buildTree(files)
Store->>Store: flattenTree(tree, expandedDirs)
Note over App,Requests: Reactive updates trigger re-render
App->>Tree: render with file tree
User->>App: Press 'j' or 'down'
App->>Store: selectNext()
Store-->>App: selectedNode updated
Note over App: Debounce 50ms
App->>Server: sdk.listWorkspaceRequests(path)
activate Server
Server-->>App: {requests}
deactivate Server
App->>Store: setRequestsForPath(path, requests)
Store-->>Requests: selectedFileRequests updated
Requests->>Requests: render requests
User->>App: Press Ctrl+P
App->>App: dialog.replace(CommandDialog)
User->>App: Press Ctrl+C
App->>Entry: exit()
Entry->>Entry: renderer.destroy()
Entry->>Entry: process.exit(0)
|
Greptile's behavior is changing!From now on, if a review finishes with no comments, we will not post an additional "statistics" comment to confirm that our review found nothing to comment on. However, you can confirm that we reviewed your changes in the status check section. This feature can be toggled off in your Code Review Settings by deselecting "Create a status check for each PR". |
* Dialog context with stack-based modal management * Command palette (ctrl+p) with fuzzy search using fuzzysort * Debug console (ctrl+`) for viewing application logs * Keybind context for configurable keyboard shortcuts * Log context for structured application logging * Debounced file loading (50ms) during rapid navigation * Improved file tree scroll behavior * Increased render FPS from 30 to 60 * Simplified footer with status display
Deploying docs with
|
| Latest commit: |
97dfb41
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://c6724da8.docs-6vq.pages.dev |
| Branch Preview URL: | https://feat-app--tui-bootstrap-brow.docs-6vq.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Type of Change
How Has This Been Tested?
Checklist