903193d825
Convert events header/panel f-string HTML to sexp calls
...
Migrates ~20 functions from f-string HTML construction to sexp():
- _oob_header_html, _post_header_html label/cart badge
- _calendars_header_html, _calendar_header_html, _calendar_nav_html
- _day_header_html, _day_nav_html (entries scroll menu + admin cog)
- _markets_header_html, _payments_header_html labels
- _calendars_main_panel_html + _calendars_list_html
- _calendar_main_panel_html (full month grid with day cells + entry badges)
- _day_main_panel_html + _day_row_html (entries table)
- _calendar_admin_main_panel_html + _calendar_description_display_html
- _markets_main_panel_html + _markets_list_html
- _payments_main_panel_html (SumUp config form)
- _entry_state_badge_html, _ticket_state_badge_html
- _day_admin_main_panel_html
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 12:19:57 +00:00
eda95ec58b
Enable cross-subdomain htmx and purify layout to sexp
...
- Disable htmx selfRequestsOnly, add CORS headers for *.rose-ash.com
- Remove same-origin guards from ~menu-row and ~nav-link htmx attrs
- Convert ~app-layout from string-concatenated HTML to pure sexp tree
- Extract ~app-head component, replace ~app-shell with inline structure
- Convert hamburger SVG from Python HTML constant to ~hamburger sexp component
- Fix cross-domain fragment URLs (events_url, market_url)
- Fix starts-with? primitive to handle nil values
- Fix duplicate admin menu rows on OOB swaps
- Add calendar admin nav links (slots, description)
- Convert slots page from Jinja to sexp rendering
- Disable page caching in development mode
- Backfill migration to clean orphaned container_relations
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 12:09:00 +00:00
b52ef719bf
Fix 500 errors and double-slash URLs found during sexp rendering testing
...
- events: fix ImportError for events_url (was importing from shared.utils
instead of shared.infrastructure.urls)
- blog: add missing ~mobile-filter sexp component (details/summary panel)
- shared: fix double-slash URLs in ~auth-menu, ~cart-mini, ~header-row
by removing redundant "/" concatenation on URLs that already have trailing slash
- blog: fix ghost_sync select UnboundLocalError caused by redundant local
import shadowing module-level import
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 01:40:02 +00:00
838ec982eb
Phase 7: Replace render_template() with s-expression rendering in all POST/PUT/DELETE routes
...
Eliminates all render_template() calls from POST/PUT/DELETE handlers across
all 7 services. Moves sexp_components.py into sexp/ packages per service.
- Blog: like toggle, snippets, cache clear, features/sumup/entry panels,
create/delete market, WYSIWYG editor panel (render_editor_panel)
- Federation: like/unlike/boost/unboost, follow/unfollow, actor card,
interaction buttons
- Events: ticket widget, checkin, confirm/decline/provisional, tickets
config, posts CRUD, description edit/save, calendar/slot/ticket_type
CRUD, payments, buy tickets, day main panel, entry page
- Market: like toggle, cart add response
- Account: newsletter toggle
- Cart: checkout error pages (3 handlers)
- Orders: checkout error page (1 handler)
Remaining render_template() calls are exclusively in GET handlers and
internal services (email templates, fragment endpoints).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 01:15:29 +00:00