Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/sites-public-preview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bunny.net/cli": minor
---

`bunny sites` is now in public preview and listed in `bunny --help`: create a static site, deploy any folder or framework build with instant rollbacks, attach custom domains with SSL, and deploy from GitHub with `bunny sites ci init`
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ The CLI must be fully usable by agents, scripts, and pipelines.
- **Symlink escapes are refused**, so a checkout cannot plant links that make the installer overwrite unrelated files. Symlinks resolving inside the project are followed.
- **`SKILL.md` is a completion sentinel**: boundary-checked, removed first and written last per root, and the installed check requires every global root. Partial installs and failed refreshes therefore re-offer.
- **Single source of truth**: `commands/skills/content.ts` embeds `skills/bunny-cli/**` at bundle time via Bun text imports, so the installed skill is always the shipped one. `content.test.ts` fails if `SKILL.md` routes to a reference that is not embedded.
- **Experimental namespaces stay out** of the skill and the AGENTS.md section (`apps`, `registry`); add them back when they graduate to the visible command list in `cli.ts`. `sites` is the exception: hidden from help but documented, since agents deploy with it.
- **Experimental namespaces stay out** of the skill and the AGENTS.md section (`apps`, `registry`); add them back when they graduate to the visible command list in `cli.ts`.
- **Onboarding nudges**: `bunny login` makes a one-time interactive offer (`--install-skill` / `--no-install-skill` decide it without prompting). Users who authenticate another way get a one-time passive stderr hint instead. Both share one marker file in the XDG cache dir, so users see at most one. The marker is written on a decline or a successful install only, so an interrupted prompt re-offers.

---
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1031,7 +1031,7 @@ bunny scripts docs

### `bunny sites`

> **Experimental**: hidden from `--help` and the landing page while it stabilizes.
> **Preview**: `bunny sites` is in public preview; commands and flags may still change.

Host static sites on bunny.net. Each site is two resources provisioned and wired together for you: a **storage zone** holding the files and a **pull zone** serving them over the CDN, with edge rules that route requests to the deploy that should answer them. Zones are named `sites-<name>-<suffix>` (the prefix groups them in the dashboard; the suffix is because zone names are global across bunny.net) while commands take the clean site name.

Expand Down
4 changes: 2 additions & 2 deletions packages/cli/src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ const commands: CommandModule[] = [
scriptsNamespace,
sandboxNamespace,
storageNamespace,
sitesNamespace,
configNamespace,
skillsNamespace,
docsCommand,
Expand All @@ -47,7 +48,6 @@ const commands: CommandModule[] = [
const experimentalCommands: CommandModule[] = [
appsNamespace,
registryNamespace,
sitesNamespace,
streamNamespace,
authNamespace,
pzNamespace,
Expand Down Expand Up @@ -184,7 +184,7 @@ export const cli = instance
["Create an edge script", "bunny scripts init"],
["Add a domain to manage DNS", "bunny dns zones create example.com"],
["Create a dev sandbox", "bunny sandbox create my-sandbox"],
// ["Deploy a static site", "bunny sites deploy"],
["Deploy a static site", "bunny sites deploy"],
// ["Deploy an app", "bunny apps deploy"],
];

Expand Down
34 changes: 19 additions & 15 deletions packages/cli/src/commands/sites/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,22 @@ import { sitesShowCommand } from "./show.ts";
import { sitesSslCommand } from "./ssl.ts";
import { sitesUnlinkCommand } from "./unlink.ts";

export const sitesNamespace = defineNamespace("sites", false, [
sitesCreateCommand,
sitesListCommand,
sitesShowCommand,
sitesOpenCommand,
sitesDeployCommand,
sitesDeploymentsNamespace,
...sitesDomainsCommands,
sitesSslCommand,
sitesCiNamespace,
sitesLinkCommand,
sitesUnlinkCommand,
sitesDeleteCommand,
sitesMigrateCommand,
]);
export const sitesNamespace = defineNamespace(
"sites",
"Host static sites (preview).",
[
sitesCreateCommand,
sitesListCommand,
sitesShowCommand,
sitesOpenCommand,
sitesDeployCommand,
sitesDeploymentsNamespace,
...sitesDomainsCommands,
sitesSslCommand,
sitesCiNamespace,
sitesLinkCommand,
sitesUnlinkCommand,
sitesDeleteCommand,
sitesMigrateCommand,
],
);
Loading