Repository navigation
chore(release): prepare 4.0.0 with bug fixes and broader test coverage - #628
Merged
Merged
Conversation
…mputed Families are computed asynchronously, so the cache was refreshed or evicted before the new family IDs were stored and kept the previous families. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
Clients only pick Guard flagged relays as entry guards, and a BadExit does not count as exit (Wgd), as in Tor's compute_weighted_bandwidths. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
…lags A flag such as MiddleOnly dropped all flags of the relay. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
…rted encoding Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
…ith space Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
… user, statistics endpoint and lookups Moves the admin user creation and the public address check into functions that tests can call, without changing their behavior. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
…yer and country usage layer Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RFTfTnzwCcx8wGbtQvdbF
Member
Author
|
Generated by Claude Code |
|
Visit the preview URL for this PR (updated for commit 3fd0c47): https://tormap-36f44--pr628-claude-project-threa-k0f85ng3.web.app (expires Thu, 19 Nov 2026 09:58:32 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: 0c1f71965de18e60b0e686b0d0356977fec090dc |
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.
Requested by ju · project thread
Prepares the 4.0.0 release: tests the changes since v3.0.0, fixes the bugs found while doing so and bumps the version in
backend/build.gradle.ktsandfrontend/package.jsonto 4.0.0.Bug fixes
computeFamiliesnow returns a future and the cache is updated once it completes, also if a month failed.Wgm, so exits and middles had a guard weight. Clients only pick Guard flagged relays as guards, and aBadExitdoesn't count as exit (Wgd), as in Tor'scompute_weighted_bandwidths. Nothing readsguard_weightyet, but rows stored by:edgebuilds keep the old values for non-Guard relays.TorRelayFlag(e.g.MiddleOnly) made the relay lose all flags. Unknown flags are now skipped and the known ones kept.getReader()throwUnsupportedCharsetExceptioninstead of the servlet API'sUnsupportedEncodingException.Tests and coverage
jacocoGradle plugin (./gradlew test jacocoTestReport, vendoredorg.torprojectexcluded). Line coverage went from 75% to 97% (129 → 183 tests). New tests cover family computation, descriptor file reading and processed file references, server descriptor processing, collection failures, the daily counts endpoint, admin user creation, CORS origins, the request body limit stream, the reverse DNS address filter and failures, IP lookup ranges, CSV import edge cases and the scheduled jobs.SecurityConfigmoved intobuildUserDetailsService(...), andisPubliclyRoutablebecame a top-level internal function.Housekeeping
.DS_Storefiles (already ignored).Dependency vetting (JaCoCo 0.8.15,
org.jacoco.agent/org.jacoco.ant)malicious: false).snykTest,snykCode) was not run because the CLI isn't authenticated in this environment. The Snyk PR checks still apply.Verification
./gradlew test jacocoTestReport: 183 tests pass.yarn build,yarn lint,yarn test:coverage: pass, 346 tests.Generated by Claude Code