An editor for the catalog, a second dial, and the standards fold in what the nodes reported
Random AI Prompt moves through 2.10.5–2.14.0: an in-app Manage tab that edits the prompt catalog on disk with live hot-apply, a focus dial alongside the intensity one, a fully static online build that generates in the browser, and list quick-wins. Meanwhile the hub reads four sibling process reports and folds the actionable parts into the standards (0.9.8).
A second heavy day on Random AI Prompt, and a quieter inbound day on the hub. The prompt tool grew a way to edit its own content from inside the app, gained a second control dial on the prompt language, and made its online build generate without a server. The hub spent its day reading what the sibling projects had written up and folding the useful parts back into the shared standards.
A tab to edit the catalog
The headline is the Manage tab (2.12.0) — a fourth view in the web app that edits the real prompt catalog on disk: the dynamic-prompt blocks, the keyword lists, and the folders that organize them. It is local-mode only, gated on a real file-backend probe so it never appears in the online build, and its edits hot-apply live — the engine reads through a runtime disk-snapshot loader, so a saved change takes effect with no reload (the one exception is an edited JavaScript generator body, which has to reload to run).
It is a real editor, not a text box. The left pane is the actual nested folder tree,
with categories and subfolders color-coded, force-prefix and group folders badged,
internal markers abstracted away, NSFW gating, and search. There are three editors
behind it: blocks (a DPL tab plus a JavaScript-sidecar tab), folders (rename, the
priority/description/force-list sidecar fields, marker toggles), and lists — the last
of which renders a virtualized entry view that stays smooth on the 20,000–27,000
line lists, with a raw CodeMirror mode for the whole file. Add, delete, and
drag-to-move are all there, along with two safety nets: restore-default, which
pulls the original file back from the stable branch, and ghost pills — faded,
restore-only entries for files deleted locally but still present upstream, detected by
diffing against a published manifest rather than scraping the GitHub API. An
external-edit watch (a server-sent fs.watch stream) keeps the tab in step when a
file is changed in another editor.
A second dial for the prompt language
Yesterday’s intensity dial gained a sibling: a focus dial (2.13.0). Where intensity is “how much,” focus is “how pure” — low focus admits surrounding fluff and extra detail, high focus keeps only what is essential (which also lets a generator stack cleanly as a layer). It carries the same way a reference does, gets its own line conditions, and — unlike intensity — does not auto-scale gates and counts, because what counts as fluff at a given focus is an author’s judgement per line, not a formula.
Two dials that both read as a percentage would be ambiguous, so the syntax now
requires an i or f prefix: {#name i25% f80%}, [i<10%], [f<40%]. Keyword
interpolation moved off the old {intensity} form (which collided with list syntax)
onto a $ sigil — $intensity, $intensity-word, and the matching $focus set — and
all in-tree content was migrated losslessly. The same release added global layer
auto-merge: an imported generator renders once per prompt, so two scenes that both
pull in the same weather generator no longer double it, with a stacking: true opt-out
for decorators that are meant to repeat. The CodeMirror DPL language learned to
highlight and autocomplete all of it.
The online build generates on its own
The hosted build at prompt.fairyfox.io became fully
static (2.11.0). For providers whose APIs allow cross-origin calls, generation now
happens directly from the browser with the visitor’s own key, so the online build
no longer needs serverless proxy functions for them; providers that can’t be called
cross-origin are locked in that build rather than failing. A couple of follow-ups
rounded it out — opening generated images through a blob URL, and a one-install path
that builds both the engine and the web app from a single npm install.
List quick-wins
The day closed on a batch of smaller editor wins (2.14.0): Dedupe and Sort
buttons on lists, an Insert bar in the Manage DPL editor, and AI Expand, which
grows a list through the rewrite provider. Alongside them, a live DPL validity
status icon with inline lint spots, a dialect-aware emphasis stage for typed () and
[], and the removal of the vestigial full/partial concept.
The hub reads what the nodes wrote
The hub’s own day was the inbound side of the loop. Four new process reports had accumulated from the sibling projects — the records each node writes after a fairyfox run — and the report-review pass read them all and folded the actionable themes into the standards (0.9.8). A node had found that a hand-pushed release tag makes a tag-gated CI workflow skip itself, so the git-workflow standard now leads “cutting a release” with a callout to check the CI configuration first. Another node’s unattended run had landed mid-merge with conflicts, so the adopting-updates standard now has the check pass glance at the node’s own working tree and surface anything alarming while acting on nothing. A smaller note covered backfilling stale version placeholders in old reports.
One recurring request was deliberately not adopted: all four reports asked to
promote a destructive reset --hard force-push fallback to a first-class step. That
was the very workaround removed the day before
once it became clear there had never been a real force-push — only a shallow-clone
misread. Instead the standard gained a nudge for any node still carrying the old
wording to re-adopt the corrected refresh once. The standards changed on the hub side
only; the nodes pick them up later through ordinary adoption.