Replace Slint UI to restore native iOS interaction behavior #9

Closed
opened 2026-07-31 07:51:27 +00:00 by hugo · 2 comments
Owner

The Slint-based iOS UI does not provide the standard UIKit interaction behavior users expect: text fields lack reliable copy, paste, cut, selection, and long-press loupe behavior; pull-to-refresh does not look or behave like the native control; gesture handling is inconsistent; and returning from a detail screen resets the source list scroll position. Adding custom edit buttons or manually reproducing UIKit navigation behavior would be brittle workarounds. Replace the UI layer with UIKit while keeping application logic in Rust through UniFFI. Preserve current functionality and layout, use native text editing and refresh controls, keep list navigation state, use a flat list style, default repository filtering to All branches, and retain repeatable UI test coverage.

The Slint-based iOS UI does not provide the standard UIKit interaction behavior users expect: text fields lack reliable copy, paste, cut, selection, and long-press loupe behavior; pull-to-refresh does not look or behave like the native control; gesture handling is inconsistent; and returning from a detail screen resets the source list scroll position. Adding custom edit buttons or manually reproducing UIKit navigation behavior would be brittle workarounds. Replace the UI layer with UIKit while keeping application logic in Rust through UniFFI. Preserve current functionality and layout, use native text editing and refresh controls, keep list navigation state, use a flat list style, default repository filtering to All branches, and retain repeatable UI test coverage.
hugo added this to the first feature complete release milestone 2026-07-31 07:51:27 +00:00
hugo added the bug label 2026-07-31 07:51:27 +00:00
Author
Owner

Implemented in f201814. The Slint UI was replaced with UIKit backed by the existing Rust app logic through UniFFI. Native UIKit text fields restore the standard edit menu, selection, long-press, and paste behavior; UIRefreshControl provides native pull-to-refresh; navigation controllers retain list scroll position; and the flat iOS layout, All-branch default, native symbols, settings placement, and repeatable UI testing documentation are included. Verified in the iOS simulator and installed on the paired iPhone.

Implemented in f201814. The Slint UI was replaced with UIKit backed by the existing Rust app logic through UniFFI. Native UIKit text fields restore the standard edit menu, selection, long-press, and paste behavior; UIRefreshControl provides native pull-to-refresh; navigation controllers retain list scroll position; and the flat iOS layout, All-branch default, native symbols, settings placement, and repeatable UI testing documentation are included. Verified in the iOS simulator and installed on the paired iPhone.
hugo closed this issue 2026-07-31 07:54:00 +00:00
Author
Owner

Reverified f201814 on current main. All required Rust gates pass (format, warning-free check, Clippy, and 10 tests), and the arm64 simulator build succeeds on iPhone 17 Pro / iOS 26.5. Installed and launched the app; visually confirmed the native flat repository and issue lists, UIKit filter menu, native text and secure-text fields, navigation, and the All-branches default. The issue remains closed.

Reverified f201814 on current main. All required Rust gates pass (format, warning-free check, Clippy, and 10 tests), and the arm64 simulator build succeeds on iPhone 17 Pro / iOS 26.5. Installed and launched the app; visually confirmed the native flat repository and issue lists, UIKit filter menu, native text and secure-text fields, navigation, and the All-branches default. The issue remains closed.
Sign in to join this conversation.