Skip to content

fix(mobile): align Agents empty-state New session with Home's primary action - #6353

Open
iscekic wants to merge 1 commit into
mainfrom
kwf/explorer-agents-the-empty-state-primary-action-new-sessio-fd6a9-c432
Open

iscekic wants to merge 1 commit into
mainfrom
kwf/explorer-agents-the-empty-state-primary-action-new-sessio-fd6a9-c432

Conversation

@iscekic

@iscekic iscekic commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator

Changelog for users

  • The Agents tab's empty state now shows its "New session" action as a filled primary button, matching Home's "New coding task" action.
  • The action's plus icon now uses the button's foreground color so it reads on the filled background.

Changelog for maintainers

  • The empty-state action changed from variant="outline" to variant="default", which renders bg-primary with text-primary-foreground, the variant Home's new-task action already uses.
  • The plus icon color changed from colors.foreground to colors.primaryForeground to stay legible on the filled background in light and dark themes.
  • Review first: the empty state's only action is the tab's single primary affordance; confirm it still opens the new agent composer.
  • Copy and className="max-w-full" are unchanged, so no translation catalog is affected.
  • A mounted test now asserts the action carries bg-primary (not bg-card) and tints the icon #ffffff.

E2E proof

[e1] Agents empty-state New session primary action — android; fresh empty account (e2e-empty-1789804980@example.com, signed out then login.sh); e1-empty-scene.log lines 10-13 show the empty Agents digest ('Nothing running right now', 'Start a coding task from your phone. Your sessions will appear here.', Button 'New session' [379,1326][701,1442]) and e1-scene.log line 1 'SCENE e1 OK' with the post-tap digest ('android.widget.EditText What would you like to work on?') proving the tap opens the composer; captures e1-agents-empty.png, e1-composer.png, e1-home-reference.png left to the visual reviewer; no UX-DEFECT observed.

[e1] Agents empty-state New session primary action — e2e-mobile-app/e1-composer.png

[e1] Agents empty-state New session primary action

[e1] Agents empty-state New session primary action — e2e-mobile-app/e1-home-reference.png

E2E proof — log excerpts

[e1] Agents empty-state New session primary action -> pass :: android; fresh empty account (e2e-empty-1789804980@example.com, signed out then login.sh); e1-empty-scene.log lines 10-13 show the empty Agents digest ('Nothing running right now', 'Start a coding task from your phone. Your sessions will appear here.', Button 'New session' [379,1326][701,1442]) and e1-scene.log line 1 'SCENE e1 OK' with the post-tap digest ('android.widget.EditText What would you like to work on?') proving the tap opens the composer; captures e1-agents-empty.png, e1-composer.png, e1-home-reference.png left to the visual reviewer; no UX-DEFECT observed.
/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-agents-the-empty-state-primary-action-new-sessio-fd6a9-c432/e2e-mobile-app/e1-scene.log
android.widget.TextView Auto Efficient tappable [347,721][546,767]
android.widget.TextView Run on tappable [37,857][1045,903]
android.widget.Button Run on: Cloud Agent tappable [37,921][909,1037]
android.widget.TextView Cloud Agent tappable [67,951][844,1007]
android.widget.Button Refresh tappable [928,921][1043,1037]
android.widget.TextView Run `kilo remote` on your computer, or `/remote` in a running CLI session, to control a local kilo process. tappable [36,1056][1044,1130]
android.widget.TextView Repository tappable [37,1176][1045,1222]
android.widget.Button Repository: Select repository tappable [37,1240][1043,1356]
android.widget.TextView Select repository tappable [67,1270][978,1326]
android.widget.Button Connect GitLab tappable [76,1423][1004,1469]
android.widget.TextView Connect GitLab tappable [76,1423][944,1469]
android.widget.TextView Connect GitLab in your browser, then return here to pick a repository. tappable [76,1497][1004,1589]
android.widget.Button Open GitLab tappable [76,1617][870,1732]
android.widget.TextView Open GitLab tappable [412,1651][594,1697]
android.widget.Button Refresh repositories tappable [888,1617][1004,1732]
android.widget.TextView Sandbox tappable [37,1818][1045,1864]
android.widget.Button Sandbox: Default · Cloudflare · Small tappable [37,1882][1043,1998]
android.widget.TextView Default · Cloudflare · Small tappable [67,1912][978,1968]
android.widget.TextView Changes tappable [37,2044][1045,2090]
android.view.View Changes tappable [37,2108][1043,2227]
android.widget.RadioButton Leave changes tappable [46,2117][540,2218]
android.widget.TextView Leave changes tappable [182,2144][403,2190]
android.widget.RadioButton Commit and push tappable [540,2117][1034,2218]
android.widget.TextView Commit and push tappable [656,2144][917,2190]
/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-agents-the-empty-state-primary-action-new-sessio-fd6a9-c432/e2e-mobile-app/e1-empty-scene.log
android.widget.TextView HOME tappable [13,2281][347,2320]
android.view.View Agents, tab, 2 of 3 tappable [360,2195][720,2337]
android.widget.TextView AGENTS tappable [373,2281][707,2320]
android.view.View Profile, tab, 3 of 3 tappable [720,2195][1080,2337]
android.widget.TextView PROFILE tappable [733,2281][1067,2320]
SCENE e1-empty OK
android.widget.LinearLayout com.kilocode.kiloapp:id/action_bar_root tappable [0,0][1080,2400]
android.widget.FrameLayout android:id/content tappable [0,0][1080,2400]
android.widget.TextView 0 LIVE tappable [58,149][850,186]
android.view.View Agents tappable [58,190][850,296]
android.widget.Button See all tappable [877,203][1023,242]
android.widget.TextView SEE ALL tappable [877,203][1023,242]
android.widget.ScrollView centered-state tappable [0,306][1080,2400]
android.view.ViewGroup centered-state-content tappable [0,958][1080,1442]
android.widget.TextView Nothing running right now tappable [295,1123][786,1188]
android.widget.TextView Start a coding task from your phone. Your sessions will appear here. tappable [56,1197][1025,1289]
android.widget.Button New session tappable [379,1326][701,1442]
android.widget.TextView New session tappable [476,1360][664,1406]
android.view.View Home, tab, 1 of 3 tappable [0,2195][360,2337]
android.widget.TextView HOME tappable [13,2281][347,2320]
android.view.View Agents, tab, 2 of 3 tappable [360,2195][720,2337]
android.widget.TextView AGENTS tappable [373,2281][707,2320]
android.view.View Profile, tab, 3 of 3 tappable [720,2195][1080,2337]
android.widget.TextView PROFILE tappable [733,2281][1067,2320]
Owner request

Explorer finding: agents: The empty-state primary action 'New session' is a low-emphasis outlined button while the same primary action on Home is a filled brand-yellow button, so the primary affordance is inconsistent across top-level tabs.

The user-agent explorer found this while using the app like a user.
One finding per item; the explorer never edits product code.

Flow: agents
Found on revision: fd04ca1

Repro:

  1. set this state first: the setup failed: -code t=1789796890 login.sh: phase=app-settle t=1789796932 login.sh: verify-code failed and the app is not signed in as e2e-empty-1789796648@example.com login.sh: failed with exit 1 (phase=app-settle)
  2. open the app on emulator-5554
  3. reach the screen the capture names (agents)
  4. the capture shows the defect named below

Observed: The empty-state primary action 'New session' is a low-emphasis outlined button while the same primary action on Home is a filled brand-yellow button, so the primary affordance is inconsistent across top-level tabs.
Expected: the screen renders without this defect

Evidence (from the device run):

Follow-ups (not changed here)

  • not proved live: Open the Agents tab with no running sessions (signed out or a fresh account so the live list is empty) and confirm the 'New session' button is a filled brand-yellow button, matching the 'New coding task' button on Home; tapping it opens the new agent composer. (no capture cited it)

Open findings (not fixed here)

  • not proved live: agents.png is no longer on the host that took it, so no publish can carry it

e1-agents-empty

… action

Explorer finding: agents: The empty-state primary action 'New session' is a low-emphasis outlined button while the same primary action on Home is a filled brand-yellow button, so the primary affordance is inconsistent across top-level tabs.

The user-agent explorer found this while using the app like a user.
One finding per item; the explorer never edits product code.

Flow: agents
Found on revision: fd04ca1

Repro:
1. set this state first: the setup failed: -code t=1789796890 login.sh: phase=app-settle t=1789796932 login.sh: verify-code failed and the app is not signed in as e2e-empty-1789796648@example.com login.sh: failed with exit 1 (phase=app-settle)
2. open the app on emulator-5554
3. reach the screen the capture names (agents)
4. the capture shows the defect named below

Observed: The empty-state primary action 'New session' is a low-emphasis outlined button while the same primary action on Home is a filled brand-yellow button, so the primary affordance is inconsistent across top-level tabs.
Expected: the screen renders without this defect

Evidence (from the device run):
- ~/.local/share/kwf/findings/explorer-agents-the-empty-state-primary-action-new-sessio-fd6a9c53/agents.png
@kilo-code-bot

kilo-code-bot Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (2 files)
  • apps/mobile/src/components/agents/live-session-list-empty-state.tsx
  • apps/mobile/src/components/agents/session-list-screen.mounted.test.tsx

Verified the empty-state action now mirrors apps/mobile/src/components/home/new-task-button.tsx (variant="default" + Plus color={colors.primaryForeground}), and the icon token resolves in both themes (#FFFFFF light, #1A1A10 dark). The added test's className/icon assertions are consistent with the mocked button variant and theme colors; no runtime, security, or memory-leak concerns in the changed lines.


Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0

Review guidance: REVIEW.md from base branch main

@iscekic

iscekic commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator Author

This description names a scenario the proof did not capture:

  • not proved live: Open the Agents tab with no running sessions (signed out or a fresh account so the live list is empty) and confirm the 'New session' button is a filled brand-yellow button, matching the 'New coding task' button on Home; tapping it opens the new agent composer. (no capture cited it)

A repeated proof run rebuilds the same evidence, so no proof run is dispatched for a named gap. Merging with this gap open is your decision.

@iscekic iscekic added the human-ready The PR is ready for human review. label Sep 19, 2026
@iscekic iscekic self-assigned this Sep 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

human-ready The PR is ready for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant