Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: wavetermdev/waveterm
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.14.2-beta.0
Choose a base ref
...
head repository: wavetermdev/waveterm
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.14.2-beta.1
Choose a head ref
  • 18 commits
  • 101 files changed
  • 5 contributors

Commits on Mar 6, 2026

  1. Configuration menu
    Copy the full SHA
    c6f6124 View commit details
    Browse the repository at this point in the history

Commits on Mar 7, 2026

  1. Configuration menu
    Copy the full SHA
    76f78f0 View commit details
    Browse the repository at this point in the history
  2. Remove dead “move block to new window” path and dependent unused APIs (

    …#3002)
    
    `WindowService.MoveBlockToNewWindow` appears to be unreferenced, and its
    supporting path had become isolated. This change removes that dead RPC
    surface and the backend/eventbus helpers that existed only for that
    flow.
    
    - **Window service cleanup (backend RPC)**
    - Removed `MoveBlockToNewWindow_Meta` and `MoveBlockToNewWindow` from
    `pkg/service/windowservice/windowservice.go`.
      - Dropped now-unused imports tied to that method (`log`, `eventbus`).
    
    - **Store cleanup**
      - Removed `MoveBlockToTab` from `pkg/wstore/wstore.go`.
      - Removed now-unused `utilfn` import from the same file.
    
    - **Eventbus cleanup**
      - Removed unused event constant `WSEvent_ElectronNewWindow`.
    - Removed `getWindowWatchesForWindowId` and `BusyWaitForWindowId`, which
    were only used by the deleted move-to-new-window path.
      - Removed now-unused `time` import.
    
    - **Generated frontend service surface**
    - Regenerated service bindings and removed
    `WindowServiceType.MoveBlockToNewWindow(...)` from
    `frontend/app/store/services.ts`.
    
    Example of removed RPC surface:
    ```ts
    // removed from frontend/app/store/services.ts
    MoveBlockToNewWindow(currentTabId: string, blockId: string): Promise<void> {
        return WOS.callBackendService("window", "MoveBlockToNewWindow", Array.from(arguments))
    }
    ```
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    ✨ Let Copilot coding agent [set things up for
    you](https://github.com/wavetermdev/waveterm/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
    — coding agent works faster and does higher quality work when set up for
    your repo.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
    Copilot and sawka authored Mar 7, 2026
    Configuration menu
    Copy the full SHA
    3f4484a View commit details
    Browse the repository at this point in the history
  3. preview updates (mock electron api, wos checks) (#2986)

    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
    3 people authored Mar 7, 2026
    Configuration menu
    Copy the full SHA
    7ef0bcd View commit details
    Browse the repository at this point in the history
  4. Update aiusechat read_dir tests for typed entry output (#3007)

    `pkg/aiusechat/tools_readdir_test.go` was still asserting the old
    `entries` payload shape after `read_dir` moved to returning typed
    directory entries. This caused the `pkg/aiusechat` test failures even
    though the tool behavior itself was already correct.
    
    - **Align test expectations with current callback output**
    - Update `TestReadDirCallback` to treat `entries` as
    `[]fileutil.DirEntryOut`
    - Assert directory/file classification via the `Dir` field instead of
    map lookups
    
    - **Fix truncation/sorting coverage**
    - Update `TestReadDirSortBeforeTruncate` to validate the typed slice
    returned by `readDirCallback`
    - Preserve the existing intent of the test: directories should still be
    sorted ahead of files before truncation
    
    - **Keep scope limited to stale tests**
      - No changes to `read_dir` implementation or output contract
      - Only the broken test assumptions were corrected
    
    ```go
    entries, ok := resultMap["entries"].([]fileutil.DirEntryOut)
    if !ok {
        t.Fatalf("entries is not a slice of DirEntryOut")
    }
    
    for _, entry := range entries {
        if entry.Dir {
            // directory assertions
        }
    }
    ```
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    ✨ Let Copilot coding agent [set things up for
    you](https://github.com/wavetermdev/waveterm/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
    — coding agent works faster and does higher quality work when set up for
    your repo.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
    Copilot and sawka authored Mar 7, 2026
    Configuration menu
    Copy the full SHA
    56c1829 View commit details
    Browse the repository at this point in the history
  5. Add Release Notes entry to the settings menu (#3005)

    This adds a **Release Notes** action to `SettingsFloatingWindow` in the
    requested position: after **Secrets** and before **Help**. It also wires
    that action to open the existing `onboarding-upgrade-patch.tsx` UI as a
    standalone modal, so release notes remain accessible even when automatic
    upgrade onboarding would not render for up-to-date clients.
    
    - **Settings menu**
    - Adds a new **Release Notes** item to
    `frontend/app/workspace/widgets.tsx`
      - Places it between **Secrets** and **Help**
    - Uses the existing modal system rather than creating a new view/block
    path
    
    - **Release notes launch path**
      - Registers `UpgradeOnboardingPatch` in the modal registry
    - Opens it from the settings menu via
    `modalsModel.pushModal("UpgradeOnboardingPatch", { isReleaseNotes: true
    })`
    
    - **Standalone modal behavior**
    - Extends `UpgradeOnboardingPatch` with a lightweight `isReleaseNotes`
    mode
    - In release-notes mode, closing the modal pops the stacked modal
    instead of toggling `upgradeOnboardingOpen`
    - Preserves the existing automatic upgrade-onboarding flow and version
    metadata update behavior for the original path
    
    ```tsx
    {
        icon: "book-open",
        label: "Release Notes",
        onClick: () => {
            modalsModel.pushModal("UpgradeOnboardingPatch", { isReleaseNotes: true });
            onClose();
        },
    }
    ```
    
    - **<screenshot>**
      - Release notes modal content:
    ![Release Notes
    modal](https://github.com/user-attachments/assets/914041a0-1248-4d1a-8eed-125713f7b067)
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    ✨ Let Copilot coding agent [set things up for
    you](https://github.com/wavetermdev/waveterm/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
    — coding agent works faster and does higher quality work when set up for
    your repo.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
    Copilot and sawka authored Mar 7, 2026
    Configuration menu
    Copy the full SHA
    46593b9 View commit details
    Browse the repository at this point in the history
  6. Fix connparse handling for scheme-less //... WSH shorthand URIs (#3006

    )
    
    `pkg/remote/connparse` was failing on shorthand WSH inputs that omit the
    `wsh://` scheme, including remote hosts, WSL targets, and Windows local
    paths. The parser was splitting on `://` too early and misclassifying
    leading `//` inputs before WSH shorthand handling ran.
    
    - **What changed**
    - Detect scheme-less WSH shorthand up front with `strings.HasPrefix(uri,
    "//")`
    - Route those inputs through the existing WSH path parsing flow instead
    of the generic `://` split path
    - Reuse the same shorthand flag when deciding whether to parse as
    remote/local WSH vs current-path shorthand
    
    - **Behavioral impact**
    - `//conn/path/to/file` now parses as host `conn` with path
    `path/to/file`
    - `//wsl://Ubuntu/path/to/file` now preserves the WSL host and absolute
    path shape
    - `//local/C:\path\to\file` now parses as local Windows shorthand
    instead of being treated as a current-path string
    
    - **Scope**
      - Keeps the existing test expectations intact
      - Limits the change to `pkg/remote/connparse/connparse.go`
    
    ```go
    isWshShorthand := strings.HasPrefix(uri, "//")
    
    if isWshShorthand {
        rest = strings.TrimPrefix(uri, "//")
    } else if len(split) > 1 {
        scheme = split[0]
        rest = strings.TrimPrefix(split[1], "//")
    }
    ```
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    💡 You can make Copilot smarter by setting up custom instructions,
    customizing its development environment and configuring Model Context
    Protocol (MCP) servers. Learn more [Copilot coding agent
    tips](https://gh.io/copilot-coding-agent-tips) in the docs.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
    Co-authored-by: sawka <mike@commandline.dev>
    3 people authored Mar 7, 2026
    Configuration menu
    Copy the full SHA
    6871998 View commit details
    Browse the repository at this point in the history
  7. create a FE rpc mock (#3014)

    sawka authored Mar 7, 2026
    Configuration menu
    Copy the full SHA
    71f7e98 View commit details
    Browse the repository at this point in the history

Commits on Mar 9, 2026

  1. Configuration menu
    Copy the full SHA
    e41aabf View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e6e559c View commit details
    Browse the repository at this point in the history
  3. Remove invalid forwardRef from preview directory table row (#3018)

    Wave was emitting React’s `forwardRef render functions accept exactly
    two parameters` warning on startup with no useful stack trace. The
    warning came from the preview directory row component being wrapped in
    `React.forwardRef` even though it neither accepted nor used a forwarded
    ref.
    
    - **Root cause**
    - `frontend/app/view/preview/preview-directory.tsx` defined `TableRow`
    with `React.forwardRef(...)`, but the render function was effectively a
    plain props-only component.
    
    - **Change**
      - Removed the unnecessary `forwardRef` wrapper from `TableRow`.
    - Kept the component behavior unchanged; it still uses its internal drag
    ref wiring for DnD.
    
    - **Impact**
      - Eliminates the startup warning.
    - Aligns the component definition with its actual usage: callers render
    `TableRow` as a normal component and do not pass refs.
    
    ```tsx
    // before
    const TableRow = React.forwardRef(function ({ row, idx, ...props }: TableRowProps) {
        return <div ref={dragRef}>...</div>;
    });
    
    // after
    function TableRow({ row, idx, ...props }: TableRowProps) {
        return <div ref={dragRef}>...</div>;
    }
    ```
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    ✨ Let Copilot coding agent [set things up for
    you](https://github.com/wavetermdev/waveterm/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
    — coding agent works faster and does higher quality work when set up for
    your repo.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
    Copilot and sawka authored Mar 9, 2026
    Configuration menu
    Copy the full SHA
    39b68fb View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    1aee6e2 View commit details
    Browse the repository at this point in the history

Commits on Mar 10, 2026

  1. Configuration menu
    Copy the full SHA
    f5480cb View commit details
    Browse the repository at this point in the history
  2. Expose platform metadata on WaveEnv and preview mocks (#3021)

    WaveEnv did not surface platform information, so platform-aware behavior
    could not be added through the shared environment contract. This updates
    the contract, production implementation, and preview mock to carry
    platform state without wiring it into any consumers yet.
    
    - **WaveEnv contract**
      - Add `platform: NodeJS.Platform`
      - Add `isWindows()` and `isMacOS()` helpers
    
    - **Production implementation**
    - Populate `platform` from `PLATFORM` in `frontend/util/platformutil.ts`
    - Forward `isWindows` / `isMacOS` from the same utility into
    `makeWaveEnvImpl()`
    
    - **Preview mock**
      - Add optional `platform` override to `MockEnv`
      - Default mock platform to macOS
      - Expose `platform`, `isWindows()`, and `isMacOS()` on the mock env
      - Preserve platform overrides through `applyMockEnvOverrides()`
    
    Example:
    
    ```ts
    const env = useWaveEnv();
    
    env.platform;      // "darwin" | "win32" | ...
    env.isMacOS();     // boolean
    env.isWindows();   // boolean
    ```
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    ✨ Let Copilot coding agent [set things up for
    you](https://github.com/wavetermdev/waveterm/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
    — coding agent works faster and does higher quality work when set up for
    your repo.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
    Co-authored-by: sawka <mike@commandline.dev>
    3 people authored Mar 10, 2026
    Configuration menu
    Copy the full SHA
    e087a4c View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    7119970 View commit details
    Browse the repository at this point in the history
  4. fix: search bar clipboard and focus improvements (#3025)

    Two small fixes to the in-app search feature:
    - **Skip copy-on-select during search navigation** — when iterating
    through
    search results in the terminal, the clipboard kept getting overwritten
    with
      the matched text on every step. This was annoying on its own, but also
      polluted paste history managers. The root cause was
    that xterm.js updates the terminal selection programmatically to
    highlight
    each match, which triggered the copy-on-select handler. The fix skips
    the
    clipboard write whenever an element inside `.search-container` is the
    active
      element.
    - **Refocus search input on repeated Cmd+F** — pressing Cmd+F while the
    search
    bar was already open was a no-op (setting the `isOpen` atom to `true`
    again
    has no effect). The fix detects the already-open case and directly calls
    `focus()` + `select()` on the input, so the user can immediately type a
    new
      query.
    Shay12tg authored Mar 10, 2026
    Configuration menu
    Copy the full SHA
    29f49dc View commit details
    Browse the repository at this point in the history
  5. Expanding WaveEnv to cover all of frontend/app/block components (#3024)

    * lots of updates to WaveEnv to make it cover more functionality
    * Create BlockEnv as a narrowing of WaveEnv that covers all of
    frontend/app/block functionality
    * Fixed a lot of dependencies in the block components that caused
    unnecessarily re-renders
    * Added atom caching to WOS
    sawka authored Mar 10, 2026
    Configuration menu
    Copy the full SHA
    cb8166e View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    a327921 View commit details
    Browse the repository at this point in the history
Loading