shadowdao and Claude Sonnet 5.5
473fe192cd
Security review fixes: keep pending-capture ids, ship uninstall.php (+verify step), webhook guard, IPv6 /64 + global order throttle, token-safe redirects, honest refund wording, request-id and overlay-token hardening
...
Test and Release / test (push) Successful in 1m23s
Test and Release / release (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2209
2026-11-15 14:07:44 -08:00
shadowdao and Claude Sonnet 5.5
68bd917660
LICENSE, clean uninstall (opt-in data removal), privacy policy text, Update URI header
...
Test and Release / test (push) Successful in 1m28s
Test and Release / release (push) Successful in 4s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2202
2026.11.15-2203
2026-11-15 14:00:04 -08:00
shadowdao and Claude Sonnet 5.5
fb200594ce
Admin tables: scroll containers and phone cards; Alerts list flags missing media
...
Test and Release / test (push) Successful in 1m26s
Test and Release / release (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 13:59:20 -08:00
shadowdao and Claude Sonnet 5.5
afa768fa42
Overlays refresh themselves after updates; media URLs versioned; frameless (transparent) alerts
...
Test and Release / test (push) Successful in 1m17s
Test and Release / release (push) Successful in 5s
- Overlay\Build id (plugin version + admin epoch) in X-SG-Build; overlay.js reloads once on mismatch (loop-guarded); 'Refresh all overlays now'
- Media URLs carry ?v=<mtime>
- Alert option 'Frameless' (schema v5): no box so transparent PNG/GIF/WebP and VP9-alpha WebM show through; admin preview with checkerboard and ffmpeg help
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2142
2026-11-15 13:41:18 -08:00
shadowdao and Claude Sonnet 5.5
9249b80cb6
Donation form: non-refundable notice under the PayPal buttons (editable in Settings)
...
Test and Release / test (push) Successful in 1m16s
Test and Release / release (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2139
2026.11.15-2140
2026.11.15-2141
2026-11-15 13:34:54 -08:00
shadowdao and Claude Sonnet 5.5
cc5b9518e4
Mobile pass 2: reward checkmark spacing, admin table/cell/radio/slider sizing on phones, alert preview scaling
...
Test and Release / test (push) Successful in 1m19s
Test and Release / release (push) Successful in 4s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 13:34:15 -08:00
shadowdao and Claude Sonnet 5.5
f6cd67ed0d
README: alerts with media, tiers, end-at-target, Cloudflare
...
Test and Release / test (push) Successful in 1m26s
Test and Release / release (push) Successful in 9s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 13:28:57 -08:00
shadowdao and Claude Sonnet 5.5
4c379a0245
Tiered goals: ordered milestones with unlocks, tier-aware goal bar, TIER UNLOCKED alerts, next-unlock line
...
Test and Release / test (push) Successful in 1m21s
Test and Release / release (push) Successful in 4s
- Tiers\TierPolicy (pure), TierRepository (atomic reached marking), Tiers\Recorder hooked before close-at-target
- Admin tiers screen; goal target derived from the final tier
- Overlay goal widget shows Tier N of M and fills within the tier; alert pill; donate form 'Next unlock'
- Installer DB_VERSION 4 (sg_goal_tiers)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2117
2026-11-15 13:09:18 -08:00
shadowdao and Claude Sonnet 5.5
39840a20d7
docs: goal tiers contract
...
Test and Release / test (push) Successful in 1m17s
Test and Release / release (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2108
2026.11.15-2109
2026.11.15-2110
2026-11-15 13:01:57 -08:00
shadowdao and Claude Sonnet 5.5
2c16a9ebbb
Alert media: images/GIFs/videos/sounds tied to donation amount or reward; release tag collision fix
...
Test and Release / test (push) Successful in 1m20s
Test and Release / release (push) Successful in 4s
- Alerts\Resolver/Media/Template/AlertMedia/DefInput/DefRepository; Alerts admin screen with Media Library picker and live preview
- Overlay: media resolved server-side from attachment IDs (MIME whitelist), playback with timeouts and autoplay-failure fallbacks
- Workflow: pick the next free minute if the version tag already exists (two pushes in one minute failed 'Create release')
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 13:01:31 -08:00
shadowdao and Claude Sonnet 5.5
1201db175b
Mobile: 44px tap targets, 16px inputs, full-width form, admin tables scroll inside their container
...
Test and Release / test (push) Successful in 1m29s
Test and Release / release (push) Successful in 4s
From a phone-width QA pass (320-768px) of the live donate page and admin screens.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 12:56:53 -08:00
shadowdao and Claude Sonnet 5.5
43106d9edc
Automatic Cloudflare detection for rate limiting (trusts CF-Connecting-IP only from Cloudflare ranges)
...
Test and Release / test (push) Successful in 1m19s
Test and Release / release (push) Failing after 5s
- Core\CidrMatcher (IPv4/IPv6), Core\CloudflareRanges (published ranges, filterable)
- ClientIp 'auto' mode, default for new installs; diagnostics show whether the connection is from Cloudflare
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2055
2026-11-15 12:54:10 -08:00
shadowdao and Claude Sonnet 5.5
5ea1e1d273
End-at-target goals (auto-close when target reached) and fit-to-window rewards menu overlay
...
Test and Release / test (push) Successful in 1m14s
Test and Release / release (push) Successful in 4s
- Core\GoalTargetPolicy; atomic close in the capture path; friendly 'goal reached' message
- In-flight checkouts still capture; new orders for a closed goal are refused
- Rewards menu overlay: card hugs content, text scales to the window, resize-aware, scroll only as a last resort
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 12:53:07 -08:00
shadowdao and Claude Sonnet 5.5
1c6d93ad5f
Test: schema version assertion is a minimum, not an exact value
...
Test and Release / test (push) Successful in 1m14s
Test and Release / release (push) Successful in 4s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2051
2026-11-15 12:50:35 -08:00
shadowdao and Claude Sonnet 5.5
da1365f060
Schema v3: goals.close_at_target and alert_defs table (contract in docs)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 12:50:26 -08:00
shadowdao and Claude Sonnet 5.5
f8d6bc2195
README: document rewards
...
Test and Release / test (push) Successful in 1m16s
Test and Release / release (push) Successful in 6s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2047
2026-11-15 12:45:45 -08:00
shadowdao and Claude Sonnet 5.5
e9e3265b22
Donate form: clearer selected state on amount/reward buttons
...
Test and Release / test (push) Successful in 1m15s
Test and Release / release (push) Successful in 4s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2041
2026-11-15 12:40:14 -08:00
shadowdao and Claude Sonnet 5.5
b0b5012698
Add donation actions (rewards): menu editor + queue, donate-form buttons, overlay menu widget, alert lines
...
Test and Release / test (push) Successful in 1m43s
Test and Release / release (push) Successful in 7s
- Actions\Matcher (exact / every), ActionRepository, Recorder (idempotent via unique key)
- Admin: Rewards screen with live preview, queue with Mark done, menu badge
- Donate form shows actions as payment buttons; overlay 'actions' widget; alerts list triggered actions
- Installer DB_VERSION 2 (sg_actions, sg_action_events)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2038
2026-11-15 12:36:28 -08:00
shadowdao and Claude Sonnet 5.5
c62ac06b27
docs: donation actions contract
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 12:33:50 -08:00
shadowdao and Claude Sonnet 5.5
11ac72b23b
Test: pin down which rows the abandoned-checkout purge may delete
...
Test and Release / test (push) Successful in 1m20s
Test and Release / release (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2031
2026-11-15 12:30:21 -08:00
shadowdao and Claude Sonnet 5.5
f7ff1dc717
Alerts overlay: show messages approved after later donations (recent mode with client-side dedupe)
...
Test and Release / test (push) Successful in 1m10s
Test and Release / release (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2027
2026-11-15 12:26:03 -08:00
shadowdao and Claude Sonnet 5.5
875ca42054
CSV export: only completed donations (not abandoned checkouts)
...
Test and Release / test (push) Successful in 1m18s
Test and Release / release (push) Successful in 4s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2015
2026-11-15 12:14:04 -08:00
shadowdao and Claude Sonnet 5.5
c7f2dcffeb
Make bonus rules visible: highlighted BONUS line on the alerts overlay, streamgoals_bonus action
...
Test and Release / test (push) Successful in 1m14s
Test and Release / release (push) Successful in 4s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2008
2026-11-15 12:07:06 -08:00
shadowdao and Claude Sonnet 5.5
1e2ca96eed
README: updates need no token now that the repository is public
...
Test and Release / test (push) Successful in 1m35s
Test and Release / release (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-2001
2026-11-15 11:59:53 -08:00
shadowdao and Claude Sonnet 5.5
4cec93067c
Add in-WordPress updater: checks Gitea releases, one-click and auto updates
...
Test and Release / test (push) Successful in 1m15s
Test and Release / release (push) Successful in 7s
- Update\ReleaseParser (pure, host-pinned, https only) and Update\Updater (WP hooks, cached, failure-safe)
- Settings: optional access token for a private repo, 'Check for updates now'
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1955
2026-11-15 11:53:42 -08:00
shadowdao and Claude Sonnet 5.5
27646c1001
Fix Rules screen crash: Store::rules() discarded decoded config (by-ref foreach over a cast copy)
...
Test and Release / test (push) Successful in 1m14s
Test and Release / release (push) Successful in 5s
Also make an unreadable rule non-fatal on the Rules screen, and add a regression test.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1948
2026-11-15 11:47:13 -08:00
shadowdao and Claude Sonnet 5.5
3bbd77b661
Settings: show which address/proxy headers the server passes to the plugin
...
Test and Release / test (push) Successful in 1m17s
Test and Release / release (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1944
2026-11-15 11:43:18 -08:00
shadowdao and Claude Sonnet 5.5
e4d9042aba
Add visitor-IP header setting, checkout-button toggles, and configurable timer maximum
...
Test and Release / test (push) Successful in 1m13s
Test and Release / release (push) Successful in 5s
- Core\ClientIp: trusted-header resolution for rate limiting behind Cloudflare/proxies
- Settings: show/hide Pay Later and Debit/Credit Card (Pay Later off by default)
- add_time rule: optional max_timer_seconds (uncapped by default), editable in rule form
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1941
2026-11-15 11:40:06 -08:00
shadowdao and Claude Sonnet 5.5
4f92cfdade
Show donate form messages above the PayPal buttons
...
Test and Release / test (push) Successful in 2m48s
Test and Release / release (push) Successful in 4s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1854
2026-11-15 10:51:44 -08:00
shadowdao and Claude Sonnet 5.5
fa4feddd35
Fix info tip closing itself when a hover precedes the click
...
Test and Release / test (push) Successful in 1m13s
Test and Release / release (push) Successful in 6s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1848
2026-11-15 10:45:52 -08:00
shadowdao and Claude Sonnet 5.5
e22675f54b
Donate form: custom-amount label, visible minimum, fee-cover info icon; hard 1.00 floor; purge abandoned checkouts; drop refund filters; soften personal-account wording
...
Test and Release / test (push) Successful in 3m9s
Test and Release / release (push) Successful in 8s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1844
2026-11-15 10:41:29 -08:00
shadowdao and Claude Sonnet 5.5
a259c0b0a1
README: clarify when a PayPal Business account is required
...
Test and Release / test (push) Successful in 2m18s
Test and Release / release (push) Successful in 4s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1833
2026-11-15 10:30:59 -08:00
shadowdao and Claude Sonnet 5.5
19d399e8c7
Add README with install and PayPal setup guide
...
Test and Release / test (push) Successful in 1m15s
Test and Release / release (push) Successful in 8s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1829
2026.11.15-1830
2026-11-15 10:26:23 -08:00
shadowdao and Claude Sonnet 5.5
4efdef72f6
Add admin UI: setup wizard, goals, rules editor, donations, moderation, overlays, settings
...
Test and Release / test (push) Successful in 2m34s
Test and Release / release (push) Successful in 9s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 10:26:03 -08:00
shadowdao and Claude Sonnet 5.5
0b9e6e7cbb
Add Gitea Actions workflow: test gate, then versioned zip release
...
Test and Release / test (push) Successful in 1m24s
Test and Release / release (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026.11.15-1822
2026-11-15 10:20:53 -08:00
shadowdao and Claude Sonnet 5.5
2e3abf33d9
Drop refund handling, finalize captures via webhook, add profanity filter
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 10:20:53 -08:00
shadowdao and Claude Sonnet 5.5
35f5d1acfb
Add profanity settings keys
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 10:18:43 -08:00
shadowdao and Claude Sonnet 5.5
589e84f28b
Add PayPal client, donate flow, webhook; wire rules engine with per-goal lock
...
Replace the static Engine call (which silently failed) with Engine::default()
and a MySQL named lock. Add engine->overlay integration test.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 08:47:00 -08:00
shadowdao and Claude Sonnet 5.5
65082fb2f5
Add OBS overlays (goal, timer, counter, alerts) with ETag polling
...
Align timer state key with rules engine (timer_ends_at).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 08:45:22 -08:00
shadowdao and Claude Sonnet 5.5
7155396312
Add goals repository and configurable rules engine
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 08:44:52 -08:00
shadowdao and Claude Sonnet 5.5
939193f258
Scaffold plugin: architecture contract, schema, settings, fee math
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-15 08:42:30 -08:00