Skip to content

Repository files navigation

Passman Webextension

Latest release CI License: AGPL v3

Chrome webstore AMO

About the project

This is a modern, fully rewritten browser extension for the Passman Nextcloud app, using the WXT framework.

It uses Svelte for the UI and TypeScript throughout.

The previous (legacy) extension source remains available on the legacy-v2 branch.

Try a Passman demo here to test the browser extension against.

Features

  • Ability to connect to a Nextcloud instance and Passman vault
  • Extension popup (and options page)
    • Show a list of all vault credentials (with search and automatic filtering for the current tab)
    • Credential management (CRUD operations)
    • Password generator
    • Extension settings
  • Auto fill form fields on websites (for a single matching credential)
    • (using injected content scripts)
  • Password picker (the password picker is a small in-page-popup that can be opened by clicking a small icon in detected input fields)
    • Search / select a credential to fill the input field
    • Add new credentials from the password picker
    • Password generator
  • Support for all Chromium-based browsers (Chrome, Vivaldi, Brave, etc.), the Firefox browser and its derivatives (like Waterfox, Floorp, etc.) supporting manifest v3

Experimental Features

  • Page rules
    • Ability to overwrite global settings and extension behavior for a specific website
  • Doorhanger
    • After a successful login, prompts you to save or update the submitted credentials in your default vault
  • Optional in-memory offline cache
    • Required to support Firefox "Never remember history" profiles
    • Not recommended for casual daily usage due to performance issues
  • Passkey support (coming soon)

Impressions

Welcome screen Settings screen

Support Passman

Passman is open source and lives from contributions like pull request, but we’ll also gladly accept a Club Mate or pizza!

Please consider donating:

Contributing

Pull requests and issues are welcome. Fork the repo, make your changes, and open a pull request.

Development

Getting Started

Precondition: Get bun installed

Take a look at to documentation for installation instructions: https://bun.sh/docs/installation

Bun is the recommended package manager for this project, but something like pnpm should also work well.

Install dependencies

bun install

If you get something like this: Blocked 1 postinstall. Run 'bun pm untrusted' for details, you can just ignore it. All required packages that needs to be trusted are already declared at trustedDependencies in the package.json.

Sure, if you have build issues, run bun pm untrusted and the postinstalls with bun pm trust --all, but this should not be needed! - on my system it causes some issues with the build process (and ends in a segfault).

Run the development server

bun run dev

Open your browser and load the appropriate development build. For example, if you are developing for the chrome browser, using manifest v3, use: .output/chrome-mv3-dev.

The extension will auto-reload as you make changes. You can start editing entrypoints in the src/entrypoints/ directory. To add an options page, create an entrypoint in src/entrypoints/options/. Likewise, content scripts go in src/entrypoints/content/.

For further guidance, visit the WXT Documentation

Extension development in Firefox

I recommend installing the Firefox Developer Edition or at least using another browser profile to get a clean development environment.

You can also use the Firefox development command:

bun run dev:firefox

Open the about:debugging page in Firefox and load the .output/firefox-mv2-dev folder as temporary extension.

Note that the release version for Firefox is using manifest v3, but the development version is using manifest v2 due to "dev mode" compatibility reasons.

Making production build

Run the following:

bun run build
bun run build:firefox

This should create production bundles for the extension, ready to be zipped and published to the stores.

Submit to the webstores

You can build and zip the extension using:

bun run zip         # For Chrome/Chromium
bun run zip:firefox # For Firefox

The built zip files will be in the .output/ directory. These are ready to be uploaded to the respective web stores or to be installed manually in the browser.

CI builds and tagged releases are handled by GitHub Actions (see .github/workflows/). Store submission on tags needs the ENV_SUBMIT repository secret (contents of a WXT .env.submit file).

Releases

Packages

Used by

Contributors

Languages