Skip to content

v1.0.0 Beta 30 – The Big Three-oh!

Choose a tag to compare

@paulrobertlloyd paulrobertlloyd released this 11 Oct 11:42
· 18 commits to main since this release

This release adds a number of new features, fixes a suite of bugs and adds many quality of life improvements.

Key new features include:

  • A new page post type
  • Support for profile scope in authentication flows and new userinfo endpoint
  • Ability to add multiple files at once, or pick from previously uploaded media files
  • Select syndication targets when using the share bookmarket

It also begins adding support for Microsub, initially by providing the ability to interact with channels and timelines. Install the @indiekit/endpoint-microsub plug-in to get started (a later release will include this plug-in by default).

Much of this release wouldn’t be possible without the help of @rmdes, who incorporated many of these improvements and fixes from his fork. Thanks also goes to @aciccarello for several authorisation improvements and feedback on other issues.

💟 Indiekit is supported by its community. This release was sponsored by @abhas and @sentience.

Features

  • add fromCaught method to IndiekitError (cbf3654)
  • add page post type (8f1fdbe), closes #954
  • create-indiekit: log full error if setup cancelled (f337e01)
  • create-indiekit: offer the file system content store (577ba98)
  • endpoint-auth: support profile scope and add userinfo endpoint (7a27fa6), closes #885
  • endpoint-auth: use url filter for endpoint urls (07f959e)
  • endpoint-files: upload several files at once (0c10dc7), closes #952
  • endpoint-micropub,endpoint-media: store a UUIDv7 uid on create (e1f3ae7)
  • endpoint-micropub: discover post type from its vocabulary (1878252), closes #950
  • endpoint-micropub: filter the list of posts by text and category (b792c1a)
  • endpoint-microsub: add core Microsub server with channels and timeline (b6a74a5), closes #975
  • endpoint-microsub: add localised strings (e8bc4df)
  • endpoint-posts: pre-fill the create form from url and name query parameters (2f89cd1)
  • endpoint-share: let the share form choose syndication targets (54f193e)
  • endpoint-syndicate: log full error when syndicating to targets (fcbb89b)
  • endpoint-syndicate: syndicate every post awaiting syndication (f8c7376)
  • endpoint-webmention-io: require token (e67466f)
  • frontend: choose an existing media file from the editor and file fields (4d71529)
  • frontend: replace markdown-it-prism with microlighter (2d21f8c)
  • frontend: use url filter for absolute urls in default layout (0f8640e)
  • indiekit: add a UUIDv7 backfill for posts without a uid (2581772)
  • indiekit: backfill missing UIDs before serving requests (59b0ff2)
  • indiekit: declare a collection's indexes with addCollection (df0b8f8)
  • indiekit: index post and media data on properties.uid (42fe338)
  • indiekit: log full error when getting serviceworker.js (ed98b43)
  • indiekit: simplify homepage guidance (526ed5d)
  • indiekit: show more configured endpoints in homepage guidance (5637cf4)
  • store-bitbucket: require user, repo and token (13275e7)
  • store-ftp: require user and password (5d7feaf)
  • store-gitea: require token (58136d3)
  • store-github: require token (22c8903)
  • store-gitlab: require token (65e5444)
  • store-s3: require access and secret keys (ffde16e)
  • syndicator-bluesky: make link text in post content clickable (7b38485), closes #948
  • syndicator-bluesky: require password (8c91c9f)
  • syndicator-internet-archive: require access and secret keys (ab5bb9f)
  • syndicator-mastodon: require access token (ebf6225)
  • util: paginate on properties.uid (b2a1d2f)
  • util: provide clearer debug message when connecting to MongoDB (8b8a351)
  • util: remove getObjectId helper (5827617)

Bug Fixes

  • only use a status code from an Indiekit error (1dfa574)
  • report an invalid syndicator URL instead of throwing (f553c34), closes #930
  • return 401 for GET requests with invalid bearer token (69910bf), closes #825
  • create-indiekit: check node compatibility against major and minor version (06cab9e)
  • create-indiekit: generate a Dockerfile that runs, on a patched MongoDB (46f17f1)
  • create-indiekit: handle command-line arguments (8914c57)
  • create-indiekit: resolve error when getting file contents (5fe21db)
  • create-indiekit: use correct character for configuration message (57204af)
  • endpoint-auth: accept code exchange without grant_type at /auth (d649606)
  • endpoint-auth: bind code exchange to the code’s own claims (456cd6d)
  • endpoint-auth: limit missing response_type to indieauth.com (fa1d368)
  • endpoint-auth: refuse a missing code_verifier instead of failing (b7ad28a)
  • endpoint-auth: use publication me when signing authorization code (0e900a7), closes #911
  • endpoint-files: look up files by uid so older files don’t 404 (5394361), closes #924
  • endpoint-files: only show a thumbnail for photos (19a0ced), closes #956
  • endpoint-media: normalise caught error in action controller (ba30ff4)
  • endpoint-micropub: count other posts of a type when rendering the n token (2634ac0), closes #746
  • endpoint-micropub: don’t let a client reassign a post’s uid (b5a7ce1)
  • endpoint-micropub: drop unawaited count() check that leaked an operation past the test (a354434)
  • endpoint-micropub: keep uid when deleting a post (737cb1b)
  • endpoint-micropub: localise the database error and keep post-type errors distinct (676ed0b)
  • endpoint-micropub: normalise categories on write (77a6266)
  • endpoint-micropub: normalise caught error in action controller (f4430f8)
  • endpoint-micropub: reject unconfigured post type on update, delete and undelete (057a0ac), closes #928
  • endpoint-micropub: throw a clear error reading posts without a database (5d30610)
  • endpoint-posts: handle non-Error value for syndication target (5d54559)
  • endpoint-posts: look up posts by uid so older posts don’t 404 (becdf26), closes #924
  • endpoint-syndicate: call Array.isArray when wrapping a single target (3a2b7cf)
  • endpoint-syndicate: ignore syndication values that aren’t URLs (9dcbc57), closes #932
  • endpoint-syndicate: retry targets a post has not syndicated to yet (40647cb)
  • endpoint-syndicate: syndicate posts awaiting syndication oldest first (9a4d0a4), closes #584
  • endpoint-webmention-io: cope with authors without a photo or a valid URL (98dbd80), closes #934
  • frontend: close the tabindex clause in add-another's focusable selector (47b995d)
  • frontend: don’t drop attributes after one without a value (24b659a)
  • frontend: don’t throw looking up elements that may be absent (88287f1)
  • frontend: ensure photo in card layout retains 1:1 aspect ratio (d143206)
  • frontend: handle missing values in components (1637377)
  • frontend: handle non-Error values in component error paths (7a2170e)
  • frontend: load the app script once the page is parsed (1bdd4df)
  • frontend: serve cached page on a slow network, skip cross-origin and auth requests (c4619ae), closes #936
  • indiekit: accept local redirect paths containing -, . and % (f326f60)
  • indiekit: advertise the userinfo endpoint as an absolute URL (fcad0d3)
  • indiekit: derive application URL from each request (2e20ad0)
  • indiekit: make the uid backfill resumable and concurrency-safe (8b9fb87)
  • indiekit: only send stack traces and error causes in development (5df480a)
  • indiekit: trace the uid backfill even when it’s a no-op (9058317)
  • preset-eleventy: write posts where the advertised URL resolves (0047ea8), closes #902
  • syndicator-bluesky: remove useless try/catch (10a6022)
  • syndicator-bluesky: thread replies to Bluesky posts (471577c), closes #946
  • syndicator-mastodon: remove useless try/catch (9951ad9)
  • syndicator-mastodon: thread replies to statuses on other servers (db3ed51), closes #926
  • util: return correct page when paging backwards (38fab19)
  • util: throw getting canonical URL from path without base URL (525ebe3)