Add embedded PTY terminal, keyboard shortcuts, and assignee/label integrations #53

Merged
Christoph merged 0 commits from refs/pull/53/head into main 2026-09-22 19:13:07 +00:00
Christoph commented 2026-09-22 19:12:29 +00:00 (Migrated from git.cbsk-tech.de)

This change adds an embedded, PTY-backed terminal dock, several new keyboard shortcuts for navigation and status selection, and integration support for labels and assignees. It also makes a few UI fixes and swaps the Create Issue description field for the richer comment editor. The diffs show new frontend and backend dependencies (xterm on the renderer side and portable-pty in the Tauri backend), exports for integration APIs, and a new implementation for listing/assigning assignees.

Key behavior changes

  • Embedded terminal dock

    • A terminal is embedded in the repository view, docked above the status bar and resizable in height. It runs a real pseudo-terminal using the user's shell (portable-pty on the Rust/Tauri side and xterm on the frontend). Each repository tab keeps its own PTY session and Ctrl+toggles the dock. The implementation adds@xterm/xtermand@xterm/addon-fitto JS deps andportable-pty = "0.9"tosrc-tauri/Cargo.toml`.
  • Keyboard shortcuts

    • Ctrl/Cmd+1..4 switch the main views (Dashboard, Repositories, Pull Requests, Issues & Boards).
    • Ctrl/Cmd+A selects all files in the focused status lane; Esc clears the selection.
  • Integrations: labels and assignees

    • Exposes integration helpers and an IntegrationApi wrapper for HTTP interaction with providers. Adds provider-specific handling to list and manipulate assignees and assignment targets (new Tauri commands, new integrations/assignees.rs, and src-tauri/src/integrations.rs now re-exports labels and assignees).
  • Create Issue dialog

    • The description field in the Create Issue dialog now uses the full CommentEditor instead of a plain textarea.
  • UI fixes and small changes

    • Long file paths no longer displace header controls in the file history dialog.
    • Localized selection count and stage/unstage button labels were added for the status view.
    • The help overlay no longer includes a changelog/What's new section and removes an unused Sparkles icon.
    • CHANGELOG.md updated with an Unreleased section describing the visible user-facing changes.

Implementation notes (high level)

  • Frontend: package.json and package-lock.json were updated to include @xterm/xterm and @xterm/addon-fit.
  • Backend (Tauri): src-tauri/Cargo.toml adds portable-pty = "0.9" and src-tauri/Cargo.lock includes the transitive crates required for PTY support. New Tauri commands and integration helpers are added under src-tauri/src/integrations.

Testing

No test execution results were provided.

Recommended focused checks for reviewers

  1. Build and install new dependencies

    • Install JS deps (npm/yarn/pnpm depending on your workflow):

      npm install

    • Build the Tauri backend so Rust deps (portable-pty) are fetched and compiled:

      cargo build --manifest-path src-tauri/Cargo.toml

    Note: portable-pty and its transitive crates introduce native/platform-specific components; a working Rust toolchain and platform build tools are required.

  2. Runtime checks

    • Repository view: open a repository tab, toggle the terminal dock (Ctrl+`). Verify the terminal runs an interactive shell (tab completion, Ctrl+C behavior) and that resizing and per-tab sessions behave as expected.
    • Shortcuts: confirm Ctrl/Cmd+1..4 switch main views and that Ctrl/Cmd+A selects all files in a focused status lane and Esc clears the selection.
    • Create Issue: open the Create Issue dialog and confirm the description field uses the comment editor (rich editor controls present).
    • Integrations: with a configured provider (e.g. GitHub/GitLab/Azure/Gitea), exercise listing assignees/labels via the UI paths that surface them; if needed, invoke the new Tauri command list_integration_assignees to validate provider responses.

Compatibility / reviewer actions

  • Run the JS package manager install to pick up @xterm/xterm and @xterm/addon-fit.
  • Build the Tauri backend (cargo) to pull in portable-pty and its native dependencies.
  • Expect larger native build times and additional native toolchain requirements because of the PTY support.

Risks and notes

  • Adding PTY support (portable-pty) and native crates may require platform-specific toolchains and can increase binary size and build time; verify CI or local build environments can compile these crates.
  • The changelog was updated to include an Unreleased section describing user-visible changes.

If you'd like, I can add a short checklist of integration-specific manual tests to validate each provider (GitHub/GitLab/Gitea/Azure) against their assignment endpoints.

This change adds an embedded, PTY-backed terminal dock, several new keyboard shortcuts for navigation and status selection, and integration support for labels and assignees. It also makes a few UI fixes and swaps the Create Issue description field for the richer comment editor. The diffs show new frontend and backend dependencies (xterm on the renderer side and portable-pty in the Tauri backend), exports for integration APIs, and a new implementation for listing/assigning assignees. Key behavior changes - Embedded terminal dock - A terminal is embedded in the repository view, docked above the status bar and resizable in height. It runs a real pseudo-terminal using the user's shell (portable-pty on the Rust/Tauri side and xterm on the frontend). Each repository tab keeps its own PTY session and Ctrl+` toggles the dock. The implementation adds `@xterm/xterm` and `@xterm/addon-fit` to JS deps and `portable-pty = "0.9"` to `src-tauri/Cargo.toml`. - Keyboard shortcuts - Ctrl/Cmd+1..4 switch the main views (Dashboard, Repositories, Pull Requests, Issues & Boards). - Ctrl/Cmd+A selects all files in the focused status lane; Esc clears the selection. - Integrations: labels and assignees - Exposes integration helpers and an `IntegrationApi` wrapper for HTTP interaction with providers. Adds provider-specific handling to list and manipulate assignees and assignment targets (new Tauri commands, new `integrations/assignees.rs`, and `src-tauri/src/integrations.rs` now re-exports labels and assignees). - Create Issue dialog - The description field in the Create Issue dialog now uses the full `CommentEditor` instead of a plain textarea. - UI fixes and small changes - Long file paths no longer displace header controls in the file history dialog. - Localized selection count and stage/unstage button labels were added for the status view. - The help overlay no longer includes a changelog/What's new section and removes an unused Sparkles icon. - `CHANGELOG.md` updated with an Unreleased section describing the visible user-facing changes. Implementation notes (high level) - Frontend: `package.json` and `package-lock.json` were updated to include `@xterm/xterm` and `@xterm/addon-fit`. - Backend (Tauri): `src-tauri/Cargo.toml` adds `portable-pty = "0.9"` and `src-tauri/Cargo.lock` includes the transitive crates required for PTY support. New Tauri commands and integration helpers are added under `src-tauri/src/integrations`. Testing No test execution results were provided. Recommended focused checks for reviewers 1. Build and install new dependencies - Install JS deps (npm/yarn/pnpm depending on your workflow): npm install - Build the Tauri backend so Rust deps (portable-pty) are fetched and compiled: cargo build --manifest-path src-tauri/Cargo.toml Note: portable-pty and its transitive crates introduce native/platform-specific components; a working Rust toolchain and platform build tools are required. 2. Runtime checks - Repository view: open a repository tab, toggle the terminal dock (Ctrl+`). Verify the terminal runs an interactive shell (tab completion, Ctrl+C behavior) and that resizing and per-tab sessions behave as expected. - Shortcuts: confirm Ctrl/Cmd+1..4 switch main views and that Ctrl/Cmd+A selects all files in a focused status lane and Esc clears the selection. - Create Issue: open the Create Issue dialog and confirm the description field uses the comment editor (rich editor controls present). - Integrations: with a configured provider (e.g. GitHub/GitLab/Azure/Gitea), exercise listing assignees/labels via the UI paths that surface them; if needed, invoke the new Tauri command `list_integration_assignees` to validate provider responses. Compatibility / reviewer actions - Run the JS package manager install to pick up `@xterm/xterm` and `@xterm/addon-fit`. - Build the Tauri backend (cargo) to pull in `portable-pty` and its native dependencies. - Expect larger native build times and additional native toolchain requirements because of the PTY support. Risks and notes - Adding PTY support (portable-pty) and native crates may require platform-specific toolchains and can increase binary size and build time; verify CI or local build environments can compile these crates. - The changelog was updated to include an Unreleased section describing user-visible changes. If you'd like, I can add a short checklist of integration-specific manual tests to validate each provider (GitHub/GitLab/Gitea/Azure) against their assignment endpoints.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Christoph/Gitty!53
No description provided.