Add embedded PTY terminal, keyboard shortcuts, and assignee/label integrations #53
+174
@@ -4,6 +4,180 @@ 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.
|
||||
|
||||
### 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
|
||||
|
||||
@@ -503,9 +503,9 @@
|
||||
</div>
|
||||
<div class="status-lane-actions">
|
||||
{#if selectedUnstagedCount > 1}
|
||||
<span class="status-selection-count">{selectedUnstagedCount} selected</span>
|
||||
<span class="status-selection-count">{t("status.selectionCount", { count: selectedUnstagedCount })}</span>
|
||||
<button class="btn-sm" type="button" onclick={() => onStage(changedFiles.filter((file) => selectedStatusPaths.has(fileKey(file)) && file.unstaged !== null))} disabled={isBusy} title={t("status.stageSelected", { count: selectedUnstagedCount })}>
|
||||
<ArrowRight size={13} aria-hidden="true" /> Stage {selectedUnstagedCount}
|
||||
<ArrowRight size={13} aria-hidden="true" /> {t("status.stageCount", { count: selectedUnstagedCount })}
|
||||
</button>
|
||||
{/if}
|
||||
<button class="btn-sm" type="button" onclick={onStageAll} disabled={isBusy || !hasUnstaged} title={t("status.stageAllHint")}>
|
||||
@@ -560,9 +560,9 @@
|
||||
</div>
|
||||
<div class="status-lane-actions">
|
||||
{#if selectedStagedCount > 1}
|
||||
<span class="status-selection-count">{selectedStagedCount} selected</span>
|
||||
<span class="status-selection-count">{t("status.selectionCount", { count: selectedStagedCount })}</span>
|
||||
<button class="btn-sm" type="button" onclick={() => onUnstage(changedFiles.filter((file) => selectedStatusPaths.has(fileKey(file)) && file.staged !== null))} disabled={isBusy} title={t("status.unstageSelected", { count: selectedStagedCount })}>
|
||||
<ArrowLeft size={13} aria-hidden="true" /> Unstage {selectedStagedCount}
|
||||
<ArrowLeft size={13} aria-hidden="true" /> {t("status.unstageCount", { count: selectedStagedCount })}
|
||||
</button>
|
||||
{/if}
|
||||
<button class="btn-sm" type="button" onclick={onUnstageAll} disabled={isBusy || !hasStaged} title={t("status.unstageAllHint")}>
|
||||
|
||||
@@ -216,6 +216,9 @@ export const messages = {
|
||||
"status.discardUnstagedSelected": { en: "Discard unstaged changes in {count} selected files", de: "Ungestagte Änderungen in {count} ausgewählten Dateien verwerfen" },
|
||||
"status.discardStagedSelected": { en: "Discard staged changes in {count} selected files", de: "Gestagte Änderungen in {count} ausgewählten Dateien verwerfen" },
|
||||
"status.discard": { en: "Discard", de: "Verwerfen" },
|
||||
"status.selectionCount": { en: "{count} selected", de: "{count} ausgewählt" },
|
||||
"status.stageCount": { en: "Stage {count}", de: "{count} stagen" },
|
||||
"status.unstageCount": { en: "Unstage {count}", de: "{count} entstagen" },
|
||||
"status.selectInExplorer": { en: "Select {path} in Explorer", de: "{path} im Explorer auswählen" },
|
||||
"status.stageFile": { en: "Stage file", de: "Datei stagen" },
|
||||
"status.unstageFile": { en: "Unstage file", de: "Datei entstagen" },
|
||||
|
||||
Reference in New Issue
Block a user