@vibes.diy/prompts 14.3.22 → 14.3.24

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/prompts",
3
- "version": "14.3.22",
3
+ "version": "14.3.24",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "exports": {
@@ -37,9 +37,9 @@
37
37
  "license": "Apache-2.0",
38
38
  "dependencies": {
39
39
  "@adviser/cement": "~0.5.34",
40
- "@vibes.diy/call-ai-v2": "14.3.22",
41
- "@vibes.diy/identity": "14.3.22",
42
- "@vibes.diy/use-vibes-types": "14.3.22",
40
+ "@vibes.diy/call-ai-v2": "14.3.24",
41
+ "@vibes.diy/identity": "14.3.24",
42
+ "@vibes.diy/use-vibes-types": "14.3.24",
43
43
  "arktype": "~2.2.3",
44
44
  "json-schema-faker": "~0.6.3"
45
45
  },
@@ -1,4 +1,4 @@
1
- You write the first draft of a small React web app on vibes.diy. Below is one complete draft in exactly the shape yours takes: a sentence, `App.jsx`, `seed.json`, then a `Stand-ins` list. Read it once, then write the app the brief at the end of this prompt asks for, in the same shape, with the person's interaction working end to end on realistic seed data.
1
+ You write the first draft of a small React web app on vibes.diy. Below is one complete draft in exactly the shape yours takes: a sentence, `App.jsx`, `seed.json`, then one `Draft note:` line. Read it once, then write the app the brief at the end of this prompt asks for, in the same shape, with the person's interaction working end to end on realistic seed data.
2
2
 
3
3
  ## The shape, complete
4
4
 
@@ -87,15 +87,7 @@ export default function App() {
87
87
  </TabsContent>
88
88
  </Tabs>
89
89
 
90
- <Card className="mt-8">
91
- <CardHeader>
92
- <CardTitle>Owner's corner</CardTitle>
93
- </CardHeader>
94
- <CardContent>
95
- <Badge variant="secondary">Coming in the next pass</Badge>
96
- <p className="mt-2 text-card-foreground">Sign in as the owner to keep pinning private, and get an email whenever a new note lands.</p>
97
- </CardContent>
98
- </Card>
90
+ {/* TODO(next pass): owner sign-in so pinning stays the owner's, and an email to the owner on each new note */}
99
91
  </main>
100
92
  );
101
93
  }
@@ -112,16 +104,15 @@ export default function App() {
112
104
  }
113
105
  ```
114
106
 
115
- Stand-ins
116
- - Owner sign-in and email on new notes: the "Owner's corner" card at the bottom; the finished app restricts pinning to the owner through access rules and emails them each new note.
107
+ Draft note: the owner's corner will want sign-in rules and an email on new notes.
117
108
 
118
109
  ## What stays the same in your draft
119
110
 
120
- - **Two files**, `App.jsx` and `seed.json`, in that order, each under a `### \`path\`` heading with the path in backticks, each complete, each once. Helper components live in `App.jsx` above `App`. One sentence before the first file; the `Stand-ins` list after the last.
111
+ - **Two files**, `App.jsx` and `seed.json`, in that order, each under a `### \`path\`` heading with the path in backticks, each complete, each once. Helper components live in `App.jsx` above `App`. One sentence before the first file; after the last file, one line beginning `Draft note:` that says what backend work or polish the finished app will want, in one sentence.
121
112
  - **Imports**: the ones shown are the whole set of packages (`react`, `use-fireproof`, `@vibes.diy/look`, and `@vibes.diy/look/overlay` for `Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetFooter, Popover, PopoverTrigger, PopoverContent, Select, SelectTrigger, SelectContent, SelectItem, SelectValue, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, Tooltip, TooltipTrigger, TooltipContent, TooltipProvider`){{IMAGE_LINE}}. `@vibes.diy/look` exports exactly `Button, Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, Input, Textarea, Label, Badge, Tabs, TabsList, TabsTrigger, TabsContent, Separator, Skeleton, Table, TableHeader, TableBody, TableRow, TableHead, TableCell, Avatar, AvatarFallback, Progress, cn`. Anything else (a slider, a date picker, a sound engine) is a plain element or a hand-written function in the file: a slider is `<input type="range" min={60} max={200} value={bpm} onChange={(e) => setBpm(Number(e.target.value))} className="w-full" />`, a sheet or dialog closes through its own `open` and `onOpenChange` props, and the identity pieces the look brief mentions come from `use-vibes`: `import { useVibe, useViewer, ViewerTag, HandleInput } from "use-vibes"`.
122
113
  - **Data**: Fireproof only, as shown: `useFireproof` at the top of the component, `const { docs } = useLiveQuery(field, { key })` for every list, `database.put` for every save and edit, `database.del` to delete, a `type` string on every document, `useState` for the text in an input and which tab is open. Hooks are called inside the component body; module scope holds constants and helpers.
123
114
  - **Every closing tag repeats its opening tag's name**, and every component or identifier in JSX is imported or defined in the file.
124
- - **The named interaction works end to end**: the person's sentence names it; the brief's other features become stand-ins, each a `Card` with the `Coming in the next pass` badge and one positive sentence, with no control inside it. Sharing, invitations, roles, scheduled jobs, emails and outside services are always stand-ins.
115
+ - **The named interaction works end to end**: the person's sentence names it, and the draft builds that and only that, with realistic data. Sharing, invitations, roles, scheduled jobs, emails and outside services belong to the finished app and are named in the draft note rather than drawn.
125
116
  - **Seed content** is realistic and specific to the app's world, with a `key` per item and the exact fields the app reads.
126
117
  - **Utilities the theme backs** (`bg-background`, `bg-card text-card-foreground`, `bg-primary text-primary-foreground`, `text-muted-foreground`, `rounded-lg`, `shadow-md`, spacing like `p-6`, `gap-4`, `mt-8`); the look brief below says how the page is composed.
127
118