Commits
July 2026:
- static_site_tests: allow requirements.txt at the top level
e5e2f88· 20 July · +11, −5 - javascript: add code to help with sorting
cd8d40e· 19 July · +394, −12 - javascript: add code to help with pagination
1a0e9e7· 19 July · +279, −3 - javascript: create a <chives-video> component
675908a· 19 July · +386, −8 - all: start publishing front-end code incl chives-image
6321762· 18 July · +914, −20 - media: rather than preserving the UTF-8 BOM, just discard it
cefb712· 17 July · +40, −10 - browser_fixtures: make browser be session-scoped; improve docs
108ddb5· 16 July · +58, −7 - media: fix a bug with byte order marks in SRT files
76d0c27· 16 July · +58, −1 - README, CONTRIBUTING: improve the description of the project
037db4b· 16 July · +55, −62 - chives: add a function/CLI command to convert SRT to VTT; plus site tests
c066caf· 13 July · +217, −1
June 2026:
- fetch: Use file signatures to improve image format detection
e644df5· 27 June · +3121, −3 - scripts: switch from mypy to ty for type checking
9ae8db3· 1 June · +12, −21
May 2026:
- static_sites: remove automatic Playwright testing; move to browser_fixtures
4be521a· 31 May · +257, −138 - .github: remove some now-unused GitHub Actions config
45a0d2d· 17 May · −92 - CHANGELOG: fix an outdated link to my tils/notes
3caada8· 17 May · +1, −1 - urls: remove the `app=desktop` query parameter from YouTube URLs
e27fae7· 17 May · +11, −4 - text: add a `coloured` function to print text with ANSI escape codes
a318488· 14 May · +57, −2 - tests: add an additional test case for smartify
37bd7f6· 13 May · +1 - scripts: tidy up the reporting of 100% coverage
acdd733· 13 May · +12, −1 - scripts: remove pytest-cov dependency
6d798d5· 13 May · +7, −10 - smartypants: remove some leftover debugging code
1308f4a· 9 May · +5, −2 - text: remove the `smartypants` dependency
7452067· 9 May · +366, −43 - static_site_tests: remove the `rapidfuzz` dependency
d7cced9· 9 May · +30, −19 - chives/urls: import `chives.fetch` conditionally
5a2876d· 5 May · +7, −3 - CHANGELOG: write an entry for v35
4ffb5ec· 5 May · +5, −1 - urls: don't import certifi unless explicitly required
412a0b0· 5 May · +2, −2 - media: ensure tint colours never have ANSI escape codes
9e34ade· 5 May · +8, −3
April 2026:
- scripts: add my standard test runner
751b5a6· 30 April · +24, −11 - fetch: improve the code based on my blog post review
5201340· 23 April · +18, −36 - Merge pull request #17 from alexwlchan/less-ruff-config
ca6964e· 16 April · +74, −21 - tests: example.com is fixed, so use a different site for SSL errors
e8ef8bc· 16 April · +47 - pyproject.toml: document my remaining Ruff lints
da2d221· 16 April · +5, −1 - pyproject.toml: document what Ruff rule D212 is
2290f95· 16 April · +3, −1 - all: fix Ruff lint D401 (non-imperative-mood)
b1fd6a3· 16 April · +21, −21 - text: use Smartypants to handle the quote entities
f5418eb· 11 April · +4, −3 - dev_requirements: remove keyring dependency
d102b6f· 11 April · +4, −17 - fetch: improve URL handling for URLs with existing query params
aac4328· 11 April · +70, −16 - fetch: remove the now-unused `fetch_image` function
1b2da07· 10 April · +55, −341 - fetch: add a `download_image` function
9881a6a· 1 April · +218, −39
March 2026:
- dev_requirements: switch from twine to uv for publishing to PyPI
22643ed· 31 March · +5, −51 - urls: remove the `hyperlink` dependency
ba24dec· 31 March · +961, −49 - fetch: add some helper functions for calling HTTP methods
644f388· 30 March · +719, −15 - all: add a `text` sub-package with SmartyPants formatting
6aad8e3· 29 March · +75, −4 - CHANGELOG: bump to v28
7386d03· 28 March · +5, −1 - Merge pull request #16 from alexwlchan/remove-nitrate
32c86b3· 28 March · +1187, −231 - all: remove the silver-nitrate and httpx dependencies
7fd9cd0· 27 March · +1187, −228 - pyproject.toml: remove some vestigial setup data
32ca58f· 27 March · −3
February 2026:
- CHANGELOG: add a changelog entry for v27
7b43a22· 28 February · +4 - static_site_tests: browser should be a function-scoped fixture
48e14d7· 28 February · +7, −3 - static_site_tests: allow reusing the browser fixture
7870242· 28 February · +16, −11 - static_site_tests: fix some bugs in the Playwright testing
14b1d8b· 28 February · +4, −3 - static_site_tests: ensure deterministic test ordering
fc5f1bf· 28 February · +7, −3 - Merge pull request #15 from alexwlchan/playwright
d507b13· 28 February · +170, −40 - static_site_tests: add page testing with Playwright
e616996· 28 February · +170, −40 - Merge pull request #14 from alexwlchan/pytest-generate
562176a· 28 February · +118, −87 - .github: fix installation of ffprobe
811a772· 28 February · +1, −1 - tests: switch to using pytester to test the test suite
6c1cb05· 28 February · +117, −86 - media: change subtitles from a str to a list
eecb946· 20 February · +25, −8
January 2026:
- urls: remove the `start_radio` parameter in `clean_youtube_url()`
306f294· 11 January · +10, −1
December 2025:
- Merge pull request #13 from alexwlchan/now
1902bc3· 22 December · +61, −19 - Add a method to return the current timestamp
291c7bc· 22 December · +61, −19 - Parallelise the `test_no_videos_are_av1` test
8d5fb3a· 10 December · +16, −6 - Allow passing both `width` and `height` as part of `ThumbnailConfig`
8476cf4· 9 December · +12, −15 - Expose `get_tint_colour` as a public function
76e9021· 8 December · +8, −3 - Account for EXIF orientation in image width/height
281f405· 7 December · +35, −10 - Defining a list of tags is now optional
099b303· 6 December · +10, −4 - Fix the ruff lints; remove dependency
f27bca6· 6 December · +16, −12 - Improve the error message on failed assertions
e1bc6bf· 6 December · +15, −7 - Ignore a few more files and folders
165514b· 6 December · +17, −3 - Merge pull request #12 from alexwlchan/fuzzy-tag-matching
ab7365b· 6 December · +93, −11 - Add standard tests for fuzzy tag matching
44efa84· 6 December · +93, −11 - Merge pull request #11 from alexwlchan/static-site-test-suite
bed1321· 6 December · +397, −11 - Add a set of standard tests for static sites
fd73ef1· 6 December · +397, −11 - Merge pull request #10 from alexwlchan/is-url-safe
3bd0cd7· 5 December · +35, −1 - Add an `is_url_safe()` function
3bc2ade· 5 December · +35, −1 - Merge pull request #9 from alexwlchan/media-entities
a9bcefa· 5 December · +838, −15 - Add support for media entities
d6dde2c· 5 December · +838, −15 - Merge pull request #8 from alexwlchan/is-mastodon-url
4298500· 4 December · +482, −5 - Add an `is_mastodon_host()` function for detecting Mastodon instances
17390b5· 4 December · +482, −5 - Merge pull request #7 from alexwlchan/parse-tumblr-url
98013cb· 3 December · +56, −2 - Add a function for parsing Tumblr post URLs
34a5049· 3 December · +56, −2 - Merge pull request #6 from alexwlchan/mastodon-urls
a67bf25· 3 December · +77, −2 - Add a function for parsing Mastodon post URLs
4e2cf06· 3 December · +77, −2 - Merge pull request #5 from alexwlchan/convert-to-utc
05e6b41· 1 December · +8, −1 - Convert timestamps to UTC in `reformat_date`
6063cf9· 1 December · +8, −1
November 2025:
- Rename `timestamps` to `dates`
689a15f· 29 November · +7, −3 - Merge pull request #4 from alexwlchan/add-youtube-stuff
5f67edc· 29 November · +57, −23 - Add a "clean YouTube URL" function and "urls" extra
6855b1a· 29 November · +57, −23 - remember to bump the version!
d12e051· 28 November · +1, −1 - Merge pull request #2 from alexwlchan/is-av1-video
1a34365· 28 November · +52, −2 - Add is_av1_video()
c10935a· 28 November · +52, −2 - tweak the pyproject name
e00fa6a· 28 November · +1, −1 - Merge pull request #1 from alexwlchan/timestamps
9d6790f· 28 November · +204, −10 - Add all my code for dealing with timestamps
44fe747· 28 November · +204, −10 - don't run interrogate in github-actions
acfe798· 28 November · −3 - initial commit with code
cfd9330· 28 November · +314 - initial commit
521928e· 28 November · +1