README.md
gno.land/r/moul/x/allinone/devtools
The worked example of wiring moul's developer packages into one realm: what a new realm should copy.
Eight packages, each earning its place in the output:
| package | what it contributes |
|---|---|
r/moul/config |
the notice block, the pause guard, which explorer to link |
p/moul/mygnoscan |
the explorer routes |
p/moul/debug |
the ?debug=1 panel |
p/moul/realmpath |
reading the render path |
p/moul/kit/ui |
escaping caller input, and the tables |
p/moul/md |
the markdown |
p/moul/txlink |
the call links |
p/moul/fifo |
the bounded note list |
The three lines worth copying
1func Render(path string) string {
2 return config.TopBlockFor(realmPath) + body + config.BottomBlockFor(realmPath)
3}
4
5func Add(cur realm, body string) {
6 config.AssertWritableFor(realmPath) // honours the pause switch
7 notes.Append(ui.Inline(body)) // escapes what a caller typed
8}
The first gives the realm a place for a warning and a pause banner without
shipping any banner code, and returns "" while nothing is set, so a page that
concatenates it unconditionally is unchanged by default.
The second is two separate guards and both have to be there: the pause one so an incident can stop writes from outside this realm and without a redeploy, and the escaping one because a string a caller typed is the oldest way to break a page.
Two views
Render("") is the root and is free of anything that moves, so an example test
can pin it. Everything live (the height, the chain id, the links built from
them) is under :chain, which is also what keeps the pinned output stable.
State is disposable: the note list is bounded by fifo at 10 entries and this
realm is private = true, so a redeploy wipes it on purpose.
Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.
Dependency graph:

🧪 Highly experimental — potentially vibe-coded. Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: DISCLAIMER.