Skip to content

Commit 4372d61

Browse files
committed
feat: add tap package search in dashboard + update docs to install.sh
1 parent 68ea159 commit 4372d61

8 files changed

Lines changed: 40 additions & 21 deletions

File tree

src/docs/cli-reference.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,11 @@ openboot snapshot --local
9797
Install a specific version:
9898

9999
```
100-
OPENBOOT_VERSION=0.3.1 curl -fsSL openboot.dev/install | bash
100+
OPENBOOT_VERSION=0.3.1 curl -fsSL openboot.dev/install.sh | bash
101101
```
102102

103103
Install to a custom directory:
104104

105105
```
106-
OPENBOOT_INSTALL_DIR=~/.local/bin curl -fsSL openboot.dev/install | bash
106+
OPENBOOT_INSTALL_DIR=~/.local/bin curl -fsSL openboot.dev/install.sh | bash
107107
```

src/docs/custom-configs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ Already have a Brewfile? Upload it in the dashboard and OpenBoot will parse it i
3737
Every config gets a shareable install URL:
3838

3939
```
40-
curl -fsSL openboot.dev/<username>/<slug>/install | bash
40+
curl -fsSL openboot.dev/<username>/<slug>/install.sh | bash
4141
```
4242

4343
For example, if your GitHub username is `sarah` and your config is named `frontend-team`:
4444

4545
```
46-
curl -fsSL openboot.dev/sarah/frontend-team/install | bash
46+
curl -fsSL openboot.dev/sarah/frontend-team/install.sh | bash
4747
```
4848

4949
Share this URL in your team's README, onboarding docs, or Slack. Anyone who runs it gets your exact setup.

src/docs/faq.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ This is a common concern. Here's how OpenBoot handles it:
3131
- The install script is **open source** — review it anytime at [github.com/openbootdotdev/openboot](https://github.com/openbootdotdev/openboot)
3232
- The script is hosted on openboot.dev (Cloudflare Workers) and served over HTTPS
3333
- **No telemetry** is collected — no analytics, no tracking, no phoning home
34-
- You can download and inspect the script before running it: `curl -fsSL openboot.dev/install > install.sh && cat install.sh`
34+
- You can download and inspect the script before running it: `curl -fsSL openboot.dev/install.sh > install.sh && cat install.sh`
3535
- The binary itself is downloaded from GitHub Releases with checksum verification
3636

3737
## What if I already have Homebrew installed?
@@ -43,7 +43,7 @@ OpenBoot detects existing Homebrew installations and skips the Homebrew install
4343
Re-run the install script:
4444

4545
```
46-
curl -fsSL openboot.dev/install | bash
46+
curl -fsSL openboot.dev/install.sh | bash
4747
```
4848

4949
This downloads the latest binary and replaces the existing one. Your configs, snapshots, and auth tokens are not affected.

src/docs/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ OpenBoot is an open-source command-line tool that bootstraps your macOS developm
1414
Open Terminal and run:
1515

1616
```
17-
curl -fsSL https://openboot.dev/install | bash
17+
curl -fsSL https://openboot.dev/install.sh | bash
1818
```
1919

2020
That's it. One line.

src/docs/presets.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Lightweight CLI essentials for servers, containers, or developers who prefer a l
1313
**GUI apps:** Warp, Raycast, Maccy, Stats
1414

1515
```
16-
curl -fsSL openboot.dev/install | bash -s -- --preset minimal
16+
curl -fsSL openboot.dev/install.sh | bash -s -- --preset minimal
1717
```
1818

1919
### developer (recommended)
@@ -25,7 +25,7 @@ A ready-to-code Mac setup with everything you need to start building immediately
2525
**GUI apps (additions over minimal):** VS Code, OrbStack, Chrome, Arc, Postman, Notion, Scroll Reverser
2626

2727
```
28-
curl -fsSL openboot.dev/install | bash -s -- --preset developer
28+
curl -fsSL openboot.dev/install.sh | bash -s -- --preset developer
2929
```
3030

3131
### full
@@ -37,7 +37,7 @@ The complete dev environment — every language, DevOps tool, database, and AI u
3737
**GUI apps (additions over developer):** Cursor, Firefox, Proxyman, Obsidian, Figma, IINA, Keka, AlDente, Rectangle
3838

3939
```
40-
curl -fsSL openboot.dev/install | bash -s -- --preset full
40+
curl -fsSL openboot.dev/install.sh | bash -s -- --preset full
4141
```
4242

4343
## Customizing During Install
@@ -56,11 +56,11 @@ This means you can start with `developer` but add `kubectl` from `full`, or remo
5656
If you want to skip the TUI and install a preset exactly as defined (useful for CI or scripting), the `--preset` flag with no TUI will install everything in the preset without prompting:
5757

5858
```
59-
curl -fsSL openboot.dev/install | bash -s -- --preset developer
59+
curl -fsSL openboot.dev/install.sh | bash -s -- --preset developer
6060
```
6161

6262
Add `--dry-run` to preview what would be installed without actually installing anything:
6363

6464
```
65-
curl -fsSL openboot.dev/install | bash -s -- --preset developer --dry-run
65+
curl -fsSL openboot.dev/install.sh | bash -s -- --preset developer --dry-run
6666
```

src/docs/snapshot.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Snapshot captures your current Mac's development environment and turns it into a
55
## Install and Run
66

77
```
8-
curl -fsSL openboot.dev/install | bash -s -- snapshot
8+
curl -fsSL openboot.dev/install.sh | bash -s -- snapshot
99
```
1010

1111
This downloads the OpenBoot binary (if not already installed) and immediately runs the snapshot command.
@@ -115,7 +115,7 @@ When you run `openboot snapshot` without flags:
115115
https://openboot.dev/username/my-setup
116116
117117
Share with others:
118-
curl -fsSL https://openboot.dev/username/my-setup/install | bash
118+
curl -fsSL https://openboot.dev/username/my-setup/install.sh | bash
119119
120120
Opening in browser...
121121
```

src/routes/+page.svelte

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@
8585

8686
<div class="install-command" id="install">
8787
<div class="install-prompt">$</div>
88-
<code>curl -fsSL https://openboot.dev/install | bash</code>
89-
<button class="copy-btn" onclick={() => copyCommand('curl -fsSL https://openboot.dev/install | bash', 'main')}>
88+
<code>curl -fsSL https://openboot.dev/install.sh | bash</code>
89+
<button class="copy-btn" onclick={() => copyCommand('curl -fsSL https://openboot.dev/install.sh | bash', 'main')}>
9090
{#if copied === 'main'}
9191
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="20 6 9 17 4 12"/></svg>
9292
Copied!
@@ -178,7 +178,7 @@
178178
class="preset-card"
179179
class:featured={preset.id === 'developer'}
180180
class:copied={copied === preset.id}
181-
onclick={() => copyCommand(`curl -fsSL openboot.dev/install | bash -s -- --preset ${preset.id}`, preset.id)}
181+
onclick={() => copyCommand(`curl -fsSL openboot.dev/install.sh | bash -s -- --preset ${preset.id}`, preset.id)}
182182
>
183183
<div class="preset-icon">{preset.icon}</div>
184184
<div class="preset-header">
@@ -227,8 +227,8 @@
227227
</div>
228228
<div class="beyond-command">
229229
<div class="beyond-command-prompt">$</div>
230-
<code>curl -fsSL openboot.dev/install | bash -s -- snapshot</code>
231-
<button class="copy-btn" onclick={() => copyCommand('curl -fsSL https://openboot.dev/install | bash -s -- snapshot', 'snapshot')}>
230+
<code>curl -fsSL openboot.dev/install.sh | bash -s -- snapshot</code>
231+
<button class="copy-btn" onclick={() => copyCommand('curl -fsSL https://openboot.dev/install.sh | bash -s -- snapshot', 'snapshot')}>
232232
{#if copied === 'snapshot'}
233233
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="20 6 9 17 4 12"/></svg>
234234
Copied!

src/routes/dashboard/+page.svelte

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
interface SearchResult {
4545
name: string;
4646
desc: string;
47-
type: 'formula' | 'cask';
47+
type: 'formula' | 'cask' | 'tap';
4848
}
4949
5050
let selectedPackages = $state(new Set<string>());
@@ -59,6 +59,10 @@
5959
let importLoading = $state(false);
6060
let importError = $state('');
6161
62+
function isTapPackage(query: string): boolean {
63+
return /^[a-z0-9_-]+\/[a-z0-9_-]+\/[a-z0-9_-]+$/i.test(query);
64+
}
65+
6266
async function searchHomebrew(query: string) {
6367
if (query.length < 2) {
6468
searchResults = [];
@@ -70,9 +74,24 @@
7074
const response = await fetch(`/api/homebrew/search?q=${encodeURIComponent(query)}`);
7175
const data = await response.json();
7276
searchResults = data.results || [];
77+
78+
if (isTapPackage(query) && !searchResults.some(r => r.name === query)) {
79+
searchResults.unshift({
80+
name: query,
81+
desc: 'Third-party tap package (will add tap automatically)',
82+
type: 'tap' as const
83+
});
84+
}
7385
} catch (e) {
7486
console.error('Search failed:', e);
7587
searchResults = [];
88+
if (isTapPackage(query)) {
89+
searchResults = [{
90+
name: query,
91+
desc: 'Third-party tap package (will add tap automatically)',
92+
type: 'tap' as const
93+
}];
94+
}
7695
} finally {
7796
searchLoading = false;
7897
}
@@ -515,7 +534,7 @@
515534
class="search-input"
516535
value={packageSearch}
517536
oninput={(e) => handleSearchInput(e.currentTarget.value)}
518-
placeholder="Search Homebrew packages..."
537+
placeholder="Search packages or enter tap (e.g. steipete/tap/codexbar)"
519538
/>
520539
</div>
521540
{#if searchLoading}

0 commit comments

Comments
 (0)