Fix .bat anonymization, truncated-tree misses, submodule warning, account deletion#742
Merged
Merged
Conversation
mime-types maps .bat to application/x-msdownload, the same MIME type as .exe/.dll, so batch scripts were classified as binary and streamed through without any anonymization. Special-case .bat/.cmd as text before the MIME lookup, keeping .exe/.dll binary.
GitHub truncates tree listings of very large repositories. Folders whose listing was truncated are recorded in truncatedFolders, but files that fell outside the listing never reached the database, so requesting them returned 404 file_not_found even though they exist on GitHub — and a force refresh could not help. When a file lookup misses and its directory is under a truncated folder, fetch the file metadata directly from GitHub's contents API (object media type, so it works past the 1MB inline limit), cache it in the database, and serve it normally.
GitHub archives and tree listings never include submodule contents, so submodules end up as empty folders in the anonymized repository, which surprises users. Detect a root .gitmodules file and show a warning banner in the explorer explaining that submodule contents are not included.
Add DELETE /api/user: removes all anonymized repositories, gists, and pull requests owned by the user, best-effort revokes the GitHub OAuth grant, and scrubs personal data (username, emails, tokens, GitHub id, photo) from the user record. The record itself is kept with a placeholder username so removed repoIds stay reserved and owner references remain resolvable. The settings page gains an Account section with a confirmed delete button.
This was referenced Jul 2, 2026
The error-code coverage test failed because both backend codes had no frontend translation.
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.
Four fixes, one commit each:
Not anonymizing Batch scripts #735 — .bat files were not anonymized.
mime-typesmaps.battoapplication/x-msdownload(same MIME as.exe/.dll), so batch scripts were classified as binary and streamed through untouched..bat/.cmdare now special-cased as text before the MIME lookup;.exe/.dllstay binary.Certain zip files showing 'File not found' while the github repo has the file. #738 — files missing from truncated tree listings returned 404. GitHub truncates tree listings of very large repositories; files that fell outside the listing never reached the database, so requesting them returned
file_not_foundeven though they exist on GitHub. When a lookup misses and the path is under a recorded truncated folder, the file metadata is now fetched on demand from the contents API (object media type) and cached.The submodule was not copied over into the anonymized project #737 — submodules appear as empty folders. GitHub archives/trees never include submodule contents. The explorer now shows a warning banner when the repository has a root
.gitmodules.How does one delete his account and records from your DB? I want to unlink my account. #741 — account deletion. New
DELETE /api/userendpoint removes all anonymized repositories/gists/PRs owned by the user, best-effort revokes the OAuth grant, and scrubs personal data from the user record (kept with a placeholder username so removed repoIds stay reserved). The settings page gains an Account section with a confirmed delete button.Tests: suite passes except the pre-existing
error-codestranslation-coverage failure on main (missingtoken_expired/job_is_activetranslations, unrelated).