Skip to content

refactor(ui,desktop,web): extract shared explorer tree utilities to @…#100

Merged
andrewmelchor merged 2 commits intomainfrom
refactor/shared-explorer-module
Mar 1, 2026
Merged

refactor(ui,desktop,web): extract shared explorer tree utilities to @…#100
andrewmelchor merged 2 commits intomainfrom
refactor/shared-explorer-module

Conversation

@andrewmelchor
Copy link
Copy Markdown
Member

Summary

Extracts duplicate explorer tree utilities into a shared @t-req/ui/explorer module to eliminate code duplication between the desktop and web packages. Consolidates 386 lines of duplicated code into 41 lines of shared exports, centralizing tree building, flattening, and file utilities for improved maintainability.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Refactoring
  • Chore

…t-req/ui

Consolidate duplicate explorer tree logic from desktop and web packages
into a new shared @t-req/ui/explorer submodule. This eliminates code
duplication and centralizes tree building, flattening, and file utilities.
- Create packages/ui/src/explorer/ with shared types and utilities
- Refactor desktop explorer to re-export from shared module
- Refactor web workspace store to use shared explorer utilities
- Add ./explorer export to packages/ui/package.json
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d7642363d6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Mar 1, 2026

Greptile Summary

Consolidates duplicate explorer tree logic from desktop and web packages into a shared @t-req/ui/explorer module, reducing 386 lines of duplicated code to 41 lines of re-exports. The refactoring successfully centralizes tree building, flattening, and file utilities with proper TypeScript exports.

  • Desktop package: Now re-exports all explorer utilities from the shared module
  • Web package: Updated to use shared buildExplorerTree and flattenExplorerTree
  • New shared module: Created packages/ui/src/explorer/ with complete explorer functionality
  • Behavior change: Web workspace file sorting now treats all file types equally (alphabetically after directories) instead of prioritizing .http/.rest files before scripts. Verify this is acceptable for the web UI.

Confidence Score: 4/5

  • Safe refactoring with one behavior change in web file sorting to verify
  • Well-executed code consolidation with proper module exports and type safety. Desktop package correctly re-exports from shared module with existing tests. Minor concern is the file sorting behavior change in web package where .http files are no longer prioritized over script files.
  • packages/web/src/stores/workspace.ts - verify the new file sorting behavior meets UX expectations

Important Files Changed

Filename Overview
packages/web/src/stores/workspace.ts Refactored to use shared explorer utilities; changes file sorting behavior (http files no longer prioritized)
packages/ui/src/explorer/tree.ts New shared tree utilities moved from desktop; inlines normalizeRelativePath utility
packages/ui/src/explorer/index.ts New barrel export file for shared explorer utilities
packages/ui/package.json Added ./explorer export path for new shared utilities

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    subgraph Before["Before Refactoring"]
        D1["desktop/explorer/tree.ts<br/>172 lines"]
        D2["desktop/explorer/types.ts<br/>23 lines"]
        D3["desktop/explorer/workspace-files.ts<br/>19 lines"]
        D4["desktop/explorer/utils/request-workspace.ts<br/>41 lines"]
        W1["web/stores/workspace.ts<br/>buildTree + sortNodes<br/>~150 lines duplicated"]
    end
    
    subgraph After["After Refactoring"]
        UI["@t-req/ui/explorer/*<br/>Shared Module"]
        UI1["ui/explorer/tree.ts<br/>175 lines"]
        UI2["ui/explorer/types.ts<br/>20 lines"]
        UI3["ui/explorer/workspace-files.ts<br/>19 lines"]
        UI4["ui/explorer/request-workspace.ts<br/>41 lines"]
        UI5["ui/explorer/index.ts<br/>22 lines barrel exports"]
        
        DN["desktop/explorer/*<br/>Re-exports (41 lines total)"]
        WN["web/stores/workspace.ts<br/>Uses shared utilities"]
        
        UI --> UI1 & UI2 & UI3 & UI4 & UI5
        UI1 & UI2 & UI3 & UI4 & UI5 --> DN
        UI1 & UI2 --> WN
    end
    
    D1 -.->|moved| UI1
    D2 -.->|moved| UI2
    D3 -.->|moved| UI3
    D4 -.->|moved| UI4
    W1 -.->|refactored| WN
    
    style UI fill:#e1f5e1
    style DN fill:#fff4e1
    style WN fill:#fff4e1
Loading

Last reviewed commit: d764236

Copy link
Copy Markdown

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

11 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

@andrewmelchor andrewmelchor merged commit b233a29 into main Mar 1, 2026
1 check passed
@andrewmelchor andrewmelchor deleted the refactor/shared-explorer-module branch March 1, 2026 19:26
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.

1 participant