David ‘Bombe’ Roden [Sat, 7 Jan 2023 15:57:32 +0000 (16:57 +0100)]
🐛 Fix “Adventures with Eggie”
Sometimes there’s more than one image! I have been missing so much!
David ‘Bombe’ Roden [Thu, 4 Aug 2022 14:52:15 +0000 (16:52 +0200)]
✨ Add comic “Adventures with Eggie”
David ‘Bombe’ Roden [Sun, 12 Jun 2022 17:03:04 +0000 (19:03 +0200)]
🚑️ Update filter for Cyanide & Happiness
David ‘Bombe’ Roden [Fri, 21 Jan 2022 09:22:22 +0000 (10:22 +0100)]
✨ Add watcher for Chief O’Brien at Work
David ‘Bombe’ Roden [Thu, 20 Jan 2022 20:39:16 +0000 (21:39 +0100)]
✨ Add watcher for Oglaf comics
David ‘Bombe’ Roden [Thu, 20 Jan 2022 20:35:45 +0000 (21:35 +0100)]
🚧 Add comic filter for Oglaf
David ‘Bombe’ Roden [Thu, 20 Jan 2022 20:35:16 +0000 (21:35 +0100)]
✅ Add base class for comic tests
David ‘Bombe’ Roden [Wed, 27 Oct 2021 19:44:12 +0000 (21:44 +0200)]
🔒️ Update a bunch of URLs to https
David ‘Bombe’ Roden [Mon, 25 Oct 2021 19:28:11 +0000 (21:28 +0200)]
🐛 Fix broken change detection
Wow, this was a mess. Two days after the last deploy with a working change
detection I changed some code around the triggers and broke the detection. I
didn’t realize until over a year later because I have never deployed the broken
version until I made some unrelated changes.
I never liked the particular solution around the triggers keeping state and not
being pure functions. So now there are no more triggers; instead, the merging
of the states (which was done by the triggers — great misnomer there) is now
done by a merger, and the state is responsible for exposing whether it contains
a noteworthy change. The Merger and the State for a particular thing (like a
comic, or a torrent file) have to work together hand in hand here but they also
needed to do that before and it’s not really like you would use an X-Merger
with a Y-State.
The resulting changes touch pretty much everything but due to the Watcher
“shortcut” of chain creation, all .json files that only reference a Watcher do
not need to be touched which should make transition rather seamless.
David ‘Bombe’ Roden [Mon, 25 Oct 2021 19:19:18 +0000 (21:19 +0200)]
🔥 Remove file-based stuff and weather stuff
This code hasn’t been used in years, it’s time to let it go.
David ‘Bombe’ Roden [Sun, 24 Oct 2021 12:50:58 +0000 (14:50 +0200)]
🎨 Replace Sinfest filter with Kotlin version
David ‘Bombe’ Roden [Sun, 24 Oct 2021 12:49:31 +0000 (14:49 +0200)]
🎨 Replace Sinfest filter test with Kotlin version
David ‘Bombe’ Roden [Sun, 24 Oct 2021 12:46:20 +0000 (14:46 +0200)]
✨ Update Sinfest filter to current HTML
David ‘Bombe’ Roden [Sun, 24 Oct 2021 12:23:06 +0000 (14:23 +0200)]
🎨 Replace CAD filter with Kotlin version
David ‘Bombe’ Roden [Sun, 24 Oct 2021 12:20:55 +0000 (14:20 +0200)]
✨ Adapt CAD filter for new HTML, add test
David ‘Bombe’ Roden [Sun, 24 Oct 2021 11:58:12 +0000 (13:58 +0200)]
✨ Update HeldentageFilter to current HTML
David ‘Bombe’ Roden [Sun, 24 Oct 2021 11:52:06 +0000 (13:52 +0200)]
🎨 Replace HeldentageFilter with Kotlin version
David ‘Bombe’ Roden [Sun, 24 Oct 2021 11:46:43 +0000 (13:46 +0200)]
🎨 Replace test for HeldentageFilter with Kotlin version
David ‘Bombe’ Roden [Sun, 24 Oct 2021 09:52:16 +0000 (11:52 +0200)]
🐛 Fix comic elements being reordered randomly
For some reason I decided to merge the list of existing comics and the list of
new comics into a Set, thus completely getting rid of their order.
David ‘Bombe’ Roden [Sat, 23 Oct 2021 07:59:34 +0000 (09:59 +0200)]
✨ Add comic “Drugs and Wires”
David ‘Bombe’ Roden [Tue, 22 Sep 2020 17:50:22 +0000 (19:50 +0200)]
💚 Modernize build script a bit
David ‘Bombe’ Roden [Tue, 22 Sep 2020 09:19:00 +0000 (11:19 +0200)]
⬆️ Upgrade Kotlin and Gradle
David ‘Bombe’ Roden [Mon, 21 Sep 2020 23:12:14 +0000 (01:12 +0200)]
♻️ Move output generation to state
David ‘Bombe’ Roden [Mon, 21 Sep 2020 20:17:34 +0000 (22:17 +0200)]
🎨 Use StandardCharsets instead of Charset.forName
David ‘Bombe’ Roden [Mon, 21 Sep 2020 19:43:07 +0000 (21:43 +0200)]
⬆️ Upgrade kotlinx-html
David ‘Bombe’ Roden [Mon, 21 Sep 2020 18:58:32 +0000 (20:58 +0200)]
✅ Add test for AlwaysTrigger
David ‘Bombe’ Roden [Mon, 21 Sep 2020 18:52:56 +0000 (20:52 +0200)]
🔥 Remove unused parameter
David ‘Bombe’ Roden [Sun, 20 Sep 2020 16:39:01 +0000 (18:39 +0200)]
🎨 Replace BC watcher with Kotlin version
David ‘Bombe’ Roden [Sun, 20 Sep 2020 16:37:45 +0000 (18:37 +0200)]
🌐 Fix address of Business Cat
David ‘Bombe’ Roden [Sun, 20 Sep 2020 16:37:10 +0000 (18:37 +0200)]
🎨 Replace Business Cat filter and test with Kotlin versions
David ‘Bombe’ Roden [Sun, 20 Sep 2020 16:36:56 +0000 (18:36 +0200)]
fix bc
David ‘Bombe’ Roden [Sun, 20 Sep 2020 16:36:01 +0000 (18:36 +0200)]
🎨 Extract asOptional() into its own file
David ‘Bombe’ Roden [Sun, 20 Sep 2020 16:26:07 +0000 (18:26 +0200)]
✨ Update Business Cat filter
David ‘Bombe’ Roden [Sun, 20 Sep 2020 11:30:19 +0000 (13:30 +0200)]
✅ Fix Heldentage filter test
David ‘Bombe’ Roden [Sun, 20 Sep 2020 11:29:57 +0000 (13:29 +0200)]
✅ Fix comic site filter test
David ‘Bombe’ Roden [Sun, 20 Sep 2020 11:25:04 +0000 (13:25 +0200)]
🎨 Replace QC filter with Kotlin version
David ‘Bombe’ Roden [Sun, 20 Sep 2020 11:22:49 +0000 (13:22 +0200)]
🚸 Only fail a comic state if there are no strips
David ‘Bombe’ Roden [Sun, 20 Sep 2020 11:22:36 +0000 (13:22 +0200)]
✅ Add test for QC filter
David ‘Bombe’ Roden [Sun, 20 Sep 2020 11:22:20 +0000 (13:22 +0200)]
🐛 Fix QC filter
David ‘Bombe’ Roden [Sun, 20 Sep 2020 11:08:33 +0000 (13:08 +0200)]
🎨 Replace QC watcher with Kotlin version
David ‘Bombe’ Roden [Sun, 20 Sep 2020 11:06:42 +0000 (13:06 +0200)]
🔒 Use HTTPS to get Questionable Content
David ‘Bombe’ Roden [Tue, 15 Sep 2020 21:36:47 +0000 (23:36 +0200)]
✨ Add watcher for Soggy Cardboard
David ‘Bombe’ Roden [Tue, 15 Sep 2020 21:34:01 +0000 (23:34 +0200)]
✨ Add comic filter for Soggy Cardboard
David ‘Bombe’ Roden [Wed, 25 Jul 2018 18:30:59 +0000 (20:30 +0200)]
Add watcher for “The Monster under the Bed”
David ‘Bombe’ Roden [Wed, 25 Jul 2018 18:23:14 +0000 (20:23 +0200)]
Add filter for “The Monster under the Bed”
David ‘Bombe’ Roden [Mon, 23 Jul 2018 19:34:51 +0000 (21:34 +0200)]
Upgrade Kotlin version
David ‘Bombe’ Roden [Tue, 14 Nov 2017 20:25:21 +0000 (21:25 +0100)]
Update Kotlin to version 1.1.60
David ‘Bombe’ Roden [Sat, 11 Nov 2017 09:38:13 +0000 (10:38 +0100)]
Fix Gradle depreciation warning
David ‘Bombe’ Roden [Sat, 11 Nov 2017 09:37:11 +0000 (10:37 +0100)]
Replace LICD filter with Kotlin version, add test
David ‘Bombe’ Roden [Sat, 11 Nov 2017 09:34:06 +0000 (10:34 +0100)]
Upgrade Gradle version
David ‘Bombe’ Roden [Sat, 11 Nov 2017 09:33:56 +0000 (10:33 +0100)]
Upgrade Kotlin version
David ‘Bombe’ Roden [Wed, 14 Jun 2017 06:11:15 +0000 (08:11 +0200)]
Replace SMBC filter test with Kotlin version
David ‘Bombe’ Roden [Wed, 14 Jun 2017 06:04:24 +0000 (08:04 +0200)]
Use static imports
David ‘Bombe’ Roden [Tue, 13 Jun 2017 21:19:32 +0000 (23:19 +0200)]
Update comic filter for SMBC
David ‘Bombe’ Roden [Sun, 9 Apr 2017 07:18:19 +0000 (09:18 +0200)]
Add another size to the blacklist
David ‘Bombe’ Roden [Fri, 7 Apr 2017 16:11:46 +0000 (18:11 +0200)]
Add one more size to size blacklist
David ‘Bombe’ Roden [Wed, 5 Apr 2017 17:44:14 +0000 (19:44 +0200)]
Add blacklist filter for certain sizes
David ‘Bombe’ Roden [Wed, 5 Apr 2017 17:43:40 +0000 (19:43 +0200)]
Use Kotlin 1.1.1
David ‘Bombe’ Roden [Tue, 18 Oct 2016 20:14:20 +0000 (22:14 +0200)]
Use fallback queries for accessing the pirate bay
David ‘Bombe’ Roden [Tue, 18 Oct 2016 20:08:13 +0000 (22:08 +0200)]
Add fallback query
David ‘Bombe’ Roden [Wed, 1 Jun 2016 05:10:25 +0000 (07:10 +0200)]
Fix date parsing
David ‘Bombe’ Roden [Mon, 30 May 2016 17:13:50 +0000 (19:13 +0200)]
Set recent jacoco plugin version
David ‘Bombe’ Roden [Mon, 30 May 2016 17:11:01 +0000 (19:11 +0200)]
Remove duplicate jacoco plugin
David ‘Bombe’ Roden [Mon, 30 May 2016 17:01:00 +0000 (19:01 +0200)]
Add jacoco plugin
David ‘Bombe’ Roden [Mon, 30 May 2016 16:33:44 +0000 (18:33 +0200)]
Use shorter getter annotation syntax
David ‘Bombe’ Roden [Mon, 30 May 2016 04:33:06 +0000 (06:33 +0200)]
Don’t repeat header with every line
David ‘Bombe’ Roden [Sun, 29 May 2016 19:02:32 +0000 (21:02 +0200)]
Use string interpolation
David ‘Bombe’ Roden [Sun, 29 May 2016 19:00:15 +0000 (21:00 +0200)]
Show optional columns
David ‘Bombe’ Roden [Sun, 29 May 2016 18:00:09 +0000 (20:00 +0200)]
Use a single state and trigger for weather services
David ‘Bombe’ Roden [Sun, 29 May 2016 17:35:20 +0000 (19:35 +0200)]
Use a single hour state for all weather services
David ‘Bombe’ Roden [Sat, 28 May 2016 16:31:36 +0000 (18:31 +0200)]
Fix class name
David ‘Bombe’ Roden [Sat, 28 May 2016 16:28:36 +0000 (18:28 +0200)]
Add watcher for wetter.de
David ‘Bombe’ Roden [Sat, 28 May 2016 16:24:28 +0000 (18:24 +0200)]
Add wetter.de trigger
David ‘Bombe’ Roden [Sat, 28 May 2016 15:49:14 +0000 (17:49 +0200)]
Add parser for wetter.de
David ‘Bombe’ Roden [Sat, 28 May 2016 14:15:35 +0000 (16:15 +0200)]
Move WindDirection to parent package
David ‘Bombe’ Roden [Sat, 28 May 2016 12:52:39 +0000 (14:52 +0200)]
Annotate Filter interface with @NotNull
David ‘Bombe’ Roden [Sat, 28 May 2016 07:35:56 +0000 (09:35 +0200)]
Include whitespace at the end of each CSS line
David ‘Bombe’ Roden [Sat, 28 May 2016 07:35:34 +0000 (09:35 +0200)]
Use characters instead of CSS transform to display arrows
David ‘Bombe’ Roden [Sat, 28 May 2016 07:22:24 +0000 (09:22 +0200)]
Use arrows to display wind direction
David ‘Bombe’ Roden [Sat, 28 May 2016 06:49:33 +0000 (08:49 +0200)]
Fix and improve table display
David ‘Bombe’ Roden [Fri, 27 May 2016 22:22:11 +0000 (00:22 +0200)]
Add test for missing rain amount
David ‘Bombe’ Roden [Fri, 27 May 2016 22:18:33 +0000 (00:18 +0200)]
Use German abbreviations for cardinal directions
David ‘Bombe’ Roden [Fri, 27 May 2016 22:15:47 +0000 (00:15 +0200)]
Parse HTML from HTTP request before processing it
David ‘Bombe’ Roden [Fri, 27 May 2016 22:11:41 +0000 (00:11 +0200)]
Make wetter.com state JSON-serializable
David ‘Bombe’ Roden [Fri, 27 May 2016 22:11:11 +0000 (00:11 +0200)]
Use correct timezone in tests
David ‘Bombe’ Roden [Fri, 27 May 2016 05:35:38 +0000 (07:35 +0200)]
Add watcher that gets Hamburg’s weather
David ‘Bombe’ Roden [Fri, 27 May 2016 05:31:59 +0000 (07:31 +0200)]
Add wetter.com trigger
David ‘Bombe’ Roden [Fri, 27 May 2016 05:31:41 +0000 (07:31 +0200)]
Fix whitespace
David ‘Bombe’ Roden [Fri, 27 May 2016 05:29:07 +0000 (07:29 +0200)]
wetter.com state can iterate over its hour states
David ‘Bombe’ Roden [Fri, 27 May 2016 05:25:34 +0000 (07:25 +0200)]
Remove debug output
David ‘Bombe’ Roden [Fri, 27 May 2016 05:24:44 +0000 (07:24 +0200)]
Use zoned date time instead of local
David ‘Bombe’ Roden [Thu, 26 May 2016 16:04:58 +0000 (18:04 +0200)]
Add unit test for wetter.com state
David ‘Bombe’ Roden [Thu, 26 May 2016 06:03:06 +0000 (08:03 +0200)]
Extract inner classes, some cleanups
David ‘Bombe’ Roden [Wed, 25 May 2016 20:36:26 +0000 (22:36 +0200)]
Move package to new structure
David ‘Bombe’ Roden [Wed, 25 May 2016 20:34:30 +0000 (22:34 +0200)]
Add filter and state for wetter.com
David ‘Bombe’ Roden [Mon, 23 May 2016 04:51:40 +0000 (06:51 +0200)]
Move Savoy ticker filter to its package
David ‘Bombe’ Roden [Wed, 30 Mar 2016 12:41:53 +0000 (14:41 +0200)]
Rename test data
David ‘Bombe’ Roden [Wed, 30 Mar 2016 11:47:57 +0000 (13:47 +0200)]
Add unit test for pirate bay filter
David ‘Bombe’ Roden [Sat, 24 Oct 2015 08:41:36 +0000 (10:41 +0200)]
Use The Pirate Bay’s .onion hostname
David ‘Bombe’ Roden [Sat, 24 Oct 2015 08:34:09 +0000 (10:34 +0200)]
Use proxy to access The Pirate Bay