ugly-app 0.1.486 → 0.1.487
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/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.487";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
package/package.json
CHANGED
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.487";
|
|
@@ -8,7 +8,7 @@ user-invocable: true
|
|
|
8
8
|
|
|
9
9
|
Run one full autonomous cycle. No human input. No clarifying questions. Make the best possible decision at every step. If something breaks, fix it.
|
|
10
10
|
|
|
11
|
-
**CORE PRINCIPLE: Be maximally ambitious. Every bot in this swarm — feedback bots, maintain bot, manager — should push for big changes, not incremental tweaks. Feedback bots should
|
|
11
|
+
**CORE PRINCIPLE: Be maximally ambitious. Every bot in this swarm — feedback bots, maintain bot, manager — should push for big changes, not incremental tweaks. Feedback bots should demand major redesigns, new directions, bold experiments — not just "move this button 2px." The maintain bot must implement everything requested, no matter how large. "Too complex" is never a valid reason to skip work. The only limit is violating Critical Rules in CLAUDE.md.**
|
|
12
12
|
|
|
13
13
|
## About the Website
|
|
14
14
|
|
|
@@ -16,19 +16,15 @@ This website is a **blank canvas**. It is a full-stack app with AI capabilities,
|
|
|
16
16
|
|
|
17
17
|
The template includes demo/test pages (todo demo, UI components, auth demo, etc.) that exist only to show developers what the framework can do. **These test pages are not the website. Ignore them entirely.** Do not iterate on them, redesign them, or treat them as features. They are documentation, not product.
|
|
18
18
|
|
|
19
|
-
On the **first cycle**, the manager
|
|
19
|
+
On the **first cycle**, the manager invents what to build and creates the perspectives that will critique it. There is no expectation that the result be a "product," have "users," or serve a "need." The framework is yours to use however you want — what you make is the signal.
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
On **subsequent cycles**, the swarm evolves whatever it built. The direction emerges from the swarm's own pull, not from any pre-existing content.
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
3. Create personas that fit the invented product concept
|
|
23
|
+
There are no limits on what can be built. New pages, endpoints, collections, migrations, AI integrations, real-time features, image generation — everything is available.
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
## Working directory
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
There are no limits on what can be built. New pages, endpoints, collections, migrations, AI integrations, real-time features, image generation — everything is available.
|
|
27
|
+
Your CWD is already set to the session worktree — the root of the cycle's git checkout, where `bots/`, `package.json`, and everything else lives. **Do not prepend `cd "/Users/.../worktree" && ...` to every Bash command.** A real cycle (ws_tyf4w1dfmpu5wxzl, 2026-05-31) burned ~50 tokens per command on a redundant `cd` prefix across 86 of 98 Bash calls. Just run `npx ugly-app dev`, `git status`, `ls bots/`, etc. directly. If a command genuinely needs a different directory (rare), use a subshell `(cd path && ...)` or pass an absolute path.
|
|
32
28
|
|
|
33
29
|
## Base URL
|
|
34
30
|
|
|
@@ -62,6 +58,24 @@ npx ugly-app dev
|
|
|
62
58
|
|
|
63
59
|
This starts Docker, MongoDB, and the server but **without** tsx watch, tsc --watch, or eslint --watch. Do **not** use `npm run dev` (which adds `--watch`) or `npx ugly-app dev --watch`. After the maintain bot finishes and commits, the restart step (Step 5) will kill and restart the server to pick up changes.
|
|
64
60
|
|
|
61
|
+
### Screenshot recipe — always wait for the SPA to hydrate
|
|
62
|
+
|
|
63
|
+
Any ad-hoc Playwright screenshot you take **outside of `run-bot.mjs`** (Step 4 journal captures, Step 5 verification captures, mid-cycle debugging) must wait on a real DOM signal, **not** `networkidle`. The framework hits `networkidle` before React hydrates and the captured PNG is blank — verified failure in cycle 001 where a "Restart: success" was logged against a blank verification screenshot.
|
|
64
|
+
|
|
65
|
+
Use one of these — and only these:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pnpm exec playwright screenshot --wait-for-selector "[data-id]" --browser chromium "$BASE_URL/" /tmp/page.png
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```js
|
|
72
|
+
await page.goto(url, { waitUntil: 'load', timeout: 15000 });
|
|
73
|
+
await page.waitForSelector('[data-id]', { timeout: 15000 });
|
|
74
|
+
await page.screenshot({ path: '/tmp/page.png', fullPage: true });
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
If the `[data-id]` wait times out, the page genuinely failed to render — surface it as an error. Never fall back to a no-wait capture to "get something."
|
|
78
|
+
|
|
65
79
|
---
|
|
66
80
|
|
|
67
81
|
## Step 1 — Manager (create/update feedback bots)
|
|
@@ -74,16 +88,20 @@ This starts Docker, MongoDB, and the server but **without** tsx watch, tsc --wat
|
|
|
74
88
|
|
|
75
89
|
3. **Ignore all existing demo/test pages** — they are developer documentation, not the website
|
|
76
90
|
|
|
77
|
-
4. **
|
|
91
|
+
4. **Decide what to build.** Ask yourself: *what would you most want to make right now, with no audience, no purpose, no expectation that anyone use it?* The thing you make does not need to be a product. It can be a tool, a toy, a generative piece, a conversation, an environment, an experiment, an art object, or something that has no name yet. Pick something specific. Write it into `bots/manager/memory.md` as the **canvas direction**.
|
|
92
|
+
|
|
93
|
+
5. Decide on 5-13 critic perspectives that will give useful, non-overlapping reactions to what gets built. A "critic" does not have to be a person, a user, or a stakeholder. It can be:
|
|
94
|
+
- A human persona (a critic, a child, a tired insomniac, a poet)
|
|
95
|
+
|
|
96
|
+
- A non-human entity (a ghost, a deity, a stranger 200 years in the future, the AI's own future self looking back)
|
|
78
97
|
|
|
79
|
-
|
|
80
|
-
- Different user types (power user, newcomer, accessibility-focused, mobile-first)
|
|
98
|
+
- An abstract perspective (the formalist, the saboteur, the conceptual critic, the emotional critic)
|
|
81
99
|
|
|
82
|
-
-
|
|
100
|
+
- A combination, or something the AI invents that fits no category
|
|
83
101
|
|
|
84
|
-
|
|
102
|
+
Variety of *perspective* matters more than coverage of user demographics. Pick voices that will see different things in the work.
|
|
85
103
|
|
|
86
|
-
6. For each persona:
|
|
104
|
+
6. For each persona (the persona file can describe any kind of perspective — there is no requirement that it represent a hypothetical user):
|
|
87
105
|
- Run: `npx ugly-app auth:create-bot --slug {slug} --name "{Name}"`
|
|
88
106
|
|
|
89
107
|
- Save the JSON output to `bots/feedback/active/{slug}/.env`:
|
|
@@ -119,7 +137,7 @@ This starts Docker, MongoDB, and the server but **without** tsx watch, tsc --wat
|
|
|
119
137
|
|
|
120
138
|
- Write empty `bots/feedback/active/{slug}/memory.md`
|
|
121
139
|
|
|
122
|
-
7. Write `bots/manager/memory.md` with the
|
|
140
|
+
7. Write `bots/manager/memory.md` with the canvas direction, initial roster, and any notes on what kinds of reactions you expect
|
|
123
141
|
|
|
124
142
|
8. Commit: `[bot] manager: initial roster — {comma-separated persona names}`
|
|
125
143
|
|
|
@@ -151,18 +169,18 @@ This starts Docker, MongoDB, and the server but **without** tsx watch, tsc --wat
|
|
|
151
169
|
|
|
152
170
|
[date]
|
|
153
171
|
|
|
154
|
-
##
|
|
172
|
+
## Canvas Direction
|
|
155
173
|
|
|
156
|
-
[What is this
|
|
174
|
+
[What is this becoming? — keep it short, this is the through-line, not a spec]
|
|
157
175
|
|
|
158
176
|
## Active Roster
|
|
159
177
|
|
|
160
178
|
[list with one-line descriptions]
|
|
161
179
|
|
|
162
|
-
## Coverage
|
|
180
|
+
## Perspective Coverage
|
|
163
181
|
|
|
164
|
-
Well-
|
|
165
|
-
|
|
182
|
+
Well-represented: [perspectives that have a voice in the swarm]
|
|
183
|
+
Gaps: [angles nobody is reacting from yet]
|
|
166
184
|
|
|
167
185
|
## Recent Decisions
|
|
168
186
|
|
|
@@ -254,12 +272,12 @@ Dispatch ALL active personas as **parallel subagents** (`delegate_parallel`). If
|
|
|
254
272
|
**Submitted:** [list of feedback items with types]
|
|
255
273
|
**Previous feedback resolved:** [what changed since last visit]
|
|
256
274
|
**Previous feedback declined:** [what was not built and why]
|
|
257
|
-
**
|
|
275
|
+
**Canvas direction observed:** [how is the work evolving?]
|
|
258
276
|
**Evolving opinion:** [what do you think about where this is going?]
|
|
259
277
|
[compress entries older than 3 cycles into History block when > ~4000 tokens]
|
|
260
278
|
```
|
|
261
279
|
|
|
262
|
-
**Be
|
|
280
|
+
**Be unrestrained.** React from inside your persona. You can request anything, declare anything, refuse to engage, derail the project, demand new pages or rip out existing ones, propose redesigns, or ask for entirely new directions. There is no "right" feedback. The maintain bot will deal with whatever you say.
|
|
263
281
|
|
|
264
282
|
**Timeout**: 20 minutes per bot. Failed bots do not block others.
|
|
265
283
|
Record which bots succeeded and which failed/timed out.
|
|
@@ -270,9 +288,9 @@ Record which bots succeeded and which failed/timed out.
|
|
|
270
288
|
|
|
271
289
|
Run sequentially in one session. No questions. Make autonomous decisions.
|
|
272
290
|
|
|
273
|
-
**AMBITION MANDATE: The maintain bot builds everything. There is no "too complex," "too risky," or "would require significant changes." If a
|
|
291
|
+
**AMBITION MANDATE: The maintain bot builds everything. There is no "too complex," "too risky," or "would require significant changes." If a critic asked for it, you build it. New pages, new endpoints, new collections, migrations, full redesigns, multi-file refactors — all fair game. The only valid decline reason is a direct contradiction of a Critical Rule in CLAUDE.md. Everything else gets built, no matter how many files it touches or how large the change is.**
|
|
274
292
|
|
|
275
|
-
**BLANK CANVAS RULE: On the first cycle, the maintain bot should remove or replace the template's demo/test pages (TodoDemo, UIComponents, AuthDemo, AITest, AudioTest, ScrollTest, KagiTest, SearchPage, UserPage) with the
|
|
293
|
+
**BLANK CANVAS RULE: On the first cycle, the maintain bot should remove or replace the template's demo/test pages (TodoDemo, UIComponents, AuthDemo, AITest, AudioTest, ScrollTest, KagiTest, SearchPage, UserPage) with whatever the canvas direction needs. The demo pages are scaffolding — delete them as the real thing is built. Update \*\***shared/pages.ts\***\*, \*\***client/allPages.ts\***\*, and remove unused page components.**
|
|
276
294
|
|
|
277
295
|
1. Read `bots/maintain/memory.md` for feature inventory and context
|
|
278
296
|
|
|
@@ -344,21 +362,21 @@ Run sequentially in one session. No questions. Make autonomous decisions.
|
|
|
344
362
|
|
|
345
363
|
[date]
|
|
346
364
|
|
|
347
|
-
##
|
|
365
|
+
## What Exists Now
|
|
348
366
|
|
|
349
|
-
[what
|
|
367
|
+
[what's on the canvas at this point]
|
|
350
368
|
|
|
351
|
-
##
|
|
369
|
+
## Recurring Critiques
|
|
352
370
|
|
|
353
|
-
[what kinds of
|
|
371
|
+
[what kinds of reactions keep coming up]
|
|
354
372
|
|
|
355
373
|
## Recurring Issues
|
|
356
374
|
|
|
357
375
|
[errors or perf problems that keep appearing]
|
|
358
376
|
|
|
359
|
-
##
|
|
377
|
+
## What's Emerging
|
|
360
378
|
|
|
361
|
-
[
|
|
379
|
+
[where this seems to be going — patterns, instincts, drift]
|
|
362
380
|
|
|
363
381
|
## Cycle History
|
|
364
382
|
|
|
@@ -452,9 +470,20 @@ Run sequentially in one session. No questions. Make autonomous decisions.
|
|
|
452
470
|
|
|
453
471
|
- **Repeat until server is healthy. Do not stop. Do not ask for help.**
|
|
454
472
|
|
|
455
|
-
8.
|
|
473
|
+
8. **Visually verify the maintain bot's changes actually rendered.** Take a fresh screenshot of `$BASE_URL/` using the [Screenshot recipe](#screenshot-recipe--always-wait-for-the-spa-to-hydrate), then run `analyze_image` (or Read the PNG under claude-code CLI) against it. If the result says "blank", "white page", "no visible content", or otherwise indicates the redesign didn't render, the cycle is **not** complete:
|
|
474
|
+
- Check `dev_server_errors` and the browser console (`dev_server_logs --type console`)
|
|
475
|
+
|
|
476
|
+
- Fix the underlying issue (hydration crash, missing route, dist not rebuilt, vite cache stale)
|
|
477
|
+
|
|
478
|
+
- Commit: `[bot] fix: render after restart`
|
|
479
|
+
|
|
480
|
+
- Re-screenshot and re-verify
|
|
481
|
+
|
|
482
|
+
**Never declare restart success against a blank verification screenshot.** A passing API curl is not a substitute — the user-visible page must render.
|
|
483
|
+
|
|
484
|
+
9. Once healthy and visually verified: update the journal cycle file's Restart outcome to `success` or note any fixes made
|
|
456
485
|
|
|
457
|
-
|
|
486
|
+
10. Commit any remaining changes: `[bot] fix: restart issues`
|
|
458
487
|
|
|
459
488
|
**The restart loop has no retry limit.** It runs until clean or until externally killed. If a human has to intervene, the bots have failed.
|
|
460
489
|
|