Commit graph

1700 commits

Author SHA1 Message Date
5e84c342b7 test(repo): assert member/user foreign keys are deferrable 2026-06-16 17:53:25 +02:00
ef94d2ef10 fix(repo): make member/user foreign keys deferrable to avoid create_member deadlock
Concurrent create_member transactions took FK FOR KEY SHARE (MultiXact) locks
on shared rows across members/users/membership_fee_types and could form a
cross-transaction cycle, producing intermittent PostgreSQL deadlocks (40P01)
under load. Making the three foreign keys DEFERRABLE INITIALLY DEFERRED moves
the check to commit time and breaks the cycle, without weakening integrity
(NOT NULL and ON DELETE RESTRICT are unaffected).
2026-06-16 17:52:51 +02:00
cb54c2c46e test(member-live): build date-filter property bounds without a reject-filter
The bound-pair generator filtered out ~1/4 of generated values, so unlucky
seeds hit StreamData's FilterTooNarrowError under full property runs.
Construct an at-least-one-bound-set pair directly instead, preserving the
exact domain with no rejection.
2026-06-16 17:52:17 +02:00
655fd80524 test: wait on observable state instead of blind sleeps
Replace the fixed Process.sleep waits in the import, members-PDF and
field-visibility tests with event-based / bounded-poll waits on the
observable condition, removing a known flakiness vector.
2026-06-16 17:51:43 +02:00
ccd1f81e3e test(member-live): assert rendered behavior instead of socket internals in the index view
Replace :sys.get_state assertions on the LiveView socket with assertions on
rendered output, so the tests pin user-visible behavior rather than internal
state; the few sites with no observable equivalent are kept and annotated.
2026-06-16 17:50:57 +02:00
3bd55fbfec test(seeds): drop the dead per-process seeds-run guard 2026-06-16 17:50:24 +02:00
18fb954f73 test(membership-fees): share create_fee_type and create_cycle fixtures
Replace the create_fee_type/create_cycle helpers duplicated across 18/8
membership-fee test files with a single shared definition in Mv.Fixtures,
reconciling the divergent local signatures (including the reversed
argument order) into one superset so behavior is unchanged.
2026-06-16 17:49:50 +02:00
9aa5bdb6a7 Merge pull request 'Cleanup of the docs closes #507' (#530) from issue/mitgliederverwaltung-507 into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #530
2026-06-15 22:00:43 +02:00
43f463997d docs: add a documentation index and fix dangling references
All checks were successful
continuous-integration/drone/push Build is passing
2026-06-15 21:53:36 +02:00
6fddb5285b docs(project): condense progress log, roadmap and test/infra docs 2026-06-15 21:53:36 +02:00
3797bc8fae docs(ui): condense and translate email, UI and PDF docs to English 2026-06-15 21:53:36 +02:00
0b36a43edc docs(db): refresh, condense and align database and groups docs 2026-06-15 21:53:36 +02:00
5d8f173529 docs(membership): condense membership, onboarding and import docs and align with the code 2026-06-15 21:53:36 +02:00
8d783276d0 docs(roles): condense roles/permissions/auth docs and align with the code 2026-06-15 21:53:36 +02:00
07503fc6fe Merge pull request 'parallel dev isolation' (#529) from feat/parallel-dev-isolation into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #529
2026-06-15 18:03:00 +02:00
2363ef69e3 feat(justfile): add start-test-db recipe for an isolated test database
Some checks reported errors
continuous-integration/drone/push Build was killed
continuous-integration/drone/promote/production Build was killed
2026-06-15 17:48:53 +02:00
c332a4dde2 feat(dialyzer): allow overriding PLT paths via PLT_CORE_PATH/PLT_LOCAL_PATH 2026-06-15 17:48:53 +02:00
0a53e11cc4 feat(config): read database host port from DB_PORT in dev and test 2026-06-15 17:48:53 +02:00
365ff10fd8 feat(docker): parametrize host ports and project name for parallel dev stacks
Several isolated stacks can now coexist: host ports come from DB_PORT/RAUTHY_PORT/MAILCRAB_PORT (defaulting to today's values) and the container namespace from COMPOSE_PROJECT_NAME. Drops the fixed rauthy-dev container_name that blocked a second stack.
2026-06-15 17:48:53 +02:00
19377be909 Merge pull request 'Fix sort by custom date closes #496' (#528) from issue/mitgliederverwaltung-496 into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #528
2026-06-15 16:34:40 +02:00
346291cc0d docs(changelog): record custom-date sorting fix under Unreleased
Some checks reported errors
continuous-integration/drone/push Build was killed
continuous-integration/drone/promote/production Build is passing
2026-06-15 16:18:42 +02:00
2eda661e37 fix(export): order member export chronologically by custom :date fields 2026-06-15 16:18:13 +02:00
6d4629ef5b fix(member): order member list chronologically by custom :date fields 2026-06-15 16:14:14 +02:00
1aaa0ece5d fix(membership): add chronological sort key for custom :date fields
Custom :date values are real Date structs; sorting them by Erlang term
order compares day, then month, then year, so the member list ordered
them like day-first text instead of chronologically. Derive the sort key
from a single shared helper that maps a date to its Gregorian day count,
leaving the other value types at their already-correct natural order.
2026-06-15 16:10:14 +02:00
d6c322fd79 Merge pull request 'Collection of small UI Improvements closes #511' (#527) from issue/mitgliederverwaltung-511 into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #527
2026-06-15 15:44:58 +02:00
0745eece25 docs(changelog): record member UI improvements under Unreleased
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-06-15 15:10:44 +02:00
856ea4279c refactor(member): share Ash error formatting across member-show components 2026-06-15 15:10:44 +02:00
24f67bea80 feat(member): keep text selection in the overview table from opening the member 2026-06-15 15:10:44 +02:00
be57dcfce8 fix(web): prevent sortable-header tooltips from being clipped by the sticky header 2026-06-15 15:10:44 +02:00
035edae522 feat(web): add tooltips to icon-only action buttons 2026-06-15 15:10:44 +02:00
bec49f0771 feat(settings): explain that OIDC enables single sign-on 2026-06-15 15:10:44 +02:00
3dc3a2b8ef feat(member): deactivate and reactivate members via an exit-date dialog 2026-06-15 15:10:44 +02:00
bcab2e21c4 Merge pull request 'fix publiccode.yml' (#526) from fix-opencode into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #526
2026-06-15 13:37:04 +02:00
6f62ef8bb9
fix: revert change to publiccode.yml
All checks were successful
continuous-integration/drone/push Build is passing
2026-06-15 13:36:30 +02:00
b026cf6d94 Merge pull request 'Fix bulk action dropdown width' (#525) from fix-bulk-action-width into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #525
2026-06-08 12:15:16 +02:00
62c6970bf0 Merge pull request 'chore(deps): update mix dependencies' (#517) from renovate/mix-dependencies into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #517
2026-06-08 12:06:13 +02:00
2a11bfe60a chore: pin nodejs for browser-test tooling; ignore /node_modules
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-08 11:53:27 +02:00
9b7368d0a3
fix: width of bulk action
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-06-08 11:44:26 +02:00
72cf85e5cb
Merge branch 'main' into renovate/mix-dependencies
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-06-08 11:25:57 +02:00
7769fd53dc Merge pull request 'Collect Bulk Actions in Dropdown' (#524) from issue/mitgliederverwaltung-420 into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #524
2026-06-04 17:38:25 +02:00
6a6099659b Merge branch 'main' into issue/mitgliederverwaltung-420
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
Integrate current main (CSV import, GDPR join-form description, dependency and
tooling bumps) into the bulk-actions-dropdown feature. Gettext catalogs were
reconciled with mix gettext.extract --merge; the CHANGELOG Unreleased entries
of both sides were combined.
2026-06-04 16:56:27 +02:00
3f44710a6b docs(changelog): record bulk-actions dropdown under Unreleased 2026-06-04 16:44:38 +02:00
c983c8d5bb feat(member): collect member-overview bulk actions into a single dropdown
The growing row of bulk-action buttons above the member overview is replaced
by one "Aktionen" dropdown holding all four actions (open in email program,
copy addresses, export CSV, export PDF). With no selection the actions operate
on all — or the currently filtered — members; the email-program action is
disabled past a recipient cap, because the browser cannot reliably hand a very
long mailto over to the mail client. The trigger shows the active scope as a
badge: an emphasized count when members are selected, a muted "alle"/"gefiltert"
otherwise.
2026-06-04 16:44:13 +02:00
8e5dd7e4c6 feat(web): add chevron affordance and scope-badge slot to dropdown triggers
Dropdown openers were visually indistinguishable from ordinary buttons. A
trailing chevron now marks every dropdown trigger — both the shared
dropdown_menu component and the bespoke member-filter trigger — and an
optional badge slot lets a trigger show a status indicator beside its label.
2026-06-04 16:40:05 +02:00
397ec69ed3 Merge pull request 'add landingURL for openCode' (#523) from issue/opencode-landingurl into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #523
2026-06-04 16:35:15 +02:00
065ecdfb2c docs(opencode): add landingURL to publiccode.yml
All checks were successful
continuous-integration/drone/push Build is passing
2026-06-04 16:18:24 +02:00
f3e1eeaec5 Merge pull request 'chore(deps): update mix dependencies to v1 (major)' (#488) from renovate/major-mix-dependencies into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #488
2026-06-04 16:17:02 +02:00
7f3b610937
chore: update mix.lock
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-06-04 15:45:00 +02:00
8cdbd63b09
Merge remote-tracking branch 'origin/main' into renovate/major-mix-dependencies
All checks were successful
continuous-integration/drone/push Build is passing
2026-06-04 15:34:04 +02:00
3b21e45322 Merge pull request 'chore(deps): update ghcr.io/sebadob/rauthy docker tag to v0.35.2' (#498) from renovate/ghcr.io-sebadob-rauthy-0.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #498
2026-06-04 15:29:58 +02:00