# home
The realm behind the profile page at `/u/<namespace>`. gnoweb calls
`Render("")` on the realm at exactly `/r/<namespace>/home`, so this path is
permanent and everything that may change lives behind it:
- **Content** is slots: named markdown fragments, one `Set` transaction each.
- **Layout** is the slot named `layout`, a template filled from `:slug:`
placeholders.
- **Style** is slots under `style.` that the theme reads.
- **Rendering** is a theme: a realm under `home/theme/vN` that registers itself
when deployed and goes live when the authority runs `Accept`. `Rollback`
reverts. The slots never move.
The upgrade machinery is `p/<namespace>/upgradeable/v0`.
## Views
| path | what |
| --- | --- |
| `:slots` | slot index |
| `:slots/<slug>` | one slot, raw |
| `:edit`, `:edit/<slug>` | forms that build the `Set` and `Delete` commands |
| `:system` | authority, live theme, candidates, history, operations |
| `:manifest` | `slug⇥rev⇥bytes⇥sha256` per slot, for tooling |
These four are served by this realm directly and never go through a theme, so
a theme that panics can be rolled back from `:system`. Every other path is the
theme's.
## Writes
Restricted to the authority: `Set`, `Append`, `Delete`; `Accept`, `Withdraw`,
`Rollback`, `Forget`, `Freeze`, `TransferAuthority`. A slug is 1 to 64 bytes
of `[a-z0-9._-]`; the computed placeholders `chainid height owner realm rev
slots theme updated` are reserved.
Accept(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, pkgPath string)
Append(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, slug string, body string)
Authority() string
Delete(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, slug string)
Each(fn func(string, gno.land/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home.Slot) bool)
Fallback(path string) string
Forget(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})
Freeze(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})
Frozen() bool
Get(slug string) string
Has(slug string) bool
HistoryPaths() []string
LastHeight() int64
Layout() string
Link(sub string) string
LivePath() string
Lookup(slug string) (struct{Body string; Rev int; Height int64}, bool)
Manifest() string
NewFiller() *gno.land/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home.Filler
Path() string
PendingPaths() []string
Register(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, t interface {Render func(string) string})
Render(path string) string
Revision() int
Rollback(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})
Set(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, slug string, body string)
Slugs() []string
Style(key string, fallback string) string
TransferAuthority(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, to string)
Withdraw(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, pkgPath string)
Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.
vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.