When inbuxa-server's AI spam classification is on, it records the model's
answer in an X-Spam-LLM header: a tag (LLM_[_]) and,
in parentheses, the model's explanation. The full message now asks for it,
and where it's there:
the message details show "Language model's opinion" beside the spam
filter's own working, with category, confidence and explanation;
a message in Junk carries a banner saying the same.
Both say it's one of several signals the spam filter weighed, never the
reason on its own, as the server's spec requires. The explanation is model
output and is only ever rendered as text. Nothing shows without the header,
so a server without the feature, or with it off, looks as before.
Translations: two new strings, "Language model's opinion" and "One of
several signals the spam filter weighed", in all eight catalogues (16
entries). Category and confidence come from the server and aren't
translated.
Summary
Related issues
Translations
Testing
Screenshots
When inbuxa-server's AI spam classification is on, it records the model's
answer in an X-Spam-LLM header: a tag (LLM_<category>[_<confidence>]) and,
in parentheses, the model's explanation. The full message now asks for it,
and where it's there:
- the message details show "Language model's opinion" beside the spam
filter's own working, with category, confidence and explanation;
- a message in Junk carries a banner saying the same.
Both say it's one of several signals the spam filter weighed, never the
reason on its own, as the server's spec requires. The explanation is model
output and is only ever rendered as text. Nothing shows without the header,
so a server without the feature, or with it off, looks as before.
Translations: two new strings, "Language model's opinion" and "One of
several signals the spam filter weighed", in all eight catalogues (16
entries). Category and confidence come from the server and aren't
translated.
<!--
Thanks for contributing to ihasmail. CONTRIBUTING.md has the full guide;
this is the short version. Delete any section that does not apply.
-->
## Summary
<!-- What changes, and why. -->
## Related issues
<!-- e.g. Closes #123. Leave blank if there are none. -->
## Translations
<!--
Nine languages ship alongside English, and a missing key silently renders
its English source -- so an untranslated string is invisible until somebody
reading that language finds it. Say which this PR is, explicitly:
- Adds or alters user-visible strings: how many keys, and the fallback
count before and after.
- Adds none.
"Adds none" is an answer. Saying nothing is not -- it leaves it to be
inferred. See CONTRIBUTING.md -> Translations.
-->
## Testing
<!--
What you ran, and what you saw. `npm run typecheck`, `npm test` and
`npm run build` all run in CI, so the useful thing here is what CI cannot
do: which flows you exercised by hand, and against what -- a real Stalwart
instance, or `npm run dev:mock`.
If the change is visible on screen, drive the built app, not just the
store. See CONTRIBUTING.md -> Verifying UI work.
-->
## Screenshots
<!-- For UI changes. Before/after, or a GIF for anything with motion. -->
When inbuxa-server's AI spam classification is on, it records the model's
answer in an X-Spam-LLM header: a tag (LLM_<category>[_<confidence>]) and,
in parentheses, the model's explanation. The full message now asks for it,
and where it's there:
- the message details show "Language model's opinion" beside the spam
filter's own working, with category, confidence and explanation;
- a message in Junk carries a banner saying the same.
Both say it's one of several signals the spam filter weighed, never the
reason on its own, as the server's spec requires. The explanation is model
output and is only ever rendered as text. Nothing shows without the header,
so a server without the feature, or with it off, looks as before.
Translations: two new strings, "Language model's opinion" and "One of
several signals the spam filter weighed", in all eight catalogues (16
entries). Category and confidence come from the server and aren't
translated.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
When inbuxa-server's AI spam classification is on, it records the model's
answer in an X-Spam-LLM header: a tag (LLM_[_]) and,
in parentheses, the model's explanation. The full message now asks for it,
and where it's there:
filter's own working, with category, confidence and explanation;
Both say it's one of several signals the spam filter weighed, never the
reason on its own, as the server's spec requires. The explanation is model
output and is only ever rendered as text. Nothing shows without the header,
so a server without the feature, or with it off, looks as before.
Translations: two new strings, "Language model's opinion" and "One of
several signals the spam filter weighed", in all eight catalogues (16
entries). Category and confidence come from the server and aren't
translated.
Summary
Related issues
Translations
Testing
Screenshots