Disco DeDisco
75fcc5b34d
billboard applets: single-root wrapper for HTMX swap; full context on toggle — TDD
...
- _applets.html wraps menu + container in one #id_billboard_applets_wrapper div; form's hx-target is now the wrapper, so OK no longer leaves a stale duplicate menu in the DOM (which previously caused the next OK to revert prior toggles)
- toggle_billboard_applets passes full context (recent_room, recent_events, viewer, my_rooms) via factored _billboard_context helper, so Most Recent + My Scrolls keep their content after a toggle instead of falling through to the empty fallback
- applets.js: register id_billboard_applets_wrapper as an applet container so post-swap menu cleanup runs
- BillboardAppletsTest: portrait viewport in setUp; FT covers content preservation, no-revert on second toggle, & post-refresh state
- 4 new ITs: Most Recent renders Coin-on-a-String after toggle; My Scrolls renders room name; response has single menu div; second toggle preserves prior hidden state
Code architected by Disco DeDisco <discodedisco@outlook.com >
Git commit message Co-Authored-By:
Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-03 17:15:26 -04:00
Disco DeDisco
e78bbb873b
Billnotes note-page interaction: hover glow, click-lock, DON/DOFF; note titles + card-ref styling — TDD
...
- note-page.js: click-lock (_lockedItem + notes-locked body class); DON auto-DOFFs prev donned; _setGreeting updates navbar; _donnedItem exposed for test API
- NotePageSpec.js: 18 Jasmine specs covering lock/unlock, DON/DOFF state, auto-DOFF, greeting update, initial load; flushPromises helper for chained fetch .then()
- _note.scss: DON/DOFF opacity:0 by default; hover + locked + donned states show them; body:not(.notes-locked) hover suppression
- views.py: Super-Schizo/Super-Nomad card titles; recognition_title field (display_title) separate from card title; mark_safe descriptions w. card-ref spans
- my_notes.html: |safe on description; recognition_title for Recognitions block
- _navbar.html: id_greeting_prefix/id_greeting_name spans for JS greeting update
- _base.scss: global .card-ref rule (--terUser, font-weight 600, !important)
Code architected by Disco DeDisco <discodedisco@outlook.com >
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 01:54:57 -04:00
Disco DeDisco
6ad736413b
super-schizo + super-nomad Notes: auto-grant to superusers; sig unlock; navbar titles — TDD
...
- drama/models.py: _NOTE_DISPLAY dict; Note.display_title / .display_greeting
properties; super-schizo → "21st Century" + "Schizoid Man";
super-nomad → "Howdy," + "Stranger"
- billboard/views.py: _NOTE_META super-schizo/nomad entries with mark_safe
HTML descriptions ("card-ref"-styled card names), swatch_label "I"/"0",
no palette_options; swatch_label added to note_items context
- lyric/models.py post_save: new superusers get super-schizo + super-nomad
Notes automatically; setup_sig_session grants them explicitly too
- epic/models.py _filter_major_unlocks: accepts super-nomad / super-schizo
as valid unlocks alongside their plain counterparts
- _navbar.html: display_greeting|safe + display_title replace slug|capfirst
- my_notes.html: note-item__image-box--label branch for swatch_label
- _note.scss: .note-item__image-box--label modifier (bold italic, solid border)
- _base.scss: .ord global ordinal superscript class (21st etc.)
- ITs: SuperuserNoteGrantTest (3); SigSelectRenderingTest +2 (super- variants)
Code architected by Disco DeDisco <discodedisco@outlook.com >
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 01:30:02 -04:00
Disco DeDisco
b86a4ddd73
fix FT note→post renames in test_sharing & test_layout_and_styling; note page layout polish
...
ci/woodpecker/push/pyswiss Pipeline was successful
ci/woodpecker/push/main Pipeline failed
- test_sharing.py: NotePage→PostPage, MyNotesPage→MyPostsPage, add_note_item→add_post_line,
share_note_with→share_post_with, get_note_owner→get_post_owner; navigate to /billboard/
- test_layout_and_styling.py: NotePage→PostPage, get_item_input_box→get_line_input_box,
add_note_item→add_post_line; navigate to /billboard/
- my_notes.html: remove "My Notes" h2 heading
- _note.scss: .note-page padding 0.75rem 1.5rem; .note-don-doff top:-1rem (DON centers on
corner), gap:0.4rem (tight like game kit); .note-item padding-left:1.25rem (left buffer)
Code architected by Disco DeDisco <discodedisco@outlook.com >
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 01:55:12 -04:00
Disco DeDisco
214120ef2d
note title equip: DON/DOFF buttons outside top-left corner; User.active_title FK; don/doff views; greeting updated via JS — TDD
...
- lyric/models.py: active_title = ForeignKey('drama.Note', null=True, SET_NULL)
- lyric migration 0020_add_active_title
- billboard/views.py: don_title + doff_title views; is_equipped per note_item context
- billboard/urls.py: note/<slug>/don + note/<slug>/doff routes
- _navbar.html: id_greeting_name span; shows active_title.slug|capfirst when set
- my_notes.html: .note-don-doff buttons (DON/DOFF, × when disabled); data-don-url/doff-url/title attrs
- note-page.js: _bindDonDoff() — DON POST sets greeting + swaps btn state; DOFF restores Earthman
- _note.scss: .note-don-doff position:absolute left:-1rem top:0; flex-direction:column gap:1.25rem
- ITs: NoteEquipTitleViewTest (5 tests); UserModelTest.test_active_title_* (3 tests)
- FT: NoteEquipTitleTest.test_don_equips_title_greeting_and_doff_restores
Code architected by Disco DeDisco <discodedisco@outlook.com >
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 01:44:58 -04:00
Disco DeDisco
7d4389a74a
note palette modal: NVM closes confirm only; confirm visibility via style.display; swatch labels from _PALETTE_DEFS; recognitions block — TDD
...
ci/woodpecker/push/pyswiss Pipeline was successful
ci/woodpecker/push/main Pipeline failed
- note-page.js: NVM hides confirm (style.display='none') — swatch modal stays open;
_showConfirm/_hideConfirm use style.display to bypass CSS specificity issues;
_doSetPalette reads data-palette-label before modal closes; appends
.note-recognitions__palette-line w. dim+bold markup after OK
- billboard/views.py: import _PALETTE_DEFS; _PALETTE_LABELS dict; _palette_opts()
enriches palette_options w. {name, label}; my_notes adds palette_label to note_items
- _note.scss: confirmed palette swatch uses gradient (palette vars cascade from
palette-* class); hardcoded bardo/sheol bg overrides removed; .note-recognitions block
w. .note-recognitions__header (tt-sign-section-header style) & __dim (tt-dim style);
.note-swatch-label in terUser bold; .note-item__palette gradient; confirm display:none default
- my_notes.html: p.name/p.label replaces slice hack; data-palette-label on swatch rows;
Recognitions block w. dim spans & strong values; removes hidden attr from confirm
- IT: test_palette_modal_renders_swatch_labels; test_also_saves_user_palette
- FT: NVM test corrected — modal stays open, confirm is_displayed() False; T2a URL fix
Code architected by Disco DeDisco <discodedisco@outlook.com >
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 01:31:19 -04:00
Disco DeDisco
cd5252c185
note palette: swatch previews body palette, NVM reverts, OK saves sitewide; note_set_palette also saves user.palette — TDD
...
- note-page.js: body class swap on swatch click; 10s auto-revert timer; NVM reverts;
.note-item--active persists border/glow while modal open; .previewing on swatch
- billboard/views.py: note_set_palette also saves user.palette via _unlocked_palettes_for_user
- _note.scss: .note-swatch-body gradient (palette vars cascade from parent palette-* class);
.previewing state; .note-item--active; note-palette-modal tooltip glass;
note-palette-confirm floats below modal (position:absolute, out of flow)
- my_notes.html: note-item__body wrapper; image-box right; swatch row OK buttons removed
- FTs: T2a URL fix (/recognition → /my-notes); T2b split into preview+persist & NVM tests;
NoteSetPaletteViewTest.test_also_saves_user_palette IT
Code architected by Disco DeDisco <discodedisco@outlook.com >
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 23:54:05 -04:00
Disco DeDisco
473e6bc45a
rename: Note→Post/Line (dashboard); Recognition→Note (drama); new-post/my-posts to billboard
...
- dashboard: Note→Post, Item→Line across models, forms, views, API, urls & tests
- new-post (9×3) & my-posts (3×3) applets migrate from dashboard→billboard context; billboard view passes form & recent_posts
- drama: Recognition→Note, related_name notes; billboard URL /recognition/→/my-notes/, set-palette at /note/<slug>/set-palette
- recognition.js→note.js (module Note, data.note key); recognition-page.js→note-page.js; .recog-*→.note-*
- _recognition.scss→_note.scss; BillNotes page header; applet slug billboard-recognition→billboard-notes (My Notes)
- NoteSpec.js replaces RecognitionSpec.js; test_recognition.py→test_applet_my_notes.py
- 4 migrations applied: dashboard 0004, applets 0011+0012, drama 0005; 683 ITs green
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 22:32:34 -04:00
Disco DeDisco
6d9d3d4f54
recognition: page, palette modal, & dashboard palette unlock — TDD
...
- billboard/recognition/ view + template; recognition/<slug>/set-palette endpoint (no trailing slash)
- recognition.html: <template>-based modal (clone on open, remove on close — Selenium find_elements compatible)
- recognition-page.js: image-box → modal → swatch preview → body-click restore → OK → confirm → POST set-palette
- _palettes_for_user() replaces static PALETTES; Recognition.palette unlocks swatch + populates data-shoptalk
- _unlocked_palettes_for_user() wires dynamic unlock check into set_palette view
- _applet-palette.html: data-shoptalk from context instead of hard-coded "Placeholder"
- _recognition.scss: banner, recog-list/item, image-box, modal, palette-confirm; :not([hidden]) pattern avoids display override
- FT T2 split into T2a (banner → FYI → recog page), T2b (palette modal flow), T2c (dashboard palette applet)
- 684 ITs green; 7 FTs green
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 04:02:14 -04:00
Disco DeDisco
3cc9f5a527
recognition: seed billboard-recognition applet 4×4; vertical title link; placement in billboard grid
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 02:21:35 -04:00
Disco DeDisco
32d8d97360
wired PICK SKY server-side polarity countdown via threading.Timer (tasks.py); fixed polarity_done overlay gating on refresh; cleared sig-select floats on overlay dismiss; filtered Redact events from Most Recent applet
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 00:34:05 -04:00
Disco DeDisco
b110bb6d01
remove obsolete skipped tests; fix billboard applet menu containment; align landscape menus
...
Deleted skips:
- test_fan_next_button_advances_card (T11) + test_fan_remembers_position_on_reopen (T13):
fan-nav nav button obstruction — deferred indefinitely, not worth tracking
- test_selected_sig_card_removed_from_deck_for_other_gamers (S5): card count
mismatch in channels context — grand overhaul pending, obsolete with new sig-select
- Removed stale TODO comment about #id_inv_sig_card (element no longer exists)
- Dropped unused `import unittest` from test_room_sig_select.py
billboard applet menu fix: moved #id_billboard_applet_menu out of
#id_billboard_applets_container — container-type:inline-size was making the
container a containing block for fixed-position descendants, clipping the menu.
Landscape menu alignment: all applet menus now right:0.5rem (flush with gear/kit
buttons in the 4rem right sidebar); added #id_room_menu to the landscape rule.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-05 23:33:13 -04:00
Disco DeDisco
afe8e2b32c
tweaked some prose templating in apps.drama.models; updated _applet-billboard-most-recent.html partial to mirror new row-by-row styling & html structure of room_scroll.html
ci/woodpecker/push/woodpecker Pipeline failed
2026-04-02 15:38:44 -04:00
Disco DeDisco
9698d70164
scroll buffer in room_scroll.html aperture fine-tuned so that 'What happens next…?' can always be reached by scrolling on a fresh page reload, even if the user was at the very end of the scroll
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-24 23:47:17 -04:00
Disco DeDisco
2896efa8e0
long overdue fix to last pipeline push, where scroll position did not persist across sessions
2026-03-24 21:36:02 -04:00
Disco DeDisco
11c85d56d1
fixed last of scroll position view in portrait mode to remember & display user's last line at bottom of applet viewport
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-24 19:11:27 -04:00
Disco DeDisco
8bab26e003
scroll position save fix attempt no. 1 feat. 'What happens next…?' text at bottom of scroll; buffer added to scroll, accounter for in FTs
2026-03-24 19:02:29 -04:00
Disco DeDisco
bc78d2c470
offloaded templates/core/_partials/_forthcoming.html to inject in any applet or other feature under construction; used immediately in Contacts billboard applet; styles updated accordingly
2026-03-24 18:40:16 -04:00
Disco DeDisco
cde231d43c
billscroll should now remember user's position across devices
2026-03-24 17:44:34 -04:00
Disco DeDisco
a0f8aeb791
similar pseudo-applet styling added to _scroll.html
2026-03-24 17:31:51 -04:00
Disco DeDisco
c71f4eb68c
styled more of Most Recent applet, allowing for scrolling of 36 most recent events and Load More link
2026-03-24 17:19:09 -04:00
Disco DeDisco
189d329e76
new applet structure for apps.billboard, incl. My Scrolls, Contacts & Most Recent applets; completely revamped _billboard.scss, tho some styling inconsistencies persist; ensured #id_billboard_applets_container inherited base styles found in _applets.scss; a pair of new migrations in apps.applets to support new applet models & fields; billboard gets its first ITs, new urls & views; pair of new FT classes in FTs.test_billboard
2026-03-24 16:46:46 -04:00
Disco DeDisco
62f6c27806
many styling changes to applets and palettes applet esp.; all applets seeded w. < 3rows bumped to 3 w. new migration in apps.applets; setting palette no longer reloads entire page, only preset background-color vars; two new ITs in apps.dash.tests.ITs.test_views.SetPaletteTest to ensure dash.views functionality fires; unified h2 applet title html structure & styled its text vertically to waste less applet space
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-24 00:26:22 -04:00
Disco DeDisco
5607f70852
added type='button' to both guard portal btns so firefox won't normalize to type='submit'; fixed several FTs for new click-guard functionality on Role card select & room gear menu DEL & BYE btns; several restorations to landscape breakpoint incl. logged-ion display_name, copyright info; provided title to room_scroll.html; a slurry of other minor fixes
ci/woodpecker/push/woodpecker Pipeline failed
2026-03-23 19:31:57 -04:00
Disco DeDisco
eecb6c2be6
ensured footer was pinned to bottom of page for new-ish billboard.html & room_scroll.html pages; introduced mobile landscape layout, incl. leftward 'navbar', rightward 'footer'; ensured z-index primacy of #id_kit_btn, which would here appear behind the kit bar when open; other fixes introduced by problems stemming largely from new landscape styling
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-23 01:06:14 -04:00
Disco DeDisco
2fd3ec9ab2
added header_text to billboard.html; restored L+R .container padding after last fix (still 0 T+B)
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-22 15:06:54 -04:00
Disco DeDisco
3b905e0436
moved _scroll.html from templates/apps/drama/ to templates/core/_partials/; updated templates/apps/billboard/room_scroll.html include tag to point there
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-21 23:39:47 -04:00
Disco DeDisco
91e0eaad8e
new DRAMA & BILLBOARD apps to start provenance system; new billboard.html & _scroll.html templates; admin area now displays game event log; new CLAUDE.md file to free up Claude Code's memory.md space; minor additions to apps.epic.views to ensure new systems just described adhere to existing game views
ci/woodpecker/push/woodpecker Pipeline was successful
2026-03-19 15:48:59 -04:00