0af4499
docs: add github trending (#1236)
Click to expand commit body
## What? Added a github trending to the README ## Why?
Drew Smirnoff created
0af4499
docs: add github trending (#1236)
## What? Added a github trending to the README ## Why?
Drew Smirnoff created
cd409ca
feat(config): add LRU eviction (#1227)
## What? Implemented a size-based LRU (Least Recently Used) eviction policy for the email body cache. ## Why? The cache grows without bound, reaching hundreds of `MB` or `GB` after heavy use. This causes disk quota issues on devices with small storage. Closes #1171
Mohamed Mahmoud created
fba7663
chore(deps): cachix/install-nix-action ^ (#1232)
Floatpane Bot created
3c00cf6
feat: manupulate bodies from plugins (#1226)
## What? This adds one focused extension point: post-render body transformation with raw-source access. Plugins can now: - Recolor / bold / italicize matched substrings (`gsub` + `matcha.style`) - Remove parts of the body (`gsub` with `""`) - Parse the raw HTML/plain source and prepend or fully replace the displayed output ## Why? Plugin SDK previously had no way to touch displayed email content. Signed-off-by: drew <me@andrinoff.com>
Drew Smirnoff created
4a1229e
docs: add sponsors to README (#1225)
## What? Adds our sponsors to README and a message for GitAds ## Why? To publically thank our sponsors. Signed-off-by: drew <me@andrinoff.com>
Drew Smirnoff created
9d37365
ci: add labeler configuration for PRs (#1224)
Drew Smirnoff created
464f82a
ci: better stale issues (#1220)
Drew Smirnoff created
3d54db8
docs: update demo.gif (#1223)
## What? Replaces `public/assets/demo.gif` with a freshly recorded VHS run. ## Why? Keeps the demo GIF aligned with the latest release so README and docs reflect current behaviour. Generated automatically by the Update Demo VHS workflow.
Floatpane Bot created
9393de4
chore(deps): actions/github-script ^ v9 (#1221)
## What?
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
|
[actions/github-script](https://redirect.github.com/actions/github-script)
| action | major | `v7` β `v9` |
---
### Release Notes
<details>
<summary>actions/github-script (actions/github-script)</summary>
###
[`v9`](https://redirect.github.com/actions/github-script/compare/v9.0.0...v9.0.0)
[Compare
Source](https://redirect.github.com/actions/github-script/compare/v9.0.0...v9.0.0)
###
[`v9.0.0`](https://redirect.github.com/actions/github-script/releases/tag/v9.0.0)
[Compare
Source](https://redirect.github.com/actions/github-script/compare/v8.0.0...v9.0.0)
**New features:**
- **`getOctokit` factory function** β Available directly in the script
context. Create additional authenticated Octokit clients with different
tokens for multi-token workflows, GitHub App tokens, and cross-org
access. See [Creating additional clients with
`getOctokit`](https://redirect.github.com/actions/github-script#creating-additional-clients-with-getoctokit)
for details and examples.
- **Orchestration ID in user-agent** β The `ACTIONS_ORCHESTRATION_ID`
environment variable is automatically appended to the user-agent string
for request tracing.
**Breaking changes:**
- **`require('@​actions/github')` no longer works in scripts.**
The upgrade to `@actions/github` v9 (ESM-only) means
`require('@​actions/github')` will fail at runtime. If you
previously used patterns like `const { getOctokit } =
require('@​actions/github')` to create secondary clients, use the
new injected `getOctokit` function instead β it's available directly in
the script context with no imports needed.
- `getOctokit` is now an injected function parameter. Scripts that
declare `const getOctokit = ...` or `let getOctokit = ...` will get a
`SyntaxError` because JavaScript does not allow `const`/`let`
redeclaration of function parameters. Use the injected `getOctokit`
directly, or use `var getOctokit = ...` if you need to redeclare it.
- If your script accesses other `@actions/github` internals beyond the
standard `github`/`octokit` client, you may need to update those
references for v9 compatibility.
##### What's Changed
- Add ACTIONS\_ORCHESTRATION\_ID to user-agent string by
[@​Copilot](https://redirect.github.com/Copilot) in
[#​695](https://redirect.github.com/actions/github-script/pull/695)
- ci: use deployment: false for integration test environments by
[@​salmanmkc](https://redirect.github.com/salmanmkc) in
[#​712](https://redirect.github.com/actions/github-script/pull/712)
- feat!: add getOctokit to script context, upgrade
[@​actions/github](https://redirect.github.com/actions/github) v9,
[@​octokit/core](https://redirect.github.com/octokit/core) v7, and
related packages by
[@​salmanmkc](https://redirect.github.com/salmanmkc) in
[#​700](https://redirect.github.com/actions/github-script/pull/700)
##### New Contributors
- [@​Copilot](https://redirect.github.com/Copilot) made their
first contribution in
[#​695](https://redirect.github.com/actions/github-script/pull/695)
**Full Changelog**:
<https://github.com/actions/github-script/compare/v8.0.0...v9.0.0>
###
[`v8`](https://redirect.github.com/actions/github-script/releases/tag/v8):
.0.0
[Compare
Source](https://redirect.github.com/actions/github-script/compare/v8.0.0...v8.0.0)
##### What's Changed
- Update Node.js version support to 24.x by
[@​salmanmkc](https://redirect.github.com/salmanmkc) in
[#​637](https://redirect.github.com/actions/github-script/pull/637)
- README for updating actions/github-script from v7 to v8 by
[@​sneha-krip](https://redirect.github.com/sneha-krip) in
[#​653](https://redirect.github.com/actions/github-script/pull/653)
##### β οΈ Minimum Compatible Runner Version
**v2.327.1**\
[Release
Notes](https://redirect.github.com/actions/runner/releases/tag/v2.327.1)
Make sure your runner is updated to this version or newer to use this
release.
##### New Contributors
- [@​salmanmkc](https://redirect.github.com/salmanmkc) made their
first contribution in
[#​637](https://redirect.github.com/actions/github-script/pull/637)
- [@​sneha-krip](https://redirect.github.com/sneha-krip) made
their first contribution in
[#​653](https://redirect.github.com/actions/github-script/pull/653)
**Full Changelog**:
<https://github.com/actions/github-script/compare/v7.1.0...v8.0.0>
###
[`v8.0.0`](https://redirect.github.com/actions/github-script/compare/v7.1.0...v8.0.0)
[Compare
Source](https://redirect.github.com/actions/github-script/compare/v7.1.0...v8.0.0)
###
[`v7.1.0`](https://redirect.github.com/actions/github-script/releases/tag/v7.1.0)
[Compare
Source](https://redirect.github.com/actions/github-script/compare/v7.0.1...v7.1.0)
##### What's Changed
- Upgrade husky to v9 by
[@​benelan](https://redirect.github.com/benelan) in
[#​482](https://redirect.github.com/actions/github-script/pull/482)
- Add workflow file for publishing releases to immutable action package
by [@​Jcambass](https://redirect.github.com/Jcambass) in
[#​485](https://redirect.github.com/actions/github-script/pull/485)
- Upgrade IA Publish by
[@​Jcambass](https://redirect.github.com/Jcambass) in
[#​486](https://redirect.github.com/actions/github-script/pull/486)
- Fix workflow status badges by
[@​joshmgross](https://redirect.github.com/joshmgross) in
[#​497](https://redirect.github.com/actions/github-script/pull/497)
- Update usage of `actions/upload-artifact` by
[@​joshmgross](https://redirect.github.com/joshmgross) in
[#​512](https://redirect.github.com/actions/github-script/pull/512)
- Clear up package name confusion by
[@​joshmgross](https://redirect.github.com/joshmgross) in
[#​514](https://redirect.github.com/actions/github-script/pull/514)
- Update dependencies with `npm audit fix` by
[@​joshmgross](https://redirect.github.com/joshmgross) in
[#​515](https://redirect.github.com/actions/github-script/pull/515)
- Specify that the used script is JavaScript by
[@​timotk](https://redirect.github.com/timotk) in
[#​478](https://redirect.github.com/actions/github-script/pull/478)
- chore: Add Dependabot for NPM and Actions by
[@​nschonni](https://redirect.github.com/nschonni) in
[#​472](https://redirect.github.com/actions/github-script/pull/472)
- Define `permissions` in workflows and update actions by
[@​joshmgross](https://redirect.github.com/joshmgross) in
[#​531](https://redirect.github.com/actions/github-script/pull/531)
- chore: Add Dependabot for .github/actions/install-dependencies by
[@​nschonni](https://redirect.github.com/nschonni) in
[#​532](https://redirect.github.com/actions/github-script/pull/532)
- chore: Remove .vscode settings by
[@​nschonni](https://redirect.github.com/nschonni) in
[#​533](https://redirect.github.com/actions/github-script/pull/533)
- ci: Use github/setup-licensed by
[@​nschonni](https://redirect.github.com/nschonni) in
[#​473](https://redirect.github.com/actions/github-script/pull/473)
- make octokit instance available as octokit on top of github, to make
it easier to seamlessly copy examples from GitHub rest api or octokit
documentations by
[@​iamstarkov](https://redirect.github.com/iamstarkov) in
[#​508](https://redirect.github.com/actions/github-script/pull/508)
- Remove `octokit` README updates for v7 by
[@​joshmgross](https://redirect.github.com/joshmgross) in
[#​557](https://redirect.github.com/actions/github-script/pull/557)
- docs: add "exec" usage examples by
[@​neilime](https://redirect.github.com/neilime) in
[#​546](https://redirect.github.com/actions/github-script/pull/546)
- Bump ruby/setup-ruby from 1.213.0 to 1.222.0 by
[@​dependabot](https://redirect.github.com/dependabot)\[bot] in
[#​563](https://redirect.github.com/actions/github-script/pull/563)
- Bump ruby/setup-ruby from 1.222.0 to 1.229.0 by
[@​dependabot](https://redirect.github.com/dependabot)\[bot] in
[#​575](https://redirect.github.com/actions/github-script/pull/575)
- Clearly document passing inputs to the `script` by
[@​joshmgross](https://redirect.github.com/joshmgross) in
[#​603](https://redirect.github.com/actions/github-script/pull/603)
- Update README.md by
[@​nebuk89](https://redirect.github.com/nebuk89) in
[#​610](https://redirect.github.com/actions/github-script/pull/610)
##### New Contributors
- [@​benelan](https://redirect.github.com/benelan) made their
first contribution in
[#​482](https://redirect.github.com/actions/github-script/pull/482)
- [@​Jcambass](https://redirect.github.com/Jcambass) made their
first contribution in
[#​485](https://redirect.github.com/actions/github-script/pull/485)
- [@​timotk](https://redirect.github.com/timotk) made their first
contribution in
[#​478](https://redirect.github.com/actions/github-script/pull/478)
- [@​iamstarkov](https://redirect.github.com/iamstarkov) made
their first contribution in
[#​508](https://redirect.github.com/actions/github-script/pull/508)
- [@​neilime](https://redirect.github.com/neilime) made their
first contribution in
[#​546](https://redirect.github.com/actions/github-script/pull/546)
- [@​nebuk89](https://redirect.github.com/nebuk89) made their
first contribution in
[#​610](https://redirect.github.com/actions/github-script/pull/610)
**Full Changelog**:
<https://github.com/actions/github-script/compare/v7...v7.1.0>
###
[`v7.0.1`](https://redirect.github.com/actions/github-script/releases/tag/v7.0.1)
[Compare
Source](https://redirect.github.com/actions/github-script/compare/v7...v7.0.1)
##### What's Changed
- Avoid setting `baseUrl` to undefined when input is not provided by
[@​joshmgross](https://redirect.github.com/joshmgross) in
[#​439](https://redirect.github.com/actions/github-script/pull/439)
**Full Changelog**:
<https://github.com/actions/github-script/compare/v7.0.0...v7.0.1>
</details>
## Why?
Automated dependency update via Renovate.
---
### Configuration
π
**Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
π¦ **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
β» **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend
Renovate](https://redirect.github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNjAuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE2MC42IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
Floatpane Bot created
98ed666
chore(deps): actions/labeler ^ v6.0.1 (#1222)
## What? This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/labeler](https://redirect.github.com/actions/labeler) | action | major | `v5` β `v6` | --- ### Release Notes <details> <summary>actions/labeler (actions/labeler)</summary> ### [`v6.0.1`](https://redirect.github.com/actions/labeler/releases/tag/v6.0.1) [Compare Source](https://redirect.github.com/actions/labeler/compare/v6.0.0...v6.0.1) ##### What's Changed - Upgrade publish-action from 0.2.2 to 0.4.0 by [@​aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) in [#​901](https://redirect.github.com/actions/labeler/pull/901) ##### New Contributors - [@​aparnajyothi-y](https://redirect.github.com/aparnajyothi-y) made their first contribution in [#​901](https://redirect.github.com/actions/labeler/pull/901) **Full Changelog**: <https://github.com/actions/labeler/compare/v6.0.0...v6.0.1> ### [`v6`](https://redirect.github.com/actions/labeler/compare/v6.0.0...v6.0.0) [Compare Source](https://redirect.github.com/actions/labeler/compare/v6.0.0...v6.0.0) ### [`v6.0.0`](https://redirect.github.com/actions/labeler/releases/tag/v6.0.0) [Compare Source](https://redirect.github.com/actions/labeler/compare/v5.0.0...v6.0.0) ##### What's Changed - Add workflow file for publishing releases to immutable action package by [@​jcambass](https://redirect.github.com/jcambass) in [#​802](https://redirect.github.com/actions/labeler/pull/802) ##### Breaking Changes - Upgrade Node.js version to 24 in action and dependencies [@​salmanmkc](https://redirect.github.com/salmanmkc) in [#​891](https://redirect.github.com/actions/labeler/pull/891) Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release. [Release Notes](https://redirect.github.com/actions/runner/releases/tag/v2.327.1) ##### Dependency Upgrades - Upgrade eslint-config-prettier from 9.0.0 to 9.1.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​711](https://redirect.github.com/actions/labeler/pull/711) - Upgrade eslint from 8.52.0 to 8.55.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​720](https://redirect.github.com/actions/labeler/pull/720) - Upgrade [@​types/jest](https://redirect.github.com/types/jest) from 29.5.6 to 29.5.11 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​719](https://redirect.github.com/actions/labeler/pull/719) - Upgrade [@​types/js-yaml](https://redirect.github.com/types/js-yaml) from 4.0.8 to 4.0.9 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​718](https://redirect.github.com/actions/labeler/pull/718) - Upgrade [@​typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser) from 6.9.0 to 6.14.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​717](https://redirect.github.com/actions/labeler/pull/717) - Upgrade prettier from 3.0.3 to 3.1.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​726](https://redirect.github.com/actions/labeler/pull/726) - Upgrade eslint from 8.55.0 to 8.56.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​725](https://redirect.github.com/actions/labeler/pull/725) - Upgrade [@​typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser) from 6.14.0 to 6.19.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​745](https://redirect.github.com/actions/labeler/pull/745) - Upgrade eslint-plugin-jest from 27.4.3 to 27.6.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​744](https://redirect.github.com/actions/labeler/pull/744) - Upgrade [@​typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin) from 6.9.0 to 6.20.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​750](https://redirect.github.com/actions/labeler/pull/750) - Upgrade prettier from 3.1.1 to 3.2.5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​752](https://redirect.github.com/actions/labeler/pull/752) - Upgrade undici from 5.26.5 to 5.28.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​757](https://redirect.github.com/actions/labeler/pull/757) - Upgrade braces from 3.0.2 to 3.0.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​789](https://redirect.github.com/actions/labeler/pull/789) - Upgrade minimatch from 9.0.3 to 10.0.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​805](https://redirect.github.com/actions/labeler/pull/805) - Upgrade [@​actions/core](https://redirect.github.com/actions/core) from 1.10.1 to 1.11.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​811](https://redirect.github.com/actions/labeler/pull/811) - Upgrade typescript from 5.4.3 to 5.7.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​819](https://redirect.github.com/actions/labeler/pull/819) - Upgrade [@​typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser) from 7.3.1 to 8.17.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​824](https://redirect.github.com/actions/labeler/pull/824) - Upgrade prettier from 3.2.5 to 3.4.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​825](https://redirect.github.com/actions/labeler/pull/825) - Upgrade [@​types/jest](https://redirect.github.com/types/jest) from 29.5.12 to 29.5.14 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​827](https://redirect.github.com/actions/labeler/pull/827) - Upgrade eslint-plugin-jest from 27.9.0 to 28.9.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​832](https://redirect.github.com/actions/labeler/pull/832) - Upgrade ts-jest from 29.1.2 to 29.2.5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​831](https://redirect.github.com/actions/labeler/pull/831) - Upgrade [@​vercel/ncc](https://redirect.github.com/vercel/ncc) from 0.38.1 to 0.38.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​830](https://redirect.github.com/actions/labeler/pull/830) - Upgrade typescript from 5.7.2 to 5.7.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​835](https://redirect.github.com/actions/labeler/pull/835) - Upgrade eslint-plugin-jest from 28.9.0 to 28.11.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​839](https://redirect.github.com/actions/labeler/pull/839) - Upgrade undici from 5.28.4 to 5.28.5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​842](https://redirect.github.com/actions/labeler/pull/842) - Upgrade [@​octokit/request-error](https://redirect.github.com/octokit/request-error) from 5.0.1 to 5.1.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​846](https://redirect.github.com/actions/labeler/pull/846) ##### Documentation changes - Add note regarding `pull_request_target` to README.md by [@​silverwind](https://redirect.github.com/silverwind) in [#​669](https://redirect.github.com/actions/labeler/pull/669) - Update readme with additional examples and important note about `pull_request_target` event by [@​IvanZosimov](https://redirect.github.com/IvanZosimov) in [#​721](https://redirect.github.com/actions/labeler/pull/721) - Document update - permission section by [@​harithavattikuti](https://redirect.github.com/harithavattikuti) in [#​840](https://redirect.github.com/actions/labeler/pull/840) - Improvement in documentation for pull\_request\_target event usage in README by [@​suyashgaonkar](https://redirect.github.com/suyashgaonkar) in [#​871](https://redirect.github.com/actions/labeler/pull/871) - Fix broken links in documentation by [@​suyashgaonkar](https://redirect.github.com/suyashgaonkar) in [#​822](https://redirect.github.com/actions/labeler/pull/822) ##### New Contributors - [@​silverwind](https://redirect.github.com/silverwind) made their first contribution in [#​669](https://redirect.github.com/actions/labeler/pull/669) - [@​Jcambass](https://redirect.github.com/Jcambass) made their first contribution in [#​802](https://redirect.github.com/actions/labeler/pull/802) - [@​suyashgaonkar](https://redirect.github.com/suyashgaonkar) made their first contribution in [#​822](https://redirect.github.com/actions/labeler/pull/822) - [@​HarithaVattikuti](https://redirect.github.com/HarithaVattikuti) made their first contribution in [#​840](https://redirect.github.com/actions/labeler/pull/840) - [@​salmanmkc](https://redirect.github.com/salmanmkc) made their first contribution in [#​891](https://redirect.github.com/actions/labeler/pull/891) **Full Changelog**: <https://github.com/actions/labeler/compare/v5...v6.0.0> </details> ## Why? Automated dependency update via Renovate. --- ### Configuration π **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. π **Ignore**: Close this PR and you won't be reminded about this update again. --- --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNjAuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE2MC42IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
Floatpane Bot created
35f7b1a
ci: add more workflows for issues (#1220)
## What? Adds a lot more workflows to help handle issues and PRs better ## Why? It is getting hard to triage issues and pull requests, this will likely help Signed-off-by: drew <me@andrinoff.com>
Drew Smirnoff created
642cf3a
fix: add panic recovery (#1209)
Mohamed Mahmoud created
309db4d
fix(tui): add cyclic navigation (#1216)
## What? - Updated the `Update` function in `tui/choice.go` to modify the cursor navigation logic. - Implemented wrap-around (cyclic) navigation for the `up` and `down` keybindings, allowing the cursor to loop seamlessly through the choices. ## Why? - Currently, menu selection stops when reaching the first or last item, requiring users to reverse direction to navigate the list. - Implementing wrap-around navigation solves this problem. Now, moving upward from the first item selects the last item, and moving downward from the last item selects the first item. - This provides a smoother, more natural navigation experience and reduces unnecessary input keystrokes. - closes #1215
HassanFouad created
5eac18c
fix(nix): use gomod2nix and build scard (#1212)
## What? Switch from buildGoModule to gomod2nix's buildGoApplication so CGO works, and add platform-specific dependencies (apple-sdk on macOS, pcsclite on Linux). Add a CI job to keep gomod2nix.toml in sync. ## Why? buildGoModule with CGO_ENABLED=0 prevented the scard smart card package from linking against platform libraries. Closes #1211
Endoze created
085e61a
fix: reply with To address for catchall (#1217)
## What? Adds an automatic override for the `From` field in reply composer for catch-all accounts ## Why? Requested by @EmilyxFox on [Discord](https://discord.gg/jVnYTeSPV8). Signed-off-by: drew <me@andrinoff.com>
Drew Smirnoff created
459875f
fix(fetcher): decode bad charset (#1214)
## What? - Fix `decodePart` so malformed `Content-Type` headers still go through the charset decoder instead of returning raw bytes. - Add a best-effort charset fallback for invalid media parameters. - Add regression tests for malformed `Content-Type` with ISO-8859-1 bytes and malformed `Content-Type` without a charset. Fixes #1085. ## Why? Malformed `Content-Type` headers can still include a usable charset. Returning raw bytes in that path makes non-UTF-8 email bodies render as mojibake. Decoding with the best-effort charset keeps those messages readable while preserving UTF-8 fallback behavior.
guyua9 created
0880d5a
fix: add catch-all support (#1208)
## What? Ports catch-all support from GitLab ## Why? Requested in #1201 and #1207 Co-authored-by: Steve Evans <steve@floatpane.com> Co-authored-by: Andriy Chernov <andriy@floatpane.com>
Drew Smirnoff , Steve Evans , and Andriy Chernov created
ecc9b8f
fix: allow subaddresses for gmail (#1206)
## What? Adds a check for `some+some@domain.com` for Gmail (sub-addressing) ## Why? Closes #1200 --------- Signed-off-by: drew <me@andrinoff.com>
Drew Smirnoff created
3bd7a8f
fix(i18n): wrap error in loader (#1202)
## What? Replaced the `%v` verb with `%w` in `i18n/loader.go` when returning errors from the embedded loader. ## Why? The current implementation stringifies the underlying `err` using `%v`, which breaks the error chain. This prevents callers from inspecting the root cause using `errors.Is()` or `errors.As()`. Utilizing double `%w` (supported in Go 1.20+) ensures both `ErrLoadFailed` and the original error remain accessible in the error tree. Closes #1051
Mohamed Mahmoud created
cecc8d3
fix(deps): update docusaurus monorepo to v3.10.1 (#1204)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@docusaurus/core](https://redirect.github.com/facebook/docusaurus) ([source](https://redirect.github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus)) | [`3.10.0` β `3.10.1`](https://renovatebot.com/diffs/npm/@docusaurus%2fcore/3.10.0/3.10.1) |  |  | | [@docusaurus/module-type-aliases](https://redirect.github.com/facebook/docusaurus) ([source](https://redirect.github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases)) | [`3.10.0` β `3.10.1`](https://renovatebot.com/diffs/npm/@docusaurus%2fmodule-type-aliases/3.10.0/3.10.1) |  |  | | [@docusaurus/preset-classic](https://redirect.github.com/facebook/docusaurus) ([source](https://redirect.github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic)) | [`3.10.0` β `3.10.1`](https://renovatebot.com/diffs/npm/@docusaurus%2fpreset-classic/3.10.0/3.10.1) |  |  | | [@docusaurus/tsconfig](https://redirect.github.com/facebook/docusaurus) ([source](https://redirect.github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-tsconfig)) | [`3.10.0` β `3.10.1`](https://renovatebot.com/diffs/npm/@docusaurus%2ftsconfig/3.10.0/3.10.1) |  |  | | [@docusaurus/types](https://redirect.github.com/facebook/docusaurus) ([source](https://redirect.github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-types)) | [`3.10.0` β `3.10.1`](https://renovatebot.com/diffs/npm/@docusaurus%2ftypes/3.10.0/3.10.1) |  |  | --- ### Release Notes <details> <summary>facebook/docusaurus (@​docusaurus/core)</summary> ### [`v3.10.1`](https://redirect.github.com/facebook/docusaurus/blob/HEAD/CHANGELOG.md#3101-2026-04-30) [Compare Source](https://redirect.github.com/facebook/docusaurus/compare/v3.10.0...v3.10.1) ##### :bug: Bug Fix - `docusaurus-bundler` - [#​11981](https://redirect.github.com/facebook/docusaurus/pull/11981) fix(bundler): fix v3 webpackbar bug due to webpack breaking change ([@​slorber](https://redirect.github.com/slorber)) ##### :wrench: Maintenance - `docusaurus` - [#​11982](https://redirect.github.com/facebook/docusaurus/pull/11982) chore: cherry-pick commits for v3.10.1 patch release ([@​slorber](https://redirect.github.com/slorber)) ##### Committers: 1 - SΓ©bastien Lorber ([@​slorber](https://redirect.github.com/slorber)) </details> --- ### Configuration π **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. π **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMyIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4zIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
Floatpane Bot created
ee3b6d7
fix(daemon): notify only when new mail (#1205)
## What? Fixes notifications every 5 minutes whether or not there are new emails ## Why? notifications were sent consistently, when not intended
EmilyxFox created
cdf3c7f
fix: pass through in search (#1203)
Matt Van Horn created
ba6b659
docs: update feature screenshots (#1196)
Floatpane Bot created
0fc2447
docs: update demo.gif (#1195)
Floatpane Bot created
e892273
chore: defer file closes (#1180)
## What? Replaced manual `Close()` calls on every error path in the binary copy block of `runUpdateCLI` with `defer`, and report close errors on `out` via the named return value. ## Why? The previous manual `Close()` calls on every return path were fragile and silently discarded flush errors on `out`. Closes #1056
Mohamed Mahmoud created
6780894
fix: change read path in i18n loader (#1193)
## What? Uses a different way to read locales in the `i18n` package. The problem was with Windows compatibility, it returned an error, because couldn't reach the file ## Why? Closes #1192 Signed-off-by: drew <me@andrinoff.com>
Drew Smirnoff created
72e6d3c
feat(search): server-side email search (#1186)
## What?
- Add `EmailSearcher` interface (`Search(ctx, folder, SearchQuery)
([]Email, error)`) to `backend.Provider`
- Add `SearchQuery` struct + `ParseSearchQuery` DSL parser supporting
`from:`, `to:`, `subject:`, `body:`, `since:`, `before:`, `larger:`,
plus quoted multi-word values and bare body terms
- IMAP backend: `fetcher.SearchMailbox` uses `go-imap/v2` `UIDSearch`,
prefers `ESEARCH RETURN (ALL)` (RFC 4731) when `imap.CapESearch` or
`imap.CapIMAP4rev2` is advertised, falls back to UID `SEARCH` for older
servers
- JMAP backend: `Email/query` with `FilterCondition` (`From`, `To`,
`Subject`, `Body`, `After`, `Before`, `MinSize`)
- POP3 backend: returns `backend.ErrNotSupported`
- TUI: new `SearchOverlay` triggered by `/` from inbox, results render
below the email list, Enter applies them as a temporary "Search Results"
view, Esc clears
- Multi-account: `/` from "All Accounts" runs across every supported
account; `ErrNotSupported` is skipped silently so a mixed IMAP+JMAP+POP3
setup still surfaces results from the supported backends
- Default keybind `inbox.search` = `/` in `default_keybinds.json`
- Demo helper at `screenshots/cmd/search_view/main.go` +
`screenshots/search_demo.tape` so the demo regenerates without IMAP
credentials
- Tests: parser DSL (quoted values, body precedence, mixed
prefixed+bare), JMAP filter assembly, fetcher criteria mapping, POP3
unsupported
## Why?
Matches the spec from issue #508 directly:
> Add a `Search(ctx context.Context, query string, folder string)
([]Email, error)` method to the `backend.Provider` interface ...
Implement using IMAP `SEARCH` ... JMAP `Email/query` filters ... search
TUI overlay (e.g. triggered by `/` key)
Sibling issue #1131 added the ESEARCH + DSL prefix detail (`from:`,
`to:`, `subject:`, `body:`, `since:`, `larger:`, ESEARCH RETURN ALL with
UID SEARCH fallback).
The launch thread on r/coolgithubprojects had filtering as the very
first comment ("By chance are there filtering options?"), so server-side
search closes both the maintainer's and a user-visible gap.
Closes #508. Partially addresses #1131. Out of scope: #1129 (full-text
index across folders).
---------
Signed-off-by: drew <me@andrinoff.com>
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: drew <me@andrinoff.com>
Matt Van Horn , Matt Van Horn , and drew created
8cc9c37
fix(cache): trim <> from email keys (#1190)
## What? Add `<` and `>` to the trim cutset in `normalizeContactEmail` so the cache key is the bare email regardless of whether the input came from a header or a UI field. Whitespace and commas continue to be trimmed. ## Why? Email addresses arriving from `From:` headers commonly come wrapped in angle brackets (`<foo@bar.com>`). The previous trim cutset was `,` only, so the cache stored the literal `<foo@bar.com>` and never matched future lookups against `foo@bar.com`. Resolves #1122. Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Matt Van Horn and Matt Van Horn created
fa179cc
fix: randomize pgp boundary (#1191)
## What? - Replace the YubiKey PGP multipart/signed boundary timestamp with 16 bytes from crypto/rand. - Keep a UnixNano fallback for rare random-source failures. - Add focused tests for the random path and fallback formatting. ## Why? MIME boundaries should not be predictable. The existing YubiKey path used time.Now().Unix(), while other signing paths already prefer crypto/rand with a timestamp fallback. Closes #729
Joey Roth created
5fceae3
fix: notifications being sent when off (#1194)
## What? Added a reload config handler for the daemon and daemon reload. ## Why? There was an issue with the daemon sending notifications, even if config does not have the option turned on Signed-off-by: drew <me@andrinoff.com>
Drew Smirnoff created
dd1c231
chore(deps): update renovatebot/github-action action to v46.1.12 (#1189)
Floatpane Bot created
bcbf045
fix(sender): check writes in iMIP body (#1182)
Matt Van Horn created
df5e113
feat: custom keybindings (#1185)
## What? Adds customization to keybinds, as well as a safeguard saying if you have keybinds binded to the same action ## Why? Closes #399 --------- Signed-off-by: drew <me@andrinoff.com> Co-authored-by: Lea <lea@floatpane.com> Co-authored-by: Andriy Chernov <andriy@floatpane.com>
Drew Smirnoff , Lea , and Andriy Chernov created
7c91cb4
fix: handle zero terminal cell height (#1184)
## What? Added a check for `cellHeight == 0` in the `imageRows` function within `view/html.go`. If the terminal height cannot be determined, it now defaults to a standard `16px` fallback. ## Why? When running in terminals that don't report cell size via `ioctl`, `getTerminalCellSize()` returns `0`. This previously caused a "division by zero" runtime panic during the row calculation for inline images: `(h + cellHeight - 1) / cellHeight`. Closes #865
Mohamed Mahmoud created
0cba695
fix(cache): add log email cache errors (#1181)
## What? Added error handling and logging to email body caching operations in `main.go`. Previously, `config.SaveEmailBody()` calls were ignoring errors with `_`, now they capture and log failures for both synchronous and asynchronous caching scenarios. ## Why? Email body caching could fail silently due to disk full or permission denied errors, making debugging difficult when users experienced missing cached emails. This change adds visibility into caching failures to help diagnose storage-related issues. closes: #1030
JosΓ© Rafael Silva Hermoso created
b8f1930
chore(daemon): named timeout constants (#1027)
## What?
Replaces ad-hoc `60*time.Second` and `30*time.Second` literals in
`daemon/handler.go` with two named constants and a brief comment
documenting the split, exactly as suggested in the issue body.
```go
const (
fetchTimeout = 60 * time.Second
mutateTimeout = 30 * time.Second
)
```
`fetchTimeout` (was `60*time.Second`):
- `handleFetchEmails` (line 129)
- `handleFetchEmailBody` (line 154)
- async fetch inside `handleMarkRead` (line 318)
`mutateTimeout` (was `30*time.Second`):
- `handleDeleteEmails` (line 193)
- `handleArchiveEmails` (line 216)
- `handleMoveEmails` (line 239)
- `handleMarkRead` (line 262)
- `handleFetchFolders` (line 287)
## Why?
> `fetchTimeout` covers reads against the upstream IMAP provider, which
can return large bodies and so are given more headroom. `mutateTimeout`
covers state-changing operations and folder listings, which are bounded
by IMAP command latency rather than payload size.
If the maintainer wants `handleFetchFolders` reclassified to
`fetchTimeout` (which would be a behavior change from 30s to 60s), happy
to do that as a follow-up β kept it at the existing value here to keep
this purely a refactor.
Closes #985.
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Matt Van Horn and Matt Van Horn created
42f2417
perf: use slices instead of bubblesort (#1179)
Mohamed Mahmoud created
80625c7
ci: exclude preview from commit log (#1028)
Drew Smirnoff created
a29cd0a
fix: cache migration error silent fail (#1005)
itniuma created
a70c07e
chore: use strings.Builder in yubikey (#1024)
Mohamed Mahmoud created
39c1adf
chore: update flake.lock (#1026)
Floatpane Bot created
100b75b
fix: nil check in renderCalendarInvite (#1023)
Co-authored-by: Ved Prakash <vedpra260@gmail.com>
Ved Prakash Arya and Ved Prakash created
b4b3dca
feat: sixel fallback for multiplexers (#1011)
Drew Smirnoff created
4f33cb2
chore(deps): update renovatebot/github-action action to v46.1.11 (#1025)
Floatpane Bot created
db89465
refactor: extract shared HTTP timeouts (#1022)
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Matt Van Horn and Matt Van Horn created
178a029
test(config): add folder_cache tests (#1007)
Matt Van Horn created
5f14523
fix: defer kitty debug-log Close (#909)
Sai Asish Y created
59bba11
ci: add /assign command (#1021)
Drew Smirnoff created
3d9d2cd
docs: update demo.gif (#1017)
Floatpane Bot created
8e1a1fe
chore: use strings.Builder in validator (#1020)
Mohamed Mahmoud created