Commit Graph
43 Commits
Author SHA1 Message Date
Loren Eteval b15fa6bfe6 Remove obsolete unsupported-platform exit path
Route startup failures through the normal fatal-error flow now that
desktop startup no longer rejects systems without a tray. Remove the
unused semantic exit code and its generated translations and tests.

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-24 18:41:14 +08:00
Loren Eteval db3587ace7 Harden desktop startup and singleton election
Use an atomic lock-backed election for primary-instance startup,
distinguish live peers from stale endpoints, and bound handoff retries.
Keep the application usable when a desktop has no system tray and cover
first-launch races, stale recovery, and visible-window behavior.

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-24 18:40:52 +08:00
Loren Eteval 1dc0d92c1a Scope DNS resolver to connection lifecycle
Create and dispose the DNS resolver with its owning connection manager
instead of at module import time. Make cleanup explicit and keep
architecture and external-core tests aligned with injected resolver
ownership.

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-24 18:40:16 +08:00
Loren Eteval cac765ca81 Fix transient Qt ownership in packaged builds
Retain asynchronous dialogs only while visible, use receiver-aware weak
signal dispatch for transient editors, and release registries on native
destruction. Add native and packaged lifetime probes that distinguish
live-wrapper growth from unavailable binding diagnostics.

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-24 18:39:45 +08:00
Loren Eteval 16282505f6 Restore canonical macOS window geometry
Ignore the transient 640x480 Qt fallback geometry on macOS and restore
the application default instead, while preserving deliberate user-sized
windows.

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-24 18:38:07 +08:00
Loren Eteval f92c23f127 Stabilize endpoint map rendering
Render the endpoint map from a local, theme-aware style, validate
coordinates, and handle optional or failed WebEngine renderers without
destabilizing the page. Keep the endpoint tests aligned with the
resulting map state contract.

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-24 18:37:47 +08:00
Loren Eteval 45ddb3a725 Bound and adapt core output draining
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-23 11:26:20 +08:00
Loren Eteval 6750cd0402 Bound long-lived service retention
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-23 11:26:08 +08:00
Loren Eteval 81e05829d9 Expand test coverage and fix lifecycle contracts
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-23 08:55:24 +08:00
Loren Eteval 35c4c7c548 Use per-instance once-only geometry preparation
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-23 07:55:05 +08:00
Loren Eteval 8c01932843 Refine application dialog presentation lifecycle
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-23 07:27:38 +08:00
Loren Eteval 0886118130 Refine top-level window geometry lifecycle
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-22 23:31:33 +08:00
Loren Eteval b89f900758 Fix native runtime lifecycle ordering
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-22 21:28:19 +08:00
Loren Eteval 3c0b3def25 Fix WebEngine profile lifetime ordering
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-22 21:28:19 +08:00
Loren Eteval d57e920e4d Refine Hysteria2 editor layout
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-22 21:28:19 +08:00
Loren Eteval 1ae88d09e0 Audit application stylesheet state interactions
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-22 21:28:19 +08:00
Loren Eteval 1b3692ec46 Refactor QR code generation and presentation
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-22 21:28:19 +08:00
Loren Eteval 98e2600248 Make combo boxes fit translated content
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-22 21:28:19 +08:00
Loren Eteval 35e579b686 Make routing selector fit translated content
Add opt-in content-aware sizing to AppQComboBox and refresh its geometry
after retranslation. Apply it to the routing selector while preserving
the semantic selection and avoiding synthetic routing changes.

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-22 21:28:09 +08:00
Loren Eteval 89f7403b47 Refine proxy editor layouts and option handling
Centralize grid placement helpers and use them to keep Xray and Hysteria
editor forms compact and consistent. Preserve unknown combo-box values
so loading and saving newer protocol options does not silently discard
configuration data.

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-22 21:28:09 +08:00
Loren Eteval 3c6502e3f5 Refine Hysteria2 editor field layout
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-21 16:05:33 +08:00
Loren Eteval f8d01633c3 Preserve combo box focus border on hover
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-21 15:38:48 +08:00
Loren Eteval 8c41c64105 Refactor process plugin registry ownership
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-21 15:25:39 +08:00
Loren Eteval 02a9851a56 Refine Fluent message box content hierarchy
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-21 15:13:16 +08:00
Loren Eteval 48b3231081 Rename Xray asset widget to list view
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-21 13:43:06 +08:00
Loren Eteval c47397a0ce Test backend editor compatibility
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-21 12:21:30 +08:00
Loren Eteval 698c279927 Add UI support for the latest Hysteria2 core
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-21 11:02:28 +08:00
Loren Eteval e860c4d7a3 Update protocol editor tests and guidance
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-20 21:48:46 +08:00
Loren Eteval ede92d899e Refine scoped architecture guidance
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-20 20:14:22 +08:00
Loren Eteval 44744d6da4 Clarify external command timeout ownership
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-20 20:14:09 +08:00
Loren Eteval 5526da7267 Expand regression test coverage
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-20 19:37:50 +08:00
Loren Eteval d8b788b00e Add scoped repository guidance
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-20 19:35:06 +08:00
Loren Eteval 2d9a03668c Update test suite guidance
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-20 19:34:45 +08:00
Loren Eteval 6f1ab0dc20 Centralize subscription workflows
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-19 22:02:57 +08:00
Loren Eteval 936a5b3664 Add proxy endpoint information
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-19 11:02:53 +08:00
Loren Eteval c9f0c3ed3c Replace editor checkboxes with Fluent switches
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-17 21:13:56 +08:00
Loren Eteval bcefbe6b86 Show progress while processing logs
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-17 20:47:32 +08:00
Loren Eteval 394f5c6313 Add persistent log viewer preferences
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-17 20:21:41 +08:00
Loren Eteval 44cfd599b1 Optimize lazy log rendering and tail following
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-17 19:21:47 +08:00
Loren Eteval 2ead6120d9 Add scoped repository agent guidance
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-17 18:20:29 +08:00
Loren Eteval 8510a0cb9b Fix native TUN ownership semantics
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-17 18:19:55 +08:00
Loren Eteval 7479469ceb Expand application test coverage
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-17 15:42:59 +08:00
Loren Eteval ca3de8586e Add project tests
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
2026-08-17 15:42:59 +08:00