Skip to content

Commit 4418214

Browse files
committed
Merge branch 'release/v2025.07'
2 parents fb6b57b + 8c48b96 commit 4418214

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+238
-134
lines changed

LICENSE

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
The MIT License (MIT)
22

3-
Copyright (c) 2024 sourcegit
3+
Copyright (c) 2025 sourcegit
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy of
66
this software and associated documentation files (the "Software"), to deal in
@@ -17,4 +17,4 @@ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
1717
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
1818
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
1919
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
* Clone/Fetch/Pull/Push...
2121
* Merge/Rebase/Reset/Revert/Amend/Cherry-pick...
2222
* Amend/Reword
23-
* Interactive rebase (Basic)
23+
* Interactive rebase
2424
* Branches
2525
* Remotes
2626
* Tags
@@ -47,7 +47,7 @@
4747
4848
## Translation Status
4949

50-
[![en_US](https://img.shields.io/badge/en__US-%E2%88%9A-brightgreen)](TRANSLATION.md) [![de__DE](https://img.shields.io/badge/de__DE-99.34%25-yellow)](TRANSLATION.md) [![es__ES](https://img.shields.io/badge/es__ES-99.74%25-yellow)](TRANSLATION.md) [![fr__FR](https://img.shields.io/badge/fr__FR-91.93%25-yellow)](TRANSLATION.md) [![it__IT](https://img.shields.io/badge/it__IT-97.35%25-yellow)](TRANSLATION.md) [![pt__BR](https://img.shields.io/badge/pt__BR-91.67%25-yellow)](TRANSLATION.md) [![ru__RU](https://img.shields.io/badge/ru__RU-99.21%25-yellow)](TRANSLATION.md) [![zh__CN](https://img.shields.io/badge/zh__CN-%E2%88%9A-brightgreen)](TRANSLATION.md) [![zh__TW](https://img.shields.io/badge/zh__TW-%E2%88%9A-brightgreen)](TRANSLATION.md)
50+
[![en_US](https://img.shields.io/badge/en__US-%E2%88%9A-brightgreen)](TRANSLATION.md) [![de__DE](https://img.shields.io/badge/de__DE-99.21%25-yellow)](TRANSLATION.md) [![es__ES](https://img.shields.io/badge/es__ES-99.87%25-yellow)](TRANSLATION.md) [![fr__FR](https://img.shields.io/badge/fr__FR-91.80%25-yellow)](TRANSLATION.md) [![it__IT](https://img.shields.io/badge/it__IT-%E2%88%9A-brightgreen)](TRANSLATION.md) [![pt__BR](https://img.shields.io/badge/pt__BR-91.53%25-yellow)](TRANSLATION.md) [![ru__RU](https://img.shields.io/badge/ru__RU-99.07%25-yellow)](TRANSLATION.md) [![zh__CN](https://img.shields.io/badge/zh__CN-%E2%88%9A-brightgreen)](TRANSLATION.md) [![zh__TW](https://img.shields.io/badge/zh__TW-%E2%88%9A-brightgreen)](TRANSLATION.md)
5151

5252
> [!NOTE]
5353
> You can find the missing keys in [TRANSLATION.md](TRANSLATION.md)

TRANSLATION.md

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
### de_DE.axaml: 99.34%
1+
### de_DE.axaml: 99.21%
22

33

44
<details>
@@ -9,21 +9,21 @@
99
- Text.Diff.First
1010
- Text.Diff.Last
1111
- Text.Preferences.AI.Streaming
12+
- Text.StashCM.SaveAsPatch
1213

1314
</details>
1415

15-
### es_ES.axaml: 99.74%
16+
### es_ES.axaml: 99.87%
1617

1718

1819
<details>
1920
<summary>Missing Keys</summary>
2021

21-
- Text.Diff.First
22-
- Text.Diff.Last
22+
- Text.StashCM.SaveAsPatch
2323

2424
</details>
2525

26-
### fr_FR.axaml: 91.93%
26+
### fr_FR.axaml: 91.80%
2727

2828

2929
<details>
@@ -88,41 +88,23 @@
8888
- Text.SHALinkCM.NavigateTo
8989
- Text.Stash.AutoRestore
9090
- Text.Stash.AutoRestore.Tip
91+
- Text.StashCM.SaveAsPatch
9192
- Text.WorkingCopy.CommitToEdit
9293
- Text.WorkingCopy.SignOff
9394

9495
</details>
9596

96-
### it_IT.axaml: 97.35%
97+
### it_IT.axaml: 100.00%
9798

9899

99100
<details>
100101
<summary>Missing Keys</summary>
101102

102-
- Text.AIAssistant.Regen
103-
- Text.AIAssistant.Use
104-
- Text.ApplyStash
105-
- Text.ApplyStash.DropAfterApply
106-
- Text.ApplyStash.RestoreIndex
107-
- Text.ApplyStash.Stash
108-
- Text.BranchCM.CustomAction
109-
- Text.BranchUpstreamInvalid
110-
- Text.Clone.RecurseSubmodules
111-
- Text.Configure.CustomAction.Scope.Branch
112-
- Text.Configure.CustomAction.WaitForExit
113-
- Text.DeleteRepositoryNode.Path
114-
- Text.DeleteRepositoryNode.TipForGroup
115-
- Text.DeleteRepositoryNode.TipForRepository
116-
- Text.Diff.First
117-
- Text.Diff.Last
118-
- Text.Preferences.AI.Streaming
119-
- Text.Repository.Notifications.Clear
120-
- Text.Stash.AutoRestore
121-
- Text.Stash.AutoRestore.Tip
103+
122104

123105
</details>
124106

125-
### pt_BR.axaml: 91.67%
107+
### pt_BR.axaml: 91.53%
126108

127109

128110
<details>
@@ -189,12 +171,13 @@
189171
- Text.SHALinkCM.NavigateTo
190172
- Text.Stash.AutoRestore
191173
- Text.Stash.AutoRestore.Tip
174+
- Text.StashCM.SaveAsPatch
192175
- Text.WorkingCopy.CommitToEdit
193176
- Text.WorkingCopy.SignOff
194177

195178
</details>
196179

197-
### ru_RU.axaml: 99.21%
180+
### ru_RU.axaml: 99.07%
198181

199182

200183
<details>
@@ -206,6 +189,7 @@
206189
- Text.Diff.First
207190
- Text.Diff.Last
208191
- Text.Preferences.AI.Streaming
192+
- Text.StashCM.SaveAsPatch
209193

210194
</details>
211195

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2025.06
1+
2025.07

src/Commands/ExecuteCustomAction.cs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,7 @@ public static void Run(string repo, string file, string args)
3131
}
3232
catch (Exception e)
3333
{
34-
Dispatcher.UIThread.Invoke(() =>
35-
{
36-
App.RaiseException(repo, e.Message);
37-
});
34+
Dispatcher.UIThread.Invoke(() => App.RaiseException(repo, e.Message));
3835
}
3936
}
4037

@@ -87,19 +84,14 @@ public static void RunAndWait(string repo, string file, string args, Action<stri
8784
var exitCode = proc.ExitCode;
8885
if (exitCode != 0)
8986
{
90-
var errMsg = builder.ToString();
91-
Dispatcher.UIThread.Invoke(() =>
92-
{
93-
App.RaiseException(repo, errMsg);
94-
});
87+
var errMsg = builder.ToString().Trim();
88+
if (!string.IsNullOrEmpty(errMsg))
89+
Dispatcher.UIThread.Invoke(() => App.RaiseException(repo, errMsg));
9590
}
9691
}
9792
catch (Exception e)
9893
{
99-
Dispatcher.UIThread.Invoke(() =>
100-
{
101-
App.RaiseException(repo, e.Message);
102-
});
94+
Dispatcher.UIThread.Invoke(() => App.RaiseException(repo, e.Message));
10395
}
10496

10597
proc.Close();

src/Commands/SaveChangesAsPatch.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,19 @@ public static bool ProcessRevisionCompareChanges(string repo, List<Models.Change
3737
return true;
3838
}
3939

40+
public static bool ProcessStashChanges(string repo, List<Models.DiffOption> opts, string saveTo)
41+
{
42+
using (var sw = File.Create(saveTo))
43+
{
44+
foreach (var opt in opts)
45+
{
46+
if (!ProcessSingleChange(repo, opt, sw))
47+
return false;
48+
}
49+
}
50+
return true;
51+
}
52+
4053
private static bool ProcessSingleChange(string repo, Models.DiffOption opt, FileStream writer)
4154
{
4255
var starter = new ProcessStartInfo();

src/Models/OpenAI.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public void Append(string text)
3636
{
3737
if (startIdx > 0)
3838
OnReceive(buffer.Substring(0, startIdx));
39-
39+
4040
var endIdx = buffer.IndexOf(">", startIdx + 1, StringComparison.Ordinal);
4141
if (endIdx <= startIdx)
4242
{

src/Models/Remote.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ public partial class Remote
88
{
99
[GeneratedRegex(@"^https?://([-a-zA-Z0-9:%._\+~#=]+@)?[-a-zA-Z0-9:%._\+~#=]{1,256}(\.[a-zA-Z0-9()]{1,6})?(:[0-9]{1,5})?\b(/[-a-zA-Z0-9()@:%_\+.~#?&=]+)+(\.git)?$")]
1010
private static partial Regex REG_HTTPS();
11-
[GeneratedRegex(@"^[\w\-]+@[\w\.\-]+(\:[0-9]+)?:[\w\-/~%]+/[\w\-\.%]+(\.git)?$")]
11+
[GeneratedRegex(@"^[\w\-]+@[\w\.\-]+(\:[0-9]+)?:([a-zA-z0-9~%][\w\-\./~%]*)?[a-zA-Z0-9](\.git)?$")]
1212
private static partial Regex REG_SSH1();
13-
[GeneratedRegex(@"^ssh://([\w\-]+@)?[\w\.\-]+(\:[0-9]+)?/[\w\-/~%]+/[\w\-\.%]+(\.git)?$")]
13+
[GeneratedRegex(@"^ssh://([\w\-]+@)?[\w\.\-]+(\:[0-9]+)?/([a-zA-z0-9~%][\w\-\./~%]*)?[a-zA-Z0-9](\.git)?$")]
1414
private static partial Regex REG_SSH2();
1515

1616
[GeneratedRegex(@"^git@([\w\.\-]+):([\w\-/~%]+/[\w\-\.%]+)\.git$")]

src/Models/RepositorySettings.cs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,6 @@ public bool IncludeUntrackedInLocalChanges
5050
set;
5151
} = true;
5252

53-
public DealWithLocalChanges DealWithLocalChangesOnCheckoutBranch
54-
{
55-
get;
56-
set;
57-
} = DealWithLocalChanges.DoNothing;
58-
5953
public bool EnableForceOnFetch
6054
{
6155
get;
@@ -68,12 +62,6 @@ public bool FetchWithoutTags
6862
set;
6963
} = false;
7064

71-
public DealWithLocalChanges DealWithLocalChangesOnPull
72-
{
73-
get;
74-
set;
75-
} = DealWithLocalChanges.DoNothing;
76-
7765
public bool PreferRebaseInsteadOfMerge
7866
{
7967
get;
@@ -116,12 +104,6 @@ public bool PushToRemoteWhenDeleteTag
116104
set;
117105
} = false;
118106

119-
public DealWithLocalChanges DealWithLocalChangesOnCreateBranch
120-
{
121-
get;
122-
set;
123-
} = DealWithLocalChanges.DoNothing;
124-
125107
public bool CheckoutBranchOnCreateBranch
126108
{
127109
get;

src/Native/Linux.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,16 @@ public void OpenTerminal(string workdir)
6565
{
6666
var home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
6767
var cwd = string.IsNullOrEmpty(workdir) ? home : workdir;
68+
var terminal = OS.ShellOrTerminal;
6869

6970
var startInfo = new ProcessStartInfo();
7071
startInfo.WorkingDirectory = cwd;
71-
startInfo.FileName = OS.ShellOrTerminal;
72+
startInfo.FileName = terminal;
7273

73-
if (OS.ShellOrTerminal.EndsWith("wezterm", StringComparison.OrdinalIgnoreCase))
74+
if (terminal.EndsWith("wezterm", StringComparison.OrdinalIgnoreCase))
7475
startInfo.Arguments = $"start --cwd \"{cwd}\"";
76+
else if (terminal.EndsWith("ptyxis", StringComparison.OrdinalIgnoreCase))
77+
startInfo.Arguments = $"--new-window --working-directory=\"{cwd}\"";
7578

7679
try
7780
{

0 commit comments

Comments
 (0)