Releases: nplhse/collaborative-ivena-statistics
Release list
v0.0.5-alpha
Since the last release the platform has grown substantially toward a beta-ready collaborative Explore experience. The main user-facing addition is a structured Explore data catalog: detail pages for core reference objects (hospitals, indications and indication groups, infections, dispatch areas, states, secondary transports), a classification glossary, orientation maps, coverage-year heatmaps with hospital privacy, and stable public UUIDs for catalog resources. Supporting work includes a redesigned footer and navigation, XML sitemap and robots.txt, an operational control-center dashboard, Remember Me login, password-strength feedback, and clearer German terminology (“Zuweisungen”). Under the hood, translations were split into feature domains, console commands were standardized, EasyAdmin was upgraded to v5, and architecture ADRs plus Deptrac (report-only with baseline) were introduced to lock in the target bounded-context design.
In parallel, the release hardens the product for safer multi-centre use. A focused security track (SEC-001–SEC-020) addresses registration enumeration, XSS and CSV formula injection, rate limiting, import path containment and permission re-checks, export fail-closed behaviour, session cookies, Live Component auth, and related controls, with matching regression tests. Test architecture and CI were strengthened (PHPUnit suite boundaries, broader coverage uploads via Codecov, Deptrac cleanup), documentation was reorganized into numbered guides and operations runbooks, and dependencies were kept current positioning the codebase for the beta release.
What's Changed
Features
- feat(admin): operational control center dashboard and extended entity coverage (#261) by @nplhse in #296
- feat(explore): Cache explore filter reference data to reduce per-request database load by @nplhse in #300
- feat(import): allow administrators to download original import source files by @nplhse in #301
- feat: live password strength feedback by @nplhse in #314
- feat(allocation): replace explore detail integer IDs with UUID v4 public IDs by @nplhse in #316
- feat: Add Content-Security-Policy report-only mode for production by @nplhse in #321
- feat: Redesign site footer with structured navigation and deployment metadata by @nplhse in #322
- feat(shared): add permission-aware application sitemap page by @nplhse in #323
- feat(architecture): introduce Deptrac report-only with baseline by @nplhse in #336
- feat: Improve the Sitemap and add a robots.txt by @nplhse in #359
- feat: Improve Explore page by embedding a useful data catalog by @nplhse in #393
- feat: Polish the explore catalog by @nplhse in #395
Bugfixes
- fix: stop import-generated Assessment entries from polluting the audit log (#288) by @nplhse in #291
- fix: Reject Excel uploads in the import workflow by @nplhse in #295
- fix(admin): align EasyAdmin CRUD lifecycle signatures with EA 5 by @nplhse in #297
- fix(allocation): eager-load relations on allocation detail page (#269) by @nplhse in #299
- bugfix: Monthly reminder uses the same reporting period as the month users are asked to upload by @nplhse in #311
- bugfix: Fix monthly reminder SMTP rate limiting and add delivery tracking (#302)` by @nplhse in #312
- bugfix: Fix filter persistence, add indications, and speed up the filter drawer by @nplhse in #313
- bugfix: Localize predefined Analysis Library system views by @nplhse in #315
- fix(translations): update German translations to use "Zuweisungen" instead of "Allokationen" by @nplhse in #358
- fix(security): close SEC-020 regression gaps by @nplhse in #392
- fix: Finally making the RememberMe Badge work during login by @nplhse in #394
Security
- security: Prevent Registration username/email Enumeration (SEC-001) by @nplhse in #371
- security: sanitize blog index preview HTML (SEC-002) by @nplhse in #372
- security: neutralize CSV formula injection in exports (SEC-003) by @nplhse in #373
- security: require auth for Live Component mount path (SEC-004) by @nplhse in #374
- security: Explore list rate limit by @nplhse in #376
- security: Add rate limiters for Register, Reset, Import, and Exports by @nplhse in #377
- security: persist audit entry for import source downloads by @nplhse in #378
- security: Validate favorite Toggle referer redirect by @nplhse in #380
- security: Contain ImportFileStorage Paths under Imports BaseDir by @nplhse in #379
- security: Require ROLE_PARTICIPANT for /import via access_control by @nplhse in #381
- security: Slim public /health JSON payload by @nplhse in #383
- security: Disable media upload directory indexes by @nplhse in #384
- Security: Pin explicit session cookie settings by @nplhse in #388
- security: Resolve login failure username from form field by @nplhse in #387
- security: Re-check Import permissions in Worker by @nplhse in #390
- security: Fail closed on empty export hospital intersection by @nplhse in #391
Chore
- chore(deps): fix Dependabot Composer updates and tune schedule (#267) by @nplhse in #273
- chore(deps-dev): bump prettier from 3.9.1 to 3.9.4 in the eslint group by @dependabot[bot] in #274
- chore(deps): raise PHP minimum to 8.4.3 for Dependabot resolution (#267) by @nplhse in #276
- chore(deps-dev): bump friendsofphp/php-cs-fixer from 3.95.10 to 3.95.11 by @dependabot[bot] in #285
- chore(deps-dev): bump phpstan/phpstan-phpunit from 2.0.16 to 2.0.17 by @dependabot[bot] in #284
- chore(deps-dev): bump phpstan/phpstan from 2.2.2 to 2.2.3 by @dependabot[bot] in #283
- chore(deps): bump phpdocumentor/reflection-docblock from 5.6.7 to 6.0.3 by @dependabot[bot] in #281
- chore(deps-dev): bump vincentlanglet/twig-cs-fixer from 3.14.0 to 4.0.2 by @dependabot[bot] in #280
- chore(deps): bump the symfony group across 1 directory with 22 updates by @dependabot[bot] in #286
- chore(admin): migrate EasyAdmin 4.29 to 5.1 by @nplhse in #289
- chore(deps): bump symfony/ux-twig-component from 2.36.0 to 3.2.0 in the symfony group by @dependabot[bot] in #306
- chore(deps-dev): bump phpstan/phpstan-phpunit from 2.0.17 to 2.0.18 by @dependabot[bot] in #310
- chore(deps): bump twig/twig from 3.27.1 to 3.28.0 by @dependabot[bot] in #309
- chore(deps): Group PHPStan and Psalm Dependabot updates by @nplhse in #317
- chore(deps-dev): bump rector/rector from 2.5.2 to 2.5.3 by @dependabot[bot] in #308
- chore(deps): bump phpstan/phpdoc-parser from 2.3.2 to 2.3.3 in the phpstan group by @dependabot[bot] in #318
- chore(deps-dev): bump prettier from 3.9.4 to 3.9.5 in the eslint group by @dependabot[bot] in https://github.com/nplhse/colla...
v0.0.4-alpha
This alpha release marks a major step toward beta readiness, with development concentrated on analytics, platform modernization, and operational hardening. The headline feature is the new Analysis Explorer — a flexible, self-service analytics workspace that replaces the legacy generic analysis and pivot-table stack, complemented by an executive overview dashboard, indication compare & groups, benchmarking UI refinements, and more precise transport-time KPIs. Surrounding the statistics work, the release adds hospital access grants, indication raw review, allocation CSV export, participant onboarding, monthly submission reminders, and import/projection deduplication.
On the platform side, the application was upgraded to Symfony 8.1 with broader modernization (attribute-based DI, console commands, Foundry 2.x, Swiss Knife, JS linting). Full German localization (locale switcher, user preferences, localized emails) landed alongside a security audit, test-suite improvements (DAMA rollbacks, parallel ParaTest), and beta-readiness ops work: health checks, backup/restore runbooks, environment validation, and SQL performance tuning.
What's Changed
Features
- feat(notifications): Add administrative email notifications by @nplhse in #189
- feat: Add hospital access grants and delegated access management by @nplhse in #190
- feat: Deduplicate statistics (including projections) and improve rebuild consistency by @nplhse in #192
- feat(import): Add duplicate detection during import processing by @nplhse in #193
- feat: Add monthly submission reminder workflow by @nplhse in #198
- feat(statistics): Add indication comparison and grouping features by @nplhse in #199
- feat(statistics): Add indication comparison groups by @nplhse in #203
- feat: Add executive overview dashboard by @nplhse in #205
- feat(statistics): Polish overview dashboard by @nplhse in #206
- feat(rector): Integrate Rector Swiss Knife into quality workflows by @nplhse in #208
- feat(js): Add JavaScript quality tooling by @nplhse in #210
- feat(statistics): Analysis Explorer v2 (Alpha MVP) by @nplhse in #220
- feat(statistics): Analysis Explorer: Hospitals, distribution profiles, and library expansion by @nplhse in #221
- feat(explorer): group edit drawer dropdowns by clinical category by @nplhse in #228
- feat(statistics): Improve Filters in Reports, Analysis Explorer and Allocation list by @nplhse in #229
- feat(user): add show/hide password toggle for password fields by @nplhse in #231
- feat(content): editable slugs for posts and pages by @nplhse in #232
- feat(indications): Indication raw review workflow by @nplhse in #235
- feat(export): Add scoped CSV export for owned hospital allocations by @nplhse in #238
- feat(allocations): Add explore allocation filters and closed-department highlighting by @nplhse in #240
- feat: Participant onboarding dashboard and “My hospitals” allocation filter by @nplhse in #241
- feat: Refresh overview materialized views only on structural projection changes by @nplhse in #242
- feat(i18n): German locale support and complete DE translations by @nplhse in #246
- feat(ops): backup and restore tooling for beta readiness by @nplhse in #248
- feat(install): add app:env:check for beta-readiness P0-2 by @nplhse in #249
- feat(shared): add GET /health endpoint for beta monitoring by @nplhse in #250
Bugfixes
- fix(hospital): Fix participating hospital handling in EasyAdmin by @nplhse in #191
- fix(statistics): break out of turbo frame for top report card links by @nplhse in #207
- fix(upgrade-dev): Clear test cache during upgrade workflows by @nplhse in #209
- fix(engagement): send monthly reminders on first working day only (#217) by @nplhse in #219
- fix(statistics): Align Overview dashboard charts with Analysis Explorer library views by @nplhse in #226
- fix(overview): merge scoped and all-time overview slice query by @nplhse in #227
- fix(migration): drop projection backfill from deploy migration by @nplhse in #233
- fix(allocation): Prevent Address embeddable Exception on rendering hospital data by @nplhse in #236
- fix: prevent Foundry factory classes from breaking prod deploy by @nplhse in #243
- fix(engagement): send monthly reminder in hospital owner locale by @nplhse in #252
- fix(mail): localize transactional and admin notification emails by @nplhse in #254
- fix: Widgets are displaying less recent blogposts then expected by @nplhse in #255
- fix(statistics): restore heatmap mode toggle on overview and benchmarking charts by @nplhse in #256
Security
Chore
- chore: Bump application version and update dependencies by @nplhse in #188
- chore: Remove pitch deck materials from repository by @nplhse in #195
- chore(deps): bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in #173
- chore(deps): consolidate Dependabot updates for GHA and JS dev tooling by @nplhse in #218
- chore: Block wordpress scanner requests by @nplhse in #239
- chore(deps-dev): bump the eslint group with 2 updates by @dependabot[bot] in #245
- chore(deps): bump actions/cache from 5 to 6 by @dependabot[bot] in #244
Refactoring
- refactor(fixtures): Refactor seed data into Doctrine fixtures by @nplhse in #194
- refactor(statistics): Align benchmarking UI with statistics layout by @nplhse in #200
- refactor(symfony): Upgrade application to Symfony 8.1 by @nplhse in #201
- refactor(symfony): Modernize Symfony configuration and application structure by @nplhse in #202
- refactor(statistics): Refine transport time KPI calculations by @nplhse in #204
- refactor(symfony): Clean up services.yaml by @nplhse in #223
- refactor(console): migrate app commands to Symfony 8.1 invokable style by @nplhse in #224
- remove: Pivot tables from Statistics by @nplhse in #222
- refactor(allocation): SQL GROUP BY for countByMonthLast12Months (P0-4) by @nplhse in #251
Tests
- tests: Optimize test suite performance and reliability by @nplhse in #196
- refactor(tests): Use DAMA transaction rollbacks for faster tests by @nplhse in #197
Full Changelog: v0.0.3-alpha...v0.0.4-alpha
v0.0.3-alpha
With this release, the application takes a significant step toward a production-ready alpha version. The focus was on three key areas: further strengthening security and stability, expanding the integrated CMS, and, above all, comprehensively enhancing the import and data processing workflows.
In addition to numerous improvements to the technical architecture, data quality, and analysis functions, the foundations for a flexible statistics and analytics framework have been laid. At the same time, the CMS has been expanded with new content and media features, and the user experience has been improved. The greatest advancement of this release, however, lies in the massive expansion of the import pipeline, which now enables a significantly more robust and complete data flow, thereby paving the way for the productive use of the alpha version.
What's Changed
- bug: Fix Foundry lazy value failures in allocation factory by @nplhse in #147
- feat: Introduce centralized application version management by @nplhse in #148
- refactor: Remove legacy migration context and related code by @nplhse in #149
- refactor: Improve Makefile and streamline developer workflows by @nplhse in #150
- feat: Add daily KPIs to admin dashboard by @nplhse in #151
- feat: Add generic statistics analysis explorer by @nplhse in #152
- feat: Add sidebar navigation for content pages by @nplhse in #153
- feat(statistics): Add generic analysis metrics for statistics framework by @nplhse in #154
- feat: Restore page content blocks and modular page rendering by @nplhse in #155
- feat: Add hospital cohort matrix for statistics analysis by @nplhse in #156
- feat: Add KPI scheduler for automated statistics refresh by @nplhse in #157
- fix: Improve Makefile targets and developer tooling by @nplhse in #158
- feat: Add CMS lightbox support and reusable media snippets by @nplhse in #159
- feat: Add Top-N reports for statistics analysis by @nplhse in #160
- feat: Add indication dashboard with profiles, insights, and optimized queries by @nplhse in #161
- tests(statistics): Improve indication dashboard test coverage by @nplhse in #162
- feat: Add statistics analytics library foundation by @nplhse in #163
- feat(statistics): Add generic analysis metrics MVP by @nplhse in #164
- refactor: Refine and extend the analysis library architecture by @nplhse in #165
- Add benchmarking dashboard for comparative statistics analysis by @nplhse in #166
- feat: Add project pitch deck and presentation materials by @nplhse in #167
- feat: Add case flow analysis and patient journey statistics by @nplhse in #168
- feat: Add homepage screenshot carousel by @nplhse in #169
- fix: Correct dispatch area import mapping for “Zuweisung durch” by @nplhse in #170
- feat: Add safe import deletion workflow by @nplhse in #174
- fix(home): strengthen screenshot carousel caption overlay by @nplhse in #175
- feat: Add hospital population data and population-based analytics by @nplhse in #176
- feat: Add hospital scope picker for statistics and analytics by @nplhse in #178
- feat: Add data quality indicator for statistics and dashboard insights by @nplhse in #177
- feat: Roll out data quality indicators across statistics and analytics by @nplhse in #179
- feat: Preserve natural image width in CMS page rendering by @nplhse in #180
Full Changelog: v0.0.2-alpha...v0.0.3-alpha
v0.0.2-alpha
The focus of this release was, on the one hand, on stabilizing the application and improving security. An AI-assisted security audit identified several outstanding issues, which have since been resolved. In addition, the migration from the legacy system has been fully integrated into the app and will be handled using the new features. And last but not least, the import process has been improved in many ways, particularly with regard to minimizing rejected rows.
What's Changed
- security: Restrict indication assignment to authorized users by @nplhse in #113
- security: Restrict explore and statistics access by user hospital scope by @nplhse in #114
- security: Move app secret configuration to environment files by @nplhse in #115
- security: Restrict HTTP methods for sensitive application routes by @nplhse in #116
- security: Remove redundant admin security checks by @nplhse in #117
- feat: Add admin dashboard overview by @nplhse in #119
- security: Disable automatic login after registration by @nplhse in #120
- security: Improve security voters and access decision handling by @nplhse in #118
- feat: Add period navigation to statistics overview by @nplhse in #121
- feat: Add import requeue workflow and reject analysis tooling by @nplhse in #128
- Fix Uberspace u8 deploy failure at
cachetool:clear:opcacheby @nplhse in #129 - bug: Fix dispatch area normalization for trailing “Kreis” by @nplhse in #130
- Bug: Fix two digit year created at in import pipeline by @nplhse in #131
- fix(import): map Groá-Gerau dispatch area typo to Groß-Gerau by @nplhse in #132
- fix(import): skip empty assessment rows during messenger import by @nplhse in #133
- Bug: Fix issue 125 obstetrics department mappings by @nplhse in #134
- feat: Improve legacy import requeue cleanup and assessment mapping by @nplhse in #135
- feat: Add import processing status page and live polling by @nplhse in #136
- feat: Add individual page title by @nplhse in #137
- docs: Refactor documentation structure and style by @nplhse in #140
- feat: Add spam protection to feedback submissions by @nplhse in #139
- refactor: Symfony housekeeping and framework cleanup by @nplhse in #141
- feat: Add page key system for identifying system pages by @nplhse in #142
- feat: Add media library for centralized file and asset management by @nplhse in #144
- fix: Backfill allocation indication links by @nplhse in #145
Full Changelog: v0.0.1-alpha...v0.0.2-alpha
v0.0.1-alpha
This is the first release of an early alpha version of the project—a sort of "proof of concept," if you will—featuring all the basic functions that the final version will include. It’s still a bit rough around the edges and unfinished in many places, but it should give you a first impression of the final product.
What's Changed
- feat: Add basic users by @nplhse in #1
- feat: Add login functionality, integration tests, code coverage by @nplhse in #2
- feat: Add initial Areas feature with entities, fixtures, list view, and UX Turbo integration by @nplhse in #3
- feat: Add initial Hospital entities with embedded Address, repository, factory, and tests by @nplhse in #5
- build(deps): Bump actions/checkout from 4 to 5 by @dependabot[bot] in #6
- feat: Add Allocation entity with views, updated Card components, and tests by @nplhse in #7
- fest: Add import functionality with Allocation integration, service layer, and tests by @nplhse in #8
- feat: Add AllocationUrgency enum with entity and import integration by @nplhse in #9
- Refactor AllocationImportFactory to use dedicated AllocationEntityResolver by @nplhse in #10
- Add Speciality and Department entities with Allocation integration and data views by @nplhse in #11
- fix: Reliable CSV fixture paths and stricter encoding detection by @nplhse in #12
- refactor: Optimize tests by @nplhse in #13
- feat: Add Assignment, Occasion, and Infection entities with Allocation integration by @nplhse in #14
- feat: Link normalized and raw indications via form, extend data table, add tests by @nplhse in #15
- feat: Improve the DX of the project by @nplhse in #16
- refactor: Refactor seed system, add AreaCache linking and simplify SeedDatabaseCommand by @nplhse in #18
- build(deps): Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #17
- feat: Add SeedIndicationCommand to automatically create and link raw indications by @nplhse in #19
- feat: Add base statistics dashboard and supporting infrastructure by @nplhse in #20
- feat: Build dashboard with initial analytics layout and data pipeline by @nplhse in #21
- feat: Added some new Age related statistics to the Dashboard. by @nplhse in #22
- feat: Add time-grid statistics and extend dashboard analytics by @nplhse in #23
- feat: Add transport-time statistics by @nplhse in #24
- feat: Add hospital statistics to dashboard and analytics pipeline by @nplhse in #25
- feat: Improving datatable UI by @nplhse in #26
- fix: Set correct participation for all Hospitals that are part of the project. by @nplhse in #28
- fix: Corrected some minor issues with templates by @nplhse in #29
- feat: Added some statistics to DefaultController by @nplhse in #30
- feat: Modularize core application structure and reorganize codebase by @nplhse in #32
- feat: Added Assessments to Allocations by @nplhse in #33
- build(deps): Bump actions/checkout from 5 to 6 by @dependabot[bot] in #31
- feat: Added basic backend by @nplhse in #34
- refactor: Improve import flow for clearer responsibilities and better extensibility by @nplhse in #35
- refactor: Refine importer architecture with improved resolution, mapping, and extensibility by @nplhse in #36
- build(deps): Bump actions/cache from 4 to 5 by @dependabot[bot] in #37
- feat: Update to Symfony 7.4, removed Deprecation by @nplhse in #39
- fix: Stabilized lint GitHub Action and fixed some minor issues by @nplhse in #40
- deps: Updated all dependencies, including those to fix security issues. by @nplhse in #41
- refactor: AllocationUrgency semantics to match IVENA care levels. by @nplhse in #42
- feat: Refactor allocation import to DI-driven row processing with row-type detection by @nplhse in #43
- feat: Add EasyAdmin-based backend for administration features by @nplhse in #44
- feat: Add support for secondary transports in allocation domain by @nplhse in #45
- feat: Add MCI case handling to allocation domain and data processing by @nplhse in #46
- feat: Add allocation statistics projection for improved analytics and performance by @nplhse in #47
- style: Improved the use of rector to modernize the codebase. by @nplhse in #48
- tests: Increase test coverage by adding and refining tests across multiple components. by @nplhse in #49
- style: Improve code style using PHP CS Fixer by @nplhse in #50
- feat: Implement audit feature and integrate into backend workflow by @nplhse in #51
- feat: Add distribution panel to statistics dashboard by @nplhse in #53
- build(deps): Bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #52
- feat: Adding Test Analytics for Codecov by @nplhse in #55
- feat: Add distribution pages and filtering capabilities to statistics dashboard by @nplhse in #54
- refactor: Clean up and simplify distribution configuration by @nplhse in #56
- feat: Add bar and boxplot distribution visualizations per hospital by @nplhse in #57
- feat: Add reusable distribution panels for statistics dashboard by @nplhse in #58
- feat: Remove legacy statistics code and clean up analytics structure by @nplhse in #59
- feat(hospitals): Add participant–hospital management and assignment logic by @nplhse in #60
- feat: Add cookie consent handling and banner integration by @nplhse in #61
- feat: Add dedicated homepage and move statistics to their own default entry point by @nplhse in #62
- feat: Add blog feature and integrate into content section by @nplhse in #63
- Feature/basic pages by @nplhse in #64
- feat: Implement initial statistics MVP with dashboard integration and core analytics flow by @nplhse in #65
- feat: Add legacy migration context and integration infrastructure by @nplhse in #66
- feat: Add work accident flag across allocations, imports, and statistics by @nplhse in #67
- feat: Add optional secondary indication support for allocations by @nplhse in #68
- feat: Enhance allocation explore filters with feature toggles by @nplhse in #69
- feat: Optimize statistics cont...