Skip to content

Commit b1aba44

Browse files
ArtTrailclaude
andcommitted
Release v2.6.2 — Install/Reinstall Python button + macOS initial release
- Button now relabels itself: 'Download & Install Python' when Python is absent, 'Reinstall Python' when Python is already detected - Version bumped to 2.6.2 across all version strings and footer - Revision history and User Guide updated accordingly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent ac9aba7 commit b1aba44

8 files changed

Lines changed: 19 additions & 9 deletions

App.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public override void OnFrameworkInitializationCompleted()
2121
{
2222
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
2323
{
24-
SessionLogService.Initialize("v2.6.1");
24+
SessionLogService.Initialize("v2.6.2");
2525

2626
// Avoid duplicate validations from both Avalonia and the CommunityToolkit.
2727
// More info: https://docs.avaloniaui.net/docs/guides/development-guides/data-validation#manage-validationplugins

ViewModels/ExoticSetupViewModel.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public partial class ExoticSetupViewModel : ViewModelBase
2727
// ── Button enable flags ────────────────────────────────────────────────────
2828
[ObservableProperty] private bool _canCheck = true;
2929
[ObservableProperty] private bool _canGetPython = false;
30+
[ObservableProperty] private string _getPythonLabel = "Download & Install Python";
3031
[ObservableProperty] private bool _canInstallExotic = false;
3132
[ObservableProperty] private bool _canUninstallExotic = false;
3233
[ObservableProperty] private bool _canInstallBranch = false;
@@ -72,6 +73,7 @@ private async Task CheckSystem()
7273
ExoticStatusIcon = "✗";
7374
ExoticStatus = "Cannot check — Python required";
7475
HeadlineText = "Python is not installed. Download and install it below, then install EXOTIC.";
76+
GetPythonLabel = "Download & Install Python";
7577
CanGetPython = true;
7678
}
7779
else
@@ -87,7 +89,8 @@ private async Task CheckSystem()
8789
Log(" Click Get Python to download and install a fresh copy.");
8890
ExoticStatusIcon = "✗";
8991
ExoticStatus = "Cannot check — Python is broken";
90-
HeadlineText = "Python installation is corrupt. Click Get Python to reinstall.";
92+
HeadlineText = "Python installation is corrupt. Click Reinstall Python to reinstall.";
93+
GetPythonLabel = "Reinstall Python";
9194
CanGetPython = true;
9295
return;
9396
}
@@ -135,6 +138,8 @@ private async Task CheckSystem()
135138
HeadlineText = "Python is ready. Click Install EXOTIC to continue.";
136139
CanInstallExotic = true;
137140
}
141+
GetPythonLabel = "Reinstall Python";
142+
CanGetPython = true;
138143
}
139144
}
140145
catch (OperationCanceledException) { HeadlineText = "Cancelled."; }

ViewModels/MainWindowViewModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ namespace TransitLab.ViewModels;
1919

2020
public partial class MainWindowViewModel : ViewModelBase
2121
{
22-
public string Version { get; } = "2.6.1";
23-
public string Title { get; } = "TransitLab v2.6.1";
22+
public string Version { get; } = "2.6.2";
23+
public string Title { get; } = "TransitLab v2.6.2";
2424

2525
public ExoticSetupViewModel ExoticSetup { get; } = new();
2626
public MObsViewModel MObs { get; } = new();

Views/AboutView.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
Text="TransitLab"
1111
HorizontalAlignment="Center"/>
1212
<TextBlock Classes="hint"
13-
Text="Version 2.6.1"
13+
Text="Version 2.6.2"
1414
HorizontalAlignment="Center"
1515
Margin="0,4,0,0"/>
1616

Views/MainWindow.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
<!-- ── Bottom attribution bar ───────────────────────────────────── -->
9393
<Border DockPanel.Dock="Bottom" Padding="0,2,10,4">
9494
<TextBlock Classes="hint"
95-
Text="© Art Trail 2026 · TransitLab v2.6.1 · Powered by EXOTIC (Zellem, Pearson, Blaser et al. 2020, PASP 132)"
95+
Text="© Art Trail 2026 · TransitLab v2.6.2 · Powered by EXOTIC (Zellem, Pearson, Blaser et al. 2020, PASP 132)"
9696
HorizontalAlignment="Right"/>
9797
</Border>
9898

Views/RevisionHistoryView.axaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77

88
<StackPanel Spacing="6" Margin="32,20,32,24">
99

10+
<!-- ── v2.6.2 ─────────────────────────────────────────────────────── -->
11+
<TextBlock Classes="h2" Text="v2.6.2 — 2026-04-24" Margin="0,0,0,4"/>
12+
<TextBlock TextWrapping="Wrap" Text="• Change: macOS initial release. No functional changes to the Windows version." Margin="0,0,0,4"/>
13+
<TextBlock TextWrapping="Wrap" Text="• Improvement: The 'Download &amp; Install Python' button in Python &amp; EXOTIC Setup now relabels itself to 'Reinstall Python' when Python is already detected, making it clear the button can be used to repair a corrupt Python installation. The button is always enabled after Check System runs." Margin="0,0,0,12"/>
14+
1015
<!-- ── v2.6.1 ─────────────────────────────────────────────────────── -->
1116
<TextBlock Classes="h2" Text="v2.6.1 — 2026-04-23" Margin="0,0,0,4"/>
1217
<TextBlock TextWrapping="Wrap" Text="• Internal: project renamed from ExoticLauncher to TransitLab throughout — namespaces, assembly name, and all source file references. No functional changes." Margin="0,0,0,4"/>

Views/Tabs/InstructionsView.axaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,8 @@
257257
<TextBlock TextWrapping="Wrap" Text="• The Python &amp; EXOTIC Setup wizard walks you through installing, updating, or repairing Python and EXOTIC. Open it from Tools → Python &amp; EXOTIC Setup in the menu bar."/>
258258
<TextBlock TextWrapping="Wrap" Margin="20,4,0,0" FontWeight="SemiBold" Text="Check System"/>
259259
<TextBlock TextWrapping="Wrap" Margin="20,0,0,0" Text="Scans for an existing Python installation (≥ 3.8) and checks whether EXOTIC is installed. Shows the detected version and path for each. Run this first — it enables the other buttons based on what is found."/>
260-
<TextBlock TextWrapping="Wrap" Margin="20,4,0,0" FontWeight="SemiBold" Text="Download &amp; Install Python"/>
261-
<TextBlock TextWrapping="Wrap" Margin="20,0,0,0" Text="Downloads the Python 3.10.11 installer to your Temp folder (progress bar shown) and runs a silent installation. Enabled only when Python is not found."/>
260+
<TextBlock TextWrapping="Wrap" Margin="20,4,0,0" FontWeight="SemiBold" Text="Download &amp; Install Python / Reinstall Python"/>
261+
<TextBlock TextWrapping="Wrap" Margin="20,0,0,0" Text="Downloads the Python 3.10.11 installer to your Temp folder (progress bar shown) and runs a silent installation. This button is always enabled after Check System runs. Its label changes to 'Reinstall Python' when Python is already detected — use it to repair a corrupt or broken Python installation without affecting EXOTIC or other packages."/>
262262
<TextBlock TextWrapping="Wrap" Margin="20,4,0,0" FontWeight="SemiBold" Text="Install EXOTIC"/>
263263
<TextBlock TextWrapping="Wrap" Margin="20,0,0,0" Text="Upgrades pip, installs the required prerequisite packages (setuptools, wheel), then installs or upgrades EXOTIC via pip and streams the full output to the log box. Use this for first-time installs and routine upgrades. Enabled once Python is detected."/>
264264
<TextBlock TextWrapping="Wrap" Margin="20,4,0,0" FontWeight="SemiBold" Text="Uninstall EXOTIC"/>

Views/Tabs/SetupView.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
Command="{Binding CheckSystemCommand}"
6666
IsEnabled="{Binding CanCheck}"/>
6767
<Button Classes="toolbar" Margin="0,0,8,4"
68-
Content="Download &amp; Install Python"
68+
Content="{Binding GetPythonLabel}"
6969
Command="{Binding GetPythonCommand}"
7070
IsEnabled="{Binding CanGetPython}"/>
7171
<Button Classes="toolbar" Margin="0,0,8,4"

0 commit comments

Comments
 (0)