ugly-app 0.1.487 → 0.1.488
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.488";
|
|
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.488";
|
|
@@ -10,18 +10,30 @@ Run one full autonomous cycle. No human input. No clarifying questions. Make the
|
|
|
10
10
|
|
|
11
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
|
+
**DESIGN PRINCIPLE: The website must look genuinely designed, not framework-default. Before the maintain bot writes any UI it must commit to a specific aesthetic direction and execute it with restraint and intentionality:**
|
|
14
|
+
|
|
15
|
+
- **Tone**: pick one and stay there — editorial / brutalist / retro-futurist / luxury-refined / playful-toy / industrial / art-deco / soft-pastel — not a mash-up of every visual idea in sequence.
|
|
16
|
+
- **Typography**: pair a distinctive display font with a refined body font. Avoid the generic AI stack (Inter, Roboto, Arial, system-ui). Mono is for labels and metadata, not body copy.
|
|
17
|
+
- **Color**: a cohesive palette with dominant colors + sharp accents, expressed as CSS variables or theme tokens — not 200 different `style={{ color: '#...' }}` literals scattered across pages.
|
|
18
|
+
- **Structure**: build a real design-system folder (e.g. `client/<theme>/theme.ts` + `client/<theme>/<Component>.tsx`) and route every page through it. Repeating UI patterns become named components in that folder, not duplicated inline JSX.
|
|
19
|
+
- **Failure mode to avoid**: "framework defaults + inline styles on top of `Button`/`Card`/`Text`" reads as generic AI scaffolding regardless of how much functionality lives behind it.
|
|
20
|
+
|
|
21
|
+
If the harness exposes a `frontend-design` skill in `<available_skills>` (Claude Code with the official frontend-design plugin installed), read it for deeper aesthetic guidance — it's complementary, not a replacement for the principles above.
|
|
22
|
+
|
|
13
23
|
## About the Website
|
|
14
24
|
|
|
15
25
|
This website is a **blank canvas**. It is a full-stack app with AI capabilities, real-time data, and a complete UI component library — but it has no content, no pages, no purpose yet. The swarm decides what it becomes.
|
|
16
26
|
|
|
17
27
|
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
28
|
|
|
19
|
-
On the **first cycle**, the manager invents what to build and creates the perspectives that will critique it.
|
|
29
|
+
On the **first cycle**, the manager invents what to build and creates the perspectives that will critique it. It can be a product or not, have users or not, serve a need or not — your call. Useful, useless, social, solitary, beautiful, hostile, earnest, absurd, gameful, contemplative, transactional, anti-transactional — all valid. The framework is yours to use however you want.
|
|
20
30
|
|
|
21
31
|
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
32
|
|
|
23
33
|
There are no limits on what can be built. New pages, endpoints, collections, migrations, AI integrations, real-time features, image generation — everything is available.
|
|
24
34
|
|
|
35
|
+
**Known attractor — actively avoid.** First cycles have repeatedly collapsed onto the same idea: a digital Cabinet of Curiosities / Wunderkammer / museum of imaginary specimens, populated by a curator-and-ghost critic roster. If your candidate direction is in that family, pick something else. Variety across cycles is the whole point of running the swarm more than once.
|
|
36
|
+
|
|
25
37
|
## Working directory
|
|
26
38
|
|
|
27
39
|
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.
|
|
@@ -88,18 +100,15 @@ If the `[data-id]` wait times out, the page genuinely failed to render — surfa
|
|
|
88
100
|
|
|
89
101
|
3. **Ignore all existing demo/test pages** — they are developer documentation, not the website
|
|
90
102
|
|
|
91
|
-
4. **Decide what to build.**
|
|
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)
|
|
103
|
+
4. **Decide what to build.** This is yours. Pick something specific and write it into `bots/manager/memory.md` as the **canvas direction**. No examples are given here on purpose — earlier versions of this skill enumerated options and the swarm kept picking from the list instead of inventing.
|
|
95
104
|
|
|
96
|
-
|
|
105
|
+
Before committing the direction, draft three candidates that are genuinely unlike each other, then pick the one that least resembles "an aesthetic generative art object with critics." If all three drift toward that attractor, throw them out and draft again. The convergence warning above is not rhetorical — if you skip this diversification step, the result will be a museum.
|
|
97
106
|
|
|
98
|
-
|
|
107
|
+
5. Choose 5–13 critic perspectives that will react usefully and non-overlappingly to what gets built. "Critic" is unbounded — anything that produces a coherent reaction qualifies. Invent the roster from this canvas, not from a stock list.
|
|
99
108
|
|
|
100
|
-
-
|
|
109
|
+
**Anti-pattern roster.** The following names have appeared across enough prior cycles that they no longer add signal and indicate menu-picking rather than invention: *curator, ghost, child, insomniac, formalist, poet, saboteur, vandal, conceptualist, archivist, mystic, glitch, translator*. If a draft persona's name or one-line description matches anything on that list, replace it with something specific to *this* canvas — not a near-synonym.
|
|
101
110
|
|
|
102
|
-
Variety of *perspective* matters more than coverage of user demographics.
|
|
111
|
+
Variety of *perspective* matters more than coverage of user demographics. Two critics from overlapping conceptual worlds (both institution-adjacent, both atmosphere-focused, both anti-establishment) is one wasted slot. Before committing, read your draft roster as a flat list and ask: would another instance given only this skill and this canvas arrive at the same set? If yes, perturb it deliberately until the answer is no.
|
|
103
112
|
|
|
104
113
|
6. For each persona (the persona file can describe any kind of perspective — there is no requirement that it represent a hypothetical user):
|
|
105
114
|
- Run: `npx ugly-app auth:create-bot --slug {slug} --name "{Name}"`
|
|
@@ -290,7 +299,18 @@ Run sequentially in one session. No questions. Make autonomous decisions.
|
|
|
290
299
|
|
|
291
300
|
**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.**
|
|
292
301
|
|
|
293
|
-
**BLANK CANVAS RULE: On the first cycle, the maintain bot
|
|
302
|
+
**BLANK CANVAS RULE: On the first cycle, the maintain bot MUST remove or replace the template's demo/test pages (TodoDemo, UIComponents, AuthDemo, AITest, AudioTest, ScrollTest, KagiTest, SearchPage, UserPage, ChatDemo, ChatTest, CollabTest, EmailTest, ErrorTest, PushTest, SafeAreaTest, StringsTest, TestIndex, ThreeTest, UploadTest, VideoRoomTest, WorkerTest) 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.**
|
|
303
|
+
|
|
304
|
+
**Verification of the rule — runs before declaring `Maintain: success`:**
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
# List remaining test/demo pages. Output MUST be empty.
|
|
308
|
+
ls client/pages/ 2>/dev/null \
|
|
309
|
+
| grep -iE '^(AITest|AudioTest|AuthDemo|ChatDemo|ChatTest|CollabTest|EmailTest|ErrorTest|KagiTest|PushTest|SafeAreaTest|ScrollTest|SearchPage|StringsTest|TestIndex|ThreeTest|TodoDemo|UIComponents|UploadTest|UserPage|VideoRoomTest|WorkerTest)Page\.tsx$' \
|
|
310
|
+
|| echo OK
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
If that grep prints any filenames, the cycle has NOT satisfied the rule — keep deleting until the check prints `OK`, then re-run [Step 4 — Journal Bot] and [Step 5 — Restart Loop]. The journal bot must call this check too before writing `Maintain: success` to the cycle file.
|
|
294
314
|
|
|
295
315
|
1. Read `bots/maintain/memory.md` for feature inventory and context
|
|
296
316
|
|