Repository navigation
feat: implement table semantics, content security policy, and dynamic… - #812
Merged
nonsobethel0-dev merged 1 commit intoOct 16, 2026
Conversation
|
@Samuel1505 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
❌ Deploy Preview for boisterous-sunshine-dd4c4c failed.
|
nonsobethel0-dev
merged commit Oct 16, 2026
f3e5eb4
into
Parashield-Protocol:main
0 of 5 checks passed
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.
… policy page## Summary
This PR covers four open issues: one security, one accessibility, one SEO and one performance. Each change is kept small and has its own tests.
Closes #755
Closes #754
Closes #753
Closes #752
🔒 #755: Restrict
script-srcin the Content-Security-Policyscript-src 'self' 'nonce-<value>' 'strict-dynamic'.'unsafe-inline'and'unsafe-eval'fromscript-src.unsafe-inline.Content-Security-Policy-Report-Onlyfirst. Once we've confirmed there are no violations, a flag switches it to enforcing mode.script-src 'self'with a nonce, and contains nounsafe-inlineorunsafe-eval.♿ #754: Keep table semantics on mobile
ClaimHistoryTableand the dashboard tables now render a real<table>/<thead>/<tbody>/<tr>/<td>at every screen size. They no longer swap to<div>cards.<td>has adata-labelattribute, and CSS shows its column name next to the value (td::before { content: attr(data-label) }).table,row,columnheader,cell) are present on a mobile viewport and that every cell has adata-label.🗺️ #753: Add dynamic policy pages to the sitemap
src/app/sitemap.tsnow fetches public policies and adds a/policies/[id]entry for each one.lastModifiedfrom the policy's updated date and uses a sensiblechangeFrequencyandpriority.generateSitemaps, so we stay under the 50,000 URLs per file limit.lastModifiedis set, pagination splits correctly, and an API error falls back to static routes.⚡ #752: Stop bundling unused
lucide-reacticonsoptimizePackageImports: ['lucide-react']innext.config.mjs, so only the icons we use are bundled.__ kB, after:__ kB(first-load JS fromnext build).How to test
yarn install && yarn test: all tests pass.yarn build && yarn start, then check the response headers on any page. You should seeContent-Security-Policy-Report-Onlywith a nonce inscript-src./claimsat a mobile width with a screen reader (VoiceOver or NVDA). It should be announced as a table, and each stacked cell should show its label./sitemap.xml. It should list/policies/<id>entries withlastmod.next buildoutput withmain. First-load JS should be smaller.Checklist