Skip to content

Commit 337b538

Browse files
fix(web): restore mobile app store links in settings
1 parent 6cecd22 commit 337b538

4 files changed

Lines changed: 74 additions & 1 deletion

File tree

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { AndroidIcon, AppleIcon } from "../Icons";
2+
import { Button } from "../ui/button";
3+
import { Popover, PopoverPopup, PopoverTitle, PopoverTrigger } from "../ui/popover";
4+
import { QRCodeSvg } from "../ui/qr-code";
5+
import { SettingsRow } from "./settingsLayout";
6+
import { searchableSetting } from "./settingsSearch";
7+
8+
const stores = [
9+
{
10+
label: "iPhone and iPad",
11+
store: "App Store",
12+
url: "https://apps.apple.com/us/app/t3-code-remote-claude-more/id6787819824",
13+
Icon: AppleIcon,
14+
},
15+
{
16+
label: "Android",
17+
store: "Google Play",
18+
url: "https://play.google.com/store/apps/details?id=com.t3tools.t3code",
19+
Icon: AndroidIcon,
20+
},
21+
];
22+
23+
export function MobileAppSettingsRow() {
24+
return (
25+
<SettingsRow
26+
{...searchableSetting("mobile-app")}
27+
description="Connect to your server from your phone or tablet."
28+
control={
29+
<div className="flex items-center gap-2">
30+
{stores.map(({ label, store, url, Icon }) => (
31+
<Popover key={store}>
32+
<PopoverTrigger render={<Button size="sm" variant="outline" />}>
33+
<Icon />
34+
{label}
35+
</PopoverTrigger>
36+
<PopoverPopup align="end">
37+
<div className="flex flex-col items-center gap-3">
38+
<PopoverTitle>{store}</PopoverTitle>
39+
<p className="text-xs text-muted-foreground">Scan with your phone camera.</p>
40+
<div className="rounded-lg bg-white p-1.5">
41+
<QRCodeSvg
42+
value={url}
43+
size={128}
44+
level="M"
45+
marginSize={1}
46+
title={`${store} link`}
47+
/>
48+
</div>
49+
<Button
50+
size="sm"
51+
variant="outline"
52+
render={<a href={url} target="_blank" rel="noreferrer noopener" />}
53+
>
54+
Open {store}
55+
</Button>
56+
</div>
57+
</PopoverPopup>
58+
</Popover>
59+
))}
60+
</div>
61+
}
62+
/>
63+
);
64+
}

‎apps/web/src/components/settings/SettingsPanels.tsx‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import * as Equal from "effect/Equal";
5656
import * as Schema from "effect/Schema";
5757
import { APP_VERSION, HOSTED_APP_CHANNEL, HOSTED_APP_CHANNEL_LABEL } from "../../branding";
5858
import { CliCommandSettingsRow } from "./CliCommandSettingsRow";
59+
import { MobileAppSettingsRow } from "./MobileAppSettingsRow";
5960
import {
6061
canCheckForUpdate,
6162
getDesktopUpdateButtonTooltip,
@@ -3316,6 +3317,7 @@ export function GeneralSettingsPanel() {
33163317
/>
33173318
</>
33183319
)}
3320+
<MobileAppSettingsRow />
33193321
<SettingsRow
33203322
{...searchableSetting("privacy-policy")}
33213323
description="How we handle your data, including the anonymous usage data T3 Code collects."

‎apps/web/src/components/settings/settingsSearch.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,12 @@ export const SETTINGS_SEARCH_ITEMS = [
531531
searchTerms: ["cli terminal shell path install command line"],
532532
desktopOnly: true,
533533
},
534+
{
535+
id: "mobile-app",
536+
title: "Mobile app",
537+
to: "/settings/general",
538+
searchTerms: ["phone tablet iPhone iPad iOS Android App Store Google Play QR"],
539+
},
534540
{
535541
id: "privacy-policy",
536542
title: "Privacy policy",

‎docs/user/install.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ Install T3 Code from the
114114
The phone connects to a server on another machine. Follow
115115
[remote access](./remote-access.md) to link it through T3 Connect or a pairing URL.
116116

117-
The store apps work with both stable and Nightly servers. Test builds are optional:
117+
Store links and QR codes are also available in **Settings → General → Mobile app**
118+
on web and desktop. The store apps work with both stable and Nightly servers. Test builds are optional:
118119

119120
- **iPhone and iPad:** TestFlight is invite-only.
120121
- **Android:** download an APK from the

0 commit comments

Comments
 (0)