conduit/ios/RunnerTests
cogwheel d04b0b7833
Some checks failed
CI / Mobile app (analyze + test) (push) Has been cancelled
CI / Android native tests (push) Has been cancelled
CI / Dart packages (push) Has been cancelled
CI / Web-safe packages (push) Has been cancelled
CI / Localization (push) Has been cancelled
Put every account and connection on one Accounts page, and add them from one sheet (#828)
* List every account and connection on one Accounts page, reached from a card atop Settings

Accounts now has a card for each Open WebUI server, its accounts under it
with the active one checked, then Hermes with its connections and Direct
with its providers; each card's top row opens its page, and + adds
another. A server's page lists its accounts to sign out of beside its
addresses, and goes once the last of them is gone.

Settings opens on a card naming who it is for, leading to Accounts, with
Add account under it. Profile joins the account's own group, the Hermes,
Direct and Connect rows leave for Accounts, and Sign out leaves only the
active account when there are several; signing out of all moved to
Accounts.

* Add and edit accounts and connections in one sheet, a tab for each kind

Add account opens a sheet with Open WebUI, Hermes and Direct tabs. Open
WebUI continues on a saved server or a new one. Hermes and Direct host
their editors: Connect tests a new Hermes connection, saves it, and puts
it in use with Hermes on; Direct tests and saves a provider. Each tab
keeps what was typed while another is open, and an editor's further
options open as pages inside the sheet, which grows to hold them.

A Direct provider on the Accounts page, or a Hermes connection held
there, opens the same sheet to edit it.

* Enter a new Open WebUI server in the account sheet, and sign in once it answers

The Open WebUI tab holds the connection form itself: the address, and
the self-signed, mutual TLS and header options. It checks the server in
the sheet, saying there when it does not answer; once it does, the sheet
hands the server to the connection page, which goes straight on to its
sign-in. A server behind a proxy goes on to the proxy's sign-in from
there, and a saved server's Continue connects on opening.

* Open Accounts inside the native Settings sheet, from a card naming whom it is for

On iOS, Settings now opens on the same account card as elsewhere: whom
it is for, where, and how many others, with Add account under it. The
card pushes a native Accounts page inside the sheet, a card for each
Open WebUI server with its accounts, then Hermes and Direct. The account
or connection in use is checked; tapping another switches to it once
the sheet has gone. A server's own row opens its page, a Direct provider
its editor, and + adds any kind. The account's own rows gather under
Account, and Sign out is single, as in the Flutter Settings.

Sheet rows can now show a round picture or initials, a check, and the
accent color, and a page can carry a bar button that closes the sheet
to act.

* Keep the Accounts page's + once its rows refresh, and drop chevrons from action rows

The native Accounts page refreshes its rows as it appears, and the
refresh rebuilt the page without its bar button: + never showed. A
patch now keeps it. The Settings root also honors a row's own
disclosure choice, so Add account, which opens no page, has no chevron.

The account sheet's close button is drawn in Flutter: the native glass
toolbar button rendered as a flat grey square over the sheet.

Found driving the app on an iOS simulator against two Open WebUI
servers, three accounts and a Direct provider.

* Open the account sheet the rest of the way when its form is dragged up

A drag on the form lifts the sheet before it scrolls anything, and the
sheet snaps to its nearest size when let go. A short drag ended nearer
the opening size than the top, so the sheet settled back where it began
and the form had not moved: scrolling seemed to do nothing. A drag that
lifted the sheet now carries it to the top, where the form scrolls;
dragging it down still settles or closes it as before.

* Keep the account sheet tests' saved Hermes connection out of the next file's tests

CI runs test files together in shards, sharing one isolate. The sheet
tests saved a Hermes connection in the preferences store and left it
there, and the Settings card counts Hermes connections in its "+N", so
the profile tests that followed read one too many. The sheet tests now
put the store back after each test, and the profile tests no longer
read Hermes connections from it.

* Keep the sheet's Hermes Connect until it finishes, and its handoffs to a page still there

- A Connect that saved the new Hermes connection but failed to put it in
  use, or to turn Hermes on, left the button as Save: the next press only
  saved, and the connection never came into use. The sheet's form stays
  the adding one, and Connect runs the whole sequence again.
- A server the sheet named that could not be read went on to connect with
  no address, asking for one over the reason it was empty.
- A proxy answer that came back after the sheet closed still handed the
  server on from the closed sheet.
- The Czech Continue with reads as continuing with a server, not going to
  one.

* Lay out the sheet's Hermes loading state, switch before enabling Hermes, and keep one Save

- Editing an inactive Hermes connection in the account sheet waits for it
  to load, and that wait, or its retry after a failed read, was a page of
  its own that the sheet's list could not lay out. It is plain content in
  the sheet.
- Picking a Hermes connection while Hermes was off turned Hermes on first,
  with the connection it was meant to leave; a switch that then failed
  left that one on and in use. It now switches first.
- Editing a Direct provider in the sheet showed two Save buttons outside
  iOS: the form's own and the sheet's. The sheet's stands in only for
  iOS's toolbar Save.
- With Direct primary, Hermes in use and no Open WebUI user, the native
  account card named the Hermes connection beside Direct's avatar. Its
  avatar now follows the same choice as its text.
2026-10-09 22:32:09 +05:30
..
RunnerTests.swift Put every account and connection on one Accounts page, and add them from one sheet (#828) 2026-10-09 22:32:09 +05:30