# 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`.

## [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.

[2026.07.22]: https://git.cbsk-tech.de/Christoph/GitLite/releases/tag/2026.7.22
[2026.07.21]: https://git.cbsk-tech.de/Christoph/GitLite/releases/tag/2026.7.21
[2026.7.20]: https://git.cbsk-tech.de/Christoph/GitLite/releases/tag/2026.7.20
[2026.8.4]: https://git.cbsk-tech.de/Christoph/GitLite/releases/tag/2026.8.4
[2026.8.3]: https://git.cbsk-tech.de/Christoph/GitLite/releases/tag/2026.8.3
[2026.8.2]: https://git.cbsk-tech.de/Christoph/GitLite/releases/tag/2026.8.2
[2026.8.1]: https://git.cbsk-tech.de/Christoph/GitLite/releases/tag/2026.8.1
