## flythenimbus/bramble — 1.26.0-chromium…1.26.0-firefox

_77 commits._

### Features
- **feat(autofill): lead with the card this tab already filled** (c2e51b1)
- **feat(reviews): ask for a store review, twice at most** (a04bded)
- **feat(release): build and sign the Windows installer on GitHub** (077ade4)
- **feat(desktop): run on Windows** (5d7791d)
- **feat(strength): score passwords with zxcvbn** (2670dbc)
- **feat(aliases): a catch-all domain provider, with no account at all** (5c187f7)
- **feat(aliases): the provider config becomes the first synced setting** (c624fc8)
- **feat(prefs): a third scope, so a setting crosses devices by one word** (9469f06)
- **feat(sync): carry synced settings through every entry write** (db65324)
- **feat(sync): a stamped settings map in the entries payload** (8198b15)
- **feat(aliases): keep the alias when the password came first** (02cd377)
- **feat(aliases): create the alias from the background, and drive the row** (40f94e4)
- **feat(aliases): the in-page alias row, in both renderers** (6aeddf5)
- **feat(aliases): gate the suggestion on account creation, not on form shape** (e50b31a)
- **feat(aliases): an email-only field predicate for the in-page suggestion** (2d8545d)
- **feat(aliases): give Aliases its own settings tab, and fix what running it showed** (0fb9602)
- **feat(aliases): reach the domains a user brought themselves** (46332b0)
- **feat(aliases): the settings section and the entry form's generate button** (b3df8f8)
- **feat(aliases): the Addy and SimpleLogin clients, and where their key lives** (6d44c2a)

### Fixes
- **fix(cards): keep the card model in the tab the user can see, and fill a chosen expiry** (41fa3b5)
- **fix(signup-detect): stop a login form's new-password token hiding the saved login** (3e5f14d)
- **fix(sync): stop a background entry write erasing synced settings** (4a9a39a)
- **fix(detection): find the VIP code field, and give "security code" back to 2FA** (33bb854)
- **perf(chromium): shrink SW cold-wake parse and hydrate IPC (#91)** (f3eba87)
- **fix(deps): take the patched adm-zip (GHSA-vwc7-r8mq-g2x9)** (f1224a9)
- **fix(ci): build only the NSIS bundle on Windows** (562b124)
- **fix(website): list Windows only once a release carries an installer** (3c45df0)
- **fix(sync): give the pairing confirmation its own deadline** (f93da34)
- **fix(aliases): the catch-all provider could never be saved** (facf1b7)
- **fix(aliases): load the wordlist on demand, and validate the domain where it is typed** (0efe14e)
- **fix(aliases): keep the locked-vault hint that the unlock row depends on** (13815b0)
- **fix(autofill): detect the visible form when a page holds two** (fdfc93e)
- **fix(i18n): format the compiled catalogs, and keep them that way** (60bbce5)
- **fix(aliases): offer the unlock row on a signup email field again** (a64ca55)
- **fix(aliases): the spinner never showed, because the iframe had its own cache key** (1cc6bc8)

### Tests
- **test(offscreen-client): cover the retryable in-process host load** (b528849)
- **test(aliases): cover the settings write, and stop storing an unusable domain** (3f9bb24)
- **test(e2e): cover the two alias bugs that only a browser found** (8564c12)

### Docs
- **docs(files): plan file attachments, and keep the bytes off TURN** (5126ccc)
- **docs(readme): add email aliases, correct the desktop gaps** (2c62e13)
- **docs(ios): release notes for the catch-all provider and the strength meter** (bb1390f)
- **docs(aliases): record the catch-all-domain idea** (2c4803f)
- **docs(ios): release notes for email aliases and synced settings** (076d1a4)
- **docs: separate format safety from implementation risk, and name the tests** (a7f4477)
- **docs: make synced settings a scope, not a special case** (a8e7034)
- **docs: design how a vault-scoped setting syncs between devices** (025416c)
- **docs(website): the privacy policy covers email aliases** (d82d934)
- **docs(aliases): mark Phase 3 done, and what running it found** (60ede4a)
- **docs(aliases): defer Forward Email too, and never auto-link a provider message** (7eec698)
- **docs(aliases): verify both creates, and what SimpleLogin does with hostname** (501376e)
- **docs(aliases): record what the spike measured, and postpone Fastmail** (1919fa0)
- **docs(aliases): survey the rest of the field, and let CORS decide it** (aca51e2)
- **docs(aliases): plan per-site email aliases, and settle the transport question** (8a709a3)

### Chore
- **chore(release): firefox 1.26.0** (98717f9)
- **chore(release): chromium 1.29.0** (cce7679)
- **chore(license): name the copyright holder in the README and every manifest** (3d3caee)
- **chore(funding): add a Ko-fi sponsor button** (d99f645)
- **chore(release): desktop 0.8.0 update manifest and cask** (9936f82)
- **chore(release): desktop 0.8.0** (45ccd48)
- **chore(release): android 0.21.0** (c0a7a25)
- **chore(release): firefox 1.25.0** (5d78e09)
- **chore(release): chromium 1.28.0** (f8ec9f6)
- **chore(build): use import.meta.dirname in the vite configs** (79f18c8)
- **chore(release): ios 1.15.0 (build 211141712)** (6da4803)
- **chore(release): android 0.20.0** (5872710)
- **chore(release): firefox 1.24.0** (eae4bb3)
- **chore(release): chromium 1.27.0** (3d1cc64)
- **chore(release): ios 1.14.0 (build 210994351)** (b434fc9)
- **chore(i18n): translate the in-page alias row** (90339fc)
- **refactor(aliases): put Check and Disconnect under the key, at sync's size** (ff59000)
- **chore(i18n): keep main's wording for the strings it already shipped** (d372f09)
- **refactor(aliases): drop the Save button and write settings through** (e673f69)
- **refactor(ui): one Advanced disclosure, and put the self-hosted URL behind it** (e7eca53)
- **chore(i18n): translate the alias strings** (3f43a6b)
- **chore(release): desktop 0.7.0 update manifest and cask** (f6309d5)
- **chore(release): desktop 0.7.0** (ebc1ea3)
- **chore(release): firefox 1.23.0** (966e3fa)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/flythenimbus/bramble?utm_source=github-action)._