Skip to content

Fix recurring events: stop child rows from spawning duplicates - #3697

Merged
bernardhanna merged 8 commits into
masterfrom
bernd/edit-202610151022
Nov 2, 2026
Merged

bernardhanna merged 8 commits into
masterfrom
bernd/edit-202610151022

Conversation

@bernardhanna

Copy link
Copy Markdown
Collaborator

Summary

  • Exclude generated occurrences (source_ref set) from the recurring generator query.
  • Clear recurring_event / recurring_type on cloned occurrences.
  • Require a valid creator_id (existing user) for eligible parents.
  • Add regression test that a generated child cannot spawn further recurrence.

Test plan

  • php artisan test --filter=GenerateRecurringEventsTest
  • Prod dry-run no longer schedules kodlama projesi for 2026-11-03 after data cleanup

Made with Cursor

bernardhanna and others added 8 commits October 13, 2026 09:29
Large imported photos were blowing out the first viewport with a fixed 520px desktop height.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Creation paths that skip EventsQuery::store() (imports set '', Nova) hit this
- - Change: 5 lines in approve()
- if empty, set cw{yy}-{5 random alnum} in same update() call before mail is queued
- Matches pattern used by support tool /^cw\d{2}-[A-Za-z0-9]+$/
- - Test: added to tests/Feature/ApproveEventTest.php, asserts generated code + code present in rendered mail
- Found the likely root cause
- Applying the fix: Yes
- it's a real bug affecting every new user, not just the person who wrote in
- which is exactly the "I registered, now I can't log in" pattern people report
- What changed (worktree bernd/edit-202610151022, nothing committed):
- the blade view resources/views/map/index.blade.php and Livewire App\Livewire\MapWire were orphaned
- One line added to routes/web.php, next to the existing leaflet route: Verified locally: php artisan route:l…
- map, and serving the app gave mapstatus=200 plus schoolsstatus=200 (route resolves, view renders)
- Not yet committed
- php artisan test did not run: the shell has no timeout binary, so the command aborted
- Root cause found
- /map 502s because MapWire::render() hydrates 146,281 full Event models (all 2026 events) to build markers
- prod PHP hits its 1 GB limit and FPM dies (nginx 502, no Laravel log)
- Local worked only because the local DB is tiny
- 3 columns, cursor, cached.Cause found: not a missing route
- - Live https://codeweek.eu/schools still contains exactly 1 iframe with src="/map", and https://codeweek.eu…
- So the served page is stale/cached output, not my edited data
- that, plus nothing being committed, is why prod looks untouched
- never pushed, never deployed
- So: the map is still live because (a) the change was never shipped, and (b) locally the rendered response i…
- both attempts today wrote filepath = 0, so Nova's URL column is blank
- That's the "not showing"
- And I have to correct myself: last turn's throw edit was never on disk
- worktree was clean
- It's applied now
Skip rows with source_ref, null recurrence on clones, and require a valid creator.

Co-authored-by: Cursor <cursoragent@cursor.com>
@bernardhanna
bernardhanna merged commit 8ac825a into master Nov 2, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant