You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor: split App god-struct into domain sub-states
Moved 43 domain-owned fields off the App god-struct (down from 104 to
66 pub lines in src/app.rs) into six focused sub-structs. Each sub-state
owns its fields and the helper methods that operate purely on them.
App keeps thin shims where external call-sites used to dispatch
through its public surface.
New sub-states in src/app/:
- tunnel_state.rs (TunnelState) list, form, active, form_baseline,
pending_delete, summaries_cache
- status_state.rs (StatusCenter) status, toast, toast_queue and
the set_/tick_ helpers
- snippet_state.rs (SnippetState) store, form, pending, output,
param_form, pending_terminal,
form_baseline, pending_delete
- provider_state.rs (ProviderState) config, form, syncing, sync_done,
sync_had_errors, pending_delete,
sync_history, form_baseline
- form_state.rs (FormState) host, host_baseline, bulk_tag_editor,
bulk_tag_undo, pending_discard_confirm
- host_state.rs (HostState) ssh_config, list, patterns,
display_list, render_cache,
undo_stack, multi_select, sort_mode,
group_by, view_mode, group_filter,
group_tab_index, group_tab_order,
group_host_counts
Access patterns:
app.tunnels.*, app.status_center.*, app.snippets.*, app.providers.*,
app.forms.*, app.hosts_state.*
Pure move. No behaviour changes. No new features. Visual goldens
(apart from version string and What's New overlay embedding the
CHANGELOG) and Cargo.toml semver patch bump only.
Bumps version to 2.43.1.
Closes#36
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,10 @@
1
+
## 2.43.1 - 2026-04-18
2
+
3
+
- feat: Tighter foundations for faster, safer releases.
4
+
- change: App state is split into six focused domains (hosts, tunnels, snippets, providers, forms, status) so changes land in one place and are easier to reason about.
5
+
- change: New behaviour tests cover status routing, toast expiry and provider ordering, catching regressions earlier.
6
+
- change: Fewer surprise file reads at startup. Provider state loads explicitly in one place, so tests and tools run predictably.
7
+
1
8
## 2.43.0 - 2026-04-18
2
9
3
10
- feat: Confident edits on every host, shared lines included.
Copy file name to clipboardExpand all lines: Cargo.toml
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
[package]
2
2
name = "purple-ssh"
3
-
version = "2.43.0"
3
+
version = "2.43.1"
4
4
edition = "2024"
5
5
description = "Open-source terminal SSH manager and SSH config editor. Search hundreds of hosts, sync from 16 clouds, transfer files, manage Docker and Podman over SSH, sign short-lived Vault SSH certs and expose an MCP server for AI agents. Rust TUI, MIT licensed."
@@ -900,7 +900,7 @@ <h2 class="tagline">Open-source terminal SSH manager and SSH config editor for m
900
900
<summary>How do I troubleshoot connection problems?</summary>
901
901
<divclass="answer">Run with <code>--verbose</code> to enable debug logging, then <code>purple logs --tail</code> in another terminal. Logs are written to <code>~/.purple/purple.log</code> with fault domain prefixes: <code>[external]</code> for remote/tool errors, <code>[config]</code> for local config issues. Set <code>PURPLE_LOG=trace</code> for maximum detail.</div>
<summary>How do I troubleshoot connection problems?</summary>
1037
1037
<div class="answer">Run with <code>--verbose</code> to enable debug logging, then <code>purple logs --tail</code> in another terminal. Logs are written to <code>~/.purple/purple.log</code> with fault domain prefixes: <code>[external]</code> for remote/tool errors, <code>[config]</code> for local config issues. Set <code>PURPLE_LOG=trace</code> for maximum detail.</div>
0 commit comments