This website requires JavaScript.
db31e33a8b
docs: extract install/deploy/config guide into INSTALL.md
Julien Herr and Claude Opus 4.7
2026-05-23 21:49:19 +02:00
8ffa4ad5e7
docs(license): add Julien Herr copyright alongside original author
Julien Herr and Claude Opus 4.7
2026-05-23 21:49:13 +02:00
7f4afa3ec8
feat(admin): add status page link to dashboard header
Julien Herr and Claude Opus 4.7
2026-05-23 21:43:24 +02:00
3368b0d1d2
feat(admin): collapse create-feed form into accordion
Julien Herr and Claude Opus 4.7
2026-05-23 21:41:25 +02:00
5fc91a0be4
refactor(html-processor): isolate cid rewrite from sanitization
Julien Herr and Claude Opus 4.7
2026-05-23 18:47:20 +02:00
debbfc623e
fix(attachments): render inline cid: images in emails and feeds
Julien Herr and Claude Opus 4.7
2026-05-23 18:42:04 +02:00
6cd2d425a2
feat(attachments): list downloadable attachments on admin email detail page
Julien Herr and Claude Opus 4.7
2026-05-23 18:11:29 +02:00
9141cf89bd
fix(attachments): purge R2 attachments on no-JS bulk email delete
Julien Herr and Claude Opus 4.7
2026-05-23 17:57:31 +02:00
ddde0e26a2
docs(readme): add Continuous deployment section with CI secrets and token permissions
Julien Herr and Claude Opus 4.7
2026-05-23 17:51:50 +02:00
20c9bca34a
docs(readme): note R2 permission needed for scoped deploy tokens
Julien Herr and Claude Opus 4.7
2026-05-23 17:50:04 +02:00
2de09b2a5d
refactor(home): dedupe byte formatting in storage cards
Julien Herr and Claude Opus 4.7
2026-05-23 17:39:55 +02:00
f150d40c45
feat(attachments): R2 toggle, storage metrics, and demo R2 config
Julien Herr and Claude Opus 4.7
2026-05-23 17:33:50 +02:00
7226e718f7
feat(admin): paperclip indicator for emails with attachments
Julien Herr and Claude Opus 4.7
2026-05-23 15:10:24 +02:00
f4e751e40b
fix(favicon): add landing-page favicon to fix /favicon.ico 404
Julien Herr and Claude Opus 4.7
2026-05-23 14:49:57 +02:00
766f2717a7
feat(entries): list email attachments with download links
Julien Herr and Claude Opus 4.7
2026-05-23 14:46:25 +02:00
d322bc1e92
docs(todo): add REST API with OpenAPI description item
Julien Herr and Claude Opus 4.7
2026-05-23 14:36:16 +02:00
3ad0188bc0
feat(unsubscribe): RFC 8058 one-click unsubscribe on feed deletion
Julien Herr and Claude Opus 4.7
2026-05-23 14:35:05 +02:00
eb12f21894
feat(favicon): per-feed icon from the last sender's domain
Julien Herr and Claude Opus 4.7
2026-05-23 14:05:14 +02:00
d299c8891d
feat(favicon): serve project favicon reusing the header envelope logo
Julien Herr and Claude Opus 4.7
2026-05-23 13:13:44 +02:00
a67baa71f4
feat(landing): add FAQ section and trim demo URL
Julien Herr and Claude Opus 4.7
2026-05-23 12:59:27 +02:00
b985e2c643
feat(status): redesign status page with hero, themed sections, responsive grid
Julien Herr and Claude Opus 4.7
2026-05-23 12:39:57 +02:00
81d05e5774
feat(landing): move live counter above demo banner, point CTAs to demo root
Julien Herr and Claude Opus 4.7
2026-05-23 10:43:30 +02:00
4db9fc1b8a
fix(lint): close type-check gaps in client scripts and tooling
Julien Herr and Claude Opus 4.7
2026-05-23 10:38:01 +02:00
6bfaa4dec7
fix(landing): eliminate mobile horizontal scroll
Julien Herr and Claude Opus 4.7
2026-05-23 10:23:11 +02:00
fd6a1a945f
feat(landing): show animated live demo stats counters
Julien Herr and Claude Opus 4.7
2026-05-23 10:09:13 +02:00
d1959acad1
docs(todo): add favicon and RFC 8058 unsubscribe ideas
Julien Herr and Claude Opus 4.7
2026-05-23 09:57:59 +02:00
b534ce5bf8
feat(monitoring): add stats counters API and public status page
Julien Herr and Claude Opus 4.7
2026-05-23 09:50:51 +02:00
f4d5edda0e
feat(feeds): add configurable per-feed lifetime (TTL)
Julien Herr and Claude Sonnet 4.6
2026-05-23 09:05:48 +02:00
24c7d2a53e
fix(release): create release before uploading bundle
v0.1.0
Julien Herr and Claude Sonnet 4.6
2026-05-22 23:50:39 +02:00
7e72022ffc
fix(release): remove redundant cp and use env var for bundle path
Julien Herr and Claude Sonnet 4.6
2026-05-22 23:49:25 +02:00
78117421fd
fix(build): add wrangler.build.toml for CI and fix autoconfig
Julien Herr and Claude Sonnet 4.6
2026-05-22 23:47:48 +02:00
1b31665b4f
docs: update WAF rate limiting instructions for free tier accuracy
Julien Herr and Claude Sonnet 4.6
2026-05-22 23:38:41 +02:00
75a557d542
feat(admin): add site header and footer to all admin pages
Julien Herr and Claude Sonnet 4.6
2026-05-22 23:23:48 +02:00
4a4c276859
feat: add sender blocklist with priority matching and quick-add dropdown
Julien Herr and Claude Sonnet 4.5
2026-05-22 23:09:53 +02:00
7b2b98d693
refactor: extract url helpers, add EMAIL_DOMAIN support
Julien Herr and Claude Sonnet 4.6
2026-05-22 22:38:29 +02:00
c64ceb4ee7
feat(site): add GitHub Sponsors links (nav, sponsor section, footer)
Julien Herr and Claude Sonnet 4.6
2026-05-22 21:56:56 +02:00
6bf5ae0356
feat: landing page install guide, demo banner, WAF docs, nightly demo reset
Julien Herr and Claude Sonnet 4.6
2026-05-22 21:50:42 +02:00
af721c081a
chore: mark WebSub as done in TODO.md
Julien Herr
2026-05-22 21:14:00 +02:00
a29e9ab372
feat: WebSub Atom support, HTML processing via linkedom, W3C badges
Julien Herr and Claude Sonnet 4.5
2026-05-22 21:12:10 +02:00
1789870f27
fix(feed): use permalink URL as Atom entry id, strip mso-* inline styles
Julien Herr and Claude Sonnet 4.6
2026-05-22 18:43:06 +02:00
afed4464cf
fix(feed): use permalink URL as Atom entry id, strip mso-* inline styles
Julien Herr and Claude Sonnet 4.6
2026-05-22 18:43:06 +02:00
4428f35dd4
fix(feed): add Atom link in emails page, fix HTML stripping, use request URL for self-link
Julien Herr and Claude Sonnet 4.6
2026-05-22 18:41:21 +02:00
bcc9640591
fix(feed): correct feed link, canonical id, and strip html wrapper from content
Julien Herr and Claude Sonnet 4.6
2026-05-22 18:28:13 +02:00
780bf6c190
fix(admin): add Atom feed URL, unify container width, update branding
Julien Herr and Claude Sonnet 4.6
2026-05-22 18:21:49 +02:00
41f70143d1
design(admin): add Inter font, update page title to kill-the-news
Julien Herr and Claude Sonnet 4.6
2026-05-22 18:21:42 +02:00
b95fbb468f
design(admin): align with kill-the-news landing page visual identity
Julien Herr and Claude Sonnet 4.6
2026-05-22 18:21:34 +02:00
ba7add5f53
fix(demo): correct DOMAIN env var to demo.kill-the.news
Julien Herr and Claude Sonnet 4.6
2026-05-22 18:21:26 +02:00
3ccbd876b6
build(deps-dev): bump dev-dependencies group with 8 updates
Julien Herr
2026-05-22 17:35:01 +02:00
03d069bfa3
build(deps): bump hono from 4.11.7 to 4.12.22
Julien Herr
2026-05-22 17:33:47 +02:00
ea400883dd
build(deps): bump zod from 4.3.6 to 4.4.3
Julien Herr
2026-05-22 17:32:50 +02:00
7dd1225cde
build(deps): bump feed from 5.2.0 to 5.2.1
Julien Herr
2026-05-22 17:32:37 +02:00
3b4a1ce98c
build(deps): bump actions/setup-node from v4 to v6.4.0
Julien Herr
2026-05-22 17:32:19 +02:00
3fa17228a3
build(deps): bump actions/checkout from v4 to v6.0.2
Julien Herr
2026-05-22 17:32:04 +02:00
ebfb8d4a60
fix(config): silence CSS module rule fallthrough warning
Julien Herr
2026-05-22 17:28:02 +02:00
d657875322
feat(ci): auto-deploy demo instance on main push
Julien Herr
2026-05-22 17:20:46 +02:00
4d9418057e
feat(deploy): add demo environment to wrangler config
Julien Herr
2026-05-22 17:20:08 +02:00
edc1183e61
docs: rewrite CLAUDE.md to match actual codebase, remove .cursor
Julien Herr and Claude Sonnet 4.6
2026-05-22 15:51:53 +02:00
4316354ee5
refactor(styles): migrate TS template literal styles to real CSS files
Julien Herr and Claude Sonnet 4.6
2026-05-22 15:44:08 +02:00
5d75682702
build: add Wrangler text rule for CSS imports
Julien Herr and Claude Sonnet 4.6
2026-05-22 15:43:49 +02:00
d64f703820
fix(ui): replace children cast to any with hono/jsx Child type
Julien Herr and Claude Sonnet 4.5
2026-05-22 15:35:10 +02:00
0e1592f8c6
build: gitignore generated client scripts, rebuild on npm install
Julien Herr and Claude Sonnet 4.5
2026-05-22 13:53:33 +02:00
0f6670d0e9
refactor(admin): extract emailsScript to src/scripts/client/emails-page.ts
Julien Herr and Claude Sonnet 4.6
2026-05-22 13:50:54 +02:00
40f4b42cd5
refactor(admin): extract dashboardScript to src/scripts/client/dashboard.ts
Julien Herr and Claude Sonnet 4.6
2026-05-22 13:50:47 +02:00
0663861471
build: add client-side TypeScript compilation pipeline
Julien Herr and Claude Sonnet 4.6
2026-05-22 13:50:41 +02:00
671179acc7
build: add esbuild dev dependency
Julien Herr and Claude Sonnet 4.6
2026-05-22 13:50:31 +02:00
9bfebf4aa4
refactor(admin): migrate admin.ts to admin.tsx with JSX login and dashboard
Julien Herr and Claude Sonnet 4.6
2026-05-22 13:17:46 +02:00
c9ab3839e4
refactor(admin): migrate emails.ts to emails.tsx with JSX rendering
Julien Herr and Claude Sonnet 4.6
2026-05-22 13:17:38 +02:00
ecb85730e0
refactor(admin): migrate feeds.ts to feeds.tsx with JSX rendering
Julien Herr and Claude Sonnet 4.6
2026-05-22 13:17:31 +02:00
996aa5e211
refactor(admin): migrate ui.ts to ui.tsx with JSX Layout component
Julien Herr and Claude Sonnet 4.6
2026-05-22 13:17:24 +02:00
f5bac1bd7d
build: add hono/jsx support to tsconfig
Julien Herr and Claude Sonnet 4.6
2026-05-22 13:17:16 +02:00
d82344ac67
chore: remove TECH_DEBT.md — all tasks completed
Julien Herr and Claude Sonnet 4.6
2026-05-22 12:01:42 +02:00
427eac973c
docs: mark Phase 3 tasks done; document WAF rate limiting in TODO
Julien Herr and Claude Sonnet 4.6
2026-05-22 10:56:55 +02:00
205d4ef5bb
refactor: split admin.ts into sub-modules (P2-11)
Julien Herr and Claude Sonnet 4.6
2026-05-22 10:56:20 +02:00
a9501d6e44
feat: add structured JSON logger and worker utility (P1-4)
Julien Herr and Claude Sonnet 4.6
2026-05-22 10:55:15 +02:00
0c0669c473
feat: extract constants module (P2-10)
Julien Herr and Claude Sonnet 4.6
2026-05-22 10:55:01 +02:00
582108a8e3
docs: move Durable Objects migration from TECH_DEBT to TODO
Julien Herr and Claude Sonnet 4.6
2026-05-22 10:31:41 +02:00
a0415cdc41
refactor: replace custom HMAC CSRF with hono/csrf middleware
Julien Herr and Claude Sonnet 4.6
2026-05-22 10:28:26 +02:00
7d375693b9
feat: complete Phase 2 tech debt remediation
Julien Herr and Claude Sonnet 4.6
2026-05-22 09:46:55 +02:00
f2981eec31
test: add inbound route tests covering IP auth, validation, and R2 upload
Julien Herr
2026-05-22 07:39:48 +02:00
e874906291
docs: inline Durable Objects migration TODO in email-processor
Julien Herr
2026-05-22 07:39:43 +02:00
10404efffa
fix: delete orphaned KV entries when trimming feed metadata
Julien Herr
2026-05-22 07:39:37 +02:00
dae5db2524
feat: add GET /health endpoint
Julien Herr
2026-05-22 07:39:24 +02:00
bde06dd3e4
fix(websub): add missing WebSub Link header to Atom feed
Julien Herr and Claude Sonnet 4.6
2026-05-21 23:46:38 +02:00
5723fd36f9
refactor(admin): validate JSON feed update via @hono/zod-validator
Julien Herr and Claude Sonnet 4.6
2026-05-21 23:46:29 +02:00
57e0cc5413
refactor(cors): replace manual CORS middleware with hono/cors
Julien Herr and Claude Sonnet 4.6
2026-05-21 23:46:21 +02:00
ece237c0af
chore: ignore coverage/ directory
Julien Herr
2026-05-21 23:17:43 +02:00
68151cbb5f
fix(websub): require feed existence for subscriptions, remove atom hub header, simplify router mounting
Julien Herr and Claude Sonnet 4.6
2026-05-21 23:15:52 +02:00
0d00e003d4
test(websub): add ctx.waitUntil coverage for processEmail notification wiring
Julien Herr and Claude Sonnet 4.6
2026-05-21 23:11:19 +02:00
d0764ddd8e
feat(websub): wire real-time push notifications on email ingest
Julien Herr and Claude Sonnet 4.6
2026-05-21 23:08:19 +02:00
6d221a07dd
feat(websub): add hub discovery Link headers to RSS and Atom feeds
Julien Herr
2026-05-21 23:06:18 +02:00
aa41337c6b
feat(websub): mount /hub route
Julien Herr
2026-05-21 23:05:32 +02:00
09db52bb4d
test(websub): add hub route tests
Julien Herr and Claude Sonnet 4.6
2026-05-21 23:03:57 +02:00
4165774667
fix(websub): validate callback URL (HTTPS), fix domain regex, enforce secret length
Julien Herr
2026-05-21 23:01:20 +02:00
ee4b9d8fdc
feat(websub): add hub route (subscribe/unsubscribe)
Julien Herr
2026-05-21 22:58:16 +02:00
e8f5af8b87
test(websub): add missing error-path tests for verify functions
Julien Herr
2026-05-21 22:57:25 +02:00
c6785554d4
test(websub): add unit tests for WebSub utilities
Julien Herr
2026-05-21 22:54:44 +02:00
0b4ed0fbec
fix(websub): fix signature header, add delivery logging, parallelize KV reads
Julien Herr
2026-05-21 22:51:48 +02:00
8810109e6f
feat(websub): add WebSub utilities (HMAC, KV helpers, notify, verify)
Julien Herr
2026-05-21 22:48:21 +02:00
ed6d2b4a0c
feat(websub): add WebSubSubscription type
Julien Herr
2026-05-21 22:45:43 +02:00
20dc20ed1d
Update FUNDING.yml to include GitHub sponsor
Julien Herr
2026-05-21 21:44:13 +02:00