- Desktop/mobile search: use macros/search.html instead of browse copies
- Cart mini: removed (shared _oob.html now uses fragment slot)
- Browse like button: removed (no longer referenced)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- browse/desktop+mobile filter search (market domain, used by shared layout.html filter_summary)
- cart/_mini.html (cart domain, used by shared _oob.html for OOB header swaps)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Blog, post, home, snippets, menu_items, settings templates moved
from shared to blog/templates/. Header fallbacks for cart-mini,
nav-tree, auth-menu removed (fragments only).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Keep get_navigation_tree() as fallback when nav-tree fragment fetch
fails. Also map all app slugs (market, events, federation, account)
to their proper cross-app URLs in the nav fragment template.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Blog now provides a nav-tree fragment at /internal/fragments/nav-tree
that accepts app_name and path params for correct aria-selected
highlighting. Blog itself consumes this fragment alongside cart-mini
and auth-menu in a single concurrent fetch_fragments() call.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fragment contains responsive desktop/mobile spans. Inject in both
header sections so each span shows at the correct breakpoint.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 2 of fragment composition: blog_context() now concurrently
fetches cart-mini and auth-menu HTML fragments from cart and account
apps via fetch_fragments(). Updates shared submodule.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
/ now renders the Ghost page with slug "home" (site homepage).
/index serves the existing blog listing (posts, pages, filters).
All blog.home references updated to blog.index.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The blog app's local templates/_types/post/_nav.html was shadowing
the shared version due to ChoiceLoader priority. Updated local copy
to use container_nav_widgets while keeping the blog-specific admin
cog link. Removed debug logging from context processor.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
These were duplicates of files in shared/browser/templates/ and
silently prevented shared updates from taking effect (as happened
with the auth nav orders link fix). 8 blog-specific overrides with
genuine differences are kept.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The orders link was using links.link macro which adds hx-get, causing
htmx:invalidPath because cart.rose-ash.com is cross-origin. Use a
plain <a> tag for this cross-domain link instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract inline email body into separate Jinja2 templates
(_email/magic_link.html and .txt) with a styled sign-in
button and fallback plain-text link.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add cross-app nav buttons for markets and payments (events app)
- Remove page features panel and markets panel from blog admin
(calendars, markets, and payments are now managed in the events app)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The editor.js/editor.css were gitignored and never built during docker
build, causing 404s on the edit page. Add a Node multi-stage build step
to compile them. Also replace "nowt" placeholder in admin templates with
the actual main panel include.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fetches page-scoped cart count from /internal/cart/summary?page_slug=
for page posts and displays a cart icon with count in the post header
that links to the page cart.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace SumUp placeholder with real form for merchant code, API key, prefix
- Add PUT /admin/sumup/ route to save per-page SumUp credentials
- Pass sumup_configured/merchant_code/checkout_prefix to template context
- SumUp form only shown when calendar or market feature is enabled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OOB nav template also updated — Market link now uses HTMX
navigation to coop.rose-ash.com/market/ instead of linking
to the market app directly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Post context processor loads MarketPlace rows for the page
- Nav bar displays market links (shopping-bag icon) alongside calendars
- Admin panel includes markets CRUD when market feature is enabled
- Updated shared_lib submodule with nav_entries template change
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add PageConfig model with feature flags (calendar, market)
- Auto-create PageConfig on Ghost page sync
- Add create_page() for Ghost /pages/ API endpoint
- Add /new-page/ route for creating pages
- Add ?type=pages blog filter with Posts|Pages tab toggle
- Add list_pages() to DBClient with PageConfig eager loading
- Add PUT /<slug>/admin/features/ route for feature toggles
- Add feature badges (calendar, market) on page cards
- Add features panel to page admin dashboard
- Update shared_lib submodule with PageConfig model
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Calendar routes moved to events service. Blog overrides now use
events_url() for cross-service links, deleted _nav_entries.html
to fall through to shared version.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract blog-specific code from the coop monolith into a standalone
repository. Includes auth, blog, post, admin, menu_items, snippets
blueprints, associated templates, Dockerfile (APP_MODULE=app:app),
entrypoint, and Gitea CI workflow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>