Repository navigation
Fix portfolio audit findings and update security dependencies - #38
Merged
Merged
Conversation
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.
Bug fixes from an audit of the site, the control panel and the
ask/backend, plus a Next.js security update and pull request checks. No new features and no design changes.Site
<main>is its own stacking context. The close button sat behind the nav, so a click did nothing on desktop and opened the menu on a phone. The gallery now renders into<body>.askkept therankfrom the render it started in.scroll-smoothclass on<html>overrode the reduced-motion media query inglobals.css.og:urlwas/on every page, so shared/studio/and/galaxy/cards linked to the chooser.Control panel
Backend
/api/visitstored the referring host with no length limit, so one request could add a multi-megabyte entry that every panel load then pulled. It is now cut to 253 characters.Content-Type: application/json. Upstash reads them either way. The Redis stand-in in CI needs it.Dependencies and checks
eslint-config-nextgo from 16.1.1 to 16.4.5 with compatible lockfile updates.npm audit --omit=devreports zero vulnerabilities. The full audit still lists 13 findings in the TypeScript ESLint and search-index builder chains, which are development-only and need breaking upgrades to fix.agentRules: falsestopsnext devfrom writing a rules block intoAGENTS.md.pages.yml. It starts Redis behindserverless-redis-http, soask/test/redis.test.jsruns the panel's poll script for real. The mock inpanel.test.jsreimplements that filter in JavaScript, so a broken script used to pass.Validation
npm run lintandnpx tsc --noEmitpass.node --test ask/test/*.test.jspasses 31 tests locally, with the Redis test skipped without its env vars. In CI it runs too, with none skipped. The new backend tests fail with their fix reverted.redis.test.jsalso passed against a real Upstash database, and failed against copies with a Lua syntax error and with the 3,000-entry cap removed. The changedDROPand newPAIREDscripts were run on scratch keys in Upstash, including a forced write failure that left the pairing code in place.America/New_Yorkacross the November and March clock changes.The
ask/backend still needs its separate Vercel deployment after merge. This PR does not deploy it.