-
da64175e3c
removed github actions
main
nick
2026-11-01 18:34:02 -08:00
-
44fcbfc4f6
fix(favicon): fall back to apex domain when subdomain hosts no icon

Julien HerrandClaude Opus 4.7
2026-05-25 23:49:43 +02:00
-
4d3a94d1ec
fix(confirmation): flag code-based OTP signups with no clickable link

Julien HerrandClaude Opus 4.7
2026-05-25 23:46:14 +02:00
-
3f35435610
fix(confirmation): recognize localized subscribe CTAs in weak link signals

Julien HerrandClaude Opus 4.7
2026-05-25 23:35:10 +02:00
-
a353de1342
fix(favicon): raise max icon size to 256 KB for hi-res PNGs

Julien HerrandClaude Opus 4.7
2026-05-25 23:22:05 +02:00
-
fd3ff8c40a
feat(admin): show email count and last-email date per feed

Julien HerrandClaude Opus 4.7
2026-05-25 23:18:38 +02:00
-
e258206384
fix(feed): advertise WebSub hub in RSS/Atom body

Julien HerrandClaude Opus 4.7
2026-05-25 23:04:33 +02:00
-
7297e06b94
fix(feed): escape bare ampersands in entry HTML attribute URLs

Julien HerrandClaude Opus 4.7
2026-05-25 22:49:57 +02:00
-
5f13126b35
fix(favicon): short TTL for negative favicon cache entries

Julien HerrandClaude Opus 4.7
2026-05-25 22:44:35 +02:00
-
bb9fce72ff
fix(confirmation): detect confirm emails whose CTA hint is in the link text

Julien HerrandClaude Opus 4.7
2026-05-25 22:36:16 +02:00
-
b6b160a186
fix(release): set GitHub Release title to the tag

Julien HerrandClaude Opus 4.7
2026-05-25 19:02:54 +02:00
-
a9814ca063
chore: open 0.4.0 develop cycle
Julien Herr
2026-05-25 19:01:44 +02:00
-
d778849e02
chore(release): 0.3.1
v0.3.1
Julien Herr
2026-05-25 19:01:38 +02:00
-
5083f7e151
chore: retarget develop cycle to 0.3.1

Julien HerrandClaude Opus 4.7
2026-05-25 19:00:48 +02:00
-
ffe96586c7
chore(release): add CHANGELOG and scripted release pipeline

Julien HerrandClaude Opus 4.7
2026-05-25 19:00:38 +02:00
-
3242f0e3f1
docs(landing): add native FreshRSS support feature card

Julien HerrandClaude Opus 4.7
2026-05-25 18:42:51 +02:00
-
1332362005
fix(feeds): self link uses configured domain, not request host

Julien HerrandClaude Opus 4.7
2026-05-25 18:38:38 +02:00
-
cbf6bb7e7e
chore: open 0.4.0 develop cycle

Julien HerrandClaude Opus 4.7
2026-05-25 18:16:00 +02:00
-
0f18d4c123
refactor(app): parse sender once via EmailAddress, drop infra reach
v0.3.0

Julien HerrandClaude Opus 4.7
2026-05-25 18:00:02 +02:00
-
e8078b2673
refactor(admin): extract shared FeedChip, dedupe native/format chips

Julien HerrandClaude Opus 4.7
2026-05-25 17:59:55 +02:00
-
ea7332b752
docs: document native feed detection; mark TODO item shipped

Julien HerrandClaude Sonnet 4.6
2026-05-25 17:47:08 +02:00
-
8cd8c940fa
style(admin): pill-native + native-feeds group spacing
Julien Herr
2026-05-25 17:44:31 +02:00
-
fe5728de59
feat(admin): native-feed detail group + dismissable notice

Julien HerrandClaude Sonnet 4.6
2026-05-25 17:39:47 +02:00
-
35262d5d0b
refactor(admin): dedupe feed label map + add chip key
Julien Herr
2026-05-25 17:36:48 +02:00
-
a18d9f165f
feat(admin): native feed chips + dashboard pill

Julien HerrandClaude Sonnet 4.6
2026-05-25 17:33:10 +02:00
-
8a0dbf25b0
feat(api): expose nativeFeeds on the REST Feed schema (read-only)

Julien HerrandClaude Sonnet 4.6
2026-05-25 17:28:44 +02:00
-
6236274ce8
refactor(app): derive native-feed base from EmailAddress.siteBaseUrl

Julien HerrandClaude Sonnet 4.6
2026-05-25 17:25:52 +02:00
-
5362d478e3
feat(app): detect native feeds during email ingestion

Julien HerrandClaude Sonnet 4.6
2026-05-25 17:22:05 +02:00
-
ee0e7eef5d
feat(infra): project hasNativeFeed into feeds:list

Julien HerrandClaude Sonnet 4.6
2026-05-25 17:18:19 +02:00
-
dc2ccfdd1c
feat(domain): store native feeds per-sender on the Feed aggregate

Julien HerrandClaude Sonnet 4.6
2026-05-25 17:14:38 +02:00
-
86d18eb390
docs(infra): clarify extractFeedLinks href-resolution comment
Julien Herr
2026-05-25 17:12:08 +02:00
-
3c48181c05
feat(infra): extract rel=alternate feed links from email HTML

Julien HerrandClaude Sonnet 4.6
2026-05-25 17:08:48 +02:00
-
df5546fedd
feat(domain): add native-feed detector (Atom/RSS/JSON)
Julien Herr
2026-05-25 17:05:39 +02:00
-
021aeabd05
docs(plan): implementation plan for native feed detection

Julien HerrandClaude Opus 4.7
2026-05-25 17:01:36 +02:00
-
69ed07db51
docs(spec): design native Atom/RSS/JSON feed detection

Julien HerrandClaude Opus 4.7
2026-05-25 16:54:51 +02:00
-
6dad6741ed
docs(claude): add Releasing guidance to avoid version mistakes

Julien HerrandClaude Opus 4.7
2026-05-25 16:19:22 +02:00
-
d2f3e1ca27
ci(release): derive release version from the tag, not the commit

Julien HerrandClaude Opus 4.7
2026-05-25 16:08:24 +02:00
-
664d0c02ba
chore(release): carry 0.3.0-develop pre-release version between releases

Julien HerrandClaude Opus 4.7
2026-05-25 16:04:32 +02:00
-
757dd3a53f
refactor(domain): own sender display name on EmailAddress

Julien HerrandClaude Opus 4.7
2026-05-25 15:56:36 +02:00
-
16029460bc
refactor(feed): drop unused aggregate getter, dedupe sender parse

Julien HerrandClaude Opus 4.7
2026-05-25 15:52:51 +02:00
-
82a4bd8341
feat(api): expose app version in /api/v1/stats

Julien HerrandClaude Opus 4.7
2026-05-25 15:50:45 +02:00
-
e86beeeb8a
feat(feed): optional per-feed sender-in-title toggle

Julien HerrandClaude Opus 4.7
2026-05-25 15:48:31 +02:00
-
7086526670
feat(admin): display running version in footer and /health

Julien HerrandClaude Opus 4.7
2026-05-25 15:43:05 +02:00
-
70552e5fa6
refactor(admin): reuse dashboard Subscribe chips on feed detail page

Julien HerrandClaude Opus 4.7
2026-05-25 15:20:08 +02:00
-
4e3d378850
fix(domain): cut confirmation false positives via weak subscribe signal
Julien Herr
2026-05-25 10:58:20 +02:00
-
421430632e
test: cover plaintext confirmation, table-view pill, emails-page banner
Julien Herr
2026-05-25 10:57:46 +02:00
-
5f05068449
refactor(domain): slim detectConfirmation contract
Julien Herr
2026-05-25 10:50:06 +02:00
-
fc86b5f7d1
refactor(infra): simplify toListItemDTO pendingConfirmation projection
Julien Herr
2026-05-25 09:22:01 +02:00
-
0929d4f0b7
docs: subscription confirmation surfacing + TODO bookkeeping
Julien Herr
2026-05-25 09:18:34 +02:00
-
4d47ca623b
style(admin): confirmation badge, pill, banner, section
Julien Herr
2026-05-25 09:16:24 +02:00
-
7019800769
feat(admin): land on feed emails page after creation
Julien Herr
2026-05-25 09:14:48 +02:00
-
f44c6c1eda
feat(admin): dashboard pending-confirmation pill
Julien Herr
2026-05-25 09:12:27 +02:00
-
1525b36cab
feat(admin): surface confirmation link, badge, banner + dismiss

Julien HerrandClaude Sonnet 4.6
2026-05-25 09:08:30 +02:00
-
c4d591b962
feat(ingest): detect and mark confirmation emails
Julien Herr
2026-05-25 09:04:36 +02:00
-
36d58ade48
feat(infra): project pendingConfirmation into feeds:list

Julien HerrandClaude Sonnet 4.6
2026-05-25 09:02:16 +02:00
-
79bb4902b9
feat(domain): pendingConfirmation flag on the Feed aggregate
Julien Herr
2026-05-25 08:58:26 +02:00
-
d561b6b81f
feat(infra): extractLinks for confirmation detection
Julien Herr
2026-05-25 08:55:24 +02:00
-
e4e3d62f5a
refactor(domain): clearer diacritics escape + hasKeyword boolean

Julien HerrandClaude Sonnet 4.6
2026-05-25 08:38:46 +02:00
-
f2e0353438
feat(domain): confirmation-email detection service
Julien Herr
2026-05-25 08:36:54 +02:00
-
6bf11493ab
docs(plan): subscription confirmation surfacing implementation plan

Julien HerrandClaude Opus 4.7
2026-05-25 08:33:57 +02:00
-
5b54659b4d
docs(spec): subscription confirmation surfacing design

Julien HerrandClaude Opus 4.7
2026-05-25 08:29:11 +02:00
-
0488b9d066
docs(todo): add multi-user, change-admin-password & admin-managed API tokens

Julien HerrandClaude Opus 4.7
2026-05-25 08:00:53 +02:00
-
2a3aeb8a18
feat(admin): link email detail to its public entry page

Julien HerrandClaude Opus 4.7
2026-05-24 23:26:16 +02:00
-
b3a979fd03
feat(admin): per-feed Subscribe chips with copy/open/validate for RSS/Atom/JSON

Julien HerrandClaude Opus 4.7
2026-05-24 23:08:27 +02:00
-
1a4a479190
feat: decouple read FeedId from inbound MailboxId

Julien HerrandClaude Opus 4.7
2026-05-24 22:46:37 +02:00
-
f7f10779bc
docs(todo): add JSON Feed v1.1 upgrade + version/update/instances items

Julien HerrandClaude Opus 4.7
2026-05-24 20:58:44 +02:00
-
0abd5f306c
feat: reader-compat batch — JSON Feed, OPML export, conditional GET, dedup

Julien HerrandClaude Opus 4.7
2026-05-24 20:47:54 +02:00
-
334713fbd9
docs(todo): add pluggable runtime/storage/ingestion epic (off-Cloudflare)

Julien HerrandClaude Opus 4.7
2026-05-24 17:52:01 +02:00
-
97ce9a62b4
feat: reader-rendering correctness + privacy hardening (P1·S batch)
v0.2.1

Julien HerrandClaude Opus 4.7
2026-05-24 17:47:46 +02:00
-
81e46c9026
feat(stats): count emails forwarded to the catch-all fallback

Julien HerrandClaude Opus 4.7
2026-05-24 17:19:12 +02:00
-
1583e95875
docs(landing): add Catch-All Fallback feature card

Julien HerrandClaude Opus 4.7
2026-05-24 17:15:42 +02:00
-
2c450817df
feat(email): forward non-feed mail to FALLBACK_FORWARD_ADDRESS

Julien HerrandClaude Opus 4.7
2026-05-24 17:14:04 +02:00
-
6cb036fe2c
docs(todo): catalog feature gaps with origin refs and priority/size tags

Julien HerrandClaude Opus 4.7
2026-05-24 17:11:11 +02:00
-
b002f8ad43
refactor: extract inline view CSS into dedicated stylesheets
v0.2.0

Julien HerrandClaude Opus 4.7
2026-05-24 14:54:33 +02:00
-
5137637181
feat(attachments): render inline cid images in place, not as attachments

Julien HerrandClaude Opus 4.7
2026-05-24 14:39:59 +02:00
-
be45e70571
docs(landing): add auto-expiring feeds feature card

Julien HerrandClaude Opus 4.7
2026-05-24 14:13:45 +02:00
-
06c436c36a
refactor: separate Feed domain state from persistence DTO

Julien HerrandClaude Opus 4.7
2026-05-24 14:10:04 +02:00
-
d68a24867d
docs(claude): sync layering rules with the aggregate refactor

Julien HerrandClaude Opus 4.7
2026-05-24 13:45:30 +02:00
-
ad196f1761
refactor: tighten DDD boundaries on the Feed aggregate

Julien HerrandClaude Opus 4.7
2026-05-24 13:45:13 +02:00
-
b3d42f6c50
refactor: introduce domain events for feed side effects (Track E — point 5)

Julien HerrandClaude Opus 4.7
2026-05-24 13:12:42 +02:00
-
46af982c40
refactor: invert application↔routes boundary (Track B — points 3, 6a)

Julien HerrandClaude Opus 4.7
2026-05-24 10:05:21 +02:00
-
f823a5f222
refactor: move KV repositories to infrastructure (Track P — points 2, 6c)

Julien HerrandClaude Opus 4.7
2026-05-24 10:02:23 +02:00
-
23dd0a0c96
refactor(domain): purify the Feed aggregate (Track D — points 1, 4, 6b)

Julien HerrandClaude Opus 4.7
2026-05-24 09:55:55 +02:00
-
e324571122
docs(claude): document the DDD layering, Feed aggregate and repo split

Julien HerrandClaude Opus 4.7
2026-05-24 00:48:13 +02:00
-
7bf0f71f86
refactor: split src into domain / application / infrastructure layers

Julien HerrandClaude Opus 4.7
2026-05-24 00:46:56 +02:00
-
ab1c15e69a
refactor(domain): make FeedId circulate through the domain and repository

Julien HerrandClaude Opus 4.7
2026-05-24 00:44:24 +02:00
-
05388b45c8
refactor(domain): split updateFeedRecord into renameFeed and editFeed

Julien HerrandClaude Opus 4.7
2026-05-24 00:35:07 +02:00
-
c45f6677fe
refactor(domain): introduce the Feed aggregate as the write-path API

Julien HerrandClaude Opus 4.7
2026-05-24 00:33:14 +02:00
-
a31ff42f59
refactor(domain): split Icon/WebSub/Counters out of FeedRepository

Julien HerrandClaude Opus 4.7
2026-05-24 00:27:33 +02:00
-
b347f2f625
refactor(domain): extract the KV key schema into feed-keys.ts

Julien HerrandClaude Opus 4.7
2026-05-24 00:24:43 +02:00
-
49f69ff19e
docs(claude): document the domain layer and FeedRepository KV access rule

Julien HerrandClaude Opus 4.7
2026-05-24 00:06:48 +02:00
-
c65aabe7f4
refactor(domain): add FeedId, EmailAddress and Domain value objects

Julien HerrandClaude Opus 4.7
2026-05-24 00:05:46 +02:00
-
8f036cf223
refactor(ingest): return a domain result from processEmail, map HTTP at the edge

Julien HerrandClaude Opus 4.7
2026-05-24 00:02:05 +02:00
-
6b51173722
refactor(domain): consolidate Feed aggregate invariants in domain/feed.ts

Julien HerrandClaude Opus 4.7
2026-05-23 23:59:15 +02:00
-
2b3f00f7e3
refactor(domain): introduce FeedRepository as the single KV access layer

Julien HerrandClaude Opus 4.7
2026-05-23 23:56:44 +02:00
-
a0eaebe749
docs(landing): add a REST API & OpenAPI feature card

Julien HerrandClaude Opus 4.7
2026-05-23 23:16:54 +02:00
-
c2a0a68058
refactor(api): remove the deprecated /api/stats endpoint

Julien HerrandClaude Opus 4.7
2026-05-23 23:15:08 +02:00
-
daa93d8093
feat(api): make /api/v1/stats public and point the landing at it

Julien HerrandClaude Opus 4.7
2026-05-23 23:11:13 +02:00
-
45d2a14a12
feat(api): add versioned REST API with OpenAPI 3.1 spec

Julien HerrandClaude Opus 4.7
2026-05-23 23:01:15 +02:00
-
7f5b913576
docs: add SECURITY.md and CONTRIBUTING.md

Julien HerrandClaude Opus 4.7
2026-05-23 22:18:57 +02:00