featureparity 0.0.20 → 0.0.22

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.
data/lib/fp/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Fp
4
- VERSION = '0.0.20'
4
+ VERSION = '0.0.22'
5
5
  end
data/skills/fp/SKILL.md CHANGED
@@ -336,6 +336,30 @@ This also catches the one regression a green test suite can't: a test that was d
336
336
  renamed, or had its `fp:` marker stripped. Every remaining test passes, so CI is happy,
337
337
  while the requirement quietly lost its only proof.
338
338
 
339
+ ### 9. Fill in the client showroom when a surface is deployed
340
+
341
+ The project's client (the person the software is being built for) sees one page: the
342
+ showroom. It is a welcome note plus a card per surface — a link, a button label, and
343
+ instructions for signing in and trying it. You deployed the surface, created the demo
344
+ accounts, and know the URLs, so you fill the card in; a human retyping it into project
345
+ settings is the step that goes stale.
346
+
347
+ ```bash
348
+ fp showroom --project X # current state; hidden surfaces listed
349
+ fp projects edit X --showroom-welcome-file docs/showroom/welcome.txt
350
+ fp surfaces edit web --project X \
351
+ --showroom-url https://dev.example.com \
352
+ --showroom-label "Open the web app" \
353
+ --showroom-instructions-file docs/showroom/web.txt
354
+ ```
355
+
356
+ Write instructions a non-technical reader can follow: where to click, which account to
357
+ sign in as (a dedicated demo account, not the one your e2e suite mutates), what data is
358
+ already there to look at, and one or two things worth trying. Keep the file in the repo
359
+ (`docs/showroom/<surface>.txt`) so the next deploy can re-send it. A surface with neither
360
+ a link nor instructions is not shown; clear both to take a card down. Feedback and the
361
+ share link are human-only, so after writing the content tell a person it's ready.
362
+
339
363
  ### Repo-local config (`.featureparity.yml`)
340
364
 
341
365
  If a repo has a `.featureparity.yml`, `--project` is optional — `fp` reads the slug from
@@ -419,6 +443,9 @@ not as the fix — you still write the proposal.
419
443
  | List projects | `fp projects` |
420
444
  | Create a project | `fp projects create <slug> --name "..." --surfaces api,web` |
421
445
  | View / edit a project | `fp projects show <slug>`, `fp projects edit <slug> --name "..."` |
446
+ | Preview the client showroom | `fp showroom --project X` |
447
+ | Write a surface's showroom card | `fp surfaces edit <key> --project X --showroom-url ... --showroom-instructions-file ...` |
448
+ | Write the showroom welcome | `fp projects edit <slug> --showroom-welcome-file ...` |
422
449
 
423
450
  All commands support `--json` for machine-readable output.
424
451
 
@@ -36,7 +36,7 @@ fp projects # list
36
36
  fp projects --json
37
37
  fp projects show <slug> # details + surfaces
38
38
  fp projects create <slug> --name "Name" [--description "..."] [--surfaces api,web]
39
- fp projects edit <slug> [--name "..."] [--description "..."]
39
+ fp projects edit <slug> [--name "..."] [--description "..."] [--showroom-welcome "..." | --showroom-welcome-file PATH]
40
40
  fp projects delete <slug> [--yes]
41
41
  ```
42
42
 
@@ -54,13 +54,63 @@ owner — or a key minted by one — may delete; a member's key gets 403.
54
54
 
55
55
  ### fp surfaces
56
56
 
57
- List surfaces for a project.
57
+ List, view, create, edit and delete a project's surfaces.
58
58
 
59
59
  ```bash
60
60
  fp surfaces --project stowzilla
61
61
  fp surfaces --project stowzilla --json
62
+ fp surfaces show <key> --project stowzilla
63
+ fp surfaces add <key> --project stowzilla [--name "..."] [--kind api|web|android|ios|other] [--audience ...] [--repo org/repo] [--default-branch main]
64
+ fp surfaces edit <key> --project stowzilla [--name "..."] [--kind ...] [--audience ...] [--repo ...] [--default-branch ...] [--key new_key]
65
+ fp surfaces edit <key> --project stowzilla [--showroom-url URL] [--showroom-label "..."] [--showroom-instructions "..." | --showroom-instructions-file PATH]
66
+ fp surfaces delete <key> --project stowzilla [--yes]
62
67
  ```
63
68
 
69
+ A key is unique within a project. `add` on a key that already exists fails and points
70
+ you at `edit` — use `edit` to fill in the kind or repo of a surface that `fp projects
71
+ create --surfaces` made with defaults. `edit` only sends the flags you pass. `delete`
72
+ asks you to type the key back in a terminal and refuses without `--yes` otherwise.
73
+
74
+ A surface that requirements still require can't be deleted or re-keyed — the server
75
+ refuses and names them. Taking a surface off a requirement is a human's call, so ask
76
+ one rather than working around it.
77
+
78
+ ### fp showroom
79
+
80
+ The client showroom is the one page a client of the project sees: the project's
81
+ welcome note, then a card per surface with a link, a button label, and instructions
82
+ for signing in and trying it. The team's agents keep that content; this command
83
+ shows the result.
84
+
85
+ ```bash
86
+ fp showroom --project stowzilla # what a client sees, plus which surfaces are hidden and why
87
+ fp showroom --project stowzilla --json # { showroom, hidden, share_link }
88
+ ```
89
+
90
+ Writing the content:
91
+
92
+ ```bash
93
+ fp projects edit stowzilla --showroom-welcome "Hi Sam, here's what we built."
94
+ fp projects edit stowzilla --showroom-welcome-file docs/showroom/welcome.txt
95
+ fp surfaces edit web --project stowzilla \
96
+ --showroom-url https://dev.example.com \
97
+ --showroom-label "Open the web app" \
98
+ --showroom-instructions-file docs/showroom/web.txt
99
+ fp surfaces edit ios --project stowzilla --showroom-url "" --showroom-instructions "" # take the card down
100
+ ```
101
+
102
+ A surface is on the showroom once it has a link or instructions, and leaves it when
103
+ both are blank; there is no separate on/off switch, so `fp showroom` lists the hidden
104
+ surfaces so a card that dropped out is noticed. Links must be `http://` or `https://`
105
+ (the CLI checks before sending). The `-file` variants are for anything longer than a
106
+ line: the showroom keeps line breaks, so write real paragraphs. Only the flags you pass
107
+ are sent.
108
+
109
+ Two things are deliberately not available to an agent's key: leaving feedback (that is
110
+ the client talking) and turning the share link on or off (publishing a link anyone can
111
+ open is a person's decision). `fp showroom` reports the share link as `unknown` for
112
+ that reason; a human checks it under Project Settings → Showroom in the web app.
113
+
64
114
  ### fp list
65
115
 
66
116
  List requirements.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: featureparity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.20
4
+ version: 0.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stowzilla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-17 00:00:00.000000000 Z
11
+ date: 2026-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-http
@@ -119,6 +119,7 @@ files:
119
119
  - lib/fp/commands/repos.rb
120
120
  - lib/fp/commands/setup.rb
121
121
  - lib/fp/commands/show.rb
122
+ - lib/fp/commands/showroom.rb
122
123
  - lib/fp/commands/surfaces.rb
123
124
  - lib/fp/commands/version.rb
124
125
  - lib/fp/commands/whoami.rb