{% set x = c.ctx %}

Gear, toys and consumables. Three kinds because they are measured three different ways: a toy in bouts of time, gear in time worn, a consumable in what's left. The inventory itself lives on the kit page โ€” this is the rule form.

The cage in service

Naming a cage makes every lock open a wear bout for it automatically, so its worn hours are your locked hours โ€” no second bookkeeping, and it lands in the same tables as every other piece of gear. Set the item id above; blank means don't track one.

{% if x.cages %} {% else %}

No cage in the inventory yet. Add one under ๐Ÿถ Gear โ†’ Chastity cage.

{% endif %}

End-of-bout questions

Asked when a bout finishes. Switch one off above and it stops being recorded โ€” it is not recorded invisibly, and a question you leave alone on the form stores nothing rather than a zero.

Badges

Monthly badges are decided the day the month closes and never before โ€” a favourite chosen on the 3rd is a claim about three days wearing the name of a month. Once a month is decided it stays decided, so a bout logged late cannot move a trophy already given. See the cabinet โ†’

{% for r in x.rules %} {% endfor %}
badgewho wears itwhat it takes
{{ r.icon }} {{ r.title }} {{ 'the pup' if r.subject == 'pup' else 'a piece of kit' }}{% if r.period %} ยท monthly{% endif %} {{ r.blurb }}

Categories

Fixed, because each one carries its own typed fields โ€” a plug has an insertable length and a base, a hood has a vision type, a lube has a base that the app checks against your toys' materials. Lengths are stored in millimetres and shown in both units.

{% for cat in x.categories %}{{ cat.icon }} {{ cat.title }}{% endfor %}