https://github.com/64kramsystem/ungerman
https://github.com/64kramsystem/ungerman
Last synced: 15 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/64kramsystem/ungerman
- Owner: 64kramsystem
- Created: 2026-05-13T18:49:10.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-13T19:00:29.000Z (about 1 month ago)
- Last Synced: 2026-05-13T20:34:01.219Z (about 1 month ago)
- Language: JavaScript
- Size: 2.93 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ungerman
A small Thunderbird extension that stops reply-prefix stacking when the
subject already starts with `AW: ` (the German "Antwort" prefix).
## Why
On a German-localized Thunderbird, replying to a message whose subject already
starts with `AW: ` produces `AW: AW: ...`. On a non-German Thunderbird replying
to the same message, you get `Re: AW: ...`. Ungerman strips the outer prefix
so the subject stays `AW: ...`.
Examples (subject in the compose window):
| Before | After |
|---------------------|-------------|
| `AW: AW: Foo` | `AW: Foo` |
| `Re: AW: Foo` | `AW: Foo` |
| `Antwort: AW: Foo` | `AW: Foo` |
| `AW: Foo` | `AW: Foo` |
| `Re: Foo` | `Re: Foo` |
It only acts on reply tabs (`details.type === "reply"`), never on new mail or
forwards.
## Install
1. Build the package:
```
./build-xpi.sh
```
2. In Thunderbird: *Add-ons and Themes* → gear icon → *Install Add-on From File…*
→ pick `ungerman.xpi`.
For temporary install during development: *Add-ons Manager* → gear icon →
*Debug Add-ons* → *Load Temporary Add-on* → pick `manifest.json`.
Requires Thunderbird 78 or newer.
## Tests
Pure subject logic lives in `subject.js` and is covered by `subject.test.js`
using Node's built-in test runner:
```
node --test subject.test.js
```
No dependencies; requires Node 18+.
## Files
- `manifest.json` — MailExtension manifest (v2).
- `subject.js` — pure `unstackSubject` function; loaded as a background script
in Thunderbird and `require`d from tests in Node.
- `background.js` — wires `unstackSubject` to `tabs.onCreated` /
`compose.getComposeDetails` / `compose.setComposeDetails`.
- `subject.test.js` — unit tests for `unstackSubject`.
- `build-xpi.sh` — packages the three runtime files into `ungerman.xpi`.