build(release): bump to 2026.8.5 and update UI icons
This release bumps version numbers to 2026.8.5 across all manifests and docs and includes UI refinements. The status panel now uses lucide folder icons for tree view and folders, replacing the previous icons and CSS. - Replace the tree view icon with lucide FolderTree in status panel - Use Folder and FolderOpen icons for expanded/collapsed folders - Bump version to 2026.8.5 in all manifests and changelog
This commit is contained in:
@@ -4,6 +4,33 @@ 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.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.
|
||||
- Gitty can open a repository directly at startup through the `--repo PATH` or
|
||||
`--repo=PATH` command-line argument.
|
||||
|
||||
### Changed
|
||||
|
||||
- A successful Git pull now detects repositories that use LFS and downloads
|
||||
the required LFS objects automatically with the same remote and credentials.
|
||||
- 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.
|
||||
- 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
|
||||
@@ -180,6 +207,7 @@ The project uses calendar-style versions in the form `YYYY.M.PATCH`.
|
||||
[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.5]: https://git.cbsk-tech.de/Christoph/GitLite/releases/tag/2026.8.5
|
||||
[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
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Christoph Brandau <c.brandau91@googlemail.com>
|
||||
|
||||
pkgname=gitty-desktop-bin
|
||||
pkgver=2026.8.4
|
||||
pkgver=2026.8.5
|
||||
pkgrel=1
|
||||
pkgdesc="A lightweight, modern Git client built with Tauri (prebuilt Arch package)"
|
||||
arch=('x86_64')
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "gitty",
|
||||
"version": "2026.8.4",
|
||||
"version": "2026.8.5",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "gitty",
|
||||
"version": "2026.8.4",
|
||||
"version": "2026.8.5",
|
||||
"dependencies": {
|
||||
"@lucide/svelte": "^1.21.0",
|
||||
"@tailwindcss/vite": "^4.3.1",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gitty",
|
||||
"version": "2026.8.4",
|
||||
"version": "2026.8.5",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://schema.tauri.app/config/2",
|
||||
"productName": "Gitty",
|
||||
"version": "2026.8.4",
|
||||
"version": "2026.8.5",
|
||||
"identifier": "com.gitty",
|
||||
"build": {
|
||||
"beforeDevCommand": "npm run prepare:lfs && npm run dev",
|
||||
|
||||
+1
-42
@@ -6245,26 +6245,6 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
|
||||
.status-view-icon.list-icon {
|
||||
background: repeating-linear-gradient(to bottom, currentColor 0 1px, transparent 1px 4px);
|
||||
}
|
||||
.status-view-icon.tree-icon::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: 3px;
|
||||
height: 3px;
|
||||
background: currentColor;
|
||||
box-shadow: 8px 0 0 currentColor, 8px 7px 0 currentColor;
|
||||
}
|
||||
.status-view-icon.tree-icon::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
bottom: 1px;
|
||||
left: 2px;
|
||||
width: 8px;
|
||||
border-bottom: 1px solid currentColor;
|
||||
border-left: 1px solid currentColor;
|
||||
}
|
||||
.status-panel { container-type: inline-size; }
|
||||
.status-lanes {
|
||||
display: grid;
|
||||
@@ -6407,28 +6387,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
|
||||
transition: transform 120ms ease;
|
||||
}
|
||||
.status-tree-chevron.expanded { transform: rotate(45deg) translate(-1px, -1px); }
|
||||
.status-folder-icon {
|
||||
position: relative;
|
||||
width: 14px;
|
||||
height: 10px;
|
||||
margin-top: 2px;
|
||||
border: 1px solid currentColor;
|
||||
border-radius: 2px;
|
||||
color: var(--color-primary);
|
||||
background: color-mix(in srgb, var(--color-primary) 7%, transparent);
|
||||
}
|
||||
.status-folder-icon::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -4px;
|
||||
left: 1px;
|
||||
width: 7px;
|
||||
height: 4px;
|
||||
border: 1px solid currentColor;
|
||||
border-bottom: 0;
|
||||
border-radius: 2px 2px 0 0;
|
||||
}
|
||||
.status-folder-icon.open { background: color-mix(in srgb, var(--color-primary) 14%, transparent); }
|
||||
.status-folder-row .status-folder-lucide { color: var(--color-accent); }
|
||||
.status-folder-row strong {
|
||||
overflow: hidden;
|
||||
color: inherit;
|
||||
|
||||
@@ -1520,6 +1520,21 @@
|
||||
label: "Neu in Gitty",
|
||||
description: "Änderungen seit der letzten veröffentlichten Version und wichtige Neuerungen früherer Releases.",
|
||||
sections: [
|
||||
{
|
||||
id: "changelog-2026-8-5",
|
||||
title: "Version 2026.8.5",
|
||||
summary: "Dieses Release integriert Git LFS direkt in Gitty und macht den Staging-Bereich bei vielen geänderten Dateien deutlich übersichtlicher.",
|
||||
steps: [
|
||||
"Git LFS ist direkt über das Synchronisierungsmenü erreichbar. Gitty prüft die verfügbare Erweiterung, die Repository-Konfiguration und den Pre-Push-Hook und zeigt an, ob Git LFS mit Gitty gebündelt oder systemweit installiert ist.",
|
||||
"LFS-Muster lassen sich hinzufügen, als Lockable markieren und wieder entfernen. Der Dialog zeigt außerdem die LFS-Dateien des aktuellen Checkouts, lädt fehlende Objekte und bereinigt nicht mehr benötigte Cache-Objekte.",
|
||||
"Nach einem erfolgreichen Pull erkennt Gitty LFS-Repositories automatisch und lädt die benötigten LFS-Objekte mit demselben Remote und denselben Zugangsdaten. Ein zweiter manueller Pull ist nicht erforderlich.",
|
||||
"Unstaged und Staged stehen jetzt gleich breit nebeneinander, scrollen unabhängig voneinander und verwenden eindeutige Pfeile für Stage und Unstage. Bei schmalen Fenstern wechselt die Darstellung automatisch untereinander.",
|
||||
"Der mittig angeordnete List-/Tree-Umschalter zeigt Änderungen entweder als kompakte Liste oder gruppiert sie in beiden Bereichen nach aufklappbaren Ordnern.",
|
||||
"Repositories können beim Start über --repo PATH oder --repo=PATH direkt geöffnet werden. Relative Pfade werden dabei aufgelöst.",
|
||||
"Quadratische Bedienelemente und Flächen vereinheitlichen das Erscheinungsbild; runde Statuspunkte, Avatare und charakteristische Branch-Markierungen bleiben erhalten.",
|
||||
],
|
||||
note: "Von Git LFS erzeugte Änderungen an .gitattributes gehören zum Repository und müssen wie jede andere Änderung committed werden. Bereits vorhandene Git-Historie wird durch neue Tracking-Muster nicht rückwirkend umgeschrieben.",
|
||||
},
|
||||
{
|
||||
id: "changelog-2026-8-4",
|
||||
title: "Version 2026.8.4",
|
||||
@@ -1620,6 +1635,21 @@
|
||||
label: "What's new",
|
||||
description: "Changes since the latest published version and notable additions from earlier releases.",
|
||||
sections: [
|
||||
{
|
||||
id: "changelog-2026-8-5",
|
||||
title: "Version 2026.8.5",
|
||||
summary: "This release integrates Git LFS directly into Gitty and makes the staging area much easier to navigate when many files have changed.",
|
||||
steps: [
|
||||
"Git LFS is available directly from the Sync menu. Gitty checks the available extension, repository configuration, and pre-push hook, and reports whether Git LFS is bundled with Gitty or installed system-wide.",
|
||||
"LFS patterns can be added, marked as Lockable, and removed again. The dialog also lists LFS files in the current checkout, downloads missing objects, and prunes unused cache objects.",
|
||||
"After a successful pull, Gitty automatically detects LFS repositories and downloads the required LFS objects with the same remote and credentials. A second manual pull is no longer required.",
|
||||
"Unstaged and Staged now sit side by side at equal width, scroll independently, and use clear arrows for Stage and Unstage. Narrow windows automatically fall back to a vertical layout.",
|
||||
"The centered List/Tree switch presents changes either as a compact list or groups them into collapsible folders in both areas.",
|
||||
"Repositories can be opened directly at startup with --repo PATH or --repo=PATH. Relative paths are resolved automatically.",
|
||||
"Square controls and surfaces make the interface more consistent while circular status markers, avatars, and characteristic branch shapes remain intact.",
|
||||
],
|
||||
note: "Changes to .gitattributes created by Git LFS belong to the repository and must be committed like any other change. New tracking patterns do not rewrite existing Git history retroactively.",
|
||||
},
|
||||
{
|
||||
id: "changelog-2026-8-4",
|
||||
title: "Version 2026.8.4",
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
ArrowLeft,
|
||||
ArrowRight,
|
||||
FileDiff,
|
||||
Folder,
|
||||
FolderOpen,
|
||||
FolderTree,
|
||||
RotateCcw,
|
||||
} from "@lucide/svelte";
|
||||
import iconUrl from "../../../src-tauri/icons/icon.png";
|
||||
@@ -285,7 +288,7 @@
|
||||
<i class="status-view-icon list-icon" aria-hidden="true"></i><span>List</span>
|
||||
</button>
|
||||
<button class:active={statusView === "tree"} type="button" onclick={() => statusView = "tree"} title="Tree view" aria-label="Tree view" aria-pressed={statusView === "tree"}>
|
||||
<i class="status-view-icon tree-icon" aria-hidden="true"></i><span>Tree</span>
|
||||
<FolderTree size={13} aria-hidden="true" /><span>Tree</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="status-head-actions">
|
||||
@@ -335,7 +338,7 @@
|
||||
{#if row.kind === "folder"}
|
||||
<button class="status-folder-row" type="button" style={`--tree-indent: ${row.depth * 15}px`} onclick={() => toggleStatusFolder("unstaged", row.path)} title={row.path} aria-expanded={!collapsedStatusFolders.has(`unstaged:${row.path}`)}>
|
||||
<i class:expanded={!collapsedStatusFolders.has(`unstaged:${row.path}`)} class="status-tree-chevron" aria-hidden="true"></i>
|
||||
<i class:open={!collapsedStatusFolders.has(`unstaged:${row.path}`)} class="status-folder-icon" aria-hidden="true"></i>
|
||||
{#if collapsedStatusFolders.has(`unstaged:${row.path}`)}<Folder class="status-folder-lucide" size={15} aria-hidden="true" />{:else}<FolderOpen class="status-folder-lucide" size={15} aria-hidden="true" />{/if}
|
||||
<strong>{row.name}</strong>
|
||||
<span class="status-folder-count">{row.fileCount}</span>
|
||||
</button>
|
||||
@@ -392,7 +395,7 @@
|
||||
{#if row.kind === "folder"}
|
||||
<button class="status-folder-row" type="button" style={`--tree-indent: ${row.depth * 15}px`} onclick={() => toggleStatusFolder("staged", row.path)} title={row.path} aria-expanded={!collapsedStatusFolders.has(`staged:${row.path}`)}>
|
||||
<i class:expanded={!collapsedStatusFolders.has(`staged:${row.path}`)} class="status-tree-chevron" aria-hidden="true"></i>
|
||||
<i class:open={!collapsedStatusFolders.has(`staged:${row.path}`)} class="status-folder-icon" aria-hidden="true"></i>
|
||||
{#if collapsedStatusFolders.has(`staged:${row.path}`)}<Folder class="status-folder-lucide" size={15} aria-hidden="true" />{:else}<FolderOpen class="status-folder-lucide" size={15} aria-hidden="true" />{/if}
|
||||
<strong>{row.name}</strong>
|
||||
<span class="status-folder-count">{row.fileCount}</span>
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user