Follow buttons here act as you, not as @admin.
| Label | Kind | State | Action |
|---|---|---|---|
| indiekit-demo.rmendes.net | source | — | — |
| fediversereport.com | source | — | — |
| wedistribute.org | source | — | — |
| hnrss.org | source | — | — |
| hnrss.org | source | — | — |
| hnrss.org | source | — | — |
| hnrss.org | source | — | — |
| hnrss.org | source | — | — |
| hnrss.org | source | — | — |
| hnrss.org | source | — | — |
| hnrss.org | source | — | — |
| 9to5google.com | source | — | — |
| hnrss.org | source | — | — |
| hnrss.org | source | — | — |
| cvefeed.io | source | — | — |
| thebeatcommunity.com | source | — | — |
| contabo-status.com | source | — | — |
| www.techdirt.com | source | — | — |
| beehaw.org | source | — | — |
| beehaw.org | source | — | — |
Pull request (OPEN) · PR #983 fix(endpoint-micropub): trim, drop empty and fold duplicate categories · @rmdes
Fixes #982.
getCategoryProperty trims each value, drops empties, and folds case-insensitive duplicates onto the first spelling given; a category left empty is removed. No canonical casing against the publication’s own category list, which would be a separate decision.
Three unit tests and one integration test, all seen failing first.
This is one of the last six changes ported from my fork; nothing here needs to hold a release.
Issue ouverte · Issue #982 Micropub stores categories as typed: whitespace, empty values and case duplicates become distinct categories · @rmdes
normaliseProperties in packages/endpoint-micropub/lib/jf2.js normalises content (line 79) and location (line 83) but passes category through untouched.
Reproduction: POST /micropub with h=entry&category=Cheese&category=+cheese+&category=, then q=source&url=…: category is ["Cheese", " cheese ", ""], three categories on the site for one.
Pull request (OPEN) · PR #981 feat(endpoint-share): offer syndication targets on the share form · @rmdes
Fixes #980.
A checkbox per configured syndication target, built the way the post form builds them (a target whose info cannot be read is shown disabled with the reason). Chosen targets are sent to Micropub as separate mp-syndicate-to values, since URLSearchParams would join an array with commas, and stay checked when the form is re-rendered on error.
Three integration tests: the checkboxes render, several targets reach the post as separate values, and a chosen target stays checked on a 422. README documents it.
This is one of the last six changes ported from my fork; nothing here needs to hold a release.
Issue ouverte · Issue #980 Share form offers no way to choose syndication targets · @rmdes
The share form (packages/endpoint-share/views/share.njk) has no mp-syndicate-to field, and share.js:46 posts the form to Micropub as-is, so a post made from the share page or bookmarklet is never syndicated. The post form offers a checkbox per target (packages/endpoint-posts/views/post-form.njk:21).
Reproduction: configure a syndicator, open /share, publish: no syndication target is offered and the post is created without mp-syndicate-to.
Commentaire de pull request · PR #944 feat(endpoint-microsub): PR 1 - Core Microsub server with channels and timeline · @paulrobertlloyd
Thanks for much for (the first part of) this contribution @rmdes – we got there eventually! I’ll release this in Beta 30, with the following PRs to be included in future beta releases. 🚀
Commit sur main · b6a74a5 · @rmdes
…imeline * feat(endpoint-microsub): add core Microsub server with channels and timeline This PR adds the foundational Microsub endpoint with: Microsub API: - GET/POST ?action=channels - list, create, update, delete, reorder channels - GET/POST ?action=timeline - list items, mark read/unread, remove Storage: - MongoDB collections for channels and items - Cursor-based pagination for timeline - Per-user channel ordering and read state tracking Features: - Follows Microsub spec for channel and timeline actions - Testable with existing Microsub clients (Monocle, Indigenous, etc.) - Multi-user support via userId from session/token This is PR 1 of 6 for the Microsub implementation. Future PRs will add: - PR 2: Feed discovery and subscription - PR 3: Feed fetching and parsing - PR 4: Reader UI - PR 5: Compose and Micropub integration - PR 6: Settings and filtering Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com * ci: add microsub endpoint to development config * feat(endpoint-microsub): add plug-in icon * fix(endpoint-microsub): use same mongodb version as indiekit The plug-in declared mongodb ^6.0.0 while indiekit declares ^7.4.0, so npm installed a nested copy of the driver. ObjectId values created by the plug-in came from bson 6 but were passed to collections served by bson 7, which threw BSONVersionError in markItemsRead, markItemsUnread and removeItems. * style(endpoint-microsub): fix eslint errors Fixes unicorn/prefer-await, unicorn/prefer-number-coercion, unicorn/consistent-boolean-name, unicorn/no-computed-property-existence-check and jsdoc/reject-function-type, and removes unused eslint-disable directives. Satisfying unicorn/prefer-await means init() now awaits index creation rather than leaving it to run in the background, so plug-in initialisation waits for indexes to be created. Errors are still caught and warned about, and the plug-in loader already awaits init(). * test(endpoint-microsub): add unit and integration tests Unit tests cover lib/utils and lib/storage, mirroring the structure of lib/. Controllers are covered by integration tests, as in other endpoint plug-ins. * refactor(endpoint-microsub): use getObjectId from @indiekit/util Replaces the direct mongodb import with @indiekit/util’s getObjectId, as suggested in review. The plug-in no longer declares mongodb at all, so its driver version can’t drift from the host’s — @indiekit/util owns that pin. This supersedes the earlier version bump, which fixed the same mismatch by matching the pin by hand and would have needed maintaining. * chore: update lockfile for endpoint-microsub dependency change Co-Authored-By: Claude Opus 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01WGHR7MuyvBaDbAFfAGUxeT * refactor(endpoint-microsub): use utility methods for uid and logging generateChannelUid built its own string from Math.random(). randomString from @indiekit/util does the same job with randomBytes, which is what a channel identifier should be using. That changes the alphabet from [a-z0-9] to base64url, so the tests asserting lowercase now assert URL-safe characters instead — that was the actual requirement, since a uid appears in Microsub request URLs. Replaces the one console.info in the package with debug, matching endpoint-micropub and endpoint-media, and declares the dependency. Co-Authored-By: Claude Opus 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01WGHR7MuyvBaDbAFfAGUxeT * test(endpoint-microsub): drop the constant parameter eslint rejects * chore(endpoint-microsub): satisfy strictNullChecks and the new lint rules * refactor(endpoint-microsub): use mongodb’s ObjectId now that util no longer exports getObjectId * feat(endpoint-microsub): page the timeline with the shared cursor Timeline items get an id, a UUIDv7 stamped with their publication date, listed and paged through util’s getCursor like posts and media are since #975. The cursor gains two options for it: a filter every page is confined to (the channel) and the key path to order on. Clients see that id as the Microsub _id and can mark or remove items by it; the Mongo _id no longer leaves the storage layer. The endpoint’s own cursor encoding and query builders go. * refactor(endpoint-microsub): reference channels by uid, not by Mongo id Items point at their channel by the channel’s uid, the string clients already use, so nothing in the package needs an ObjectId any more: no casting, no mongodb dependency, and indexes on strings only, in line with paginating and indexing on properties.uid elsewhere. * refactor(endpoint-microsub): address review - Errors use the shared localisable strings (BadRequestError.missingParameter, invalidValue, missingProperty) through the localiser the validators now take; channel not found and the name limit are package-scoped locale keys, and the unused title keys are gone. - uuidv7At moves to @indiekit/util, shared by the uid backfill and the Microsub timeline; the channel uid wrapper is a direct randomString(24). - One collections module replaces the two duplicated collection getters. - The user is publication.me: a session carries only a token and a scope, so the fallback chain never found anything else. * refactor(endpoint-microsub): type the localiser, drop the uid retry, name the channel variables * chore(endpoint-microsub): no init logging, README and docs page, engines like its siblings Other endpoints announce nothing at init and core already logs each collection it adds under debug, so the console lines go; index creation throws like core’s does rather than warn and carry on. --------- Co-authored-by: Claude Opus 4.5 noreply@anthropic.com Co-authored-by: Paul Robert Lloyd me+git@paulrobertlloyd.com
Commit sur main · f07b2d5 · @paulrobertlloyd
docs(post-type-page): add contributors to package.json
Commentaire d’issue · Issue #831 Forgejo first, gitea next · @paulrobertlloyd
Updated the label in the website’s sidebar navigation to ‘Gitea (Forgejo)’ (ad360c4) to make it clearer that this plugin supports Forgejo-based forks of Gitea. Beyond that, I’m not sure it’s worth renaming and deprecating the npm package for this particular plug-in.
Commit sur main · ad360c4 · @paulrobertlloyd
docs: add Forgejo to Gitea plugin label in sidebar navigation
Commentaire d’issue · Issue #979 Add index property to addCollection method · @paulrobertlloyd
I like it! Let’s do a PR for this once #944 is merged 😄
Article URL: https://metedata.substack.com/p/ai-is-throwing-a-roadside-picnic
Comments URL: https://news.ycombinator.com/item?id=50034363
Points: 43
# Comments: 44
Article URL: https://terrytao.wordpress.com/2026/10/10/math-2-0/
Comments URL: https://news.ycombinator.com/item?id=50034337
Points: 5
# Comments: 0
Revue de pull request (CHANGES_REQUESTED) · PR #944 feat(endpoint-microsub): PR 1 - Core Microsub server with channels and timeline · @paulrobertlloyd
Sorry, just a few more issues! 😬
Article URL: https://www.panarchy.org/roszak/politics.html
Comments URL: https://news.ycombinator.com/item?id=50034141
Points: 26
# Comments: 38
Article URL: https://www.thomas-huehn.com/knuth-reward-check/
Comments URL: https://news.ycombinator.com/item?id=50034081
Points: 178
# Comments: 66
Commentaire d’issue · Issue #979 Add index property to addCollection method · @rmdes
Yes, and I’d make the second parameter the index specs rather than one property, because Microsub’s indexes are compound and two are unique:
Indiekit.addCollection(“microsub_items”, [ { key: { channel: 1, id: 1 }, unique: true }, { key: { channel: 1, uid: 1 }, unique: true }, { key: { channel: 1, url: 1 } }, ]);
Core creates them when the database is up, posts and media declare { key: { "properties.uid": 1 } } from their own plugins, and the literal list in index.js goes. The uid backfill stays in core, since it writes a properties subdocument and must not touch other collections.
Happy to do it as its own PR, and move #944’s createIndexes onto it once it lands.
Commentaire de pull request · PR #944 feat(endpoint-microsub): PR 1 - Core Microsub server with channels and timeline · @rmdes
Both done in this PR now. Timeline items carry an id, a UUIDv7 stamped with their published date, and page through util’s getCursor like posts and media since #975. getCursor takes a filter and a key for it; defaults unchanged. The endpoint’s own cursor code is gone. Clients see that id as the Microsub _id. The specifications page is #978.
Your review is addressed in 8332296: localisable error strings, uuidv7At shared from util, one collections module, channels referenced by uid with no ObjectId left, and the user is publication.me. Every thread has a note on what changed.
Article URL: https://wsj.com/tech/ai/tom-brown-athropic-669005ad
Comments URL: https://news.ycombinator.com/item?id=50033678
Points: 128
# Comments: 55
We left Boyne City, Michigan, in the fall of 1996 in a 34-foot Coachmen motorhome towing a minivan, with three children, a golden retriever not originally part of the plan, and a desktop computer on a stand bolted to the floor where a chair used to be. We stopped in Flint to say goodbye to family and retrofit the motorhome for the road. Mark’s father had died that June. His mother was devastated, and for a while the question wasn’t which route to choose but whether to go at all. We left Flint on October 4. Five miles later, the motorhome shut down.
A loose fuel line.
A few miles after the fuel line was fixed, we were surprised by a flat tire on the van’s tow dolly, and then, unbelievably, we bent a bumper while putting the van back on the dolly. It was past seven in the evening. We were finally on our way to Cleveland, Ohio.
That was day one. What we built over the following nine months—25,000 miles through 40 states—would go on to earn a Yahoo! Cool Site designation, a presentation at a US Department of Education national conference, and a place in the federal Education Resources Information Center archive. On the road, we filed over 1,500 emails and website dispatches from museum lobbies, hotel reception desks, libraries, and wherever we could find a phone jack and someone willing to let us run a telephone cord to their wall.
Google would not exist for another two years. The word “blog” had not yet been coined. We were doing something that had no name and no manual, and we were doing it over a dial-up modem while living in a motorhome.
Blondins’ Assignment America was both the name of our trip and the website we built in real time as we traveled. We had a partnership with Northwest Academy, a science and technology charter school in northern Michigan in its first year of operation, that made it possible. We had prepared to make the case for why our children—Donald, 14, and twins Kelly and Stacy, 11—would not attend the 1996–97 school year in a conventional sense. The school board didn’t just accommodate us; they encouraged us. Northwest Academy loaned us a laptop and a 1.2 MP digital camera, and we took their curriculum on the road.
Article URL: https://www.theguardian.com/us-news/2026/oct/10/fda-toxic-chemicals-food-analysis
Comments URL: https://news.ycombinator.com/item?id=50033638
Points: 189
# Comments: 94
Commentaire d’issue · Issue #979 Add index property to addCollection method · @paulrobertlloyd
@rmdes What do you think to this idea?
Issue ouverte · Issue #979 Add index property to addCollection method · @paulrobertlloyd
Following the decision to remove _id (a MongoDB ObjectID) on post and media data and index on properties.uid, we added the following:
indiekit/packages/indiekit/index.js
Lines 214 to 224 in 0047ea8
// _id came indexed; properties.uid does not. Every paginated query // sorts and ranges on it, and MongoDB abandons an unindexed sort once it // needs more than 32MB, so a large enough collection would stop listing // at all. Creating an index that already exists is a no-op. for (const name of [“posts”, “media”]) { const collection = this.collections.get(name); if (collection) { await collection.createIndex({ “properties.uid”: 1 }); debug(Indexed ‘properties.uid’ on ‘${name}’); } }
We may need to add an indexable property for the Microsub endpoint too (see #944).
The indexable property should be declared using the addCollection method and via the respective plugins, rather than something that is hardcoded into the core package.
Add an optional second parameter to addCollection, which is the property to index items on:
new Indiekit.addCollection(name, “properties.uid”);
Article URL: https://www.businessinsider.com/personal-ai-agent-grok-bot-posted-bank-details-company-slack-2026-10
Comments URL: https://news.ycombinator.com/item?id=50033517
Points: 60
# Comments: 66
Article URL: https://community.bitwarden.com/t/published-version-update-in-app-stores/102750
Comments URL: https://news.ycombinator.com/item?id=50033407
Points: 388
# Comments: 296
Revue de pull request (CHANGES_REQUESTED) · PR #944 feat(endpoint-microsub): PR 1 - Core Microsub server with channels and timeline · @paulrobertlloyd
(aucun texte)
Article URL: https://ghuntley.com/unikernels/
Comments URL: https://news.ycombinator.com/item?id=50033357
Points: 183
# Comments: 92
Article URL: https://twitter.com/isaiah_p_taylor/status/2108679133467414855
Comments URL: https://news.ycombinator.com/item?id=50033347
Points: 2
# Comments: 0
Article URL: https://twitter.com/lemire/status/2108913165979283881
Comments URL: https://news.ycombinator.com/item?id=50033065
Points: 2
# Comments: 1
Article URL: https://github.com/hiroaqii/gitframe
Comments URL: https://news.ycombinator.com/item?id=50033005
Points: 1
# Comments: 1
Article URL: https://mastodon.green/@solar_chase/117416542106532198
Comments URL: https://news.ycombinator.com/item?id=50032870
Points: 4
# Comments: 0
Article URL: https://conversableeconomist.com/2026/09/28/i-would-like-the-value-of-my-home-to-rise-while-my-property-taxes-fall/
Comments URL: https://news.ycombinator.com/item?id=50032758
Points: 276
# Comments: 689
Article URL: https://carette.xyz/posts/lobbying_and_corruption/
Comments URL: https://news.ycombinator.com/item?id=50032556
Points: 495
# Comments: 273
Article URL: https://deadsimpletech.com/blog/llms-arent-inevitable
Comments URL: https://news.ycombinator.com/item?id=50032064
Points: 40
# Comments: 93
Article URL: https://twitter.com/oswaldjoh/status/2108669918883230177
Comments URL: https://news.ycombinator.com/item?id=50031841
Points: 1
# Comments: 0
Article URL: https://www.opengroup.org//openbrand/register/
Comments URL: https://news.ycombinator.com/item?id=50031653
Points: 282
# Comments: 238
Article URL: https://github.com/rociiu/talorys
Comments URL: https://news.ycombinator.com/item?id=50031614
Points: 304
# Comments: 141
Article URL: https://cphpost.dk/2026-10-10/news/round-up/123456-password-used-in-massive-danish-cpr-data-breach/
Comments URL: https://news.ycombinator.com/item?id=50031269
Points: 387
# Comments: 201
Article URL: https://www.reddit.com/r/Kotlin/comments/1x28h3u/spotted_in_london_tube_northern_line_yesterday/
Comments URL: https://news.ycombinator.com/item?id=50031244
Points: 3
# Comments: 0
Article URL: https://twitter.com/generativexp/status/2108400091954286910
Comments URL: https://news.ycombinator.com/item?id=50031080
Points: 1
# Comments: 0
Commentaire de pull request · PR #944 feat(endpoint-microsub): PR 1 - Core Microsub server with channels and timeline · @rmdes
Docs PR for the specifications page: #978.
Pull request (OPEN) · PR #978 docs: list the Microsub features Indiekit supports · @rmdes
Updates the Microsub section of the supported specifications page, as asked in #944: the parts of the spec are listed the way the Micropub section does, with channels and timelines ticked (listing, creating, updating, deleting and ordering channels; retrieving, paging, marking read or unread and removing entries) and search, preview, following, muting and blocking left unticked.
Merge together with or after #944, since that is the PR adding the endpoint the ticks describe.
Commentaire de pull request · PR #917 refactor(util): let a collection cast its own ids (#821 spike) · @rmdes
Superseded by #975: getObjectId is gone from util, so there is nothing left to cast. Closing.
Article URL: https://veds12.github.io/git-swarm/
Comments URL: https://news.ycombinator.com/item?id=50030271
Points: 2
# Comments: 0
Article URL: https://www.reddit.com/r/TestMyApp/
Comments URL: https://news.ycombinator.com/item?id=50030209
Points: 1
# Comments: 0
Article URL: https://codeberg.org/souverain/commentaires/src/branch/main/README.en.md
Comments URL: https://news.ycombinator.com/item?id=50030132
Points: 3
# Comments: 0