From 71753b750d6e158d6205fa506eb34b910c15be7d Mon Sep 17 00:00:00 2001 From: Brian Pepple Date: Thu, 28 May 2026 12:30:26 -0400 Subject: [PATCH 1/3] Initital May 2026 blog entry --- blog/2026-06-01-may-update/index.md | 152 ++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 blog/2026-06-01-may-update/index.md diff --git a/blog/2026-06-01-may-update/index.md b/blog/2026-06-01-may-update/index.md new file mode 100644 index 0000000..cfeb20e --- /dev/null +++ b/blog/2026-06-01-may-update/index.md @@ -0,0 +1,152 @@ +--- +slug: may-2026-updates +title: May 2026 Updates +authors: [bpepple] +date: 2026-06-01 +tags: [release, api, features, infrastructure] +--- + +Here's a summary of everything that landed in Metron since the beginning of May 2026. + + + +# May 2026 News + +## Monthly Statistics + +During May the [Metron Project](https://metron.cloud/) added the following to its database: + +- Users: **TODO** +- Issues: **TODO** +- Creators: **TODO** +- Characters: **TODO** + +Thanks to everyone that contributed! + +## New Features + +### Wish List and Pull List + +The biggest addition this month is the launch of the **Wish List** and **Pull List** apps. Both lists are private to their owner, consistent with the existing User Collection, and are created automatically on first access — no setup required. + +#### Pull List + +The Pull List is the digital equivalent of a comic shop pull list: a collection of ongoing series you follow. It is accessible under `/pull-list/` on the site and fully supported via the API at `/api/pull_list/`. + +**API endpoints:** + +| Method | Endpoint | Description | +|--------|----------|-------------| +| `GET` | `/api/pull_list/` | Pull list metadata (series count, last modified) | +| `GET` | `/api/pull_list/series/` | Paginated list of series on the pull list | +| `POST` | `/api/pull_list/series/add` | Add a series (`{"series_id": 123}`) | +| `DELETE` | `/api/pull_list/series/{series_id}/remove` | Remove a series | +| `GET` | `/api/pull_list/issues/` | Upcoming issues from pull list series | + +The `/api/pull_list/issues/` endpoint is especially useful for building "what's coming out this week" views. It returns issues ordered by store date then series name, and accepts two optional date filters: + +| Parameter | Format | Description | +|-----------|--------|-------------| +| `store_date_after` | `YYYY-MM-DD` | Issues on or after this store date | +| `store_date_before` | `YYYY-MM-DD` | Issues on or before this store date | + +Each issue in the response includes the series summary, issue number, cover date, store date, and cover image. + +Adding a series is idempotent: posting a `series_id` that is already on the list returns `200 OK` with the existing entry rather than an error. + +#### Wish List + +The Wish List tracks specific issues you want to acquire, with support for priority, condition goals, budget limits, and acquisition status. It lives at `/wish-list/` on the site and is backed by the API at `/api/wish_list/`. + +**API endpoints:** + +| Method | Endpoint | Description | +|--------|----------|-------------| +| `GET` | `/api/wish_list/` | Wish list metadata (item count, last modified) | +| `GET` | `/api/wish_list/items/` | Paginated list of items | +| `POST` | `/api/wish_list/items/add` | Add an issue to the wish list | +| `POST` | `/api/wish_list/items/{item_id}/acquire` | Mark an item as acquired | +| `DELETE` | `/api/wish_list/items/{item_id}/remove` | Remove an item | + +When adding an item, only `issue_id` is required. All other fields are optional: + +```json +{ + "issue_id": 5001, + "priority": 1, + "desired_grade": "6.0", + "max_price": "500.00", + "max_price_currency": "GBP", + "notes": "First appearance of Spider-Man" +} +``` + +Priority defaults to `3` and `max_price_currency` defaults to `USD` if omitted. Like the pull list, adding an issue that is already on the wish list is idempotent — it returns `200 OK` with the existing item. + +Each item carries a **status** that moves through a simple lifecycle: + +| Status | Meaning | +|--------|---------| +| `Wanted` | Actively looking for this issue | +| `Found` | Located a copy, not yet purchased | +| `Acquired` | Purchased; a collection item has been created | + +The acquire endpoint is the key integration point between the Wish List and the User Collection. Posting to `/api/wish_list/items/{item_id}/acquire` with optional purchase details (date, price, currency, store, notes) marks the wish list item as `Acquired` and creates a corresponding `CollectionItem`. The response tells you whether the collection item was newly created or already existed: + +```json +{ + "wish_list_item_id": 42, + "collection_item_id": 987, + "created": true, + "status": "Acquired" +} +``` + +The operation is idempotent: if the issue is already in the collection, the existing collection item is left untouched and `created` returns `false`. + +## API Improvements + +### New Filter Parameters + +Several new filter parameters have been added to the Issue and Series list endpoints, making it much easier to build targeted queries: + +| Filter | Issue endpoint | Series endpoint | +|--------|---------------|-----------------| +| `creator_id` | ✓ | ✓ | +| `character_id` | ✓ | ✓ | +| `team_id` | ✓ | ✓ | +| `universe_id` | ✓ | ✓ | +| `imprint_id` | | ✓ | +| `role_id` | ✓ | ✓ | + +`role_id` supports multiple comma-separated values to filter by several roles at once. + +### `year_end` in Series List + +The Series list endpoint now includes the `year_end` field, so clients can tell at a glance whether a series is ongoing or has concluded — without needing to fetch the full detail endpoint. + +## Dependency and Tooling Upgrades + +- **Python 3.14** — the project is now running on Python's latest release. +- **Migrated from pipenv to uv** — dependency management and the container build now use [uv](https://github.com/astral-sh/uv), with a multi-stage Containerfile that keeps the final image lean and CI caching keyed to the lockfile. +- **Django 6.0.5** — upgraded from Django 5.x to the recently released Django 6 series. + +## OpenCollective + +A huge thank you to everyone who has contributed to our [Open Collective](https://opencollective.com/metron)! Your support makes a real difference in keeping the Metron Project running and growing. + +### What Your Contributions Support + +Funds from Open Collective go directly toward: + +- **Server hosting costs** - Keeping the Metron website and API available +- **Domain registration** - Annual domain name renewals +- **Future capacity increases** - Scaling resources as the database and user base grows + +All expenses are transparent and publicly viewable on our [Open Collective page](https://opencollective.com/metron), so you can see exactly where every dollar goes. + +### Support the Project + +This month we increased our server specs to better handle the growing demand, but we're still struggling to keep up with API usage. Any donations to help maintain our current API rate limits and keep the service free are greatly appreciated. Contributions of any size help ensure Metron remains a free resource for the comic book community. + +Anyway, that's everything for this month! Take care. \ No newline at end of file From 26c80d95eb3b586e3d866f19f300f1dfc0b1cb04 Mon Sep 17 00:00:00 2001 From: Brian Pepple Date: Sat, 30 May 2026 09:56:25 -0400 Subject: [PATCH 2/3] Add note about the new version of Mokarri --- blog/2026-06-01-may-update/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/blog/2026-06-01-may-update/index.md b/blog/2026-06-01-may-update/index.md index cfeb20e..a00aeb4 100644 --- a/blog/2026-06-01-may-update/index.md +++ b/blog/2026-06-01-may-update/index.md @@ -104,6 +104,8 @@ The acquire endpoint is the key integration point between the Wish List and the The operation is idempotent: if the issue is already in the collection, the existing collection item is left untouched and `created` returns `false`. +A new version of [Mokkari](https://github.com/Metron-Project/mokkari/releases/tag/v3.27.0) has been released that adds support for these new endpoints. + ## API Improvements ### New Filter Parameters @@ -147,6 +149,6 @@ All expenses are transparent and publicly viewable on our [Open Collective page] ### Support the Project -This month we increased our server specs to better handle the growing demand, but we're still struggling to keep up with API usage. Any donations to help maintain our current API rate limits and keep the service free are greatly appreciated. Contributions of any size help ensure Metron remains a free resource for the comic book community. +Any donations to help maintain our current API rate limits and keep the service free are greatly appreciated. Contributions of any size help ensure Metron remains a free resource for the comic book community. Anyway, that's everything for this month! Take care. \ No newline at end of file From 522ad0b6f2f1f402ef291d7d196ae771c5977ab8 Mon Sep 17 00:00:00 2001 From: Brian Pepple Date: Mon, 1 Jun 2026 07:47:45 -0400 Subject: [PATCH 3/3] Add statis and software wiki info --- blog/2026-06-01-may-update/index.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/blog/2026-06-01-may-update/index.md b/blog/2026-06-01-may-update/index.md index a00aeb4..25416cf 100644 --- a/blog/2026-06-01-may-update/index.md +++ b/blog/2026-06-01-may-update/index.md @@ -16,10 +16,10 @@ Here's a summary of everything that landed in Metron since the beginning of May During May the [Metron Project](https://metron.cloud/) added the following to its database: -- Users: **TODO** -- Issues: **TODO** -- Creators: **TODO** -- Characters: **TODO** +- Users: **220** +- Issues: **1,809** +- Creators: **196** +- Characters: **506** Thanks to everyone that contributed! @@ -133,6 +133,15 @@ The Series list endpoint now includes the `year_end` field, so clients can tell - **Migrated from pipenv to uv** — dependency management and the container build now use [uv](https://github.com/astral-sh/uv), with a multi-stage Containerfile that keeps the final image lean and CI caching keyed to the lockfile. - **Django 6.0.5** — upgraded from Django 5.x to the recently released Django 6 series. +## Metron Software Wiki Page + +We've added a dedicated [Software page](https://metron.cloud/wiki/software/) to the Metron wiki where developers can showcase projects built on the Metron API. + +If you've built a tool, app, or library that uses Metron's data — whether it's a reading tracker, a pull list manager, a CLI tool, or anything else — this is the place to list it. The page is intended to help users discover what the community has built and to give developers a bit of visibility. + +To get your project listed, simply edit the wiki page directly and add an entry for it. + + ## OpenCollective A huge thank you to everyone who has contributed to our [Open Collective](https://opencollective.com/metron)! Your support makes a real difference in keeping the Metron Project running and growing.