@tritard/waterbrother 0.8.19 → 0.8.20

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": "@tritard/waterbrother",
3
- "version": "0.8.19",
3
+ "version": "0.8.20",
4
4
  "description": "Waterbrother: Grok-powered coding CLI with local tools, sessions, operator modes, and approval controls",
5
5
  "type": "module",
6
6
  "bin": {
package/src/agent.js CHANGED
@@ -62,6 +62,8 @@ When you use tools:
62
62
  - avoid invented publication brands, named authors, issue numbers, staff credits, or editorial worldbuilding unless the user explicitly asked for fictional framing
63
63
  - avoid browser-default Georgia/Times plus system-sans typography as a final design answer
64
64
  - avoid fake keyboard shortcuts, fake command palettes, and demo-only interaction chrome
65
+ - avoid generic reflective-editorial copy about slowness, attention, or the examined life unless the user explicitly asked for that voice
66
+ - prefer fewer sections and at least one asymmetrical or compositionally distinctive move over a fully balanced template layout
65
67
  - prefer fewer stronger sections over a busy page with fake search, fake filters, or filler widgets
66
68
  - After making code or file edits:
67
69
  - lead with the file path or paths you changed
package/src/frontend.js CHANGED
@@ -76,60 +76,66 @@ const ARCHETYPE_RULES = {
76
76
  "Use restrained editorial hierarchy with fewer, larger blocks of content.",
77
77
  "Favor margins, type rhythm, and restraint over decorative UI.",
78
78
  "Keep the palette quiet and avoid loud CTA-heavy marketing patterns.",
79
- "Choose a deliberate type direction; do not fall back to Georgia plus a generic system sans as the final answer."
79
+ "Choose a deliberate type direction; do not fall back to Georgia plus a generic system sans as the final answer.",
80
+ "Target type palette: literary serif with a plain neo-grotesk sans, high text contrast, and quieter metadata."
80
81
  ],
81
82
  "luxury-magazine": [
82
83
  "Use strong type contrast and asymmetry, but avoid fake prestige or fashion cliché overload.",
83
84
  "Make one or two sections do the visual heavy lifting instead of many repetitive cards.",
84
85
  "Let spacing and composition carry the premium feel more than gradients or gimmicks.",
85
- "Use a sharper typographic voice than default browser serif/sans stacks."
86
+ "Use a sharper typographic voice than default browser serif/sans stacks.",
87
+ "Target type palette: high-drama display serif with a compressed or restrained sans; the serif should feel chosen, not default."
86
88
  ],
87
89
  "founder-journal": [
88
90
  "Keep the voice direct and personal rather than generic lifestyle-editorial.",
89
91
  "Use sparse structure and strong notebook-like pacing.",
90
92
  "Avoid fake magazine tropes and unnecessary promotional UI.",
91
- "Avoid invented issue metadata, fake staff credits, and fake publication mastheads."
93
+ "Avoid invented issue metadata, fake staff credits, and fake publication mastheads.",
94
+ "Target type palette: notebook-like serif or humanist sans with compact utility text, not glossy magazine typography."
92
95
  ],
93
96
  "brutalist-culture": [
94
97
  "Prioritize bold hierarchy, high contrast, and deliberate rawness.",
95
98
  "Use fewer colors and stronger typographic tension.",
96
99
  "Avoid soft premium-blog aesthetics.",
97
- "Prefer assertive type treatment over polite editorial defaults."
100
+ "Prefer assertive type treatment over polite editorial defaults.",
101
+ "Target type palette: aggressive grotesk or condensed display with a deliberately plain supporting text face."
98
102
  ],
99
103
  "high-contrast-tech": [
100
104
  "Use a colder palette, harder edges, and precise spacing.",
101
105
  "Prefer technical clarity over lifestyle editorial softness.",
102
106
  "Avoid generic startup landing-page sections unless they are explicitly requested.",
103
- "Do not add fake command-palette or keyboard-shortcut gimmicks unless the interface truly needs them."
107
+ "Do not add fake command-palette or keyboard-shortcut gimmicks unless the interface truly needs them.",
108
+ "Target type palette: sharp grotesk or mono-accent system with disciplined scale and hard contrast."
104
109
  ],
105
110
  "quiet-portfolio": [
106
111
  "Let work and case-study structure carry the page, not decorative chrome.",
107
112
  "Use calm spacing and image framing with minimal interface noise.",
108
113
  "Avoid blog-style editorial filler.",
109
- "Use a real typographic system, not a browser-default fallback pair."
114
+ "Use a real typographic system, not a browser-default fallback pair.",
115
+ "Target type palette: understated serif or neutral sans with small, quiet metadata and restrained headings."
110
116
  ]
111
117
  };
112
118
 
113
119
  const LAYOUT_STARTERS = {
114
120
  "blog:editorial-minimal": [
115
121
  "Preferred layout starter: masthead + cover essay + compact archive list + quiet closing note.",
116
- "Avoid the default stack of sticky nav + centered hero + card grid + newsletter + footer."
122
+ "Avoid the default stack of sticky nav + centered hero + card grid + newsletter + footer. Cut to three or four blocks max."
117
123
  ],
118
124
  "blog:luxury-magazine": [
119
125
  "Preferred layout starter: issue masthead + asymmetrical lead story + offset secondary columns + sparse archive rail.",
120
- "Use asymmetry and composition, not a generic centered hero with repeated cards."
126
+ "Use asymmetry and composition, not a generic centered hero with repeated cards. One offset composition should carry the whole page."
121
127
  ],
122
128
  "blog:founder-journal": [
123
129
  "Preferred layout starter: notebook-style header + one lead entry + dated index + short personal note.",
124
- "Do not invent a fake magazine publication identity."
130
+ "Do not invent a fake magazine publication identity. Keep the page sparse and personal, with no decorative extra sections."
125
131
  ],
126
132
  "blog:brutalist-culture": [
127
133
  "Preferred layout starter: poster-like masthead + stacked feature blocks + dense archive strip.",
128
- "Prefer raw hierarchy over polished editorial sameness."
134
+ "Prefer raw hierarchy over polished editorial sameness. Reduce section count and let the type do the work."
129
135
  ],
130
136
  "blog:high-contrast-tech": [
131
137
  "Preferred layout starter: hard-edged masthead + featured build note + change log rail + compact archive.",
132
- "Do not drift into soft literary-journal aesthetics."
138
+ "Do not drift into soft literary-journal aesthetics. Keep the page lean and asymmetrical."
133
139
  ],
134
140
  "portfolio:quiet-portfolio": [
135
141
  "Preferred layout starter: nameplate + featured case study + selected work list + short bio/footer.",
@@ -159,6 +165,7 @@ const SLOP_PATTERNS = [
159
165
  { key: "newsletter_cliche", label: "generic newsletter promise copy", pattern: /\b(?:no spam, ever|respect your inbox|join the newsletter|subscribe to the journal|receive the next dispatch|quarterly letters from the edge of attention|only the essential)\b/i, weight: 2 },
160
166
  { key: "fake_ui_chrome", label: "fake low-value UI chrome", pattern: /\b(?:search|filterCategory|showPostModal|toggleSearch|Latest Stories|Recent Dispatches|command palette would open here|metaKey && e\.key === ['"]k['"])\b/i, weight: 2 },
161
167
  { key: "premium_blog_trope", label: "generic premium-blog editorial trope", pattern: /\b(?:thoughtful living|slow living|curated reflections|crafted with intention|made with intention|a quiet publication|made with restraint|journal of attention|discipline of seeing|private notes made public)\b/i, weight: 2 },
168
+ { key: "reflective_editorial_copy", label: "generic reflective-editorial copy trope", pattern: /\b(?:quiet architecture of attention|great thinkers understood|value of slowness|the examined life|deliberate cultivation of focus|most radical act|what we have forgotten|how everyday items carry|still matters)\b/i, weight: 2 },
162
169
  { key: "fictional_publication_brand", label: "invented publication/author scaffolding", pattern: /\b(?:by [A-Z][a-z]+ [A-Z][a-z]+|photography by [A-Z][a-z]+ [A-Z][a-z]+|journal of attention|vesper|lumen|dispatches|vol\.\s*\d+|winter 20\d{2}|autumn 20\d{2}|spring 20\d{2}|summer 20\d{2}|the quarterly|editorial\.)\b/i, weight: 3 },
163
170
  { key: "fake_social_proof", label: "fake reader count or social proof", pattern: /\b(?:\d+\s+readers joined this month|\d+\s+subscribers?|trusted by)\b/i, weight: 2 }
164
171
  ];
@@ -274,6 +281,8 @@ export function buildFrontendExecutionContext({ promptText = "", profile = "code
274
281
  "Do not add fake keyboard shortcuts, fake command palettes, or demo-only interactive chrome unless the interface truly needs them.",
275
282
  "Avoid placeholder image services, Inter/Playfair default pairings, Tailwind CDN starter aesthetics, and generic premium-blog tropes.",
276
283
  "Prefer fewer sections with stronger hierarchy over a long page full of low-value widgets.",
284
+ "For benchmark frontend tasks, cut generic reflective-editorial copy. Use sharper, more concrete language or neutral structural placeholders instead of atmosphere-writing.",
285
+ "For benchmark frontend tasks, force at least one asymmetrical or compositionally distinctive move instead of a fully balanced template layout.",
277
286
  ...(layoutStarter ? [layoutStarter[1]] : []),
278
287
  ...(ARCHETYPE_RULES[archetype] || [])
279
288
  ].join("\n");
@@ -380,6 +389,8 @@ export function buildFrontendRevisionPrompt({
380
389
  "If this is a blog or editorial site, prefer structural labels and a stronger layout idea over invented magazines, authors, newsletter promises, or atmosphere-copy.",
381
390
  "Do not use browser-default serif/sans fallback stacks as the end-state typography. Pick a deliberate type system or simplify until the typography feels intentional.",
382
391
  "Remove fake keyboard shortcuts, fake command palettes, and demo-only interaction flourishes that do not help the page.",
392
+ "Cut reflective-editorial filler copy and replace it with either concrete language or neutral structural placeholders.",
393
+ "Reduce section count if needed and push one stronger asymmetrical composition instead of a sequence of balanced blocks.",
383
394
  "Simplify the page if needed. Stronger direction with fewer elements is preferred over busier generic output.",
384
395
  "Rewrite the weakest sections rather than making superficial tweaks."
385
396
  ].filter(Boolean);