From 9eac07d231a626438dfa2f8a8e42f962fa8a58fc Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 14:42:18 +0000 Subject: [PATCH 1/2] feat: add filtered newsletter.xml feed for Buttondown Adds /newsletter.xml that filters conferences to those whose CFP closes in the next 14 days, with pubDate set to build time so Buttondown's RSS-to-email picks items up (the existing /feed.xml uses future-dated CFP deadlines as pubDate, which Buttondown skips). https://claude.ai/code/session_01BKQ3qcHaToNZyecwyYGoBW --- newsletter.xml | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 newsletter.xml diff --git a/newsletter.xml b/newsletter.xml new file mode 100644 index 00000000000..a729e10ea5a --- /dev/null +++ b/newsletter.xml @@ -0,0 +1,44 @@ +--- +permalink: /newsletter.xml +--- + + + + {{ site.title | xml_escape }} Newsletter + Python conference CFP deadlines coming up in the next 14 days + {{ site.url }} + + en-US + {{ site.time | date_to_rfc822 }} + Jekyll v{{ jekyll.version }} +{%- assign today = site.time | date: "%s" | plus: 0 -%} +{%- assign horizon = site.time | date: "%s" | plus: 1209600 -%} +{%- for conf in site.data.conferences -%} + {%- if conf.cfp_ext -%} + {%- assign cfp = conf.cfp_ext -%} + {%- else -%} + {%- assign cfp = conf.cfp -%} + {%- endif -%} + {%- if cfp != "TBA" and cfp != "Cancelled" and cfp != "None" -%} + {%- assign cfp_epoch = cfp | date: "%s" | plus: 0 -%} + {%- if cfp_epoch >= today and cfp_epoch <= horizon %} + + {{ conf.conference | xml_escape }} {{ conf.year }} — CFP closes {{ cfp | date: "%b %-d" }} + {{ site.url }}{{ site.baseurl }}/conference/{{ conf.conference | slugify: "latin" }}-{{ conf.year }}/ + {{ conf.conference | slugify: "latin" }}-{{ conf.year }} + {{ site.time | date_to_rfc822 }} + {{ site.title | xml_escape }} + {{ conf.sub }} + 📍 {{ conf.place | xml_escape }} · 📅 {% translate_file dates/pretty_dates.html start=conf.start end=conf.end %}

+

📝 CfP deadline: {% translate_file dates/pretty_dates.html start=cfp end=cfp %}

+{% if conf.cfp_link %}

Submit your proposal →

{% endif %}]]>
+
+ {%- endif -%} + {%- endif -%} +{%- endfor %} +
+
From 59a14452ec1f2cd3a07deb5bcffc146feb71cd31 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 15:36:58 +0000 Subject: [PATCH 2/2] feat: add dynamic urgency pill to newsletter items Computes days_until from CFP deadline and emits a colored pill at the top of each item's description, tiered by urgency: - Last day! (red) - 1 day left (orange) - 2-3 days left (amber) - 4-7 days left (yellow) - 8-14 days (blue) Uses midnight-UTC rounding for accurate calendar-day counts. Pairs with the existing taglines for at-a-glance urgency plus community flavor. https://claude.ai/code/session_01BKQ3qcHaToNZyecwyYGoBW --- newsletter.xml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/newsletter.xml b/newsletter.xml index d7f07dfd7a9..092af529912 100644 --- a/newsletter.xml +++ b/newsletter.xml @@ -30,7 +30,9 @@ permalink: /newsletter.xml {%- assign cfp_epoch = cfp | date: "%s" | plus: 0 -%} {%- if cfp_epoch >= today and cfp_epoch <= horizon -%} {%- assign idx = emitted | modulo: shuffled.size -%} - {%- assign tagline = shuffled[idx] %} + {%- assign tagline = shuffled[idx] -%} + {%- assign today_midnight = site.time | date: "%Y-%m-%d" | date: "%s" | plus: 0 -%} + {%- assign days_until = cfp_epoch | minus: today_midnight | divided_by: 86400 %} {{ conf.conference | xml_escape }} {{ conf.year }} {{ site.url }}{{ site.baseurl }}/conference/{{ conf.conference | slugify: "latin" }}-{{ conf.year }}/ @@ -38,7 +40,15 @@ permalink: /newsletter.xml {{ site.time | date_to_rfc822 }} {{ site.title | xml_escape }} {{ conf.sub }} - 📍 {{ conf.place | xml_escape }} · 📅 {% translate_file dates/pretty_dates.html start=conf.start end=conf.end %}

+ +{%- if days_until <= 0 -%}🚨 Last day! +{%- elsif days_until == 1 -%}🔥 1 day left +{%- elsif days_until <= 3 -%}⏰ {{ days_until }} days left +{%- elsif days_until <= 7 -%}⏳ {{ days_until }} days left +{%- else -%}📅 {{ days_until }} days +{%- endif -%} +

+

📍 {{ conf.place | xml_escape }} · 📅 {% translate_file dates/pretty_dates.html start=conf.start end=conf.end %}

✍ CfP closes {% translate_file dates/pretty_dates.html start=cfp end=cfp %} — {{ tagline }}

]]>
{%- assign emitted = emitted | plus: 1 -%}