diff --git a/CHANGELOG.md b/CHANGELOG.md index 8304910..281ad6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/PKGBUILD-bin b/PKGBUILD-bin index 6c145c7..f5c80ad 100644 --- a/PKGBUILD-bin +++ b/PKGBUILD-bin @@ -1,7 +1,7 @@ # Maintainer: Christoph Brandau 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') diff --git a/package-lock.json b/package-lock.json index d0e808a..e9a58c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index 79c51b8..c2989e1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gitty", - "version": "2026.8.4", + "version": "2026.8.5", "private": true, "type": "module", "scripts": { diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 5d60aa2..cf7fe17 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -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", diff --git a/src/app.css b/src/app.css index f905625..0237ca3 100644 --- a/src/app.css +++ b/src/app.css @@ -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; diff --git a/src/lib/components/HelpOverlay.svelte b/src/lib/components/HelpOverlay.svelte index bb60337..d956186 100644 --- a/src/lib/components/HelpOverlay.svelte +++ b/src/lib/components/HelpOverlay.svelte @@ -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", diff --git a/src/lib/components/StatusPanel.svelte b/src/lib/components/StatusPanel.svelte index fac225e..61d4796 100644 --- a/src/lib/components/StatusPanel.svelte +++ b/src/lib/components/StatusPanel.svelte @@ -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 @@ List
@@ -335,7 +338,7 @@ {#if row.kind === "folder"} @@ -392,7 +395,7 @@ {#if row.kind === "folder"}