Commit graph www/content
Author SHA1 Message Date
8745b246e6 Vendor ical.js instead of loading it from unpkg.com
The upcoming events table pulled its ICS parser straight from a CDN with
`import ICAL from "https://unpkg.com/ical.js/dist/ical.min.js"`. That sends
every visitor of the start page to unpkg.com, which hands their IP address and
user agent to a third party before any of our own code runs. The URL is not
even pinned to a version, so whatever ical.js publishes next is executed on our
site without anybody looking at it, and the start page silently breaks when the
CDN is unreachable.

Check the parser into `assets/js/vendor/` and let Hugo bundle it. This is what
`js.Build` is for: it runs the esbuild that is built into Hugo, so it resolves
the import at build time and needs no node_modules and no extra tooling in the
build environment. The result is minified and fingerprinted like the other
scripts of the site, and the script tag carries a subresource integrity hash.

Since the bundle now has a content hash in its name, its URL cannot be written
by hand in the markdown any more. Move the table and the script tag into an
`upcoming` shortcode, which is the same pattern `calendar.html` already uses,
and move `upcoming.js` from `static/` to `assets/` so Hugo can process it.

The vendored file is the unminified `dist/ical.js` of the pinned release: it
carries the MPL-2.0 header and is the source form of what we ship, and Hugo
minifies it for delivery anyway. `assets/js/vendor/README.md` records the
version, where it came from and how to update it.

The built bundle renders the same table as before, checked against
https://berlin.ccc.de/calendars/all.ics.

Fixes: c28f04c6e8 ("switch to ics files; make calendars work; fix some minor issues")
Assisted-by: Claude:claude-opus-5
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-22 21:22:11 +02:00
c28f04c6e8
switch to ics files; make calendars work; fix some minor issues 2026-08-12 02:01:58 +02:00
3afd801344 Merge pull request '2026_08_23_Aktionstag_gegen_Ueberwachung' (#49) from aprl/www:2026_08_23_Aktionstag_gegen_Ueberwachung into staging
All checks were successful
deploy blog / deploy (push) Successful in 1m14s
Reviewed-on: #49
2026-08-11 21:39:38 +02:00
April John
9b8fbc0106 Text natürlicher formuliert, Gedankenstriche entfernt
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 21:34:13 +02:00
April John
8b4f6d3c95 Aktionstag gegen Überwachung 2026-08-23: Veranstaltung + Ankündigungspost
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 21:16:19 +02:00
42f999443f Merge pull request 'diday-end-recurrence' (#47) from hauke/www:diday-end-recurrence into staging
All checks were successful
deploy blog / deploy (push) Successful in 1m0s
Reviewed-on: #47
2026-07-05 00:18:48 +02:00
d8773f4f6f Weise auf Ausfall des DI.Day am 5. Juli im CCCB hin
Der DI.Day findet am 5. Juli 2026 nicht im Chaos Computer Club Berlin
statt. Der neue Blog-Eintrag informiert darüber und verweist auf die
alternativen Berliner DI.Day-Veranstaltungen (c-base, Stadtschloss
Moabit).

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-07-04 23:41:25 +02:00
Bruno Ranieri
0318a0496a fix typo 2026-07-04 23:37:19 +02:00
1130d7eef0 Beende die Di.Day-Reihe nach dem 3. Mai 2026
Der Digital Independence Day findet ab Juli 2026 nicht mehr im
zweimonatlichen Turnus statt. Mit UNTIL in der RRULE endet die
Wiederholung nach dem letzten Termin am 3. Mai 2026, sodass keine
künftigen Instanzen mehr in den Kalendern (all.ics,
veranstaltungen/index.ics) und in der Terminübersicht erscheinen.

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-07-04 23:35:50 +02:00
Bruno Ranieri
bf1de4633b remove did-post and update did-page 2026-07-04 23:32:57 +02:00
Bruno Ranieri
175c15be11 wip 1 2026-06-19 01:37:32 +02:00
Bruno Ranieri
5cbeeab329 figure definition 2026-06-19 01:28:39 +02:00
Bruno Ranieri
781bda1674 Post DiDay 2026-07-05 2026-06-19 01:07:53 +02:00
3261862f52 Merge pull request 'Korrigiere Link auf Club Discordia und Rechtschreibfehler.' (#31) from hauke/www:fix-discordia-links into staging
All checks were successful
deploy blog / deploy (push) Successful in 1m16s
Reviewed-on: #31
2026-05-07 09:29:47 +02:00
1cda263641 Merge pull request 'Korrigiere Datum des Neujahrsempfangs und entferne kaputte rrule.' (#32) from hauke/www:fix-nje-date into staging
Some checks are pending
deploy blog / deploy (push) Waiting to run
Reviewed-on: #32
2026-05-07 09:29:28 +02:00
e36b498092 Merge pull request 'Füge DI.Day als Veranstaltung hinzu.' (#33) from hauke/www:diday into staging
Some checks are pending
deploy blog / deploy (push) Waiting to run
Reviewed-on: #33
2026-05-07 09:29:02 +02:00
430662fa44 Füge DI.Day als Veranstaltung hinzu.
Der Berliner Di.Day (Digital Independence Day) findet jeden ersten
Sonntag im Monat im Wechsel zwischen CCCB (ungerade Monate) und xHain
(gerade Monate) statt. Im Kalender erscheinen nur die CCCB-Termine.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-06 02:01:22 +02:00
aebd59d283 OpenWrt Stammtisch: Stelle auf vierteljährlichen Rhythmus um.
Das Treffen findet ab November 2025 nur noch jeden 3. Mittwoch
im Februar, Mai, August und November statt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-03 15:42:35 +02:00
b27b3899ce Korrigiere Link auf Club Discordia und Rechtschreibfehler.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-03 15:41:51 +02:00
89f6c9198d Korrigiere Datum des Neujahrsempfangs und entferne kaputte rrule.
Der dtstart stand auf 2025 statt 2026, und die rrule "FREQ=MOTHLY"
enthielt einen Tippfehler, sodass das Event nicht im Kalender auftauchte.
Der Neujahrsempfang ist ein Einzeltermin und braucht keine rrule.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-03 15:41:23 +02:00
fluepke
607da4c5fe Füge Datengarten 116 wirklich hinzu.
All checks were successful
deploy blog / deploy (push) Successful in 1m6s
2026-04-14 17:01:08 +02:00
fluepke
b218e16d32 Füge Datengarten 116 hinzu.
All checks were successful
deploy blog / deploy (push) Successful in 1m18s
2026-04-14 16:36:32 +02:00
flip
c3ca749422 trying imgur...
All checks were successful
deploy blog / deploy (push) Successful in 1m16s
2026-03-22 18:41:10 +01:00
flip
9c5d321bdf retrigger deploy
All checks were successful
deploy blog / deploy (push) Successful in 1m6s
2026-03-21 14:47:57 +00:00
flip
d9be56d9a6 added Plakat
Some checks failed
deploy blog / deploy (push) Failing after 5m1s
2026-03-21 14:38:08 +00:00
flip
e8824eda17 was the image size the problem?
All checks were successful
deploy blog / deploy (push) Successful in 57s
2026-03-21 11:33:13 +00:00
flip
b65cc4579c was show-hero the problem?
All checks were successful
deploy blog / deploy (push) Successful in 58s
2026-03-21 11:28:33 +00:00
flip
594376aa2e was the ! the problem?
All checks were successful
deploy blog / deploy (push) Successful in 1m2s
2026-03-21 11:23:01 +00:00
flip
ec6ec4560d testing feature picture, NJE 2
All checks were successful
deploy blog / deploy (push) Successful in 1m0s
2026-03-21 11:14:20 +00:00
flip
f0d682e90a testing feature picture, NJE
All checks were successful
deploy blog / deploy (push) Successful in 1m17s
2026-03-21 10:55:40 +00:00
flip
e4fe1318da modifying neujahresempfang 2026-03-16 12:34:31 +00:00
flip
aaa3464521 removed date from NJE pending plenum
All checks were successful
deploy blog / deploy (push) Successful in 1m23s
2026-03-10 16:39:19 +01:00
flip
cb902597e2 added NJE calendar event
All checks were successful
deploy blog / deploy (push) Successful in 1m13s
2026-03-06 12:14:46 +01:00
flip
4a780a7713 added NJE
All checks were successful
deploy blog / deploy (push) Successful in 1m23s
2026-03-06 00:51:56 +01:00
64f92c900b content/post/2026-03-01_di_day/index.md aktualisiert
All checks were successful
deploy blog / deploy (push) Successful in 1m9s
2026-02-22 19:53:03 +01:00
a623d1e66c content/post/2026-03-01_di_day/index.md aktualisiert
Some checks failed
deploy blog / deploy (push) Failing after 1m7s
2026-02-22 19:50:10 +01:00
764110582f content/post/2026-03-01_di_day/index.md aktualisiert
Some checks failed
deploy blog / deploy (push) Failing after 1m17s
2026-02-22 19:46:24 +01:00
5b1c05c476 content/post/2026-03-01_di_day/index.md aktualisiert
Some checks failed
deploy blog / deploy (push) Has been cancelled
2026-02-22 19:33:17 +01:00
86b359a478 content/post/2026-03-01_di_day/index.md aktualisiert
All checks were successful
deploy blog / deploy (push) Successful in 59s
Datum korrigiert:  ~~Jan~~  --> Mrz
2026-02-22 19:20:28 +01:00
1887e5b614 Merge branch 'production' into staging
All checks were successful
deploy blog / deploy (push) Successful in 1m7s
2026-02-22 19:17:00 +01:00
28281e8686 content/post/2026-03-01_di_day/index.md aktualisiert
Some checks failed
deploy blog / deploy (push) Has been cancelled
2026-02-22 19:16:12 +01:00
3406c9a81e revert 85431677bb
All checks were successful
deploy blog / deploy (push) Successful in 1m16s
revert Merge pull request 'content/post/2026-03-01_di_day/index.md aktualisiert' (#17) from staging into production

Reviewed-on: #17
2026-02-22 19:15:18 +01:00
410738c4ac content/post/2026-03-01_di_day/index.md aktualisiert
All checks were successful
deploy blog / deploy (push) Successful in 58s
2026-02-22 18:42:14 +01:00
Bruno Ranieri
d261544349 add Post for di.day 2026-03-01
All checks were successful
deploy blog / deploy (push) Successful in 1m19s
2026-02-22 18:15:44 +01:00
e6de2cd933
Update content/post/2025-dg-call-for-action/index.md 2026-02-15 20:16:45 +01:00
fluepke
9864b78c61 Update mail2025 -> mail2026 2026-02-09 22:09:43 +01:00
a4cf8317e2 impressum.md: fix typos 2025-11-26 21:27:49 +01:00
82ecdcc114 Merge branch 'production' into staging 2025-11-23 17:29:10 +01:00
fluepke
f82d0aa08a Add Datengarten #115 2025-11-23 17:25:32 +01:00
Bruno Ranieri
ec9178766b fix falsche url 2025-10-05 18:48:51 +02:00