Skip to content

Redesign app UI and streamline VPN connection controls - #263

Merged
yiguodev merged 60 commits into
mainfrom
dev-26.11.2-3
Nov 5, 2026
Merged

yiguodev merged 60 commits into
mainfrom
dev-26.11.2-3

Conversation

@yiguodev

@yiguodev yiguodev commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Replace the wide detail workspace with consistent navigation and single-column pages across mobile, tablet and desktop.

- Advanced tabs and wide detail columns
+ Connect | Servers | Routing | VPN tunnel | Xray | Settings
+ Independent navigation stacks, shared app bars, cards and page actions
  • Separate automatic scopes, fixed nodes and complete configurations. Keep browsing separate from selection, expose fallback, remember the ordinary connection plan, and allow eligible nodes to start without a latency result.
  • Reorganize server and routing details while preserving manual node ordering, provider configuration favorites and cancellable subscription speed tests. Centralize personal Raw JSON creation under Add Servers; expand JSON workspaces and guard unsaved drafts.
  • Replace iOS home-screen and Control Center actions with one VPN button. Interactive widgets on iOS 17+ and controls on iOS 18+ reuse the last prepared configuration in the background, opening the app when foreground setup or authorization is required. iOS 16 retains navigation-only widgets.
  • Clear managed logs before an admitted new Core start, discard stale starts and reset the log viewer for each session. Make Android tile long-press open the app, and preserve legacy SOCKS sharing compatibility.
  • Raise the iOS minimum to 16.0, remove retired UI flows, and clarify the provider exception: own-service-only customized clients, no arbitrary third-party configurations/subscriptions, and accessible OneXray attribution.

Evidence

  • Before: Wide layouts used separate detail columns; JSON editor scrollbars could cover the frame, and server categories had weak selection contrast.
    After: Single-column native page checks and editor-frame regressions pass; category selection uses a distinct blue fill with readable text.
  • Recorded checks for head 3eb98a9f: static analysis reports no issues; 68 selector/theme/server tests and 41 connection/provider regressions pass. Production Debug builds from lib/main.dart pass for iOS Simulator, macOS and Android APK.
  • Native UI checks use existing iPhone/iPad simulators and ordinary macOS with isolated data. Earlier branch validation includes signed iOS 27.2 background Widget/control actions with controlled HTTP responses. The complete older-iOS/device matrix remains unverified; macOS VPN was not started.
  • The complete branch diff passes git diff --check.

Merge Danger

Door: Two-way

No database schema migration is introduced. Previous managed logs are intentionally cleared at the next admitted start and cannot be recovered.

Blast Radius: Cross-platform

Navigation, drafts, connection admission and the Flutter/native bridge change together; rebuild the app and Widget extension together. iOS 15 devices are no longer eligible for this version. Background actions deliberately reuse the last prepared configuration rather than recompiling current database selections. The provider exception changes downstream eligibility; the upstream GPL client retains its general configuration and subscription features.

yiguo added 30 commits November 3, 2026 12:51
…w routing

Keep one scroll surface with reachable actions on short and large-text screens. Explain routing owned by complete Raw configurations without changing ordinary routing preferences.

Validation: 223 connect, routing and launch tests passed; flutter analyze reports no issues.
…olumn pages

Separate browsing from explicit selection and preserve full-page draft guards. Isolate damaged routing assets and ignore stale loads. Keep server geography retired and Smart direct-region selection unchanged.

Validation: 178 server tests and 223 connect/routing/launch tests passed; flutter analyze reports no issues. Native UI acceptance remains the final stage.
Expose read-only runtime diagnostics, preserve platform capability gates, keep mobile viewer controls touchable and improve muted text contrast.

Validation: 402 advanced/settings/shared/data tests passed with one existing platform-dependent skip; layer dependencies and flutter analyze passed. Native acceptance is deferred to the final stage.
…eset

Keep local preferences, permissions and backup bindings during resource cleanup. Retain stop confirmation, producer suspension and transactional file/database rollback; document the new single-column navigation and data contracts.

Validation: advanced/settings/shared/data suite passed 402 tests with the existing Linux arm64 locale skip; cleanup, backup and preference regressions passed; flutter analyze and layer dependencies passed.
…r catalogs

Build auxiliary entry-count catalogs per row. Preserve database stream failures and strict rejection of a selected damaged custom route without silently changing traffic mode.

Validation: two real SQLite regression tests passed; flutter analyze reports no issues.
Keep Material/Shad theme mapping, native sizing and typography checks. Allow failed probes in tray selections while preserving unreadable-resource and busy-state rejection.

Validation: 19 theme and tray tests passed.
…g imports

Let go_router record a pushed page before switching to Settings, coalesce requests and recheck modal admission. Keep incoming links queued until a manual import/editor workflow closes, then deliver them once in FIFO order.

Validation: all 40 main navigation tests passed, including pre-frame branch switching, draft preservation and late popup cancellation.
Read the active route match and verify its Page key before adding phone root Settings. Imperative preview routes have no GoRouterState association and must never enter its ancestor lookup.

Validation: reproduced the original hang with a bounded 10-second real-router test; PageAppBar 5/5, main 42/42 and import 32/32 passed. Native iPhone replay displayed the same Raw preview, saved it and returned normally; flutter analyze passed.
Use one shared switch wrapper so native accessibility agrees with actual interaction. Keep import previews neutral until committed, report saved subscription resource types, clarify cleanup scopes and shorten the Chinese empty-state hint.

Validation: shared switch semantics reproduced red then passed; 274 related page tests and 39 import/cleanup/switch tests passed. flutter analyze reports no issues. Native accessibility and final wording are rechecked in the final UI stage.
Validate the production UI on isolated iPhone 16e and iPad Pro 13 simulators and the ordinary macOS audit instance. Verify single-column pages, JSON dirty/error handling, backup restore, plan switching, unknown-latency startup and real simulator Core traffic. Keep macOS VPN off and preserve the existing SE instance.

Final validation: flutter test (2068 passed, 5 existing conditional skips); flutter analyze (no issues); layer dependency check; git diff --check; signed iOS Simulator build and production-entry macOS debug build. Native evidence and explicit device/system limitations are recorded in ../references/onexray-redesign-20261103/research/native-ui-acceptance.md.
Match the approved prototype's type rhythm, semantic colors, CTA shapes, inputs, switches and tabs through the shared Material and Shad themes. Preserve the original AppFontFamily and shadcn bundled Geist/GeistMono without adding NotoSansSC or changing individual page structures.

Validate with 2068 passing tests and 5 existing conditional skips, clean analysis and layer checks, signed iOS Simulator and macOS debug builds, and final native theme screenshots on phone, tablet and an isolated macOS instance. Keep macOS VPN off and restore the production macOS entry after the audit.
yiguo added 25 commits November 4, 2026 16:26
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-05T07:24:55.832145Z e0edc49 New commits
🔒 Security Review ✅ Completed 2026-11-05T07:26:38.859709Z e0edc49 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

yiguo added 2 commits November 5, 2026 15:01
Linux uses Copy link instead of Share, which adds a wrapped tool row at phone width. A taller viewport lets the capped footer expand, so only the remaining height belongs to the editor. Assert that allocation and footer anchoring rather than assuming fixed chrome height.
@yiguodev
yiguodev merged commit c0fbca7 into main Nov 5, 2026
1 check passed
@yiguodev
yiguodev deleted the dev-26.11.2-3 branch November 5, 2026 09:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant