-
Notifications
You must be signed in to change notification settings - Fork 1
feat: resolution editor integration #321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Strehk
wants to merge
87
commits into
main
Choose a base branch
from
feat/resolution-editor-integration
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
87 commits
Select commit
Hold shift + click to select a range
74300fa
feat: admin user table improvements, double delegations, and particip…
Strehk 1fd857d
feat: tabbed conference config page with full CRUD for committees, de…
Strehk fc956c1
fix: correct speakers list position display and make controls full width
Strehk 63ad563
docs: add resolution editor integration meta-plan
Strehk c3ef9c8
feat: resolution editor Phase 1 — database schema + basic API
Strehk 67f647e
feat: resolution editor Phase 2 — delegate working paper UI with clau…
Strehk 859f571
feat: resolution editor Phase 3 — chair resolutions tab, DR promotion…
Strehk a3f30a6
feat: resolution editor Phase 4 — support re-evaluation, active DR to…
Strehk 4deb76d
feat: resolution editor Phase 5 — comment system for chairs and parti…
Strehk 4314825
feat: chair sponsor management with add/remove UI and sorted display
Strehk d1fce25
docs: update meta-plan — mark Phases 4 and 5 as complete
Strehk 2d33d6f
feat: resolution editor Phase 6b — amendment system backend mutations
Strehk 7488725
WIP: resolution editor Phase 6c — amendment UI, lifecycle controls, a…
Strehk f695039
feat: resolution editor Phase 7 — voting system (paragraphs + final)
Strehk 19e6af0
fix: chair dock — absolute links, active DR tab, and keyboard hint on…
Strehk edf0ddf
feat: add revertPaperStatus mutation for chair status reversion
Strehk ea06241
fix: move revert button outside collapse to make it clickable
Strehk 5b04554
fix: move revert button inside accordion content with label text
Strehk 607d34a
feat: add previous paragraph button in amendment phase controls
Strehk 8130a3b
fix: add type annotations to vite.config.ts devAutoRestart plugin
Strehk 7e99cac
feat: add global voting modal with promise-based API
Strehk afeef6c
feat: add vote button to amendment queue for formal voting
Strehk 35b4acb
feat: add presentation resolution display, amendment numbering, and a…
Strehk 04ae2e3
fix: replace layoutPreset match syntax with individual i18n keys
Strehk 5e69a60
feat: add resolution header with sponsors to all editor views
Strehk 9889e09
feat: add i18n support for resolution editor components
Strehk a349bf3
feat: remove rejected clauses from resolution content on adoption
Strehk 16430ff
fix: route chair "View Paper" link for submitted papers to chair deta…
Strehk 17a7b5c
feat: add edit/preview toggle for chair resolution view and print button
Strehk efd6679
fix: change DR to RES in document number on adoption and remove abbre…
Strehk d9df5da
feat: add active amendment tracking for chairs and participants
Strehk f0790e6
feat: show voting results in clause vote summary and print view
Strehk 0102495
update packages
Strehk 22b1ed9
fix: resolve lint errors (empty catch blocks, use SvelteMap/SvelteSet)
Strehk 39196aa
chore: ignore minimatch ReDoS CVEs in trivyignore
Strehk 2505c56
fix: use SvelteSet methods instead of reassigning with new Set
Strehk 45d1a09
chore: ignore node-tar CVE-2026-29786 in trivyignore
Strehk e6dd7f2
Update Node image
Strehk c1c0540
fix: update devalue to 5.6.3 to resolve CVE-2026-22774 and CVE-2026-2…
Strehk 69aa4ff
Add to trivyignore
Strehk cc5d66e
migration :D
Strehk 8ec1ed0
feat: use ResolutionPreview for presentation operative clauses and fi…
Strehk 2cddf42
improvement: show state handing in in list view
m1212e b63146c
format: run formatter
m1212e 234de9f
fix: typo
m1212e c0a4713
feat: allow chairs to edit submitted amendments
Strehk 0bbbe65
feat: auto-withdraw amendments targeting a deleted operative clause
Strehk c459ec2
feat: amendment submission/sponsoring toggles, comment UX improvements
Strehk 03766fe
fix path
Strehk 859e27b
Move Button
Strehk 7b894f0
fix: add missing amendment fields to CommitteeTeamQuery
Strehk f854b99
Add to trivyignore
Strehk 7e6e551
fix: regional group carousel timeout fix
m1212e a43f174
feat: display vote progress based on total presence count in committee
m1212e e3dda5c
build: fix trivy
m1212e 1fb8edc
feat: add comments list to doc presentation layout
m1212e b81f5a8
feat: remeber scroll position for paper view if possible
m1212e afa5584
fix: wait for paper to render before applying scroll
m1212e fcd79dd
fix: scrolling
m1212e 85f52f7
feat: add redis for scaled pubsub support
m1212e 842d0a2
improvement: add username config for redis
m1212e 81e5009
improvement: use redis url instead
m1212e 69f6997
fix: prevent infinite DELETE amendment submissions in participant view
Strehk 28498f8
fix: auto-withdraw pending amendments when DELETE amendment is accepted
Strehk d5194a6
fix: delete clause locks when paper is submitted to chair
Strehk 764818b
fix: dark mode readability for comments section
Strehk 6b400cd
fix: prevent duplicate amendment submissions and add DELETE confirmat…
Strehk c6b953c
fix: dark mode readability for amendment type dropdown
Strehk d8691ee
feat: add separate resolution text size slider for presentation view
Strehk 0ddab61
fix: replace "Klausel" with "Absatz" in German translations
Strehk 95a6a8b
fix: persist i18n language choice via cookie and add Portuguese locale
claude 61d8931
chore: update inlang project .gitignore for v2.5+
claude acecf7e
feat: replace language toggle with modal picker showing flags and names
claude c1fad63
fix: switch i18n from URL-based to cookie-based locale strategy
Strehk d90d6b7
fix: make home page and Tailwind dark: prefix compatible with DaisyUI
Strehk 919732f
feat: add per-conference toggle to enable/disable resolution features
Strehk 24d1d5a
feat: resolution feature toggle, operative clause tracking, launcher …
Strehk bdb2d3a
fix: update trivy-action from 0.34.0 to 0.35.0
Strehk 8919274
fix: add missing resolutionFeatureEnabled to query and pt.json
Strehk fcf9dfc
feat: Add Portuguese language support to CHASE (#331)
Strehk 69c2ecb
chore: ignore kysely and picomatch CVEs in Trivy
Strehk 7523844
Merge branch 'feat/resolution-editor-integration' of https://github.c…
Strehk 92b142c
fix: filter empty strings from admin whitelist env vars
Strehk 21355de
feat: add conference deletion for global admins with confirmation modal
Strehk d3df198
refactor: move authorization from global email whitelist to conferenc…
Strehk ae83960
fix: add missing pt.json i18n keys and add i18n check to pre-push hook
Strehk 72e1fad
Update Portuguese Language Set
Strehk File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,74 @@ | ||
| # Phase 4: Support Re-evaluation + DR Ordering — Implementation Plan | ||
|
|
||
| **Status**: COMPLETED | ||
|
|
||
| ## Summary | ||
|
|
||
| Enable chairs to open/close a support re-evaluation phase where delegates can add/remove support on Draft Resolutions. Add "Set Active DR" toggle for debate progression. Clear active DR on final vote. Real-time updates via committee pubsub. | ||
|
|
||
| --- | ||
|
|
||
| ## Implemented Changes | ||
|
|
||
| ### Backend | ||
|
|
||
| 1. **`src/api/handlers/paperSponsor.ts`** — Re-evaluation gate on `addSponsor`/`removeSponsor` | ||
| - For DR-status papers (`DRAFT_RESOLUTION`/`AMENDMENT_PHASE`), checks `supportReEvaluationOpen === true` | ||
| - `FINAL` papers always rejected | ||
|
|
||
| 2. **`src/api/handlers/committee.ts`** — Validate `activeDraftResolutionId` + auto-close re-evaluation | ||
| - Added `clearActiveDraftResolution: Boolean` arg (needed because GraphQL nullable args can't distinguish `null` from "not sent") | ||
| - Validates paper exists, belongs to committee, has DR status | ||
| - Auto-closes re-evaluation when setting active DR | ||
| - `supportReEvaluationOpen` toggle fires existing committee pubsub | ||
|
|
||
| 3. **`src/api/handlers/resolutionPaper.ts`** — Clear `activeDraftResolutionId` on final vote | ||
| - In `recordVoteResult`, after setting paper to `FINAL`, clears active DR if it matches | ||
| - Fires committee pubsub for real-time UI update | ||
|
|
||
| ### Participant Data | ||
|
|
||
| 4. **`src/routes/.../participant/[committeeId]/+layout.ts`** — Added `supportReEvaluationOpen` and `activeDraftResolutionId` to layout query | ||
|
|
||
| 5. **`src/routes/.../participant/[committeeId]/committeeSubscription.ts`** — Added `supportReEvaluationOpen` and `activeDraftResolutionId` to subscription | ||
|
|
||
| 6. **`src/routes/.../participant/[committeeId]/papers/+page.svelte`** — Start `ParticipantCommitteeSubscription.listen()` in `onMount` | ||
|
|
||
| 7. **`src/routes/.../participant/[committeeId]/papers/[paperId]/+page.svelte`** — Start `ParticipantCommitteeSubscription.listen()` in `onMount` | ||
|
|
||
| ### Chair UI | ||
|
|
||
| 8. **`src/routes/.../(chairs)/resolutions/+page.svelte`** | ||
| - DaisyUI toggle (`toggle-success`) for setting/clearing active DR per card | ||
| - DaisyUI toggle (`toggle-warning`) for opening/closing support re-evaluation | ||
| - DR list sorts by sponsor count (desc) during re-evaluation, by `sequenceNumber` otherwise | ||
| - Highlighted sponsor counts during re-evaluation | ||
|
|
||
| ### Participant UI | ||
|
|
||
| 9. **`src/routes/.../participant/[committeeId]/papers/+page.svelte`** | ||
| - Active DR shown with green ring + badge | ||
| - Pulsing "Support Re-evaluation" badge when open | ||
| - Support/Withdraw toggle buttons per DR during re-evaluation | ||
| - Sponsor flags displayed on DR cards | ||
|
|
||
| 10. **`src/routes/.../participant/[committeeId]/papers/[paperId]/+page.svelte`** | ||
| - DR support toggle on detail page during re-evaluation | ||
|
|
||
| ### i18n | ||
|
|
||
| 11. **`messages/en.json`** + **`messages/de.json`** — Added keys: | ||
| `supportReEvaluation`, `supportReEvaluationOpen`, `supportReEvaluationClosed`, | ||
| `supportDraftResolution`, `withdrawSupport`, `supporterCount`, | ||
| `setActiveDr`, `clearActiveDr`, `noActiveDr`, `activeDraftResolution` | ||
|
|
||
| --- | ||
|
|
||
| ## Key Design Decisions | ||
|
|
||
| - Reuse `paperSponsor` table — sponsors carry over from WP to DR | ||
| - Server-enforced re-evaluation gate (not just UI-hidden) | ||
| - `clearActiveDraftResolution` boolean arg for explicit null-setting via GraphQL | ||
| - Auto-close re-evaluation when setting an active DR | ||
| - Clear active DR on both final vote outcome and explicit chair action | ||
| - Committee pubsub drives all real-time updates (no separate subscription needed) |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: DeutscheModelUnitedNations/munify-chase
Length of output: 28929
🏁 Script executed:
Repository: DeutscheModelUnitedNations/munify-chase
Length of output: 1375
🏁 Script executed:
Repository: DeutscheModelUnitedNations/munify-chase
Length of output: 112
Document the bare CVE suppresses at lines 123-124 and scope key production dependencies via PURL.
Lines 123-124 contain CVE IDs with no adjacent context, rationale, or removal timeline—these should either be documented with their package/dependency path and a removal date, or moved to a YAML
.trivyignore.yamlformat usingpurls,expired_at, andstatement. Whileminimatch(lines 97-100) andtar(lines 102-108) already have explanatory comments noting they are transitive build/dev dependencies,devalue(checked at line 108) is actually a production dependency inpackage.json, so global CVE suppression by ID alone risks masking the same advisory if it later appears in another production supply chain. Trivy's YAML format supports scoping suppressions to specific package URIs and expiry dates, which is more maintainable than bare CVE IDs.🤖 Prompt for AI Agents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Acknowledged — documentation/style preference for
.trivyignore. Not a code issue. Skipping.Generated by Claude Code
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rate Limit Exceeded
@Strehkhave exceeded the limit for the number of chat messages per hour. Please wait 1 minutes and 35 seconds before sending another message.