Files
GitLite/CHANGELOG.md
T
Christoph 6ef5d3b677 feat(terminal): add embedded PTY-backed terminal dock with per-tab sessions
Adds a built-in terminal dock that runs a real pseudo-terminal per repository tab.

- Backend: new src-tauri/src/terminal.rs implements TerminalState and Tauri commands
  terminal_open, terminal_write, terminal_resize and terminal_close using the
  portable-pty crate. Terminal output is emitted via "terminal:data" and exits
  via "terminal:exit". Includes unit tests for UTF-8 chunk handling. Cargo.toml
  updated to depend on portable-pty and main.rs registers the state/commands.
- Frontend: App.svelte/UI and app.css updated to show a resizable terminal dock,
  toggleable with Ctrl+` and persisted open/height state. TerminalPanel.svelte is
  lazy-loaded per repo tab (frontend provides session ids like repo:<path>).
  package.json adds @xterm/xterm and @xterm/addon-fit for the frontend terminal
  surface.
- Docs: CHANGELOG.md notes the new embedded terminal feature.

Behavior: each repository tab has its own PTY-backed shell started in the repo
cwd; the user's shell (SHELL/COMSPEC) is used so prompts, aliases and interactive
behavior work as in a normal terminal.
2026-09-22 21:11:48 +02:00

18 KiB

Changelog

All notable user-facing changes to Gitty are documented in this file.

The project uses calendar-style versions in the form YYYY.M.PATCH.

[Unreleased]

Added

  • Ctrl/Cmd + 1 to 4 switch between Dashboard, Repositories, Pull Requests, and Issues & Boards.
  • Ctrl/Cmd + A selects every file in the focused status lane; Esc clears the selection again.
  • Issues can be assigned to people, and labels are managed directly from the Issue Center.
  • An embedded terminal in the repository view, docked above the status bar and adjustable in height. It runs a real pseudo terminal with the user's own shell, so colors, interactive prompts, tab completion, and Ctrl+C work as usual. Every repository tab keeps its own session; Ctrl + ` toggles the dock.

Changed

  • The description field of the Create Issue dialog uses the full comment editor instead of a plain text area.
  • The help center no longer carries a "What's new" section. Release notes are maintained in this file.

Fixed

  • Long file paths no longer displace the header controls of the file history dialog.

[2026.9.8] - 2026-09-18

Added

  • Submodule management: submodules are listed, initialized, updated, and cloned recursively, including authentication and checkout of a specific submodule revision.
  • Worktrees and tags are available as collapsible panels in the left sidebar, and a section menu toggles which panels are shown.
  • Individual lines can be restored from a historical commit instead of restoring the whole file.
  • The branch panel supports filtering, remembers its view state, and groups branches with their own accent color.
  • Pull request merges offer a merge-method selection with provider-specific payloads and can delete the source branch automatically.
  • The Review Center filters by repository, and select menus show repository details next to each option.

Changed

  • File history marks the entry that is identical to the working tree.
  • Confirmation dialogs are centralized, translated, and can carry inputs, checkboxes, and multi-selection actions.
  • Left sidebar panels share one sizing and resize implementation, and global scrollbar styles were consolidated.
  • Status colors, overlay tints, and theme tokens for ink and accent moved to CSS variables.

Fixed

  • The repository selector in the tab bar shows a pointer cursor.

[2026.9.7] - 2026-09-11

Added

  • Pull request drafts can be generated with AI; all AI settings live on one page.
  • The commit history resolves visible parents, which keeps the graph correct when commits are filtered.

Changed

  • Dialogs share unified header chrome.
  • Provider icons were restyled and share one implementation.

Fixed

  • Switching to the Management view no longer opens a repository on its own.

[2026.9.6] - 2026-09-11

Added

  • Workspaces group repositories into sessions that can be saved, switched, and managed; their UI filters persist.
  • Repository tabs can be reordered by drag and drop.
  • Issues can be created from the app, including Azure DevOps work items with state management.
  • Gitea repositories are grouped in the Clone dialog like the other providers.

Changed

  • Undoing the last commit uses a soft reset, so the changes stay staged.
  • Behind segments in the commit graph use the lane color supplied by the graph.

[2026.9.5] - 2026-09-09

Changed

  • All main views share one page-header layout.
  • The integration board view was refined, and assignees are displayed more compactly.

[2026.9.4] - 2026-09-08

Added

  • Boards and issues from multiple providers, including moving cards between columns.
  • Pull requests can be created from the app; the dialog loads the repository branches and suggests the current local branch.
  • Repository tabs became a workspace navigation bar.
  • Pull request status is loaded separately and surfaced as badges.

Changed

  • The Review Center table and toolbar adapt to narrow windows.

[2026.9.3] - 2026-09-08

Added

  • The dashboard offers a list and a card view, and remembers the choice.
  • A notice shows the progress of a running merge.

Changed

  • The line patch dialog was redesigned.
  • Sync colors are defined once as CSS variables.

[2026.9.2] - 2026-09-07

Added

  • Guided Git bisect with a dedicated dialog for the commit range.
  • The Review Center loads pull requests from the configured integrations, with a detail panel, actions, and search.
  • Conflicts from a pull request merge can be resolved locally; the merge continues automatically and the provider is polled after the push.
  • The dashboard shows pull request badges and links into the Review Center.

Changed

  • Repository management moved into its own dashboard component.
  • Credentials use the Linux keyring.

[2026.9.1] - 2026-09-01

Added

  • A dialog for initializing a repository.
  • A Merge Branch dialog with a confirmation step.
  • Advanced clone options: shallow, sparse, blobless, and custom flags.

[2026.8.10] - 2026-08-31

Changed

  • The Clone dialog was redesigned and groups Azure DevOps repositories by project.
  • Tab and dialog close buttons were visually refined.

Fixed

  • The Clone dialog no longer breaks its layout or scrolling on small windows.
  • The loading overlay accounts for the repository tab bar.

[2026.8.9] - 2026-08-30

Added

  • Pulling histories without a common ancestor is possible as an explicit opt-in.

Changed

  • The AI commit flow was simplified; local models are no longer supported.

2026.8.8 - 2026-08-29

Added

  • Git hosting integrations for GitHub, GitLab.com, GitLab Self-Managed, Azure DevOps, and Gitea. Personal access tokens are stored separately in the operating system keychain.
  • Azure DevOps supports multiple independently configurable organizations, each with its own display name, organization URL, username, and token.
  • The Clone dialog has an Integrations tab that loads all repositories available to the selected account, supports filtering and refresh, sorts repositories alphabetically, and clones the selected repository directly with its stored credentials.

Changed

  • Repository tabs use a more compact Git-client-style bar. Close buttons remain visible and turn red only while hovered.
  • The integration repository list uses a narrow custom scrollbar that grows only slightly on hover and no longer covers repository names or metadata.
  • Repository loading and status overlays use theme-aware design tokens with improved contrast and a more compact presentation.

Fixed

  • Clearing sync settings on a branch that never had an upstream is now a safe no-op instead of failing with a fatal Git error.

2026.8.7 - 2026-08-23

Added

  • Appearance settings now offer Modern, Classic, and Custom styles. Custom themes can define their own persisted color palette, while a complete light theme is available alongside the refreshed dark appearance.
  • The branch visibility dialog groups local and remote branches into collapsible sections with selected-branch counts. Local branches open by default, while the remote group starts collapsed for quicker navigation.

Changed

  • Dark-theme colors, surfaces, controls, and focus outlines have been refined for clearer interactive boundaries and more consistent contrast throughout the application.
  • The branch visibility dialog follows the responsive layout and visual language of the rest of Gitty more closely.

2026.8.6 - 2026-08-18

Changed

  • Activating LFS or adding a tracking pattern now ensures that a root .gitattributes file is not hidden by Git ignore rules. When necessary, Gitty adds the scoped !/.gitattributes exception to .gitignore.
  • The standard Tauri development launcher now removes an injected non-routing 127.0.0.1:9 proxy and blocking SSH placeholder from the debug child process, while preserving real user and company proxy settings.

Fixed

  • Root .gitattributes LFS patterns remain visible while the file is untracked or ignored, instead of disappearing from the LFS dialog.
  • Git LFS pushes rejected with HTTP 413 are retried once with a command-scoped HTTP/1.1 override, which works around Azure DevOps' large HTTP/2 upload behavior without changing repository or global Git settings.
  • LFS and other generic push failures no longer trigger the unrelated Pull/Push retry flow intended only for non-fast-forward rejections.

2026.8.5 - 2026-08-17

Added

  • Integrated Git LFS management now detects the available extension and the repository setup, shows tracked patterns and checkout objects, and provides actions for local activation, tracking and untracking patterns, downloading objects, and pruning the local cache. Desktop installers bundle Git LFS, while Arch packages declare it as a dependency.
  • The Changes panel now offers a List/Tree switch. Tree view groups staged and unstaged files into independently collapsible folders while retaining all existing file actions.
  • Files and folders in the Changes panel now have context-menu actions for staging or unstaging their scope and for creating a stash containing only the selected file or folder. New and untracked items can also be added to the repository .gitignore from Changes or the File Explorer as an exact file, a complete folder, or an extension-wide pattern. Folder rules are only offered for folder selections. Tracked files and folders can be removed from the Git index without deleting their working-tree contents.
  • Gitty can open a repository directly at startup through the --repo PATH or --repo=PATH command-line argument.
  • The executable can clone and immediately open a repository with clone REMOTE TARGET, --clone REMOTE TARGET, or --clone=REMOTE TARGET. Relative targets use the caller's working directory, and requests are also forwarded to an already-running Gitty instance.

Changed

  • Successful clones and pulls now detect repositories that use LFS and download the required LFS objects automatically with the same remote and credentials. Fresh clones also activate LFS locally before they are opened.
  • Unstaged and staged changes use an equal-width side-by-side layout with independent scrolling, directional stage/unstage actions, and a responsive vertical fallback. The List/Tree switch is centered above both areas.
  • File and folder context menus now separate the selected name from its parent path, show the affected file count, and present stage, unstage, and stash actions with clearer icons and descriptions.
  • Controls and surfaces use a more consistent square visual language while circular status markers, avatars, and branch shapes remain recognizable.
  • The built-in German and English help now includes Git LFS setup, tracking, troubleshooting, and everyday workflow guidance.

2026.8.4 - 2026-08-15

Added

  • Branch folders now have a context-menu action for deleting all contained local or remote branches at once. The top-level remote folder such as origin is protected, while its nested folders remain manageable. The currently checked-out branch is kept, and individual failures are reported after the remaining branches have been processed.

Changed

  • The Compare selector is fully localized in German and uses the same visual language as the external-tool selectors for its fields, groups, typography, and dialog surfaces.
  • Repository-tab close buttons are square and have clearer spacing, hover behavior, and keyboard-focus feedback.

2026.8.3 - 2026-08-13

Added

  • Configurable external tools for editors, diff viewers, merge tools, terminals, and file managers, including automatic cross-platform discovery and presets for VS Code, JetBrains IDEs, Beyond Compare, and other common applications.
  • Repository and file actions for opening content in the configured external application. Supported tools open in a separate window.
  • A choice between Gitty's internal diff/merge views and the configured external applications.
  • Git Notes support for attaching editable notes to commits without rewriting commit history, including fetch and push synchronization.
  • A command palette for quickly opening repository actions, files, and commits.
  • Complete branch-to-branch comparisons for local and remote branches. The comparison dialog shows every changed file and its side-by-side diff.
  • Safe remote branch renaming from the branch context menu.

Changed

  • Redesigned the settings window with tool categories, detected applications, preset dropdowns, and clearer explanations of where each tool is used.
  • Redesigned the history graph's branch presentation with compact labels, hover details, cleaner flag connectors, and branch visibility controls.
  • Reduced the minimum width of the commit history panel so the workspace can be resized more freely.
  • Local-only branches are now identified consistently in the toolbar, repository summary, status bar, and commit graph. Their first push is labeled Publish and configures the remote tracking branch automatically.
  • Git operations now run asynchronously to keep the application responsive during slower repository commands.

Fixed

  • Closing supported external tools no longer reports their documented comparison result codes as application errors.
  • External tools that otherwise reuse an existing process are explicitly opened in a new window where supported.
  • Remote branch renaming uses an atomic push with lease checks, preventing an existing destination branch or a newly changed remote branch from being overwritten.

2026.8.2 - 2026-08-10

Changed

  • History graph colors remain stable across parent lanes, making longer and branching histories easier to follow.
  • Release artifacts are published to the matching Gitea release automatically without creating duplicate assets.
  • Application shutdown now completes telemetry cleanup more reliably.

2026.8.1 - 2026-08-04

Added

  • Paginated commit history that loads older commits on demand instead of limiting the visible repository history to the initial page.
  • A dedicated file-history dialog opened from the explorer context menu.
  • Windows and Ubuntu release publishing plus improved AUR packaging workflows.

Changed

  • File history moved out of the permanent workspace panel into a focused, larger dialog.
  • Dialogs close more consistently with the Escape key.
  • Arch Linux installation documentation now uses the gitty-desktop AUR package.

Fixed

  • AUR SSH setup, package installation timeouts, and clone/push retries are more robust in the release workflow.

2026.07.22 - 2026-07-22

Added

  • AI-assisted commit splitting for staged changes:
    • analyze the staged diff and propose an ordered set of logical commits;
    • generate an editable Conventional Commit message for every group;
    • move files between proposed commits before applying the plan;
    • create all accepted commits sequentially with Commit all.
  • Support for commit-splitting suggestions through OpenAI, Anthropic, and custom OpenAI-compatible endpoints.

Changed

  • The commit-splitting dialog now explains why a plan cannot be applied and clearly marks AI-generated commit messages as editable.
  • Safety checks prevent applying a stale plan after the staged files change and reject files that contain both staged and unstaged changes.

Fixed

  • Commit all now passes a plain state snapshot to the commit workflow instead of failing silently when cloning a reactive UI proxy.
  • Closing the active repository tab no longer allows an in-flight status or fetch response to reopen and reactivate the closed repository.

2026.07.21 - 2026-07-21

Added

  • Full Git worktree management:
    • create a worktree from an existing branch;
    • create a new branch and worktree together;
    • create a detached worktree at a commit;
    • open a worktree as a repository tab;
    • move, lock, unlock, repair, remove, and prune worktrees.
  • A dedicated Worktrees entry below Tags in the branch panel.
  • An Open in new worktree action in the local branch context menu.
  • Line-level patch selection with Shift-click range selection.
  • Stage, unstage, and discard actions for selected lines while retaining the existing whole-file and whole-hunk workflows.
  • Arch Linux package automation that builds from PKGBUILD, publishes the .pkg.tar.zst artifact, and updates the Pacman repository database on the CDN.
  • Detailed German and English help for worktrees, line-level staging, Pacman installation, and release changes.

Changed

  • Branch deletion now uses a clearer confirmation dialog with more explicit branch and upstream information.
  • Dialog backdrops blur the application instead of covering it with a nearly black background.
  • Remote operations and authentication errors provide more actionable feedback.
  • Build diagnostics and resource handling for the Arch package pipeline are more robust.

Infrastructure

  • Added centralized error notifications.
  • Added structured, privacy-conscious telemetry.
  • Stabilized the Arch Linux container build and makepkg workflow.

2026.7.20 - 2026-07-13

Added

  • AI-assisted review of staged changes before committing.
  • Optional automatic repository refresh.
  • Comprehensive German Git documentation in the built-in help.
  • Initial PKGBUILD and automated package version synchronization.

Changed

  • Redesigned the repository action toolbar and workspace status presentation.
  • Improved repository tabs, diff styling, spacing, and panel structure.
  • Improved file-history state handling.