Skip to content

chore(canispam)!: initial release#446

Merged
shellscape merged 3 commits into
mainfrom
feat/jsx-email/spam-scanner
May 15, 2026
Merged

chore(canispam)!: initial release#446
shellscape merged 3 commits into
mainfrom
feat/jsx-email/spam-scanner

Conversation

@shellscape
Copy link
Copy Markdown
Owner

Component / Package Name:

canispam

This PR contains:

  • bugfix
  • feature
  • refactor
  • documentation
  • other

Are tests included?

  • yes (bugfixes and features will not be merged without tests)
  • no

Breaking Changes?

  • yes (breaking changes will not be merged unless absolutely necessary)
  • no

List any relevant issue numbers:

N/A

Description

Adds canispam, a new browser-safe package for spam analysis of generated .eml output from JSX Email templates.

The package exposes scan(eml) and returns parsed email content, findings, score breakdown, final classification, and
first-class Naive Bayes classifier metadata. It combines lightweight heuristic checks with Spamscanner-compatible
classifier data and @ladjs/naivebayes.

Included checks cover subject/content signals, hidden or image-heavy HTML, suspicious URLs, IDN/homograph domains, GTUBE,
and Naive Bayes spam classification. Server-only behavior such as ClamAV, DNS auth, reputation APIs, attachments, and ML
image/toxicity scanning is intentionally out of scope.

This also adds third-party notices for the vendored Spamscanner classifier data, updates the pnpm minimum release age
policy to 7 days, and records the repo rule that dependency updates must not bypass that policy.

Tests include EML parsing, scan rules, browser compatibility, classifier behavior, and converted Spamscanner compatibility
cases with unsupported server-only cases kept explicit.

@shellscape shellscape merged commit 11a0112 into main May 15, 2026
4 checks passed
@shellscape shellscape deleted the feat/jsx-email/spam-scanner branch May 15, 2026 00:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant