Rewrite Hashpass with Vite+ and React 19#91
Merged
Merged
Conversation
Replace the entire implementation with a from-scratch rewrite. The functionality is unchanged, and the password generation algorithm is bit-for-bit identical (verified against the original test vectors). The notable changes: - The toolchain is now Vite+ (Vite, Vitest, Oxlint, Oxfmt, Rolldown), replacing webpack, jest, eslint, and prettier. - The UI is now React 19 with CSS modules, replacing React 18 with react-jss. - The extension manifest now lives in `public/manifest.json` and the built extension is fully contained in `dist`. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file was unintentionally deleted by the rewrite. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The rewrite took this template from stem-cell, which dropped the Chrome-specific line. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Configure the formatter with `singleQuote: true`, matching the style previously enforced by Prettier, and reformat accordingly. Note that JSX attributes keep double quotes, as is conventional. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Now that Markdown files are not formatted automatically, restore the formatting conventions from the template these files came from: asterisk bullets in the code of conduct, the original issue template layout, and unwrapped prose in the README and changelog. No content changes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The icons keep their existing file names and the #333333 stroke customization, but their contents now come from the current Heroicons release (where several were renamed: clipboard-document, eye-slash, arrow-right-end-on-rectangle, and arrow-path). The license file is updated to match. Note that the stroke width is now 1.5 instead of 2, per the v2 design. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The formatter is configured to ignore Markdown files, so they can never be modified by this task. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There is nothing meaningful for it to do, since the extension cannot be run headlessly in a container. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Update Vite+ to 0.2.3, Node.js to 24.18.0, NVM to 0.40.5, and the Docker login action to 4.4.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adopt the pieces of the current `vp create` output that this project was missing: the React plugin (enabling Fast Refresh), the React lint rules, the split tsconfig with project references (which also type checks vite.config.ts), and the pre-commit hook setup. The hook installation is skipped in the Toast container, where there is no Git repository. The scaffolding's `devEngines` field is not adopted, since plain npm fails on a package manager version mismatch rather than downloading the requested version. To satisfy the new lint rules, the debounced password update is now memoized with an analyzable inline function, and the root component moved from main.tsx to its own file app.tsx. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Formatting and linting are enforced by CI, as in other projects. This also removes the need to skip the hook installation in the container. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
This PR replaces the entire implementation with a from-scratch rewrite. The functionality is unchanged, and the password generation algorithm is bit-for-bit identical — the original test vectors (and the README's worked example) pass against the new implementation.
The notable changes:
vite-plusdev dependency provides building, testing, linting, formatting, and type checking through thevpCLI.public/manifest.json, and the built extension is fully contained indist(the release ZIP is just the contents ofdist).Status: Ready
Fixes: N/A
🤖 Generated with Claude Code