@nearform/fling 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,35 @@
1
1
  # Changelog
2
2
 
3
- ## Unreleased
3
+ ## 0.6.0
4
+
5
+ - `fling groups --members a,b` lists only the groups whose members are exactly those people, to
6
+ find a group to use before making another. The MCP tool `fling_groups` takes `members` for the
7
+ same.
8
+
9
+ - **Shared with me.** `fling ls --shared` lists the restricted sites other people have shared with
10
+ you, by address or through a group you are in, with their owner and how (`--sort` as for
11
+ `fling ls`; `--json`: `{ name, url, reviewUrl?, owner, via: { direct, groups }, createdAt,
12
+ updatedAt }`). The MCP tool `fling_list` takes `shared: true` for the same list, on a Fling with
13
+ the `audiences` capability.
14
+
15
+ - **Groups.** `fling groups` lists the groups of people on a Fling (`--mine`: yours), and `show`,
16
+ `create`, `add`, `remove`, `rename` and `delete` manage them. Anyone can see a group and use it;
17
+ only its owner can change it. `fling access <name> --group <slugs>` / `--remove-group` put groups
18
+ in a site's audience. The MCP tools `fling_groups`, `fling_group_show`, `fling_group_create`,
19
+ `fling_group_members`, `fling_group_rename` and `fling_group_delete` do the same on a Fling with
20
+ the `groups` capability, and `fling_set_audience` takes `addGroups`, `removeGroups` and
21
+ `setGroups`. A site's `audience.groups` is `[{ slug, name, size }]`, and sites carry
22
+ `audienceGroups`.
23
+ - `fling access <name>` shows who can open a private site and, with `--add`, `--remove` or
24
+ `--clear`, limits it to listed people (its audience) or opens it to everyone signed in again.
25
+ It warns while a share link still opens a restricted site, and when the site is public (the
26
+ audience applies once it is private). `fling info` shows the same line.
27
+ - The MCP tool `fling_set_audience` (`add`, `remove`, `set`, `clear`) does the same, on a Fling
28
+ that has the `audiences` capability, and `fling_info` says who can open the site.
29
+ - Sites in `--json` output carry `restricted` (private with an audience) and `audienceSize`;
30
+ `fling info --json` adds the `audience` itself.
31
+ - `fling ls` lists the last updated site first. `--sort updated|created|name` picks the order
32
+ (`created`: newest first; `name`: A–Z). The MCP tool `fling_list` takes the same `sort`.
4
33
 
5
34
  ## 0.5.1
6
35
 
package/README.md CHANGED
@@ -178,15 +178,69 @@ and a taken name fails (exit 1) with suggestions rather than picking another nam
178
178
 
179
179
  | Command | |
180
180
  |---|---|
181
- | `fling ls [--archived]` | your sites |
181
+ | `fling ls [--archived] [--sort updated\|created\|name]` | your sites, last updated first (`created`: newest first; `name`: A–Z) |
182
+ | `fling ls --shared [--sort …]` | the restricted sites others have shared with you: owner, and how (your address or a group) |
182
183
  | `fling info <name>` / `fling versions <name>` | details and version history |
183
184
  | `fling files <name> [versionId]` | the files in the live version (or an earlier one) |
184
185
  | `fling rollback <name> <versionId>` | serve an earlier version |
185
186
  | `fling share <name> [--refresh] [--revoke]` | public share link: print or create it, rotate it, or remove it |
186
187
  | `fling visibility <name> private\|public` | require sign-in, or not |
188
+ | `fling access <name> [--add <emails>] [--remove <emails>] [--group <slugs>] [--remove-group <slugs>] [--clear]` | who can open a private site: everyone signed in, or only listed people and groups |
187
189
  | `fling archive <name>` / `fling unarchive <name>` | take offline and keep the files, or bring back |
188
190
  | `fling rm <name> [--yes]` | delete permanently |
189
191
 
192
+ ### Who can open a private site
193
+
194
+ A private site opens to everyone signed in to your Fling. `fling access` limits it to listed people
195
+ (its audience); you, the owner, can always open it:
196
+
197
+ ```sh
198
+ fling access my-app # who can open it now
199
+ fling access my-app --add bob@example.com,cat@example.com
200
+ fling access my-app --remove bob@example.com
201
+ fling access my-app --group design # everyone in the design group too
202
+ fling access my-app --remove-group design
203
+ fling access my-app --clear # everyone signed in again
204
+ ```
205
+
206
+ Addresses are comma-separated or given after `--add` one by one, and each must be one that can sign
207
+ in to the Fling. Someone who hasn't signed in yet is marked `(hasn't signed in yet)`; they can open
208
+ the site once they do. The audience only applies while the site is private: on a public site it is
209
+ kept for later and `fling access` says so. A share link still opens a restricted site to anyone who
210
+ has it, and `fling access` warns while one exists. Removing someone shuts them out within 5
211
+ minutes. `--json` prints the site with its `audience` (`{ emails: [{ email, known }], groups:
212
+ [{ slug, name, size }] }`) and `warnings`; `fling info` shows the same line, and `fling ls --json`
213
+ gives each site's `restricted`, `audienceSize` and `audienceGroups` (how many of those are groups).
214
+
215
+ `fling ls --shared` lists the other side: the restricted sites whose audience names you, or a group
216
+ you are in, with their owner and how they reached you. With `--json`, each is `{ name, url,
217
+ reviewUrl?, owner, via: { direct, groups }, createdAt, updatedAt }`. Your own sites, and private
218
+ sites open to everyone signed in, aren't listed.
219
+
220
+ ### Groups
221
+
222
+ A group is a named list of people, such as a team, that anyone signed in can use in a site's
223
+ audience. Everyone can list groups and see who is in one; only the group's owner, who made it, can
224
+ change its members, rename it or delete it:
225
+
226
+ ```sh
227
+ fling groups # every group (--mine: only yours)
228
+ fling groups --members bob@example.com,cat@example.com # the groups of exactly these people
229
+ fling groups show design # its members
230
+ fling groups create design --name "Design team" --add bob@example.com,cat@example.com
231
+ fling groups add design dan@example.com
232
+ fling groups remove design bob@example.com
233
+ fling groups rename design "Designers"
234
+ fling groups delete design # asks first unless --yes
235
+ ```
236
+
237
+ A slug is lowercase letters, digits and single hyphens, unique on the Fling; a group holds up to 500
238
+ people, and an audience names up to 10 groups. Taking someone out of a group shuts them out of the
239
+ sites it opens within 5 minutes. Deleting a group never opens a site up: sites whose audience
240
+ names it keep their restriction, and anyone it let in loses access. Where it was the only entry,
241
+ `fling access` shows "a deleted group (#<id>)" and only you can open the site until you add
242
+ people or groups (`--remove-group '#<id>'` takes the reference out).
243
+
190
244
  ## Comments
191
245
 
192
246
  People review a site on its review page (`<your Fling>/review/<name>`, the **Review** button on the
@@ -261,7 +315,11 @@ The MCP tools:
261
315
  current), read when called. `{use: <server>}` makes one current, the same as `fling use`.
262
316
  - `fling_check_name`, `fling_list`, `fling_info`, `fling_files`, `fling_share`,
263
317
  `fling_set_visibility`, `fling_archive`, `fling_rollback`, `fling_delete` (needs
264
- `confirm: true`), `fling_whoami`, and the comment tools when a Fling has comments.
318
+ `confirm: true`), `fling_whoami`, the comment tools when a Fling has comments, and
319
+ `fling_set_audience` (`add`, `remove`, `set` or `clear` the people who can open a private site,
320
+ and `addGroups`, `removeGroups`, `setGroups` for groups) when it can limit sites to listed
321
+ people, and the group tools (`fling_groups`, `fling_group_show`, `fling_group_create`,
322
+ `fling_group_members`, `fling_group_rename`, `fling_group_delete`) when it has groups.
265
323
 
266
324
  Results that give URLs (deploys, publishes, comments) end with the Fling they went to.
267
325