5Improve the URL-handling in
`chives.fetch`; in particular improve the case where you call
`fetch_url(url, params)` with a URL that already has some query parameters or a fragment.
9Remove the
`fetch_image` function from
`chives.fetch`; either use
`fetch_url` or
`download_image`.
13Add a
`download_image` function to
`chives.fetch`.
17Remove the
`hyperlink` dependency.
21Add a
`chives.fetch` package which has some helper functions for making HTTP requests using the standard library.
25Add a
`chives.text` package which exports a
`smartify()` function for applying SmartyPants-style formatting to a string -- adding curly quotes and smart dashes.
29Remove the httpx dependency in
`chives.urls`.
33Don't reuse the browser fixture between tests.
37Extract the
`browser` fixture as a standalone fixture rather than binding it to a class, so it can be reused across multiple test suites.
41Change the type of
`StaticSiteTestSuite.pages_to_check` from
`set` to
`list` to ensure consistent ordering of parametrised tests.
43Fix a bug when testing URLs with query parameters.
47In
`StaticSiteTestSuite`, add testing with [
Playwright](
https://playwright.dev) that checks static websites render correctly.
49**Breaking change:** the site root must now be specified as a classmethod
`get_site_root()` rather than a
`site_root` fixture.
53Change the format of
`VideoEntity.subtitles` to be a list of
`SubtitlesEntity`, so a single video can have multiple subtitles.
57Remove the
`start_radio` parameter in
`clean_youtube_url()`.
61Add a method
`dates.now()` to return the current time in the timestamp used by all my static sites.
65Use concurrency in
`test_no_videos_are_av1`, which can make it faster for
66larger media collections.
70Allow passing both
`width` and
`height` as part of
`ThumbnailConfig`, to constrain a thumbnail to a bounding box.
74Expose
`get_tint_colour()` as a public function from
`chives.media`.
78Account for [
EXIF orientation](
https://alexwlchan.net/til/2024/photos-can-have-orientation-in-exif/) when getting the width/height of image entities.
82Don't require defining
`list_tags_in_metadata()` in projects that don't use tags.
86Fix a bunch of lints from ruff; remove an unused dependency.
90Improve the error message on failed assertions in
`StaticSiteTestSuite`.
94Mark a couple more folders/files as ignored in
`StaticSiteTestSuite`.
98Add checks for fuzzy tag matching to
`StaticSiteTestSuite`.
102Add a new class
`StaticSiteTestSuite` which runs my standard set of tests for a static site, e.g. checking every file is saved, checking timestamps use the correct format.
106Add a new
`is_url_safe()` function for checking if a path can be safely used in a URL.
110This adds three models to
`chives.media`:
`ImageEntity`,
`VideoEntity`, and
`ImageEntity`.
111These have all the information I need to show an image/video in a web page.
113It also includes functions
`create_image_entity` and
`create_video_entity` which construct instances of these models.
117Add the
`is_mastodon_host()` function.
121Add the
`parse_tumblr_post_url()` function.
125Add the
`parse_mastodon_post_url()` function.
129When calling
`reformat_date()`, ensure all dates are converted to UTC.
133Rename
`chives.timestamps` to
`chives.dates`.
137Add the
`clean_youtube_url()` function and
`urls` extra.
138Rearrange the package structure slightly, to allow optional dependencies.
142Add the
`is_av1_video()` function for [
detecting AV1-encoded videos](
https://alexwlchan.net/2025/detecting-av1-videos/).
146Initial release. Included functions:
148* `date_matches_any_format`
149* `date_matches_format`