diff --git a/content/(concepts)/spaces.mdx b/content/(concepts)/spaces.mdx index b2e1fd7..054ea8d 100644 --- a/content/(concepts)/spaces.mdx +++ b/content/(concepts)/spaces.mdx @@ -68,13 +68,14 @@ To move a Space to another team, run `sf spaces transfer --space docs`, o ## Access when you create one -A new Space starts at one of three presets. +A new team-owned Space starts at one of two presets. A Space published without an account has no owning team. Its space key and claim link open it until the claim window ends; see [Publish without an account](/anonymous-and-claim). | Preset | Who can open the live site | | --- | --- | -| `private` | Only people you name | -| `team` | Everyone in the owning team | -| `public` | Anyone with the URL | +| `private` | The owning team, plus anyone you add | +| `public` | The owning team, plus anyone on the web | + +The API still accepts `team` and treats it as `private`. Set it on the request that creates the Space, with `sf publish --access public` or the `access` field on `createPublish` and [`createSpace`](/api/reference/spaces/createspace). Sending `access` together with a `spaceId` is a validation error, because the field only applies at creation. Omit it and the Space takes the owning team's default for new Spaces. diff --git a/content/(concepts)/teams.mdx b/content/(concepts)/teams.mdx index 5054c98..cc6242f 100644 --- a/content/(concepts)/teams.mdx +++ b/content/(concepts)/teams.mdx @@ -12,7 +12,7 @@ A team owns its Spaces, domains, API keys, and billing. Your role in that team c Free and Go allow only the owner. Adding another member needs [Plus](/billing#seats). - **Publish together.** Members can create Spaces, publish new versions, and roll back. The site stays with the team when a member leaves. -- **Keep access in one place.** Invite someone to the team to give them access to team-owned work at their role. Remove them to take that access away across the team's Spaces. Set the default access for each new Space to `team`, `private`, or `public`. +- **Keep access in one place.** Invite someone to the team to give them access to team-owned work at their role. Remove them to take that access away across the team's Spaces. Set the default access for each new Space to `private` or `public`. - **Separate routine work from administration.** Members can publish, while owners and admins manage invitations, domains, and billing. The [role table](#roles) shows the full boundary. ## What a team is @@ -101,11 +101,10 @@ To hand the team over, use **Team settings β†’ Danger zone β†’ Transfer ownershi | Preset | What a new Space gets | |---|---| -| `private` | No access grant at all. Only the team's own access reaches it | -| `team` | A grant named "Team", so everyone in the team can open it | -| `public` | A grant named "Public", so anyone with the URL can open it | +| `private` | Access for the owning team | +| `public` | Access for the owning team, plus view access for anyone on the web | -The default is `team`. From a terminal, `sf teams defaults` prints the current value and `sf teams defaults public` sets it. Per-Space access, share links, and passwords are covered in [access and share links](/access). +The default is `private`. The API accepts `team` as a legacy spelling of `private`. From a terminal, `sf teams defaults` prints the current value and `sf teams defaults public` sets it. Per-Space access, share links, and passwords are covered in [access and share links](/access). ## Move a Space to another team diff --git a/content/(serve)/access.mdx b/content/(serve)/access.mdx index cce97d1..8da37fe 100644 --- a/content/(serve)/access.mdx +++ b/content/(serve)/access.mdx @@ -45,7 +45,7 @@ The **General access** card holds a segmented control with three options: | Option | What it does | | --- | --- | -| **Private** | "Only people listed below can open it." | +| **Private** | "Your team and people you add can view it." | | **Share link** | "The share link is the key. Anyone who has it can open it, no account needed." | | **Public** | "Anyone on the web can open it." | @@ -77,6 +77,10 @@ Use `version:` to open only one version. Branch previews need a `branch:] [-p] [-l] [--force] | `-l, --list` | `false` | List bundled skill files without installing | | `--force` | `false` | Overwrite locally modified or unverified Spacefast skill files | -The skill is named `spacefast` everywhere. It tells the agent to reach for the MCP tools first, to publish once and then poll, and to report the live URL, the immutable version URL, and the access URL. +The skill is named `spacefast` everywhere. It tells the agent to reach for the MCP tools first, to publish once and then poll, and to report the live URL, the immutable version URL, and the access URL when the receipt includes one. ```bash sf skills diff --git a/content/cli/publish.mdx b/content/cli/publish.mdx index 4f06009..78bc042 100644 --- a/content/cli/publish.mdx +++ b/content/cli/publish.mdx @@ -41,7 +41,7 @@ These apply when the publish creates the Space. On an existing Space with `--tar | --- | --- | --- | | `-n, --name=` | none | Set the Space title | | `--slug=` | generated | Set the Space slug when creating a new Space. Fails with `space_selection_conflict` if a Space is already selected | -| `--access=private\|team\|public` | team default | Set initial root access when this publish creates a team-owned Space. Requires a login or `--token`, and fails with `space_selection_conflict` if a Space is already selected | +| `--access=private\|public` | team default | Set initial root access when this publish creates a team-owned Space. Private admits the owning team; Public also admits anyone on the web. `team` is accepted as `private`. Requires a login or `--token`, and fails with `space_selection_conflict` if a Space is already selected | | `--hostname-scope=team\|global` | server default | Managed hostname scope for newly created Spaces | | `--spa=auto\|true\|false` | `auto` | Control single-page app fallback detection | | `--mode=website\|files` | `website` | Serve the Space as a website or as a raw file listing. Usually set in `sf.jsonc` | diff --git a/content/cli/spaces.mdx b/content/cli/spaces.mdx index 3bd9b1d..3fef0ad 100644 --- a/content/cli/spaces.mdx +++ b/content/cli/spaces.mdx @@ -116,7 +116,7 @@ sf spaces add --name docs ### Output -The Space summary. `--json` returns the created Space with its state entry; the access URL and claim link are masked unless you pass `--show-secret`. +The Space summary. `--json` returns the created Space with its state entry. A new team-owned Space has no automatic share link, so the receipt can omit `access`. The owning team signs in at the live URL. Create a [share link](/access#share-links) when you need one. Any access URL or claim link in a receipt is masked unless you pass `--show-secret`. ## sf spaces update diff --git a/content/cli/teams.mdx b/content/cli/teams.mdx index 1ca1ebc..858a376 100644 --- a/content/cli/teams.mdx +++ b/content/cli/teams.mdx @@ -130,7 +130,7 @@ Shows or sets the access preset materialized for Spaces this team creates in the | Argument | Default | What it is | | --- | --- | --- | -| `[rootAccess]` | show only | Future Space preset: `private`, `team`, or `public` | +| `[rootAccess]` | show only | Future Space preset: `private` (owning team) or `public` (also anyone on the web). `team` is accepted as `private` | ### Flags diff --git a/content/quickstart.mdx b/content/quickstart.mdx index 2bb603f..2bfbc38 100644 --- a/content/quickstart.mdx +++ b/content/quickstart.mdx @@ -95,7 +95,7 @@ Don't want to install anything? Open the dashboard and drag a folder, a `.zip`, ## Next -Working with other people? If your Space is still anonymous, [claim it first](/anonymous-and-claim#claim-it). Signed-in publishes already belong to a team. Free and Go allow only the owner; adding another member needs [Plus](/billing#seats). Then [invite members](/teams#invite-someone) to publish and roll back together. Owners and admins can manage domains and invitations. Choose whether new Spaces start open to the team, private, or public in [team access settings](/teams#default-access-for-new-spaces). +Working with other people? If your Space is still anonymous, [claim it first](/anonymous-and-claim#claim-it). Signed-in publishes already belong to a team. Free and Go allow only the owner; adding another member needs [Plus](/billing#seats). Then [invite members](/teams#invite-someone) to publish and roll back together. Owners and admins can manage domains and invitations. Choose whether new Spaces start private to the team or public in [team access settings](/teams#default-access-for-new-spaces). diff --git a/generated/cli/index.md b/generated/cli/index.md index 593cc42..72db23e 100644 --- a/generated/cli/index.md +++ b/generated/cli/index.md @@ -21,7 +21,7 @@ $ npm install -g spacefast $ sf COMMAND running command... $ sf (--version) -spacefast/0.6.0 +spacefast/0.8.1 $ sf --help [COMMAND] USAGE $ sf COMMAND @@ -49,7 +49,6 @@ GLOBAL FLAGS - [`sf access`](#sf-access) - [`sf access logout-all`](#sf-access-logout-all) -- [`sf access subteams`](#sf-access-subteams) - [`sf activity`](#sf-activity) - [`sf agents init [DIRECTORY]`](#sf-agents-init-directory) - [`sf analytics`](#sf-analytics) @@ -76,14 +75,18 @@ GLOBAL FLAGS - [`sf channels ls`](#sf-channels-ls) - [`sf channels set NAME`](#sf-channels-set-name) - [`sf comments`](#sf-comments) -- [`sf comments archive COMMENT`](#sf-comments-archive-comment) +- [`sf comments create`](#sf-comments-create) - [`sf comments export`](#sf-comments-export) - [`sf comments get COMMENT`](#sf-comments-get-comment) - [`sf comments list`](#sf-comments-list) +- [`sf comments mark-read COMMENT`](#sf-comments-mark-read-comment) +- [`sf comments react COMMENT EMOJI`](#sf-comments-react-comment-emoji) +- [`sf comments reopen COMMENT`](#sf-comments-reopen-comment) - [`sf comments reply COMMENT`](#sf-comments-reply-comment) +- [`sf comments resolve COMMENT`](#sf-comments-resolve-comment) - [`sf comments settings`](#sf-comments-settings) - [`sf comments settings set`](#sf-comments-settings-set) -- [`sf comments unarchive COMMENT`](#sf-comments-unarchive-comment) +- [`sf comments unreact COMMENT EMOJI`](#sf-comments-unreact-comment-emoji) - [`sf connectors`](#sf-connectors) - [`sf connectors add TARGET`](#sf-connectors-add-target) - [`sf connectors bind ROLE CONNECTION`](#sf-connectors-bind-role-connection) @@ -130,6 +133,9 @@ GLOBAL FLAGS - [`sf domains`](#sf-domains) - [`sf domains add HOSTNAME`](#sf-domains-add-hostname) - [`sf domains check DOMAIN`](#sf-domains-check-domain) +- [`sf domains contacts`](#sf-domains-contacts) +- [`sf domains contacts add`](#sf-domains-contacts-add) +- [`sf domains contacts ls`](#sf-domains-contacts-ls) - [`sf domains diagnostics DOMAIN`](#sf-domains-diagnostics-domain) - [`sf domains dns`](#sf-domains-dns) - [`sf domains dns add DOMAIN`](#sf-domains-dns-add-domain) @@ -138,11 +144,15 @@ GLOBAL FLAGS - [`sf domains dns export DOMAIN`](#sf-domains-dns-export-domain) - [`sf domains dns ls DOMAIN`](#sf-domains-dns-ls-domain) - [`sf domains dns refresh DOMAIN`](#sf-domains-dns-refresh-domain) +- [`sf domains dns replace DOMAIN`](#sf-domains-dns-replace-domain) - [`sf domains dns rm DOMAIN RECORD`](#sf-domains-dns-rm-domain-record) - [`sf domains dns update DOMAIN RECORD`](#sf-domains-dns-update-domain-record) - [`sf domains ls`](#sf-domains-ls) - [`sf domains nameservers DOMAIN`](#sf-domains-nameservers-domain) - [`sf domains nameservers set DOMAIN NAMESERVERS`](#sf-domains-nameservers-set-domain-nameservers) +- [`sf domains registration DOMAIN`](#sf-domains-registration-domain) +- [`sf domains registration purchase DOMAIN... [flags]`](#sf-domains-registration-purchase-domain-flags) +- [`sf domains registration renew DOMAIN`](#sf-domains-registration-renew-domain) - [`sf domains rm DOMAIN`](#sf-domains-rm-domain) - [`sf domains search [QUERY]`](#sf-domains-search-query) - [`sf domains update DOMAIN`](#sf-domains-update-domain) @@ -265,6 +275,7 @@ GLOBAL FLAGS - [`sf skills remove`](#sf-skills-remove) - [`sf skills status`](#sf-skills-status) - [`sf source archive`](#sf-source-archive) +- [`sf source availability`](#sf-source-availability) - [`sf source branch`](#sf-source-branch) - [`sf source cat PATH`](#sf-source-cat-path) - [`sf source commits apply`](#sf-source-commits-apply) @@ -415,38 +426,6 @@ EXAMPLES $ sf access logout-all --space docs ``` -## `sf access subteams` - -Manage Space subteam access. - -```text -USAGE - $ sf access subteams [--profile ] [-y] [--claim-token - ] [-o ] [--space ] [--subteam ... | --all-members] - -FLAGS - --all-members Restore access for all team members. - --subteam=... Subteam ID to grant access. Repeat for multiple groups. - -GLOBAL FLAGS - -y, --yes [env: SPACEFAST_YES] Skip confirmation prompts. - --api-url= [env: SPACEFAST_API_URL] Spacefast API base URL. - --json Format output as json. - --profile= [env: SPACEFAST_PROFILE] Named provider profile from `sf profiles`. - -DESCRIPTION - Manage Space subteam access. - - Show or set which Enterprise subteams can access a Space. Owners and admins retain access. - -EXAMPLES - $ sf access subteams --space docs - - $ sf access subteams --space docs --subteam subteam_example - - $ sf access subteams --space docs --all-members -``` - ## `sf activity` Show activity events. @@ -1287,7 +1266,7 @@ USAGE DESCRIPTION Manage comments. - List, export, and update persistent Space comments, and set where Comments run. + Read, start, reply to, react to, and resolve Space comment threads, and set where Comments run. EXAMPLES Manage comments. @@ -1295,17 +1274,21 @@ EXAMPLES $ sf comments ``` -## `sf comments archive COMMENT` +## `sf comments create` -Archive a comment. +Start a comment thread. ```text USAGE - $ sf comments archive COMMENT [--profile ] [-y] [--claim-token - ] [-o ] [--space ] + $ sf comments create --body [--profile ] [-y] + [-o ] [--space ] [--mention ...] [--page | --file ] + [--selector | ] [--lines ] [--version ] [--idempotency-key ] -ARGUMENTS - COMMENT Comment id, for example cmt_123. +FLAGS + --body= (required) What the comment says. + --idempotency-key= Stable key for safely retrying this comment. + --mention=... Teammate to notify, by email, name, or user ID. Repeat for more. + --version= Version ID, ref, or number to comment on. Defaults to the live version. GLOBAL FLAGS -y, --yes [env: SPACEFAST_YES] Skip confirmation prompts. @@ -1313,13 +1296,34 @@ GLOBAL FLAGS --json Format output as json. --profile= [env: SPACEFAST_PROFILE] Named provider profile from `sf profiles`. +ANCHOR FLAGS + --file= File path to comment on, for example src/app.js. + --lines= Line or range in --file, for example 7 or 7-14. + --page= Page path to comment on, for example /pricing. Defaults to /. + --selector= CSS selector of the element to pin the comment to. + DESCRIPTION - Archive a comment. + Start a comment thread. - Archive a comment thread. + Start a comment thread on a page, an element on a page, or a file. Threads land on the live version unless --version + picks another. EXAMPLES - $ sf comments archive cmt_123 + Comment on a whole page. + + $ sf comments create --page /pricing --body "The annual price is wrong." + + Pin a comment to an element. + + $ sf comments create --page / --selector "#hero-title" --body "Too long for mobile." + + Comment on lines of a file. + + $ sf comments create --file src/app.js --lines 7-14 --body "This loop never ends." + + Start a thread and notify a teammate. + + $ sf comments create --page /about.html --body "Can you check the photos?" --mention milo@example.com ``` ## `sf comments export` @@ -1329,14 +1333,14 @@ Export comments. ```text USAGE $ sf comments export [--profile ] [-y] [--claim-token - ] [-o ] [--space ] [--version ] [--format markdown|json] [--status open|archived] + ] [-o ] [--space ] [--version ] [--format markdown|json] [--status open|resolved] FLAGS --format=