Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

v2 source realm

Package nsview is the human-facing view — the third realm in the split, and the newest (2026-08-21).

Overview

Package nsview is the human-facing view — the third realm in the split, and the newest (2026-08-21).

It exists because an adversarial review found three defects in the old Render(), which lived inside the permanent `nsdata` vault: unescaped profile text injected into the page markdown, an O(domains × names) home page any user could inflate into a permanent denial of service, and navigation links that 404'd. All three were display bugs, and none of them could ever have been fixed, because that realm is deployed exactly once. The NFT artwork moved here for the same reason.

Display code is swappable now. This realm holds no state, reads everything from nsdata's exported API, and can be redeployed and re-pointed at any time with nothing to migrate.

Functions 8

func BuildSVG

Action
1func BuildSVG(tid string) string
source

BuildSVG renders a token. Everything on the card derives from four stored values — owner, registered, expires, and the domain's drawing — so a renewal moves `expires` and the bar, the time remaining and the years held all follow from it. Nothing is baked at mint: the card is generated on every read, which is what lets a domain's artwork be changed after its names have been sold.

func MarkerCentred

Action
1func MarkerCentred(s string, cx, y, size int, colour string, weight int) string
source

MarkerCentred draws text centred on cx, which is what almost every caller here wants and what the SVG text-anchor attribute would have done for them if a font had been available.

func MarkerText

Action
1func MarkerText(s string, x, y, size int, colour string, weight int) string
source

MarkerText draws a line of text as stroked paths.

`size` is the CAP HEIGHT in user units, not an em size: it is the height of a capital letter, which is the measurement anybody positioning this by eye is actually thinking in.

`x` is the left edge and `y` is the TOP of the capitals, matching how the rest of this file positions things and unlike SVG's own text baseline, which is a trap when mixing the two.

The jitter is what makes it read as a pen rather than a plotter. It is derived from the character and its position, so it is stable: the same string renders identically on every read, which matters because these cards are regenerated constantly and a letter that wobbled between reads would look like a rendering fault.

func MarkerWidth

Action
1func MarkerWidth(s string, size int) int
source

MarkerWidth is what MarkerText will occupy, so a caller can centre it. Counts every character including the ones that draw nothing, because a space still advances.

func NameplateSVG

Action
1func NameplateSVG(label, domain, face, pos string, light bool, expires int64) string
source

NameplateSVG composites the name, the asterisk and the expiry over whatever is already on the card.

Example
1face   "mono" | "serif" | "sans"
2pos    "top" | "middle" | "bottom"
3light  true  = white letters with a black border
4       false = black letters with a white border

Only two ink pairs exist, and that is not a limitation waiting to be lifted. Both read on every background there is; a free colour choice does not, and mid-grey lettering on a mid-grey drawing is exactly what somebody will pick.

`now` is deliberately absent from the signature. Nothing here counts down, so nothing here needs the clock — see the note on the expiry.

func SkinCardSVG

Action
1func SkinCardSVG(name, art, lock string, light bool) string
source

SkinCardSVG draws a skin token's own listing card.

Example
1name   the skin's name, as the shop shows it
2art    the sprite string
3lock   the extension it is restricted to, or "" for one that goes
4       on any name
5light  true  = pale lettering on a dark matte
6       false = dark lettering on a pale matte

The return is a whole document rather than a fragment, because unlike the nameplate this composites over nothing — it IS the card.

func TokenURI

Action
1func TokenURI(tid string) string
source

TokenURI returns the full data: URI for a token, generated on every read so the image always reflects current state (never baked at mint).

Imports 6

Source Files 8