Skip to content

The Android runner looks like the rest of the fleet - #5

Merged
addisdev merged 2 commits into
developfrom
feat/android-status-screen
Sep 5, 2026
Merged

addisdev merged 2 commits into
developfrom
feat/android-status-screen

Conversation

@addisdev

@addisdev addisdev commented Sep 5, 2026

Copy link
Copy Markdown
Owner

The Android agent was a text field, a button and a log. It now has the status
screen the rest of the fleet already had: device identity, the job it is
running, a live pulse trace, and the beacon's battery and thermal state read
at a glance rather than parsed out of a log line.

It also gets a launcher icon. The adaptive layers (background, foreground,
monochrome) were already in drawable/; what was missing was the pre-API-26
fallback, so a phone on Android 7 through 25 showed the default silhouette.
mipmap/ic_launcher.xml is that fallback, drawn from the same mark as the
collector's favicon and the repository's docs/img/mark.svg.

One unrelated commit rides along: the dashboard's job pills went back to words
alone, without the glyph, because the glyph and the word said the same thing
in half the width and the word survives a narrow column.

Verified

  • ./gradlew :app:testDebugUnitTest -Pfleet.skipNative passes, which is what
    CI runs.
  • npm test in collector/ passes end to end, covering the dashboard change.

🤖 Generated with Claude Code

addisdev and others added 2 commits September 5, 2026 14:46
A design pass proposed giving every job state a pill icon, and the icons are
drawn and sitting in icons.tsx: one circle per state, differing only inside, so
a column of them reads down cleanly.

They are not wired up. ui.tsx already carried the opposite rule with a better
argument behind it — device states are read across a whole shelf at a glance,
job status is read one row at a time — and a pill that is already a coloured
word does not get more legible for gaining a picture. Reverting the lookup and
leaving the drawings behind the comment, so the next person to want them finds
both the icons and the reason they were not used.

Device pills keep their icons, unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A phone on the shelf and the collector in a browser are one product, and until
now the Android runner was a title, two bare EditTexts, two buttons and a status
line on a default AppCompat background. This gives it the dashboard's screen.

The palette, theme and most shape drawables landed in 4ee7ab8 by accident — a
commit about waiting jobs swept up work in progress. This is the half that
makes them do anything:

  - activity_main is rebuilt as the dashboard's vocabulary at phone scale: a
    status hero over the mark's own pulse, the collector and device id as rows
    in a card rather than boxed inputs, three telemetry tiles, a job card that
    appears only when there is a job to name, and 48dp controls.
  - PulseTraceView draws the mark's trace left to right while the agent is in
    contact, and rests as a complete flat drawing when it is not. It honours
    ANIMATOR_DURATION_SCALE, so a device set to no animations gets none.
  - MainActivity binds the service's new phase and telemetry flows. The battery
    and thermal tiles read locally before the first beacon, because deciding
    whether to enrol a phone on 8% is a pre-start question, and read from the
    beacon afterwards, so they show what the collector was actually sent.
  - The launcher icon becomes adaptive: flat ink background, the phone and
    pulse inside the 66dp safe circle so no mask clips it, and a monochrome
    layer for themed icons. The status-bar icon becomes a stroke on the 24 grid;
    filled, it collapsed into a grey lozenge at notification size.

No verdict badge on a finished job: the engines post their own final rows and
this process never sees the outcome, so a green pill here would be a guess.

The status TextView keeps its id and its text, so the Maestro flows that read
the agent's state off this screen keep working.

Verified by build only. assembleDebug links every layout and drawable reference,
but three emulators wedged under this machine's load and the screen has not been
looked at on a device.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@addisdev
addisdev merged commit 8da2551 into develop Sep 5, 2026
3 checks passed
@addisdev
addisdev deleted the feat/android-status-screen branch September 5, 2026 18:59
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