Changelog
Aktuelle Änderungen und Updates
April 2026
proportionale Fairness statt absolutem Einsatz-Count
Julian Müller
vor 4 Tag
ebdc8f1
vorzeitig abgereiste Teilnehmer aus Verteilung ausschließen
Julian Müller
vor 4 Tag
bbd828c
Partial gegen Legacy-str_when-Werte härten
Julian Müller
vor 4 Tag
d6639ac
App-Chrome beim Drucken ausblenden
Julian Müller
vor 4 Tag
042b45b
faire Auto-Verteilung wiederherstellen
Julian Müller
vor 4 Tag
b9afd34
make case-study category badge readable in dark mode
Julian Müller
vor 4 Tag
8d1c34c
raise image/attachment size limits to 25 MB
Julian Müller
vor 4 Tag
efc84eb
suppress Anwesenheit modal for archived freizeiten
Julian Müller
vor 4 Tag
3c56c4e
migrate missed error banner and focus rings in anwesenheitskontroll _form
Julian Müller
vor 5 Tag
fa00906
guard against nil user and nil dt_date in prod 500s
Julian Müller
vor 6 Tag
16adbbd
prevent Turnstile widget stacking on token expiry
Julian Müller
vor 13 Tag
3eaf616
align new document form with CI design system
Julian Müller
vor 20 Tag
7b25ea1
use stroke-based icons for wiki/dokumente + mobile folder
Julian Müller
vor 20 Tag
5c62c8c
replace broken wiki book-open SVG with FA Regular book
Julian Müller
vor 20 Tag
3ad946e
use outlined (regular) SVGs for wiki and dokumente tiles
Julian Müller
vor 20 Tag
e2fa5d1
use filled SVGs for dashboard tiles + fix folder form
Julian Müller
vor 20 Tag
688cb14
add upload validation to all remaining models
Julian Müller
vor 20 Tag
678dd55
März 2026
tighten sanitize allowlists and fix newsletter preview
Julian Müller
vor 21 Tag
b1a310f
add Active Storage upload validation to new models
Julian Müller
vor 21 Tag
a5436d1
replace raw() with sanitize() in Wiki views
Julian Müller
vor 21 Tag
f8a84c4
use home_url instead of root_url in sitemap
Julian Müller
vor 21 Tag
c1ee823
change public blog route from /blog_posts to /blog
Julian Müller
vor 21 Tag
1b1938d
add casestudy filter label + hero image on show page
Julian Müller
vor 21 Tag
fc80da9
check admin_signed_in? before betreuer_user_signed_in?
Julian Müller
vor 21 Tag
9bd248d
add prose styles for blog content
Julian Müller
vor 21 Tag
894153e
add HeartbeatPolicy for authorize! compliance
Julian Müller
vor 21 Tag
4b258b9
skip_after_action verify_authorized for heartbeat
Julian Müller
vor 21 Tag
ed7d4e6
replace broken info icon tooltip with inline hint text
Julian Müller
vor 22 Tag
4c90407
replace inline styles with CSS classes for CSP compliance
Julian Müller
vor 22 Tag
af10259
add missing suche? and geloeschte? policy methods
Julian Müller
vor 22 Tag
70d58d7
use simple fetch like import_freizeit_settings pattern
Julian Müller
vor 22 Tag
3b71159
fix fetch credentials for [[ search + add tooltip
Julian Müller
vor 22 Tag
b929df1
use non-breaking spaces for level indentation in selects
Julian Müller
vor 22 Tag
71b2aa5
show Level 3 (Fachthema) in Bereiche management tree
Julian Müller
vor 22 Tag
27ef5c5
show all levels in parent bereich dropdown
Julian Müller
vor 22 Tag
e66408e
show all 3 levels in sidebar tree and mobile dropdown
Julian Müller
vor 22 Tag
9345417
context-aware add buttons for Bereich hierarchy
Julian Müller
vor 22 Tag
1637264
show all 3 bereich levels in article form select
Julian Müller
vor 22 Tag
a9c0635
redirect wiki create to index instead of show
Julian Müller
vor 22 Tag
75578ee
header tabs like Kurse, tree sidebar in content, breadcrumbs
Julian Müller
vor 22 Tag
5bf713b
move Bereiche-verwalten to subtle icon in filter pills
Julian Müller
vor 22 Tag
7ebd7da
move WikiBereich management from admin to betreuer-facing
Julian Müller
vor 22 Tag
4542c64
restore Busliste feature reference — it exists in Anwesenheitskontrolle
Julian Müller
vor 23 Tag
43bc0c1
correct factual inaccuracies in SEO blog posts
Julian Müller
vor 24 Tag
8ccc4da
auto-set published_at, blog content h2/h3/ul styles, dark mode link hover
Julian Müller
vor 24 Tag
78a7f06
fix ticket edit title i18n + add Phase 49.2
Julian Müller
vor 24 Tag
0a84d2b
remove breadcrumbs from ticket form pages
Julian Müller
vor 24 Tag
007b5cc
redesign ticket form — crafted card with breadcrumbs
Julian Müller
vor 24 Tag
069c8d3
redesign ticket form — clean card layout, no section headers
Julian Müller
vor 24 Tag
5ba0371
migrate inline style= gradients and heights to CSS classes (CSP)
Julian Müller
vor 24 Tag
edeec54
rename dark-text token, turbo frame fix, newsletter registration, ticket icon
Julian Müller
vor 25 Tag
b34ab4e
Mailer redesign, preview CSP fix, dashboard tiles, newsletter abmelden
Julian Müller
vor 25 Tag
9d359c5
mailer layout — Forest palette + fix Deppenleerzeichen
Julian Müller
vor 25 Tag
41ff683
frame-ancestors self — allow same-origin iframes
Julian Müller
vor 25 Tag
11c71cf
fix letter_opener CSP — skip nonce + add frame-src self
Julian Müller
vor 25 Tag
6e7ff7d
CSP report-only in development for letter_opener
Julian Müller
vor 25 Tag
cc5c1d6
case-insensitive CSP header deletion for letter_opener
Julian Müller
vor 25 Tag
f0a72d1
insert CSP-strip middleware AFTER Rails CSP middleware
Julian Müller
vor 25 Tag
6acdaf2
mount CSP middleware in config.ru instead of application.rb
Julian Müller
vor 25 Tag
9235535
pass middleware class not string
Julian Müller
vor 25 Tag
e09af2d
strip CSP headers entirely for letter_opener
Julian Müller
vor 25 Tag
ef8a7cf
skip CSP nonce for /letter_opener dev tool
Julian Müller
vor 25 Tag
679bf5c
require letter_opener_web engine before mounting
Julian Müller
vor 25 Tag
19bd363
add missing newsletter I18n translations
Julian Müller
vor 25 Tag
a555037
fix content errors + module ordering for prev/next nav
Julian Müller
vor 26 Tag
fa9769d
fix admin_panel_path — route doesn't exist
Julian Müller
vor 26 Tag
591b01c
add nonces to inline script blocks for CSP compliance
Julian Müller
vor 26 Tag
88d018a
add admin mobile nav menu — Flowbite navbar-user target error
Julian Müller
vor 26 Tag
f86e766
Quill editor dark mode — Forest palette instead of blue/gray
Julian Müller
vor 26 Tag
92b959b
serve fonts from public/fonts/ with absolute URLs
Julian Müller
vor 26 Tag
8794ae5
derive blog author name from email instead of showing email
Julian Müller
vor 27 Tag
15a57f0
add missing de.time.formats.long + default translation
Julian Müller
vor 27 Tag
2539f78
blog JSON-LD — no nested ERB inside Ruby block
Julian Müller
vor 27 Tag
0b71b1b
replace root_url with request.base_url in blog JSON-LD
Julian Müller
vor 27 Tag
2688b2f
remove prefers-color-scheme from checkbox — use .dark class only
Julian Müller
vor 27 Tag
b349203
revert admin login bg to cream
Julian Müller
vor 27 Tag
2b34942
admin login bg darker shade for contrast with header/footer
Julian Müller
vor 27 Tag
aa1f281
admin login bg-cream to match body background
Julian Müller
vor 27 Tag
c6aa450
checkbox light mode — white background instead of transparent
Julian Müller
vor 27 Tag
b1ccb2b
admin login page light/dark mode support
Julian Müller
vor 27 Tag
d80b281
restore admin login switcher on betreuer login page
Julian Müller
vor 27 Tag
ccef8b3
revert admin link from footer
Julian Müller
vor 27 Tag
ff961ef
remove debug logging from Forminator hook, rebuild zip
Julian Müller
vor 27 Tag
d265006
fetch entry_id from DB when Forminator response lacks it
Julian Müller
vor 27 Tag
ae37290
add all Forminator hook variants + debug response logging
Julian Müller
vor 27 Tag
f66d94e
add forminator_custom_form hook + debug logging
Julian Müller
vor 27 Tag
10b70ed
remove WordPress Plugin from header nav, keep in footer
Julian Müller
vor 27 Tag
964704e
add missing de.devise.sessions.sign_in translation
Julian Müller
vor 27 Tag
7d66a53
AGB Gerichtsstand — München
Julian Müller
vor 27 Tag
b4a8eea
AGB § 10 — Exportpflicht vor Vertragsende beim Kunden
Julian Müller
vor 27 Tag
f7da9cc
AGB § 4 — bestehende sowie begonnene Freizeiten
Julian Müller
vor 27 Tag
dd945e8
restyle Impressum/AGB pages with Forest typography
Julian Müller
vor 27 Tag
a7ea47b
add AGB + Datenschutz links to registration form
Julian Müller
vor 27 Tag
b9de443
exclude dark mode toggle from custom checkbox styles
Julian Müller
vor 27 Tag
cd35801
custom Forest checkbox styling + dark mode timeline numbers
Julian Müller
vor 27 Tag
ba81ceb
mobile timeline text over line + add German date translations
Julian Müller
vor 27 Tag
6a961cd
fix newsletter + how-it-works mobile layout
Julian Müller
vor 27 Tag
a18df9f
make Impressum/AGB publicly accessible without login
Julian Müller
vor 27 Tag
0412d38
clarify face vector deletion — file-based with BSI overwrite
Julian Müller
vor 27 Tag
67923e2
add BSI-compliant face vector deletion to Datenschutz page
Julian Müller
vor 27 Tag
bdad6c0
fix hero Demo ansehen button dark mode colors
Julian Müller
vor 27 Tag
4c78595
add screenshots + shortcut icons to resolve manifest warnings
Julian Müller
vor 27 Tag
7051c6d
change PWA short_name to Jugendcampplaner
Julian Müller
vor 27 Tag
6af205a
add 192px and 512px icons required by Chrome
Julian Müller
vor 27 Tag
06289a5
fix icon sizes + remove broken SVG shortcut icons
Julian Müller
vor 27 Tag
eb49c33
show install banner on mobile without beforeinstallprompt
Julian Müller
vor 27 Tag
d5c9a2a
skip forgery protection on PwaController
Julian Müller
vor 27 Tag
0ac3ed2
add service-worker.js route for SW registration
Julian Müller
vor 27 Tag
4b4103f
fix PwaController template resolution
Julian Müller
vor 27 Tag
c9fe2d4
update cookie banner to Forest palette
Julian Müller
vor 27 Tag
e4747f6
serve manifest as application/manifest+json
Julian Müller
vor 27 Tag
8d7868b
make fetch handler functional for install prompt
Julian Müller
vor 27 Tag
6fac412
add 192x192 icon + fetch handler for install prompt
Julian Müller
vor 27 Tag
a9c09ad
capture beforeinstallprompt early in application.js
Julian Müller
vor 27 Tag
6cf0912
fix YAML syntax in pwa I18n translations
Julian Müller
vor 27 Tag
8a06aa9
redirect on CSRF token expiry instead of 500 error
Julian Müller
vor 27 Tag
6f5e899
remove duplicate flash notice from hero partial
Julian Müller
vor 27 Tag
4e228f5
fix Turbo progress bar color — Forest green instead of blue
Julian Müller
vor 27 Tag
fdb53c5
fix system logs terminal pane — Forest dark green instead of gray
Julian Müller
vor 27 Tag
eb4a3cd
fix system logs buttons — replace gray with Forest palette
Julian Müller
vor 27 Tag
622f21c
fix Freizeit default selection + duplicate session expiry alert
Julian Müller
vor 27 Tag
955a135
fix Freizeit switcher — disable Turbo on form submit
Julian Müller
vor 27 Tag
df5df48
fix betreueransprache dark mode — replace blue/primary with Forest
Julian Müller
vor 27 Tag
a7b62a2
add missing Ereignis I18n translations (index, show)
Julian Müller
vor 27 Tag
4ebbe91
fix missing edit template in BetreuerAbrechnungsController
Julian Müller
vor 27 Tag
df42acf
fix turbo_stream render in teilnehmers + skip-nav colors
Julian Müller
vor 27 Tag
183a605
remove duplicate flash messages from betreuer dashboard
Julian Müller
vor 27 Tag
f914336
app tile hyphenation + responsive centering
Julian Müller
vor 27 Tag
50f4978
recolor JC logo/favicon to forest green, shrink dark mode toggle
Julian Müller
vor 28 Tag
9b45eef
fix dark mode remnants — replace bright blue/purple/green with Forest dark palette
Julian Müller
vor 28 Tag
1b41744
add dark mode to public nav links and Anmelden button
Julian Müller
vor 28 Tag
c436dad
show dark mode toggle for public (non-authenticated) visitors
Julian Müller
vor 28 Tag
8b2da92
self-host fonts and Quill CSS, remove CDN dependencies (GDPR/CSP)
Julian Müller
vor 28 Tag
34f180a
reduce toggle size from 50% to 40% scale (80x35px)
Julian Müller
vor 28 Tag
3d2d068
login/register buttons stuck disabled when Turnstile is off in dev
Julian Müller
vor 29 Tag
bee36bb
match FAQ, CTA, footer, header exactly to design reference
Julian Müller
vor 29 Tag
a131bef
fix bento cards invisible on Turbo navigation
Julian Müller
vor 29 Tag
981d571
remove broken fallback header/footer from layout
Julian Müller
vor 29 Tag
6c5d513
migrate design system from tailwind.config.js to Tailwind v4 @theme
Julian Müller
vor 29 Tag
d4e1963
handle legacy integer session values in current_freizeit
Julian Müller
vor etwa 1 Monat/en
8b909a5
make Stripe keys optional instead of raising in production
Julian Müller
vor etwa 1 Monat/en
38ca15e
allow viewing Teilnehmer page for archived Freizeiten
Julian Müller
vor etwa 1 Monat/en
19886f2
replace all inline SVGs on startpage with icon() helper calls
Julian Müller
vor etwa 1 Monat/en
bb8a2dc
fix nested ERB tags in icon() calls causing syntax errors
Julian Müller
vor etwa 1 Monat/en
e73be3b
fix VAPID keys job test to use proper assertion
Julian Müller
vor etwa 1 Monat/en
ee75d58
fix events translations nesting under notifications key in de.yml
Julian Müller
vor etwa 1 Monat/en
9baa522
restore static 500.html as fallback when Rails itself crashes
Julian Müller
vor etwa 1 Monat/en
b398317
move static error pages to public/fallback/ so ErrorsController is used
Julian Müller
vor etwa 1 Monat/en
dd39237
replace clipboard.js with Stimulus controller for CSP compatibility
Julian Müller
vor etwa 1 Monat/en
8add3e0
change API key name input to dropdown with WordPress Plugin option
Julian Müller
vor etwa 1 Monat/en
bb8e3cd
inline quill and compact CSS into application.css for Propshaft compatibility
Julian Müller
vor etwa 1 Monat/en
288291b
add CSP nonce to login page inline script to unblock Turnstile captcha
Julian Müller
vor etwa 1 Monat/en
d1e5042
improve correction save logic, update plugin zip, and add tech debt tracker
Julian Müller
vor etwa 1 Monat/en
cf008d7
reduce Ransack exposure and expand Rack::Attack rate limiting
Julian Müller
vor etwa 1 Monat/en
3b19d08
refactor GitHub token to on-demand fetching with timeout
Julian Müller
vor etwa 1 Monat/en
b6384fe
filter KrisenVorgang relation_scope by access grants
Julian Müller
vor etwa 1 Monat/en
0a1d246
add pessimistic locking to teilnehmer_back
Julian Müller
vor etwa 1 Monat/en
33963d1
remove client-controllable skip_validation parameter bypass
Julian Müller
vor etwa 1 Monat/en
5e087b4
secure CSP nonce and enable enforcing mode
Julian Müller
vor etwa 1 Monat/en
23ece52
replace skip_verify_authorized with AdminPanelPolicy
Julian Müller
vor etwa 1 Monat/en
c6438b1
add owner email notification on role changes
Julian Müller
vor etwa 1 Monat/en
3f25f9a
remove duplicate blog link for unauthenticated users
Julian Müller
vor etwa 1 Monat/en
dd757de
Februar 2026
bypass model validation when attaching camp book PDF
Julian Müller
vor etwa 2 Monat/en
71811be
reload page after camp book generation completes
Julian Müller
vor etwa 2 Monat/en
5e9fa37
use update_columns for camp book progress to bypass date validation
Julian Müller
vor etwa 2 Monat/en
58733c0
set camp book generating flag before enqueuing job
Julian Müller
vor etwa 2 Monat/en
729ea7b
allow camp book PDF generation for archived Freizeiten
Julian Müller
vor etwa 2 Monat/en
ad85f84
add ransackable_attributes to Ticket model for admin search
Julian Müller
vor etwa 2 Monat/en
1c01818
skip validations in Nextcloud password encryption migration
Julian Müller
vor etwa 2 Monat/en
eb542b3
read encryption keys from credentials.yml.enc
Julian Müller
vor etwa 2 Monat/en
8a1590e
make ActiveRecord Encryption work in production
Julian Müller
vor etwa 2 Monat/en
0d19a9c
add blog link to header navigation for all users
Julian Müller
vor etwa 2 Monat/en
4ba7c58
remove org-dependent Handlungsleitfäden card from admin dashboard
Julian Müller
vor etwa 2 Monat/en
9a28652
fix QuizSession seed — l_rounds_count must be >= 5
Julian Müller
vor etwa 2 Monat/en
fc49982
fix bugs found during controller testing
Julian Müller
vor etwa 2 Monat/en
0476a60
fix route helpers, readonly guard, view bugs, inflections
Julian Müller
vor etwa 2 Monat/en
fb3ec44
fix nested route helpers in controllers and views
Julian Müller
vor etwa 2 Monat/en
562c22b
sanitize LIKE queries to prevent SQL wildcard injection
Julian Müller
vor 2 Monat/en
0dd2e39
prevent path traversal in log download with regex and realpath
Julian Müller
vor 2 Monat/en
9363d09
scope remaining 3 unscoped controllers with authorized_scope
Julian Müller
vor 2 Monat/en
fbdce78
replace html_safe with sanitize in meta_entry partial
Julian Müller
vor 2 Monat/en
9de35f6
increase changelog graph lane width for branch curves
Julian Müller
vor 2 Monat/en
aa1a04e
use pure inline styles for changelog graph
Julian Müller
vor 2 Monat/en
f617f70
use CSS divs for graph lane lines instead of SVG
Julian Müller
vor 2 Monat/en
684eab2
reduce changelog graph spacing
Julian Müller
vor 2 Monat/en
aeda52a
tighten changelog graph spacing and clip branch lines
Julian Müller
vor 2 Monat/en
4567973
resolve FK constraint error in GitHub commit fetcher
Julian Müller
vor 2 Monat/en
ff746a9
multiple controller/view bugs across 7 features
Julian Müller
vor 2 Monat/en
159d631
scoping bugs, admin dashboard, UI improvements, feedback Mehrfachauswahl
Julian Müller
vor 2 Monat/en
3a921dc
gate navbar white-labeling behind pro package
Julian Müller
vor 2 Monat/en
4ed2046
change departure check from hard block to soft warning
Julian Müller
vor 2 Monat/en
ad1658d
Januar 2026
use handlungsleitfaeden_index_path for collection routes
Julian Müller
vor 3 Monat/en
803635f
use explicit path for delete button in show view
Julian Müller
vor 3 Monat/en
122ab05
use explicit paths for Handlungsleitfaden URLs
Julian Müller
vor 3 Monat/en
5071e5a
set explicit URL in Handlungsleitfaden form
Julian Müller
vor 3 Monat/en
90b29d4
correct all handlungsleitfaden route helper names
Julian Müller
vor 3 Monat/en
f949a14
add explicit class_name to German plural associations
Julian Müller
vor 3 Monat/en
7c050e4
correct route helper name in KrisenVorgang new view
Julian Müller
vor 3 Monat/en
153d5df
handle class-level authorization in KrisenVorgangPolicy
Julian Müller
vor 3 Monat/en
8815017
add missing admin_signed_in? helper method
Julian Müller
vor 3 Monat/en
94987c2
fix Ausleihvorgänge list refresh on return/lost
Julian Müller
vor 3 Monat/en
81df496
add Alle Abrechnungen tab for admin visibility
Julian Müller
vor 3 Monat/en
5fc7cc3
fix test fixtures for authorization tests
Julian Müller
vor 3 Monat/en
861a745
add skip_verify_authorized to Devise and public controllers
Julian Müller
vor 3 Monat/en
9d01318