Repository navigation
Resolve percent-encoded Unicode topic URLs - #810
Merged
thomiceli merged 1 commit intoOct 3, 2026
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.
Context
Lowercase percent-encoded Unicode topic URLs are exposed by Echo as encoded route parameters. The encoded text is then used for the page heading and database filters, so the topic appears as
%e6...and matching gists are not returned.Fixes #807
Changes
User impact
Percent-encoded and unescaped Unicode topic URLs now resolve to the same topic page and return the same gists.
Verification
5afef9abecause the encoded topic returns no gist, and passes with this change.OG_INDEX=none OPENGIST_TEST_DB=sqlite go test ./internal/web/handlers/gist -count=1— passed.golangci-lint run internal/web/handlers/gist/all.go internal/web/handlers/gist/gist_test.go— passed with 0 issues.go mod tidy— no module changes.npx vite -c public/vite.config.js build— passed with existing CSS optimization and chunk-size warnings.scripts/check-translations.sh— passed.OPENGIST_TEST_DB=sqlite go test ./... -p 1 -count=1— attempted; the Windows run is blocked by existing file-handle cleanup failures, unavailable symlink privileges, and host Git credential/default-branch behavior. Representative failures reproduce on the clean base.