pronouns: per-user pronouns ideology + Pronouns applet on Game Kit; provenance prose uses actor.pronouns at render time — TDD
- User.pronouns CharField w. choices=[pluralism (default), bawlmorese, misogyny, misandry, misanthropy] + pronoun_subj/obj/poss properties; PRONOUN_TABLE single source of truth in apps.lyric.models; mig 0002_user_pronouns
- drama.GameEvent.to_prose() drops module-level PRONOUN_* constants; SIG_READY/SIG_UNREADY/ROLE_SELECTED now resolve poss/subj from self.actor.pronouns at render time, so flipping a user's preference rewrites all their existing scroll prose; default actor → "their"
- SIG_READY prose strips a leading "The " from card_name so "the The Wanderer" reads "the Wanderer" and "the Engraven The Nomad" reads "the Engraven Nomad"; minor arcana ("Maid of Brands") untouched
- new applets/0005 seeds 'pronouns' applet (3x3, game-kit, default visible); _game_kit_sections.html grows a #id_gk_pronouns block w. 5 .gk-pronoun-card items labeled by ideology slug (italic) and tagged data-pronoun + data-trio
- card click → window.showGuard(card, "Set pronoun preference?<span class='guard-pronoun-trio'>{trio}</span>", commitCb); on OK fetches POST /dashboard/set-pronouns w. CSRF cookie + reloads so .active class moves and provenance prose re-renders; NVM dismisses
- dashboard.set_pronouns view (POST-only, login_required, 204/400/405) at /dashboard/set-pronouns; rejects choices not in PRONOUN_TABLE
- _game-kit.scss extends shared card rule to .gk-pronoun-card w. .active fill state + italic ideology label; #id_guard_portal .guard-pronoun-trio styled small/dim/centered under the question
- billscroll aperture: padding-right 0.75rem on #id_drama_scroll inside .applet-scroll so the timestamp column no longer sits beneath the scrollbar
Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -82,6 +82,7 @@ body.page-billscroll {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
padding-right: 0.75rem;
|
||||
|
||||
.scroll-buffer {
|
||||
display: flex;
|
||||
|
||||
@@ -188,7 +188,8 @@
|
||||
|
||||
.gk-deck-card,
|
||||
.gk-trinket-card,
|
||||
.gk-token-card {
|
||||
.gk-token-card,
|
||||
.gk-pronoun-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
@@ -208,6 +209,32 @@
|
||||
&:hover { border-color: rgba(var(--secUser), 0.8); }
|
||||
}
|
||||
|
||||
.gk-pronoun-card {
|
||||
// Card shows the ideology slug (pluralism, bawlmorese, …) in italic;
|
||||
// the guard portal previews the actual slash trio above OK|NVM via JS.
|
||||
// Active card is filled with the secondary tint so the user can see at a
|
||||
// glance which preference is currently in effect.
|
||||
.gk-pronoun-label {
|
||||
font-size: 0.85rem;
|
||||
letter-spacing: 0.05em;
|
||||
text-transform: lowercase;
|
||||
font-style: italic;
|
||||
}
|
||||
&.active {
|
||||
border-color: rgba(var(--secUser), 1);
|
||||
background: rgba(var(--secUser), 0.18);
|
||||
}
|
||||
}
|
||||
|
||||
#id_guard_portal .guard-pronoun-trio {
|
||||
display: block;
|
||||
margin-top: 0.25rem;
|
||||
font-size: 0.75rem;
|
||||
letter-spacing: 0.06em;
|
||||
opacity: 0.75;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.gk-placeholder {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
Reference in New Issue
Block a user