Skip to content

fix(web): make hosted clients installable on Android - #18269

Closed
mynameistito wants to merge 4 commits into
pingdotgg:mainfrom
mynameistito:feat/android-nightly-pwa-installable-17781
Closed

mynameistito wants to merge 4 commits into
pingdotgg:mainfrom
mynameistito:feat/android-nightly-pwa-installable-17781

Conversation

@mynameistito

@mynameistito mynameistito commented Oct 11, 2026 •

Copy link
Copy Markdown

Problem

Issue #17781 reports that Android Chrome launches the hosted Nightly client with its browser header instead of as a standalone app. The manifest already asks for standalone display, but it lacks an app name and the 192×192 and 512×512 icons Chrome needs to offer an installable web app.

Change

Add the manifest name and short name, plus branded 192px and 512px icons. Extend the existing icon export and copy paths so development, Nightly, and production builds all provide the assets. Update the install guide to distinguish Android Chrome's Install app option from a home-screen shortcut. A service worker isn't needed for this installability fix.

Scope and approval

This addresses the single installability bug in #17781. The asset-pipeline changes are needed to serve the manifest's icons across the existing build brands; there are no changes to native Android distribution or offline behavior. I found no explicit maintainer approval, so this relies on the focused, obvious bug-fix exception in CONTRIBUTING.md. Maskable artwork and channel-specific install identities are outside this change.

Verification

  • Tested the PR locally on Node 24.21.0 with pnpm exec vp run dev, exposed the web app through a Cloudflare Quick Tunnel, and checked the install/launch behavior in Android Chrome.
BeforeAfter
t3code-18269-before.mp4

Home-screen shortcut retains the browser header.
t3-code-18269-after.mp4

Installed app opens without the browser header.

Tested locally with cloudflared.

  • vp fmt --check reported the changed files are formatted.

Created with GPT-6 Luna in the OpenCode harness.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Oct 11, 2026

Copy link
Copy Markdown
Member

Note

This comment is posted by Julius' dot

The manifest and icon checks don't show that Android Chrome installs and launches this change without the browser header. #17781 supplies a before screenshot, but this PR has no after screenshot or installation/launch recording. Closing under the verification requirement. Check the changed build in Android Chrome, attach the after screenshot and a short recording showing installation and standalone launch, and request reconsideration.

@coderabbitai

coderabbitai Bot commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: b7561c04-9d82-4431-a148-e732f53c5699
📥 Commits

Reviewing files that changed from the base of the PR and between 0878e3a and 37d6554.

⛔ Files ignored due to path filters: 8
  • apps/web/public/web-app-icon-192.png is excluded by !**/*.png
  • apps/web/public/web-app-icon-512.png is excluded by !**/*.png
  • assets/dev/blueprint-web-app-192.png is excluded by !**/*.png
  • assets/dev/blueprint-web-app-512.png is excluded by !**/*.png
  • assets/nightly/nightly-web-app-192.png is excluded by !**/*.png
  • assets/nightly/nightly-web-app-512.png is excluded by !**/*.png
  • assets/prod/t3-black-web-app-192.png is excluded by !**/*.png
  • assets/prod/t3-black-web-app-512.png is excluded by !**/*.png
📒 Files selected for processing: 1
  • docs/user/install.md

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

📝 Walkthrough

The web app manifest now names T3 Code and references 192×192 and 512×512 icons. Branded icon generation and web asset overrides cover development, nightly, and production builds. Tests and installation documentation are updated.

Changes: Web app installation assets

Layer / File(s) Summary
Generate and map branded web app icons
scripts/lib/brand-assets.ts, scripts/export-brand-icons.ts, scripts/lib/brand-assets.test.ts
Brand asset paths, export variants, and web overrides include 192×192 and 512×512 icons for development, nightly, and production. Tests check the corresponding output mappings.
Set manifest icons and document installation
apps/web/public/manifest.webmanifest, scripts/lib/brand-assets.test.ts, docs/user/install.md
The manifest adds T3 Code names and references the new icons. Tests check manifest settings and icon dimensions. Installation instructions cover Chrome on Android and desktop and specify the HTTPS or localhost requirement.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to 37d65

The manifest icons and installation guidance are consistent with the supplied evidence. No material issue remains to resolve before merge.

### Architecture Summary

Architecture risk: 🔵 Low · up to 37d65

The change affects 3 systems.

Changed systems: scripts, apps/web, docs

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — scripts (service) was modified; 3 changed files map to changed impact.
  • observed — apps/web (ui) was modified; 1 changed file maps to changed impact.
  • observed — docs (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in apps/web/public/manifest.webmanifest: The manifest adds name and short_name, both set to T3 Code.
  • observed — Modified behavior in apps/web/public/manifest.webmanifest: The first icon changes from /favicon-32x32.png at 32×32 to /web-app-icon-192.png at 192×192.
  • observed — Modified behavior in apps/web/public/manifest.webmanifest: The second icon changes from /apple-touch-icon.png at 180×180 to /web-app-icon-512.png at 512×512.
  • observed — Modified behavior in scripts/export-brand-icons.ts: VariantOutputs adds output paths for 192px and 512px web app icons.
Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly and concisely identifies the main change: making hosted web clients installable on Android.
Description check Passed The description includes the required Problem, Change, Scope and approval, and Verification sections. It explains the issue, implementation, scope exception, manual Android Chrome verification, before…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description includes the required Problem, Change, Scope and approval, and Verification sections. It explains the issue, implementation, scope exception, manual Android Chrome verification, before-and-after videos, and formatting check.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@mynameistito
mynameistito marked this pull request as draft October 11, 2026 18:40
@mynameistito
mynameistito marked this pull request as ready for review October 11, 2026 19:34
@mynameistito

Copy link
Copy Markdown
Author

Hey @juliusmarminge, sorry about the delay, everything is now updated with relevant videos of before and after states, tested locally with cloudflared.

@mynameistito

Copy link
Copy Markdown
Author

Closing as it seems to be fixed on one of the nightly releases since making this PR.

@mynameistito

Copy link
Copy Markdown
Author

oh disregard lol, it didn't show up due to my phone not having Tailscale on* reopened.

@juliusmarminge

Copy link
Copy Markdown
Member

Note

Grok responding on behalf of Julius.

Closing as superseded by #19175, which landed a narrower fix for #17781: adding name and short_name alone clears Chrome's installability check with the existing icon, so the 192/512 icon pipeline and install-guide changes are not needed for this bug. Thanks for digging into it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants