Commit graph

544 commits

Author SHA1 Message Date
WaterWhisperer
8619c07f3f
Open editor in diff view (#2904) 2026-04-10 19:38:29 +01:00
extrawurst
b1db21e10a
fix panic when opening submodule (#2896)
this is caused by us dropping the git notify channel and creating a new one when opening the submodule.

closes #2895
2026-03-31 12:38:05 +01:00
Jean-Yves LENHOF
693defde15
docs(README): add mise alternative method installation (#2817) 2026-03-29 20:17:28 +01:00
extrawurst
0cf38b5def
use tombi for toml formatting (#2894) 2026-03-28 21:02:05 +01:00
extrawurst
a57cbf2806 fix changelog 2026-03-25 10:29:03 +01:00
Tillerino
3ad42d23c4
take "error" result from binary search into account (#2767)
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2026-03-25 10:27:25 +01:00
extrawurst
98e130f8c8 release prep 2026-03-21 12:45:40 +00:00
Danny Stoll
49555ce966
perf: prevent repeated status fetches in large repos (#2824)
* perf: prevent repeated status fetches in large repos

Replace time-based cache invalidation with a generation counter.

The old `StatusParams` included a millisecond timestamp (tick) in its
hash, causing the cache to invalidate on every UI tick. For large repos
with millions of files, this led to repeated index loading and 5+ minute load times.

This change uses a different strategy to manage cache invalidation:
- Remove tick from StatusParams hash
- Add generation counter that increments after each fetch completes
- Include generation in cache hash

This ensures:
- No repeated fetches while one is already pending, making gitui usable
  in large repos
- New fetch starts immediately after completion, keeping gitui responsive
  in small repos
- External file changes will still be detected on the next fetch cycle

* fix changelog

---------

Co-authored-by: Daniel Stoll <dstoll@radix.trade>
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
Co-authored-by: extrawurst <mail@rusticorn.com>
2026-03-20 01:12:14 +00:00
hlsxx
3cf7a818d1
feat: build.rs version message (#2839)
* feat: build.rs version message

* doc: changelog

---------

Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2026-03-20 00:35:21 +00:00
xvchris
06a3f660b2
fix: guard rename/update_url actions against empty remote list (#2870)
* fix: guard rename/update_url actions against empty remote list

The rename_remote() and update_remote_url() event handlers in
RemoteListPopup did not check valid_selection() before indexing
into self.remote_names, causing a panic (index out of bounds)
when no remotes are configured.

The delete_remote() handler already had this guard. This commit
adds the same valid_selection() check to the other two handlers
for consistency.

Fixes #2868
Fixes #2869

* chore: add changelog entry and sort Cargo.toml dependencies

* revert: restore original Cargo.toml formatting
2026-03-19 22:51:09 +00:00
extrawurst
5d6731326e
Rust msrv bump to 1.88 (#2879) 2026-03-19 18:33:52 +00:00
extrawurst
197bcb5fc9 version bumps for release 0.28 2025-12-14 14:57:20 -05:00
0x61nas
e1029b00d1
feat(cli): add the ability to specify a custom keybinding/symbols file via the cli (#2731) 2025-12-01 13:19:33 -03:00
extrawurst
1e80480122 missing changelog 2025-11-29 09:39:10 -03:00
extrawurst
16fdfc27ea cleanup changelog 2025-11-29 09:34:31 -03:00
Fatpandac
3082396bf1
Support choosing checkout branch method when status is not empty (#2494) 2025-11-28 18:36:40 -03:00
Christian Zangl
ffa6d9e57b
add cli flag to open files tab with selected file (#2746) 2025-11-28 17:53:07 -03:00
Christoph Rüßler
a6d6f31885
Overwrite committer on amend when gpgsign = false (#2792) 2025-11-28 17:11:22 -03:00
andrea-berling
2ab4143d6b
Add Go to line feature for the blame view (#2262) 2025-11-12 11:57:06 -03:00
xlai89
cb17cfe105
feat: support pre-push hooks (#2737)
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2025-10-31 08:57:27 +01:00
Kristoffer Plagborg Bak Sørensen
2ced3f9acc
fix: disable blame and history popup for untracked files (#2489)
* fix: disable blame and history popup for untracked files

An untracked file does not have any history data. Right now when
you press `B` for the blame popup or the `H` for the history popup
you get an empty popup where the title spins endlessly trying to find
the file in the commit history, and show relevant information.
This commit disables the two actions in the `StatusTreeComponent`, when the
selected item is a file which is not tracked by git.

---------

Co-authored-by: extrawurst <mail@rusticorn.com>
2025-10-28 22:41:36 +01:00
xlai89
eb48b3788f
feat: message tab supports pageup and pagedown (gitui-org#2623) (#2730)
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2025-10-28 19:01:33 +01:00
wugeer
7674dae0cc
fix: When the terminal is insufficient to display all the commands, the cmdbar_bg configuration color does not fully take effect (#2348)
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2025-10-28 18:42:54 +01:00
linkmauve
88ace76db5
Fix typos (#2740)
Thanks to typos for finding those!

Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2025-10-28 16:35:05 +01:00
Christoph Rüßler
db211e5ac7
Update gix from 0.71.0 to 0.74.1 (#2745)
* Update gix from 0.71.0 to 0.74.1

* Bump MSRC from 1.81 to 1.82

This is required by `gitoxide` 0.74.

* Address clippy issues

* Add getrandom and rustix to deny.toml

* Document reasons for ignoring duplicates
2025-10-27 18:37:30 +01:00
linkmauve
180368621e
Print a nicer error when failing to create cache directory (#2728)
Same as in 1d2248571d for the config
directory, when the cache directory fails to get created for whichever
reason, we currently exit gitui with a pretty undescriptive error.

Improves on #2684.
Fixes #2652.
2025-10-09 06:01:37 -03:00
Fatpandac
706cdf9243
feat: file and status tab support pageup and pagedown (#2496) 2025-04-21 20:23:05 +02:00
Lena
ee5c243cbf
Improve error messages (#2617) 2025-04-21 20:22:25 +02:00
Johannes Agricola
7f88934d05
Bump msrv to 1.81 (#2613)
Co-authored-by: Naseschwarz <naseschwarz@0x53a.de>
2025-04-16 09:21:06 +02:00
Joshix-1
711210b97b
Run git-hooks more correctly (#2483) 2025-04-15 15:01:39 +02:00
Johannes Agricola
7f75307f6e
Resolve core.hooksPath relative to GIT_WORK_TREE (#2571)
* Resolve core.hooksPath relative to GIT_WORK_TREE

git supports relative values in core.hooksPath.

`man git-config`:

> A relative path is taken as relative to the directory where the hooks are
> run (see the "DESCRIPTION" section of githooks[5]).

`man githooks`:

> Before Git invokes a hook, it changes its working directory to either
> $GIT_DIR in a bare repository or the root of the working tree in a >
> non-bare repository.

I.e. relative paths in core.hooksPath in non-bare repositories are always
relative to GIT_WORK_TREE.

There is a further exception; I believe this is not considered for path
resolution:

> An exception are hooks triggered during a push (pre-receive, update,
> post-receive, post-update, push-to-checkout) which are always executed
> in $GIT_DIR.

* Favor Repository::workdir() over path().parent()

This more clearly errors in case of bare repositories instead of using
the parent directory of the bare repository.

---------

Co-authored-by: Naseschwarz <naseschwarz@0x53a.de>
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2025-04-04 15:28:44 +02:00
Johannes Agricola
89f73d2ec2
Disable dotted range commit yanking (#2577)
The algorithm for computing marked_consecutive assumes that commits are
consecutive in the commit graph if they are consecutive in the
linearized log used in` commitlist.rs`. That is not universally correct,
as siblings may also be displayed consecutively in this list.

For now, this just removes generating commit lists in dotted range
notation.

Co-authored-by: Naseschwarz <naseschwarz@0x53a.de>
2025-04-04 15:27:50 +02:00
Clément
65b57c4b60
feat(ui): Add use_selection_fg flag to control selection foreground color (#2515) 2025-03-22 14:11:54 +01:00
Johannes Agricola
dcd9a00ff3
Check cargo sort in make check (#2572)
This is run in CI, so running this offline avoids an unnecessary CI
failure.
2025-03-22 11:53:03 +01:00
Lena
ad32993721
Support loading custom syntax themes from a file (#2565) 2025-03-20 00:31:09 +01:00
Lena
92ef9f6fde
Respect .mailmap (#2485) 2025-03-19 14:44:02 +01:00
Lena
3ede6b56f1
Set the terminal title to gitui ({repo_path}) (#2484) 2025-03-18 19:23:16 +01:00
vlad-anger
979fa68837
Push with refspec (#2542)
* push: respect `branch.*.merge` when push default is upstream
2025-03-18 18:35:39 +01:00
Vasileios Manolopoulos
597e944af9
Select out of the defaults syntect syntax themes in theme.ron (#2532) 2025-03-16 22:06:28 +01:00
Vasley
4031b0d1a7
Change links to point to gitui-org instead of extrawurst (#2538) 2025-03-16 15:33:28 +01:00
Wessam
4ad2c4b271
Dismiss commit msg key (#2563) 2025-03-16 15:32:43 +01:00
Lena
4ccdeed3a2
Add --logfile (#2539)
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2025-03-16 15:30:02 +01:00
Johannes Agricola
3c1e35eec7
Copy text using OSC52 (#2548)
* Copy text using OSC52 if X/Wayland methods fail
* Move Wayland/X string copying out of copy_string

Copying logic seems too nested to comprehend with the introcution of two
paths towards OSC52 otherwise.

---------

Co-authored-by: Naseschwarz <naseschwarz@0x53a.de>
Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
2025-03-15 09:33:54 +01:00
Lena
338dc2f4de
Improve syntax detection (#2524)
* Improve syntax detection

Currently, gitui prioritizes file extensions for syntax detection.
When a file lacks an extension (e.g. Makefile), or the extension
isn't tied to a specific format (e.g. .lock), it disables syntax
highlighting. Gitui will now try to detect the syntax from the entire
filename and the first line of the file using find_syntax_for_file().

---------

Co-authored-by: extrawurst <mail@rusticorn.com>
2025-02-19 14:13:47 +01:00
tommady
50c6562492
fix: File selector should jump back and highlight unstaged files (#2499)
Co-authored-by: extrawurst <mail@rusticorn.com>
2025-01-29 17:30:20 +01:00
extrawurst
99f6967144 prepare release 2025-01-14 21:03:20 +01:00
extrawurst
9847fe6e26 polish changelog 2025-01-13 22:29:21 +01:00
extrawurst
7ec62279e8
prepare for rc (#2479) 2025-01-13 22:26:14 +01:00
Nicholas R. Smith
94924db632
Support "Copy Path" operation in WSL (#2413) 2024-11-02 18:54:33 +01:00
extrawurst
e7be093c39 fix changelog 2024-10-18 18:08:36 +02:00