Repository navigation
Fix audit snapshots, landing feedback forms, PDF/EPS errors, gradient on eyes - #1
Merged
Merged
Conversation
…on eyes
- Audit log: addAudit now structuredClones previous/next so in-place edits
in PATCH /api/qr-codes/:id no longer rewrite the "created" entry (or
earlier "updated" entries).
- Landing feedback: the rating/feedback form posts urlencoded, but only
JSON was parsed, so submissions were stored as undefined and the API
still answered { ok: true }. The route now parses urlencoded and JSON,
validates name/message, rejects empty or unparseable bodies with 400,
only accepts rating/feedback codes, and answers form posts with an HTML
confirmation or error page.
- Export: PDF/EPS requests return 400 with a clear message instead of
500; the /api/qr-codes/:id/render route now validates the file param.
- Renderer: "Gradient on eyes" now applies the body gradient to eye frames
and balls. Gradients use userSpaceOnUse so one gradient spans the whole
code instead of restarting inside every module.
- Regression tests for each.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
CompleteDotTech
added a commit
that referenced
this pull request
Oct 22, 2026
The previous commit was edited on Windows and saved with CRLF, which turned it into a whole-file diff. Whitespace only; no content changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CompleteDotTech
added a commit
that referenced
this pull request
Oct 22, 2026
Restore LF line endings in files touched by #1
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.
Summary
addAudit(src/server/store.ts) stored a live reference to the QR record, andPATCH /api/qr-codes/:idmutates that record in place, so thecreatedentry (and earlierupdatedentries) were rewritten by every later edit. It nowstructuredClonesprevious/nextwhen the event is recorded.application/x-www-form-urlencoded, but the server only parsed JSON, soreq.bodywas undefined, nothing useful was stored, and the response was still{ ok: true }.POST /api/landing/:id/feedbacknow parses both urlencoded and JSON bodies, validatesname/messagewith zod, returns 400 for empty or unparseable bodies, only accepts rating/feedback codes, and sends form posts an HTML confirmation or error page (JSON clients still get JSON).UnsupportedFormatError(status 400)./api/qr-codes/:id/renderalso validatesfile, so unknown values likegifno longer fall through to PNG.gradientUnits="userSpaceOnUse", so one gradient spans the whole code. Before, it restarted inside every module. This is a visible change for templates that use gradients (Rain, Jungle, Mosaic, Coffee, Ninja).Test plan
tsc --noEmitvitest run: 34 passed (6 new regression tests: audit snapshot, urlencoded and JSON feedback, empty/plain-text feedback rejected, PDF/EPS/invalid format returns 400, gradient on/off)vite buildscripts/qr-smoke.ts🤖 Generated with Claude Code