feat: pass filename to the blob download endpoint - #60
Merged
Merged
Conversation
Add ?filename= query parameter to blob download requests to enable Winbindex fast path for Windows PE file lookups. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmATMvFbdupfLRq7Ldwabv
downloadBlob gained a third `saveAs` param (defaults to `filename`). The decorated call site in FilesystemInspector now passes the plain `row.name` as `?filename=` (so it can match Winbindex) and the `getDownloadFilename(...)` decoration only as the save-as name. Previously the decorated name like `kernel32_Windows-10-2004_abc12345.dll` was sent to the server, never matched Winbindex, and thrashed its negative cache. `a.download` still overrides Content-Disposition so the user-visible filename is unchanged. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmATMvFbdupfLRq7Ldwabv
There was a problem hiding this comment.
🟢 Approval recommended
The changes are small, internally consistent (all call sites still type-check), and align with the stated backend integration behavior without altering the user-visible downloaded filename.
Pull request overview
This PR updates the frontend blob-download utility to include the file’s real basename as a ?filename= query parameter when calling the backend /blob/:hash endpoint, enabling the API to resolve Windows PE files via Winbindex/Microsoft symbol server (per OSWatcher/graphql-api#72) while preserving the user-visible downloaded filename.
Changes:
- Extended
downloadBlobto accept(hash, filename, saveAs = filename), sendingfilenameon the wire and usingsaveAsfor the browser download name. - Updated the comparison-mode download path in
FilesystemInspector.vueto send the undecorated filename to the API while keeping the decorated name for the saved file.
File summaries
| File | Description |
|---|---|
| src/utils/filesystem.ts | Adds filename query param support and separates wire filename from the browser “save as” filename. |
| src/components/FilesystemInspector.vue | Updates the comparison-mode download call to pass real basename to the server and keep decorated save name client-side. |
Review details
- Files reviewed: 2/2 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.
What
downloadBlobnow sends the file's real basename to the blob endpoint as?filename=, which the API uses to resolve Windows PE files (.exe/.dll/.sys) from Winbindex / the Microsoft symbol server instead of MinIO. See OSWatcher/graphql-api#72.Change
downloadBlob(hash, filename, saveAs = filename)—filenamegoes on the wire (?filename=),saveAsdrives the browser's save-as name (a.download, which already overrodeContent-Disposition). The twoFilesystemInspector.vuecall sites:row.namefor both (unchanged behaviour);row.nameas the wire name and the decoratedgetDownloadFilename(...)string assaveAs— previously it sent the decorated name, which never matched Winbindex and needlessly thrashed the API's negative cache.No user-visible change: the saved filename is identical either way.
Tests
Full suite: 121 passing. Build clean.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NmATMvFbdupfLRq7Ldwabv