giles
2fb2357caf
Update shared submodule: OAuth SSO + account app support
...
Build and Deploy / build-and-deploy (push) Successful in 1m19s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 09:59:07 +00:00
giles
fb1cef6cb5
Remove blog auth blueprint — login/account now in federation
...
Build and Deploy / build-and-deploy (push) Successful in 56s
All auth routes (login, magic link, account, newsletters,
widget pages, logout) are handled by the federation app.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 09:09:21 +00:00
giles
85fd9d9f60
Update shared submodule (fix root top-bar account link)
...
Build and Deploy / build-and-deploy (push) Successful in 1m9s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 09:07:50 +00:00
giles
989610b533
Update shared submodule (account URLs → federation)
...
Build and Deploy / build-and-deploy (push) Successful in 53s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 09:01:15 +00:00
giles
ce587b9e43
Update shared: auth routes to federation
...
Build and Deploy / build-and-deploy (push) Successful in 1m1s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 08:42:36 +00:00
giles
82968a366f
Rename coop to blog in app code and config
...
Build and Deploy / build-and-deploy (push) Successful in 1m13s
- App name: "coop" → "blog"
- coop_context() → blog_context()
- coop_url → blog_url imports
- app_url("coop") → app_url("blog")
- Config keys: coop_root/coop_title → market_root/market_title
- Sync shared submodule
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 08:33:07 +00:00
giles
065147569c
Update COOP_DIR to /root/rose-ash in CI workflow
...
Build and Deploy / build-and-deploy (push) Successful in 1m22s
Infra files (.env, docker-compose.yml, _config) moved from ~/coop to ~/rose-ash.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 23:44:07 +00:00
giles
d76f985902
Update shared submodule — add list_marketplaces
...
Build and Deploy / build-and-deploy (push) Successful in 1m8s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 23:35:14 +00:00
giles
7453ff845c
Update shared: add updated timestamp for AP edits
...
Build and Deploy / build-and-deploy (push) Successful in 53s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 21:41:28 +00:00
giles
1e8b72e36d
Update shared: allow repeated Update activities
...
Build and Deploy / build-and-deploy (push) Successful in 2m3s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 21:36:25 +00:00
giles
3f44d513c0
Update shared: AP_DOMAIN default to federation.rose-ash.com
...
Build and Deploy / build-and-deploy (push) Successful in 1m2s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 21:12:50 +00:00
giles
2752f735ba
Update shared: origin_app isolation for EventProcessor
...
Build and Deploy / build-and-deploy (push) Successful in 1m6s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 20:59:40 +00:00
giles
b9b8bbd73d
Update shared: origin_app isolation for EventProcessor
...
Build and Deploy / build-and-deploy (push) Successful in 1m6s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 20:57:54 +00:00
giles
9515e411fa
Update shared: debug logging for event processor
...
Build and Deploy / build-and-deploy (push) Successful in 1m3s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 20:49:47 +00:00
giles
859cf52b2b
Update shared submodule: versioned AP object IDs + restored templates
...
Build and Deploy / build-and-deploy (push) Successful in 1m3s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 20:26:48 +00:00
giles
48a381eabb
Update shared submodule (remove dead code)
...
Build and Deploy / build-and-deploy (push) Successful in 54s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 18:11:36 +00:00
giles
49a9fd7552
Update shared submodule (remove dead cart template)
...
Build and Deploy / build-and-deploy (push) Successful in 1m7s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 18:05:31 +00:00
giles
1a8a5f4487
Store cross-app cart_sid on login for cart adoption
...
Build and Deploy / build-and-deploy (push) Successful in 58s
Read cart_sid from query params on login page and save to session
so the verify route can emit adoption event with the correct session.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 17:46:27 +00:00
giles
78fb9d8dd8
Update shared submodule (cart sign-in fix)
...
Build and Deploy / build-and-deploy (push) Successful in 2m7s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 17:38:12 +00:00
giles
9182c8d0b5
Switch to unified AP activity bus
...
Build and Deploy / build-and-deploy (push) Successful in 1m5s
emit_event → emit_activity for login event. Update shared submodule.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 16:20:11 +00:00
giles
5e9ab507be
Tech debt cleanup: update README, fix comments, sync shared submodule
...
Build and Deploy / build-and-deploy (push) Successful in 1m21s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 15:35:47 +00:00
giles
98ab24f517
Update shared: add fediverse social tables and protocols
...
Build and Deploy / build-and-deploy (push) Successful in 57s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 12:16:00 +00:00
giles
324cd9cf5b
Update shared: fix duplicate AP posts + stable object IDs
...
Build and Deploy / build-and-deploy (push) Successful in 1m1s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 10:18:24 +00:00
giles
36c33d9ce2
Use full post body in AP notes, not just excerpt
...
Build and Deploy / build-and-deploy (push) Successful in 54s
Federated content has no character limit — use the complete plaintext
body so followers see the full post in their timeline.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 09:40:19 +00:00
giles
4c44fc64c5
Enrich AP posts: Note type, images, hashtags, HTML excerpt
...
Build and Deploy / build-and-deploy (push) Successful in 52s
- Switch object type from Article to Note (Mastodon first-class support)
- Include title + excerpt as HTML content with "Read more" link
- Feature image + up to 3 inline images as AP attachments
- Post tags as AP Hashtag objects with inline links in content
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 09:35:40 +00:00
giles
8cc17e195d
Update shared: fix AP Delete Tombstone id mismatch
...
Build and Deploy / build-and-deploy (push) Successful in 59s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 09:25:58 +00:00
giles
ecb8639829
Update shared: widget Phase 2 nav templates
...
Build and Deploy / build-and-deploy (push) Successful in 54s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 09:14:29 +00:00
giles
a02765dffa
Update shared: fix AP object id domain for Mastodon
...
Build and Deploy / build-and-deploy (push) Successful in 2m6s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 08:53:19 +00:00
giles
e467946f1d
Update shared: inline federation publish + AP delivery fixes
...
Build and Deploy / build-and-deploy (push) Successful in 55s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 08:28:10 +00:00
giles
fe3bc9d893
Inline federation publication in ghost_sync
...
Build and Deploy / build-and-deploy (push) Successful in 1m2s
Replace emit_event("post.published/updated/unpublished") with direct
try_publish() calls. AP activities are now created at write time,
fixing the race condition where multiple EventProcessors competed
for federation events.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 07:55:48 +00:00
giles
c3c878f781
Update shared: fix AP edit/unpublish MultipleResultsFound crash
...
Build and Deploy / build-and-deploy (push) Successful in 56s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 23:49:27 +00:00
giles
ceacf7a56e
Fix _upsert_post to return (post, old_status) tuple
...
Build and Deploy / build-and-deploy (push) Successful in 2m25s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 23:40:27 +00:00
giles
0d18fd8fd9
Track status changes for unpublish + edit federation events
...
Build and Deploy / build-and-deploy (push) Successful in 1m0s
- _upsert_post returns (post, old_status) to detect status transitions
- Emit post.unpublished when published→draft (triggers Delete activity)
- Emit post.updated only when already-published posts are edited
- Emit post.published only for new publishes (not re-syncs)
- Same logic for pages via sync_single_page
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 23:27:04 +00:00
giles
582882205f
Update shared submodule: federation handler debug logging
...
Build and Deploy / build-and-deploy (push) Successful in 1m0s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 23:13:02 +00:00
giles
507200893d
Fix _upsert_post savepoint: add() inside begin_nested()
...
Build and Deploy / build-and-deploy (push) Successful in 57s
begin_nested() auto-flushes on entry which triggers the INSERT before
the savepoint is active. Move sess.add() inside the savepoint block
and split into update vs insert paths.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 22:59:54 +00:00
giles
9d6a458115
Wire real FederationService + add page federation events
...
Build and Deploy / build-and-deploy (push) Successful in 1m2s
- Blog app now registers SqlFederationService (was stub/no-op)
- sync_single_page emits post.published/updated events for pages
- Updated shared submodule: fix sign_request in AP delivery handler
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 22:52:36 +00:00
giles
346089973f
Update shared submodule
...
Build and Deploy / build-and-deploy (push) Successful in 59s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 22:47:06 +00:00
giles
80e4f21b0b
Fix page creation labels and webhook race condition
...
Build and Deploy / build-and-deploy (push) Successful in 56s
- Updated shared submodule: page-aware blog_new template labels
- _upsert_post: handle concurrent webhook INSERTs via savepoint + retry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 22:32:05 +00:00
giles
954b6cc06a
Set page flag in sync_single_page to ensure is_page=true
...
Build and Deploy / build-and-deploy (push) Successful in 56s
Ghost /pages/ endpoint may not include "page": true in the response.
Explicitly set it so _upsert_post correctly marks is_page=true.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 22:23:19 +00:00
giles
85acc68840
Update shared submodule: page-aware labels in edit/settings templates
...
Build and Deploy / build-and-deploy (push) Successful in 1m2s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 22:13:56 +00:00
giles
c40769d24a
Update shared submodule: skip blog chrome on pages
...
Build and Deploy / build-and-deploy (push) Successful in 1m0s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 22:10:45 +00:00
giles
23fe8c233e
Fix page editing: use Ghost /pages/ API for pages, not /posts/
...
Build and Deploy / build-and-deploy (push) Successful in 56s
Ghost has separate /posts/ and /pages/ endpoints. All admin functions
(get_post_for_edit, update_post, update_post_settings, sync) were
hardcoded to /posts/, causing 404s when editing pages. Now checks
is_page from post_data and uses the correct endpoint.
Also uses sync_single_page (not sync_single_post) after page saves
to prevent IntegrityError from mismatched fetch/upsert paths.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 22:03:41 +00:00
giles
7f52f59fe0
Update shared submodule: fix adopt_entries login bug
...
Build and Deploy / build-and-deploy (push) Successful in 58s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 21:20:50 +00:00
giles
53dff0d41b
Update shared submodule + emit post events for federation
...
Build and Deploy / build-and-deploy (push) Successful in 1m18s
- Emit post.published/post.updated events from Ghost webhook sync
- Updated shared with federation handlers, delivery, anchoring
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 15:59:53 +00:00
giles
234a5f797d
Wire federation service stub and update shared submodule
...
Build and Deploy / build-and-deploy (push) Successful in 1m24s
- Register StubFederationService in services/__init__.py
- Add federation to CI sibling list
- Add federation URL to app-config.yaml
- Update shared submodule with federation models/contracts/services
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 15:11:20 +00:00
giles
fb93af067c
Update shared submodule: ticket +/- quantity support
...
Build and Deploy / build-and-deploy (push) Successful in 59s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 08:53:35 +00:00
giles
a8e0d8f257
Decoupling audit: remove coop_api, fix blog admin calendar imports
...
Build and Deploy / build-and-deploy (push) Waiting to run
- Delete coop_api.py (dead internal API endpoint)
- Replace cross-app calendar imports with shared service calls
- Update shared submodule
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 11:15:23 +00:00
giles
2dc9bf220b
Include ticket counts in cart badge totals
...
Build and Deploy / build-and-deploy (push) Successful in 57s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 22:01:27 +00:00
giles
89112d0cec
Fix indentation error in except block
...
Build and Deploy / build-and-deploy (push) Successful in 53s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 20:01:20 +00:00
giles
5c203cb99c
Fix: update local _nav.html to use widget-driven nav
...
Build and Deploy / build-and-deploy (push) Successful in 2m5s
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 >
2026-02-19 19:57:30 +00:00