Changelog
Aktuelle Änderungen und Updates
Juli 2026
WR-02 remove unscoped Teilnehmer.find from kuechendienst helper
Julian Müller
vor 2 Tagen
cd801d2
WR-07 AktivitaetsVorgangPolicy dead bare-is_admin destroy?
Julian Müller
vor 2 Tagen
404d655
WR-06 FreizeitPolicy massen_import family bare is_admin
Julian Müller
vor 2 Tagen
a8c4594
WR-01 TicketPolicy admin branch not org-scoped
Julian Müller
vor 2 Tagen
bbc1536
WR-24 Gaesteliste share-token co-guest enumeration
Julian Müller
vor 2 Tagen
b87114e
WR-19 Dokumentenordner create/update trusts foreign parent_id
Julian Müller
vor 2 Tagen
86889f0
WR-18 Dokument create trusts foreign freizeit_id
Julian Müller
vor 2 Tagen
163aefe
CR-08 Bemerkung cross-org note deletion
Julian Müller
vor 2 Tagen
c11bd84
WR-28 Teilnehmer create/new missing authorize + freizeit_id
Julian Müller
vor 2 Tagen
d53b847
CR-03 Ereignis partial + controller scoped to current_freizeit
Julian Müller
vor 2 Tagen
586cd92
CR-09 Quiz-Session cross-tenant creation/join
Julian Müller
vor 2 Tagen
6e357fe
CR-08 Rueckmeldung cross-tenant read/export/delete
Julian Müller
vor 2 Tagen
5098f2b
WR-02 admin delete/reject buttons re-arm dead rails-ujs confirm
Julian Müller
vor 2 Tagen
6dbdf97
CR-08 ticket-card delete uses real button_to + turbo_confirm
Julian Müller
vor 2 Tagen
b19616d
CR-07 handlungsleitfaden edit form uses singular update route
Julian Müller
vor 2 Tagen
f0d2cbc
CR-06 nachtwachen show back link + delete button target real URLs
Julian Müller
vor 2 Tagen
81d4517
CR-01 rollen add-user form drops stray scalar hidden field
Julian Müller
vor 2 Tagen
cfc665a
CR-13 invite token only consumed on successful registration
Julian Müller
vor 2 Tagen
de074da
CR-12 BetreuerAbrechnung wizard_patch redirect carries record id
Julian Müller
vor 2 Tagen
1ae57c6
CR-11 AusgehVorgang update redirect carries record id
Julian Müller
vor 2 Tagen
6442754
controllers WR-29 — StrandwachenEreignisse paket-module gate + scoped parent
Julian Müller
vor 2 Tagen
b8dada6
controllers CR-07 — MassenAusgehVorgang bulk create scopes ids, stops flash leak
Julian Müller
vor 2 Tagen
63f7758
controllers CR-06 — MassenAnAbreiseVorgang bulk create scopes ids to current_freizeit
Julian Müller
vor 2 Tagen
af781fe
policies CR-05 — AnAbreiseVorgangPolicy#destroy? drops is_admin? bypass
Julian Müller
vor 2 Tagen
de7ac12
controllers WR-13 — Ausleihvorgang#update cannot re-assign freizeit_id/betreuer_user_id
Julian Müller
vor 2 Tagen
a15f0b9
views CR-04 — anwesenheitskontrolle partial renders only current_freizeit participants
Julian Müller
vor 2 Tagen
6f284ea
controllers WR-11 + WR-12 — AnwesenheitskontrollVorgang#create scoped find + nil-safe arrays
Julian Müller
vor 2 Tagen
ac2a711
controllers CR-10 — TeilnehmersController authorizes + org-scopes the child
Julian Müller
vor 2 Tagen
81992bd
views CR-05 — ausgeh_vorgang_orts place dropdown scoped to current_freizeit
Julian Müller
vor 2 Tagen
8987d80
controllers CR-05 — AusgehVorgangOrtsController scopes parent Teilnehmer + authorizes instance
Julian Müller
vor 2 Tagen
c9a1a15
policies CR-07 + WR-09 — AusgehVorgangOrtPolicy drops bypass, class-safe predicate
Julian Müller
vor 2 Tagen
e40e6d0
policies CR-06 — AusgehVorgangPolicy drops is_admin? cross-org bypass
Julian Müller
vor 2 Tagen
4aa65e8
AVV signature block Organisation name folded to Windows-1252
Julian Müller
vor 2 Tagen
ac2c3e5
fold participant/guardian free text to Windows-1252 in standalone PDF generators
Julian Müller
vor 2 Tagen
2449905
reimplement CampBookPdf#safe_text as a real Windows-1252 fold
Julian Müller
vor 2 Tagen
7537bd4
leaderboard PDF renders negative Korrektur without raising
Julian Müller
vor 2 Tagen
80d177a
GenerateCampBookJob skips work for demo organisations
Julian Müller
vor 2 Tagen
5d947e9
route TicketKommentar attachments through the demo shard service
Julian Müller
vor 2 Tagen
a34ad11
AvvVertrag recomputes signed hash chain at sign time, not create time
Julian Müller
vor 2 Tagen
b5fd702
AvvVertrag legal tamper-evidence columns immutable after signing
Julian Müller
vor 2 Tagen
3f0103f
neutralize CSV formula/DDE injection in Gaesteliste/BetreuerAbrechnung exports
Julian Müller
vor 2 Tagen
0215fed
fix attribute-injection XSS in log-widget replace path (javascript CR-02)
Julian Müller
vor 2 Tagen
65580d8
remove innerHTML XSS sink in ausgeh-vorgang-info controller (javascript CR-01)
Julian Müller
vor 2 Tagen
4dc303c
sanitize wiki-artikel editor seed against stored-XSS (views CR-02)
Julian Müller
vor 2 Tagen
5598b5f
reach FaceMatchingService's poll safety timeout on persistent failure
Julian Müller
vor 2 Tagen
f14ca47
bound set_code_to_org's uniqueness retry, stop the DoS spin
Julian Müller
vor 2 Tagen
d566963
guard Dokumentenordner parent-cycle infinite loop
Julian Müller
vor 2 Tagen
c66875e
guard WikiBereich parent-cycle infinite loop
Julian Müller
vor 2 Tagen
39a48ed
terminate Freizeit#duration infinite loop for future-dated camps
Julian Müller
vor 2 Tagen
eb3f002
BetreuerAbrechnung wizard no longer trusts client str_status (views WR-06)
Julian Müller
vor 2 Tagen
188a677
close Fahrdienst reimbursement self-approval bypass (controllers CR-01)
Julian Müller
vor 2 Tagen
2448165
GREEN - validate-then-transact roster CSV import (jobs CR-01)
Julian Müller
vor 2 Tagen
1f02fb3
controllers WR-07 — scoped find in RollenController#set_rolle + OrganisationsController#set_organisation
Julian Müller
vor 3 Tagen
57f0175
policies WR-02 — BetreuerUserRollePolicy#create?/#destroy? org-scope role assignment
Julian Müller
vor 3 Tagen
b5d6e2b
controllers CR-04 + policies CR-04 — create_from_freizeit halts + scopes target Freizeit
Julian Müller
vor 3 Tagen
1953342
controllers CR-03 — AbrechnungsController#create scopes freizeit, drops mass-assignable freizeit_id
Julian Müller
vor 3 Tagen
0a1d262
policies CR-02/CR-03 — AbrechnungPolicy update?/destroy?/create_payment_link? org-gated
Julian Müller
vor 3 Tagen
e0ee58a
policies CR-01 — OrganisationPolicy#destroy? org-binds cross-tenant destruction
Julian Müller
vor 3 Tagen
cac68cd
order betreuer_anwesenheiten index by Betreuer full name
Julian Müller
vor 3 Tagen
c14e6c1
rename reserved I18n key :format in teilnehmer_export detail
Julian Müller
vor 3 Tagen
51000f9
update FreizeitArchiveTest for D-04 home-redirect
Julian Müller
vor 3 Tagen
3aeb473
FZ-Prüfung-Übersicht nach Name sortieren, inaktive/gesperrte/nicht-freigegebene Nutzer ausblenden
Julian Müller
vor 3 Tagen
126f653
cap FZ-Wiedervorlagezeitraum bei 5 statt 10 Jahren
Julian Müller
vor 5 Tagen
f0b7605
retrofit 3 RESEARCH-discovered KB-role sites to str_system_key
Julian Müller
vor 6 Tagen
0edb630
retrofit 3 CONTEXT-named KB-role sites to str_system_key
Julian Müller
vor 6 Tagen
27ad569
render real umlauts/ß in Bescheinigung PDF (drop needless transliteration)
Julian Müller
vor 7 Tagen
2c305e0
no-store on Fuehrungszeugnis download so profile edits show immediately
Julian Müller
vor 7 Tagen
0c13519
Turbo-bypassed download link + header menu entry (GAP-1/GAP-4/GAP-5)
Julian Müller
vor 7 Tagen
93659f7
signature_pad empty-canvas guard uses global toast, not native alert
Julian Müller
vor 7 Tagen
abc7288
render_graph_cell emits class= instead of style= (CSP fix)
Julian Müller
vor 15 Tagen
e430112
preserve guest token in Gaesteliste create/update redirects
Julian Müller
vor 16 Tagen
0fe3489
update notifications integration test for G2 grant-escalation
Julian Müller
vor 16 Tagen
d9a9603
drop 'Audit- und Verlauf-Eintrag' from escalation confirm modals (owner UAT)
Julian Müller
vor 16 Tagen
36082db
WR-02 guarantee warn-before-lock (gate lock on prior-run pre-warning)
Julian Müller
vor 16 Tagen
799b811
F-14 hide read-denied KrisenVorgänge from index (owner decision)
Julian Müller
vor 17 Tagen
eb1da1f
early-theme inline script uses real CSP nonce, not literal 'true'
Julian Müller
vor 17 Tagen
a1b9469
honest KV timeline creator label + German relative-time plurals
Julian Müller
vor 17 Tagen
4e8db0c
dedupe step-note form ids + raise sidebar touch targets on KV show (F-16, F-19)
Julian Müller
vor 17 Tagen
63e35de
add client-side required to feedback category + password-reset email (F-18)
Julian Müller
vor 17 Tagen
4ed18c4
import_settings HTML nav returns 404 not raw 500 (F-22)
Julian Müller
vor 17 Tagen
401854c
remove orphan kuechendienst /new route + scaffold view (F-12)
Julian Müller
vor 17 Tagen
62b8d08
terminal-fail demo clone job on missing template — no retry storm (F-10)
Julian Müller
vor 17 Tagen
2d85687
stop KrisenVorgang index leaking guideline category on locked cards (F-14)
Julian Müller
vor 17 Tagen
ac78705
decouple Betreuer per-page default from mutable Pagy global
Julian Müller
vor 18 Tagen
a267979
count NULL-released betreuer as Ausstehend
Julian Müller
vor 18 Tagen
2038efd
Betreuer-Rollen Scroll-to-Top via scroll-restore Stimulus
Julian Müller
vor 18 Tagen
dd4f271
dev mailer port 3000 -> 4000; named demo-template-missing error
Julian Müller
vor 18 Tagen
2c450dd
authorize freizeit-bound instance for ausleih collection actions
Julian Müller
vor 18 Tagen
060b8ab
allow owner/freizeit-member to delete Vorgänge (F-120-04)
Julian Müller
vor 18 Tagen
35ab8f7
repair an_abreise edit view malformed render (F-120-03)
Julian Müller
vor 18 Tagen
d2b97b3
guard non-hash params[:q] before dig/ransack in index
Julian Müller
vor 18 Tagen
c241e05
render verifizieren from verify_form (F-120-01)
Julian Müller
vor 18 Tagen
8a8130f
repair per-page selector root cause + lock backend contract
Julian Müller
vor 18 Tagen
51a4c12
professionalise BOM import error text (D20)
Julian Müller
vor 18 Tagen
bc770be
remove misleading skip-validation buttons + orphaned i18n key
Julian Müller
vor 18 Tagen
4ee470b
remove dead skip-validation branch from mass creators (always validate)
Julian Müller
vor 18 Tagen
f1df2c3
org-scope DokumentPolicy#destroy? admin branch (D40)
Julian Müller
vor 18 Tagen
36ecf32
token-scope guest gaesteliste lookup + expiring token (D39/D41)
Julian Müller
vor 18 Tagen
ae6a1cf
org-scope notfallmappe/trigger_face_detection/import_settings (D38)
Julian Müller
vor 18 Tagen
21a0592
remove public admin self-registration surface (D37)
Julian Müller
vor 18 Tagen
dda76c7
entferne sichtbaren § 8a-Kinderschutz-Hinweis aus DSGVO-Auskunft-Export
Julian Müller
vor 19 Tagen
b062a64
remove misleading "kostenlos" from header nav CTAs
Julian Müller
vor 19 Tagen
6de96dd
remove misleading "kostenlos" from hero + bottom-CTA
Julian Müller
vor 19 Tagen
6f7565b
tote passwort_min i18n-key entfernt + reset_password_token label ergaenzt
Julian Müller
vor 19 Tagen
1729341
passwort-reset zeigt echtes minimum (12 statt 6)
Julian Müller
vor 19 Tagen
f6a420a
idempotent publish date + blog back-link test coverage (code review)
Julian Müller
vor 19 Tagen
c5d7e32
Punkt-Auto-Insertion beim Tippen + 8-Ziffern-Toleranz im Parser
Julian Müller
vor 19 Tagen
1eb9f73
native Datepicker als transparenter Overlay statt sr-only (iOS-Tap-Fix)
Julian Müller
vor 19 Tagen
df28c7a
assert HTML-escaped titles in verein-digitalisieren index test (DI-1)
Julian Müller
vor 20 Tagen
2631c57
un-nest upgrade panel from edit form (fixes missing confirm) + show surcharge in current price (UAT)
Julian Müller
vor 20 Tagen
42a68f3
exclude marketing-only modules from the manage-modules panel (UAT)
Julian Müller
vor 20 Tagen
5daabea
active-modules overview + confirmation gate on add_modul (UAT)
Julian Müller
vor 20 Tagen
37b1cb2
exclude enterprise from self-service upgrade (UAT)
Julian Müller
vor 20 Tagen
1649bfc
update persisted-view tests for the upgrade panel (Phase 99 removed the paket lock)
Julian Müller
vor 20 Tagen
aaf7115
Juni 2026
clean default Rollen in demo_database_connection teardown
Julian Müller
vor 21 Tagen
8a92122
clean default Rollen in demo test teardowns
Julian Müller
vor 21 Tagen
bb1db1c
repair broken status-page icons + UAT polish
Julian Müller
vor 21 Tagen
82dade3
skip_verify_authorized for nil-guard early-return in create + sign-guard test
Julian Müller
vor 22 Tagen
39e5625
style prose-forest tables (borders, padding, header tint)
Julian Müller
vor 22 Tagen
a28dbd9
stop 500 on guest registration + dedupe dt_to error
Julian Müller
vor 22 Tagen
65ee09d
self-heal Beschwerde-QR for existing freizeiten + per-QR flyer download + UI polish
Julian Müller
vor 22 Tagen
95810eb
danke page advises saving the link / re-scanning the QR
Julian Müller
vor 22 Tagen
0e94e52
picker entry to resume a complaint + honest contact-field hint
Julian Müller
vor 22 Tagen
867946c
resolve anonymous complaint by re-open code when no beschwerde_id
Julian Müller
vor 22 Tagen
446a2f0
add 'Anderen Empfänger wählen' link on anonymous complaint form
Julian Müller
vor 23 Tagen
8758ba5
show full AVV Prüfsumme (was truncated to 16 chars + …)
Julian Müller
vor 23 Tagen
c478453
stop double-truncating AVV Prüfsumme on Organisation AVV tab
Julian Müller
vor 23 Tagen
fa1c014
add German activerecord.attributes names for Beschwerde models (suite i18n gate)
Julian Müller
vor 23 Tagen
6a15471
add i18n attribute labels for QualificationExpiryNotification
Julian Müller
vor 23 Tagen
c456538
add errors.messages.required — fixes all 67 belongs_to models
Julian Müller
vor 24 Tagen
e378a22
update internal slug refs in plan files to match renamed dir
Julian Müller
vor 24 Tagen
ec7a650
rename Phase 96 dir so GSD resolves it (8a slug-prefix bug)
Julian Müller
vor 24 Tagen
79ce836
add toggle_blocked to AuditLog::ACTION_TYPES (UG-5)
Julian Müller
vor 24 Tagen
b0e8b78
UG-4 — remove stray %> from pagination partial ERB comment
Julian Müller
vor 24 Tagen
43fee20
UG-3 — abgeschlossene action: alias policy rule + set @berechtigung_teilnehmers
Julian Müller
vor 24 Tagen
1e4b547
UG-2 — remove Anwesenheitszeitraum top-nav; add admin Dashboard tile
Julian Müller
vor 24 Tagen
ff30371
UG-1 — remove unrelease button; harden toggle_release; clean i18n
Julian Müller
vor 24 Tagen
038725c
update schedule_controller_test to schedule_url (F-18 route rename regression)
Julian Müller
vor 24 Tagen
f07b1f4
triage + redirect-Ziel Ereignistypen→Index + Freizeit-Save weg von deprecated Show (Task 2)
Julian Müller
vor 24 Tagen
6c9deda
switch save-redirects from Show to Index for Vorgang-/Listen-Models (Task 1)
Julian Müller
vor 24 Tagen
c1eb4c5
BetreuerAnwesenheiten#index 500 beheben — komponierter Freizeit-Name (F-19)
Julian Müller
vor 24 Tagen
4d196a7
Schedule-Route auf Standard /schedule umstellen (F-18)
Julian Müller
vor 24 Tagen
e765b65
scope BetreuerAbrechnungsController#index on current_freizeit (Phase-83-Restscope)
Julian Müller
vor 24 Tagen
d5b5adf
mobile w-full Buttons + einklappbare Teilnehmer-Filterleiste
Julian Müller
vor 24 Tagen
335c827
F-02 Kachel-Umbruch + F-04 Rollen-Header + F-15 Gaesteliste-Buttons
Julian Müller
vor 24 Tagen
d1201bd
83-Restscope tote Info-Buttons entfernen (_form.html.erb)
Julian Müller
vor 24 Tagen
8f11271
sync demo_schema.rb with b_blocked column (migration footprint)
Julian Müller
vor 24 Tagen
e1d6ee7
83-Restscope Neuer-Ausgehvorgang-Link Frame-Ausbruch
Julian Müller
vor 24 Tagen
3b7c730
F-17 Benachrichtigungs-Titel-Link bricht aus turbo_frame aus
Julian Müller
vor 24 Tagen
4e09d76
nil-safe Berechtigung-Tab mit Empty-State (F-09a)
Julian Müller
vor 24 Tagen
5d7308d
remove redundant action: :index from ausgeh_vorgangs_abgeschlossen route
Julian Müller
vor 24 Tagen
83dc006
delete dead partials/_flash.html.erb (F-12)
Julian Müller
vor 24 Tagen
8015e81
remove per-view flash AlertComponent renders — 30 views
Julian Müller
vor 24 Tagen
028a955
Teilnehmer-Datum DE-Format via Model-Methoden (F-13b)
Julian Müller
vor 25 Tagen
a0bf00d
DE number-Block in de.yml + normalize_comma_floats! härten (F-06)
Julian Müller
vor 25 Tagen
4bbda9c
remove dead 'Anzeigen' (show) button from org edit form (G-2 follow-up)
Julian Müller
vor 26 Tagen
b7eb9c1
org-edit save redirects to index; remove single-org show page (G-2)
Julian Müller
vor 26 Tagen
cdea3c6
relocate avv_gate i18n block from views.kuechendienst to views.freizeit
Julian Müller
vor 26 Tagen
1055709
run backup:smoke_test in build phase via fetch(:rake), fail-safe
Julian Müller
vor 27 Tagen
debab59
scope on:launch backup:smoke_test to RAILS_ENV=production
Julian Müller
vor 27 Tagen
00ca087
Freizeit-Formular Dezimalfelder — value:-Attr wiederherstellen (Typo imvalue:) + c_daily_amount_guests Komma-Float-No...
Julian Müller
vor 29 Tagen
f85a527
Mai 2026
replace Minitest::Mock status objects with plain Struct/Object doubles
Julian Müller
vor etwa 2 Monaten
68c3687
import birthdate_parse via bare specifier not relative path
Julian Müller
vor etwa 2 Monaten
d201e36
add join? policy rule so org-less users can join from dashboard
Julian Müller
vor etwa 2 Monaten
37d5781
correct password hint, preserve invite on error, guard age validation
Julian Müller
vor etwa 2 Monaten
00615f9
bulletproof CTA buttons that survive Outlook desktop dark mode
Julian Müller
vor etwa 2 Monaten
0bbd2d5
wire admin user dropdown via Stimulus instead of (unloaded) Flowbite
Julian Müller
vor etwa 2 Monaten
849d33d
force button color contrast in desktop dark mode
Julian Müller
vor etwa 2 Monaten
7f5bff7
absolute libURL + 4MB size gate to prevent main-thread compression freeze
Julian Müller
vor etwa 2 Monaten
19450cc
switch tagged-logger block to literal block, avoid lambda arity
Julian Müller
vor etwa 2 Monaten
79146e5
bypass demo connection switching for Devise auth controllers
Julian Müller
vor etwa 2 Monaten
1c0b9b1
force public stats banner to read primary shard, exclude demo rows
Julian Müller
vor etwa 2 Monaten
2a00e0d
guard Rails.logger.tagged on Rails 8 BroadcastLogger
Julian Müller
vor etwa 2 Monaten
16010d9
explicit render() when auto-scan misses Turbo-Stream-inserted forms
Julian Müller
vor etwa 2 Monaten
a4e8b38