fix(pages): resolve 37 verified bugs across the app (1 critical, 9 medium, 27 low)#144
Merged
Merged
Conversation
…dium, 27 low) An adversarially-verified audit of every non-dashboard page surfaced 37 real defects. All fixed here, grounded in real data / real server behavior. CRITICAL - Scholarship Edit form could never be saved: the edit-mode form.reset() omitted the required `listingMode` enum (its <select> only renders in create mode), so the zod resolver silently blocked every submit. Reset now seeds listingMode + externalApplicationUrl, keeping the form valid. Correctness (medium) - Browse funding-type/level filters made single-select so the highlighted+counted state matches what the server actually applies (was: all-but-first dropped). - Reject-reason prompt relabelled "required" (EN+AR) — it always was. - Consultant "mark no-show" button gated to the real 6h post-session window. - Consultant earnings now sum ALL captured payments (not the first 100) and only the consultant's own payee rows. - Chat re-joins the open thread + re-seeds presence after a SignalR reconnect; header presence clears when the peer goes offline. - Document category chip counts derived from an unfiltered source (no collapse). - AI chatbot RAG source citations persist (surfaced from MetadataJson via the DTO) instead of vanishing on refetch/reopen. - Admin: hidden resources restorable from the Published tab (admin-gated includeHidden); onboarding queue paginated (was locked to page 1). Polish / i18n / states (low) - Raw PascalCase enums translated (EN+AR): notification types, privacy request type, profile account-status + verification badges, chat compose roles, audit action filter (+7 missing actions), onboarding validation messages, 404 page. - Real error+retry states for billing, redaction-audit (were blank/empty-on-error). - External application status changes now recorded on the FR-APP-19 timeline; student booking timeline made monotonic/status-truthful. - Resource bookmark cards show description + tags (DTO extended); author sees the rejection reason on reopen; reading-progress bar hidden on author preview. - Removed a fabricated "Verified safe" community badge and a fabricated completion-ratio "growth" pill on student analytics. - EN reply/comment counts pluralised; funding amount rendered on recommendations; false "Closed" pill fixed for deadline-less recs; login surfaces real lockout/inactive messages; locale-aware list separators; StipendOnly/Other funding types now filterable; 404 suggestion cards gated by role.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
An adversarially-verified audit of every non-dashboard page (19 feature areas, find → refute-against-code) surfaced 37 real bugs. All fixed here, grounded in real data / real server behavior — no fabricated values reintroduced.
🔴 Critical
form.reset()omitted the requiredlistingModeenum (its<select>only renders in create mode), so the zod resolver silently blocked every submit — no toast, no error, no network call. Reset now seedslistingMode+externalApplicationUrl.🟠 Correctness (9)
Browse funding/level filters → single-select (shown state now matches what the server applies) · reject-reason relabelled "required" (EN+AR) · consultant no-show button gated to the real 6h post-session window · consultant earnings sum all captured payments + only the consultant's payee rows · chat re-joins thread + re-seeds presence after SignalR reconnect and clears "online" on peer disconnect · document chip counts from an unfiltered source · AI chatbot RAG citations persist (from
MetadataJson) · admin can restore hidden resources (admin-gatedincludeHidden) · onboarding queue paginated.🟡 Polish / i18n / states (27)
Raw PascalCase enums translated EN+AR (notification types, privacy type, profile status + verification, chat roles, audit filter +7 actions, onboarding validation, 404) · real error+retry states (billing, redaction-audit) · external status changes recorded on the FR-APP-19 timeline · monotonic student booking timeline · resource bookmark cards show description+tags · author sees rejection reason · progress bar hidden on author preview · removed a fabricated "Verified safe" badge and a fake completion-ratio "growth" pill · EN reply/comment pluralisation · recommendation funding amount rendered · false "Closed" pill fixed · login surfaces real lockout/inactive messages · locale-aware list separators · StipendOnly/Other filterable · 404 cards gated by role.
Verification
tsc -bclean;eslint --max-warnings 0clean on all changed files; all 16 edited locale JSONs parse.dotnet buildsucceeds (5.cschanges: external-status event, resource search/bookmark DTOs, AI session sources); the one affected unit test updated (SearchResourcesQueryHandlernow takesICurrentUserService) and its 3 tests pass.