diff options
| author | srdusr <[email protected]> | 2026-02-28 01:17:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2026-02-28 01:17:00 +0200 |
| commit | 5af72f55bb7fb620af740c9da394e093d7f1280a (patch) | |
| tree | 81fb6ae1830886a25b0f81912a1a12636493ba51 /data/packs/general.json | |
| parent | d7c1c7b35e9d0995eed41d437404d5255529cf17 (diff) | |
| download | typerpunk-5af72f55bb7fb620af740c9da394e093d7f1280a.tar.gz typerpunk-5af72f55bb7fb620af740c9da394e093d7f1280a.zip | |
Sell merchandise, put the sprites on the track, and add the page margins
Merchandise. Shirts, mugs and deskmats, sold through the same hosted
checkout. Physical goods differ from cosmetics in three ways the schema had
to carry: they have a size to choose, they need an address, and payment
unlocks nothing. What a paid order produces is an obligation to pack and post
something.
The address is collected by Stripe on its own page and arrives here on the
webhook, so no postal detail is ever entered on this site. Postage is a
separate line item rather than folded into the price. A size is checked
against the sizes the item actually comes in, on the server as well as in the
browser, so a request naming anything else is refused rather than quietly
posted as a medium.
/api/admin/orders lists what has been paid for and not yet sent, and the
Contribute screen shows an administrator the same list with the address and a
button to mark each one posted. Without that the list of what is owed lives
only in the processor's dashboard. Shipping is limited to 21 countries, which
is a list of places somebody is willing to post to, not a technical limit.
The race view. The sprite sat still at the left of a 6px bar, which made the
one thing a player owns and can see the least visible part of the race. It
rides the track now, moving with progress, on a dashed line that reads as
road ahead with the trail behind it. The field is 1040px wide rather than
680, the sprites are 30px rather than 18, and each row carries its own
percentage as well as its speed.
Advertising. Two 160x600 rails in the page margins, shown only above 1424px,
which is the width at which they fit beside the widest content column without
crowding it. Below that they do not exist. They follow the same rules as the
banner: never while typing, never for a supporter.
--border-color was used in five places and defined in none. An undefined
custom property invalidates the whole declaration at computed-value time, so
every one of those borders fell back to currentColor: bundle cards, merch
cards, the size buttons and the settings checkbox all had borders that were
either invisible or faint text-coloured lines. It is defined now, derived
from each theme's neutral so it tracks the palette.
.settings-hint caps itself at 340px, which is right under a heading and wrong
for a line introducing a full-width grid.
Verified against a real database: the catalogue endpoint, a shirt refused
without a size, a shirt refused with a size it does not come in, a valid size
and a no-variant mug both reaching checkout, 404 on an unknown item, 401
unauthenticated, and 401 on the admin orders list without the role.
24 Rust tests, 3 browser tests, and all 21 screen and viewport combinations
clean.
Diffstat (limited to 'data/packs/general.json')
0 files changed, 0 insertions, 0 deletions