Development Update — 2026-08-21

by Jamie

Development Update — 2026-08-21

Share

Overview: Where Development Is Heading

Recent backend development is centered on maturing OpenPGP/MIME signed outgoing email functionality to be fully RFC-compliant and interoperable with common email clients like Thunderbird. The work has focused on iterative fixes to MIME structure wrapping, ensuring both plain-text and HTML content are properly included in signed payloads, plus polishing edge cases around PGP key handling, header formatting, and signature generation to deliver reliable end-to-end signed messaging.

Overview: Where Development Is Heading

Recent development is heavily focused on enhancing site discoverability, SEO, and localization, with extensive work on responsive, locale-aware sitemaps (including mobile layout fixes, prefixed variants, JSON-LD integration, and XSL styling) alongside localized SSR meta tags, plus a new minimal MCP JSON-RPC server that exposes site search and sitemap tools for external integrations. Infrastructure updates are also a key priority, including refreshed Monad testnet/mainnet chain data pulled from official sources and secure remote MariaDB access configured via Tailscale with a strict firewall allowlist.

Project Direction — Both repos are converging on a stable, production-ready NFT marketplace. The backend is hardening core systems while the frontend improves architecture and user experience.

Backend Commits

2b08d9c 2026-08-10 00:08:24
fix:
show plain/html as alternative inside signed PGP/MIME

e97908d 2026-08-10 00:07:04
fix:
ensure signed payload contains mail headers, not blank body

66aad0b 2026-08-10 00:04:35
fix:
wrap base64 at 76 chars and generate RFC-compliant Message-ID

9fb3a2e 2026-08-10 00:02:10
fix:
restore proper multipart/signed wrapper without forwarded text

cd9ecc2 2026-08-09 23:55:23
fix:
wrap plain+html in multipart/alternative inside multipart/mixed

5819410 2026-08-09 23:54:42
fix:
match valid PGP/MIME example with multipart/mixed inside multipart/signed

83318ea 2026-08-09 23:51:16
fix:
sign exact multipart/mixed payload and wrap it in multipart/signed

7fca8a5 2026-08-09 23:43:33
fix:
wrap multipart/mixed inside multipart/signed with plain+html

a5c5511 2026-08-09 23:41:26
refactor:
simplify PGP/MIME signing to minimal plain+html multipart/alternative

3f07253 2026-08-09 23:33:32
fix:
support binary PGP secret keys and keep both text/html in signed MIME

e913899 2026-08-09 23:32:32
fix:
include both plain and HTML parts in PGP/MIME signed email

c1a0220 2026-08-09 23:26:17
fix:
match Thunderbird-valid OpenPGP/MIME structure

b340961 2026-08-09 23:23:35
fix:
build valid OpenPGP/MIME signed messages matching Thunderbird structure

ffd352e 2026-08-09 23:09:03
fix(backend): generate detached OpenPGP signature for PGP/MIME

cbec696 2026-08-09 23:04:21
fix(backend): preserve from/to when sending raw PGP/MIME messages

c47a396 2026-08-09 23:03:10
fix(backend): add proper mail headers to raw PGP/MIME signed output

7ac17bd 2026-08-09 23:02:22
fix(backend): send real PGP/MIME signed outgoing mail

94def8d 2026-08-09 22:53:14
fix(backend): inline PGP signature in signed email text body

64480c4 2026-08-09 22:49:37
feat(backend): attach public PGP key to signed outgoing emails

f83c615 2026-08-09 22:47:33
fix(backend): resolve pgp import path from utils/email.js

5848efb 2026-08-09 22:46:27
fix(backend): sign system notification emails via PGP

bcbbffe 2026-08-09 22:37:20
fix(backend): sign all outgoing email messages with PGP

eeee702 2026-08-09 22:35:41
feat(backend): wire backend PGP signing from .pgpkey and ignore secret

c18aefb 2026-08-09 22:30:15
feat(backend): add backend PGP email signing support

4d67aa0 2026-08-09 20:21:49
feat(i18n): add backend locale detection and translated messages

Frontend Commits

3ca396c80 2026-08-20 17:09:39
chore:
update Monad testnet/mainnet chain data from official docs/RPC

09a7de22e 2026-08-20 01:18:56
feat:
expose mariadb on 0.0.0.0 with firewall allowlist for tailscale0 and lo

61d452d8a 2026-08-18 15:43:00
feat:
add minimal MCP JSON-RPC server at /mcp with site.search and sitemap.urls tools

f4d33326d 2026-08-18 14:10:09
feat:
add prefixed sitemap variants and duplicate index entries

aba03743b 2026-08-18 13:52:19
feat:
add sitemap index, XSL fallback, and dynamic JSON+LD localization

392f5a66c 2026-08-17 20:07:42
feat:
localize SSR meta tags and JSON-LD with English fallback

bb3264de1 2026-08-17 19:27:12
fix:
include centralized JSON-LD for locale-prefixed SSR pages

512e25892 2026-08-17 18:36:53
fix:
right-align mobile sitemap cell data beside floated labels

418a5d968 2026-08-17 18:30:21
fix:
right-align mobile sitemap cell data beside floated labels

f6a727e48 2026-08-17 18:25:29
fix:
align mobile sitemap languages with other cells and remove label gap

85dd9c3e5 2026-08-17 18:16:25
fix:
copy updated sitemap.xsl into dist/client so SSR serves current stylesheet

cff471c57 2026-08-17 17:49:49
fix:
prevent languages column from stretching on mobile sitemap

76afb8804 2026-08-17 17:45:31
chore:
regenerate sitemap.xml after mobile layout fix

c4cf6615d 2026-08-17 17:44:00
fix:
use orientation-aware card layout for sitemap on narrow/portrait screens

4a41e791e 2026-08-17 17:41:05
fix:
improve sitemap mobile layout with card-style rows under 720px

28dd09b41 2026-08-17 17:35:26
fix:
prevent sitemap page and timestamp overflow on mobile

120025311 2026-08-17 17:31:42
fix:
truncate last generated timestamp with ellipsis on mobile

582d6f366 2026-08-17 17:29:27
fix:
prevent lastmod timestamp overflow in mobile stats

6765d16e8 2026-08-17 17:28:33
fix:
improve sitemap.xsl mobile styling

3deb67292 2026-08-17 17:16:51
feat:
include all supported locales in sitemap generator

17efb3ae7 2026-08-17 17:14:32
fix:
remove duplicate style attribute in sitemap.xsl legend

95547d59d 2026-08-17 17:13:36
fix:
put xml declaration before stylesheet PI in sitemap.xml

e441e9324 2026-08-17 17:11:31
feat:
add sitemap XSLT and serve /sitemap.xsl

20c9c8a80 2026-08-17 02:17:40
feat:
add 10 new locales from top-15 world languages

666946315 2026-08-17 01:47:54
fix:
translate remaining untranslated strings in non-English locales