Timeline
Every post and feed across this instance
-
🐛 Issue #994 — Frontend components drop the upload, find location and tag input set-up on main
Issue ouverte · Issue #994 Frontend components drop the upload, find location and tag input set-up on main · @rmdes
Since 691b359, component lookups throw when an element is missing. Four lookups are of elements that are absent by design, each followed by a null check the throw now makes unreachable:
file-input/index.js:48andgeo-input/index.js:30: the picker and the button live only in a<template>untilconnectedCallbackclones them in.tag-input/index.js:7-8: a hint and an error message are only rendered when given.textarea/index.js:171: the status bar can be turned off witheditor-status="false".
The throw aborts
connectedCallback, so onmainthe upload button next to photo, video, audio and featured URL fields, the find location button, and the category tag input are never set up. Nothing is lost (the URL fields and the editor’s own image upload still work), but those three are missing.Reproduction: open
/posts/create?type=photo. There is no “Upload file” button next to the photo URL field, and the console showsNo element matching .file-input__picker,No element matching .geo-input__buttonandNo element matching .error-message.
-
Secret of Orange Cats Revealed After 60-Year Search
Article URL: https://www.sciencealert.com/secret-of-orange-cats-finally-revealed-after-60-year-search
Comments URL: https://news.ycombinator.com/item?id=50037711
Points: 101
# Comments: 75
-
GPT-Astra NFL Player Video Analysis
Article URL: https://twitter.com/robsandhu/status/2108987321786007853
Comments URL: https://news.ycombinator.com/item?id=50037218
Points: 2
# Comments: 0
-
🟢 PR #993 — Use `canonicalUrl` filter in Nunjucks templates, and show all configured endpoints on homepage
Pull request (OPEN) · PR #993 Use
canonicalUrlfilter in Nunjucks templates, and show all configured endpoints on homepage · @paulrobertlloydSomewhat related improvements:
- Use
canonicalUrlfilter in all Nunjucks templates where an endpoint’s mount path (or frontend asset path) needs to be prefixed with the application URL - Remove the
getEndpointUrlsmethod that was used to provide a list of endpoint mount paths for use on the homepage guidance - Update home page guidance to list all
s that can be added to a website’s` to support installed/configured endpoints - Improve the wording of that guidance to be a bit less technical, and remove specific mention of Micropub now that we can show links for other endpoints
- Use
-
A city-building game in which the city would prefer you didn't
Article URL: https://housing.over.pizza/
Comments URL: https://news.ycombinator.com/item?id=50036864
Points: 530
# Comments: 189
-
There has been no increase in car sales in China in over a decade
Article URL: https://twitter.com/lymanstoneky/status/2107227592151445963
Comments URL: https://news.ycombinator.com/item?id=50036400
Points: 5
# Comments: 1
-
Proof-of-Human
Article URL: https://twitter.com/bzamayo/status/2108498107184934914
Comments URL: https://news.ycombinator.com/item?id=50036394
Points: 3
# Comments: 0
-
What if it could learn and update its own weights as it's being used?
Article URL: https://twitter.com/ashxhart/status/2108580126094963038
Comments URL: https://news.ycombinator.com/item?id=50036277
Points: 1
# Comments: 1
-
Where Google Wallet state IDs are available on Android

States across the US are slowly rolling out support for adding your driver’s license or ID to the Google Wallet app on Android.
more… -
This Week In Techdirt History: October 4th – 10th
This Week in 2016 This Week in 2011 This Week in 2006 -
Nvidia in talks to acquire US 'open' model startup Reflection AI
Article URL: https://www.ft.com/content/052610c5-22b4-4dd4-932e-b7f9f0628b6a
Comments URL: https://news.ycombinator.com/item?id=50035886
Points: 170
# Comments: 108
-
📝 721f4dd — chore: update dependencies
-
Vibe coded browser ports of Halo, The Simpsons: Hit And Run, GTA work well
-
📝 f8c7376 — feat(endpoint-syndicate): syndicate every post awaiting syndication
Commit sur main · f8c7376 · @rmdes
A request without source_url syndicated one post, the oldest awaiting syndication, and stopped. The endpoint exists to be pinged after a deploy or on a schedule, so a backlog of several posts, which is what a deploy that publishes more than one post or an outage at a target leaves behind, needed as many pings as posts. Work through every post that still has a target to reach, oldest first and one at a time, recording each result on its post as before, and respond with a result per post. A target that fails is noted on its post and the batch carries on; an error updating a post stops the batch, and the posts not reached are still awaiting syndication for the next request. A request arriving while a batch is running is told so rather than syndicating the same posts again, since a deploy webhook and a scheduled request can coincide. Two tests sent the post URL as syndication.url, which the endpoint has never read (the form sends syndication.source_url, as the README documents). They passed because the fallback happened to pick the only post; they now send the documented parameter. The mock content store accepts more than one post so a test can seed a backlog.
-
Why DuckDB 2.0 is faster
Article URL: https://motherduck.com/blog/why-duckdb-20-is-faster/
Comments URL: https://news.ycombinator.com/item?id=50035530
Points: 196
# Comments: 61
-
📝 54f193e — feat(endpoint-share): let the share form choose syndication targets
Commit sur main · 54f193e · @rmdes
The share form sends a bookmark to the Micropub endpoint but offers no way to say where it should be syndicated, so a shared bookmark never reaches a syndicator unless the target is edited afterwards. Render a checkbox per configured target, as the post form does, and forward each chosen one as its own mp-syndicate-to parameter: URLSearchParams would otherwise join an array into one comma-separated value the Micropub endpoint does not match. A target whose info cannot be read is shown disabled with the reason, the same as the post form since the syndicator-info change. Tests load the two syndicators the test configuration already knows about and check the form renders a checkbox per target, that both chosen targets come back as separate values on the created post, and that a chosen target stays checked when the form is re-rendered with errors.
-
FreeBSD Cope with Signal Fuckup
Article URL: https://vermaden.wordpress.com/2026/10/10/freebsd-cope-with-signal-fuckup/
Comments URL: https://news.ycombinator.com/item?id=50035448
Points: 3
# Comments: 0
-
📝 21624e4 — feat(endpoint-share): let the share form choose syndication targets
Commit sur main · 21624e4 · @rmdes
The share form sends a bookmark to the Micropub endpoint but offers no way to say where it should be syndicated, so a shared bookmark never reaches a syndicator unless the target is edited afterwards. Render a checkbox per configured target, as the post form does, and forward each chosen one as its own mp-syndicate-to parameter: URLSearchParams would otherwise join an array into one comma-separated value the Micropub endpoint does not match. A target whose info cannot be read is shown disabled with the reason, the same as the post form since the syndicator-info change. Tests load the two syndicators the test configuration already knows about and check the form renders a checkbox per target, that both chosen targets come back as separate values on the created post, and that a chosen target stays checked when the form is re-rendered with errors.
-
📝 2f89cd1 — feat(endpoint-posts): pre-fill the create form from url and name quer…
Commit sur main · 2f89cd1 · @rmdes
…y parameters A bookmarklet, a share sheet or a reader’s ‘Post’ button has a URL and usually a title to hand over, and the share endpoint already accepts them. The create form did not, so a client had to choose between the share form’s fixed bookmark and an empty post form. Accept url and name on /posts/create. The URL goes to the field the post type has for one (bookmark-of, in-reply-to, like-of or repost-of) and to the content where the type has none; the name only where the type has a name field. Anything already in the form wins, so a re-rendered form is not overwritten.
-
📝 b792c1a — feat(endpoint-micropub): filter the list of posts by text and category
Commit sur main · b792c1a · @rmdes
The README promises
filterfor every list query and gives/micropub?q=source&filter=webas the example, but the source query ignored it: the parameter only ever reached the configuration queries. Honour it for posts as a case-insensitive match on the name and content, and acceptcategoryalongside it for posts carrying that category. Filtering keeps paging: getCursor takes an optional query that is merged into the range condition and into the hasNext/hasPrev probes, so a filtered page reports whether more filtered items exist rather than whether more items exist at all. Existing callers are unaffected; the parameter defaults to an empty object. Tests cover the cursor filter in util, and for the endpoint: match by name, match by content, match by category, both together across two pages, and no match. -
📝 77a6266 — fix(endpoint-micropub): normalise categories on write
Commit sur main · 77a6266 · @rmdes
A category arrives as typed. Surrounding whitespace, an empty value from a blank form field, and the same word in another case each became a distinct category on the site, and every list built from categories, the q=category query included, grew a near-duplicate for it. Trim each value, drop the empties, and fold case-insensitive duplicates onto the first spelling given, at the point where properties are normalised so every write path is covered. A category left with nothing is removed rather than stored as an empty array. Casing is otherwise left as the author wrote it: folding onto a canonical spelling is a separate question.
-
Models as Insider Risks in the Super Intelligence Era
Article URL: https://twitter.com/satyanadella/status/2108931348857827686
Comments URL: https://news.ycombinator.com/item?id=50035193
Points: 7
# Comments: 0
-
📝 47b995d — fix(frontend): close the tabindex clause in add-another's focusable s…
Commit sur main · 47b995d · @rmdes
…elector The last clause of the selector was missing its closing parenthesis. Browsers recover from the error, which is why nothing visibly broke, but a selector that only works through parser error recovery is one engine update away from throwing, and it misleads anyone reading it.
-
💬 @paulrobertlloyd — PR #992 : feat(indiekit): declare a collection's indexes with addCollection
Commentaire de pull request · PR #992 feat(indiekit): declare a collection’s indexes with addCollection · @paulrobertlloyd
Brill, thanks @rmdes!
-
📝 df0b8f8 — feat(indiekit): declare a collection's indexes with addCollection
Commit sur main · df0b8f8 · @rmdes
A plug-in declares the indexes a collection needs where it adds the collection, as an array of a key plus any createIndex options, and the core creates them once the database is connected and before serving. The literal posts and media list in index.js goes: the Micropub and media endpoints declare the properties.uid index themselves, and the Microsub endpoint declares its three instead of creating them at init.
-
📝 e8bc4df — feat(endpoint-microsub): add localised strings
Commit sur main · e8bc4df · @paulrobertlloyd
feat(endpoint-microsub): add localised strings
-
🟢 PR #992 — feat(indiekit): declare a collection's indexes with addCollection
Pull request (OPEN) · PR #992 feat(indiekit): declare a collection’s indexes with addCollection · @rmdes
Fixes #979.
Indiekit.addCollection(name, indexes)takes an optional array of indexes, each akeyplus anycreateIndexoptions such asunique. The core creates them increateIndexes(), called fromserver()after the plug-ins are installed and before serving; creating an existing index is a no-op, so it runs on every start.The literal posts and media loop in
index.jsgoes: the Micropub and media endpoints declare{ key: { "properties.uid": 1 } }where they add their collections, and the Microsub endpoint declares its three (channel + id unique, channel + uid unique, channel + url) instead of creating them at init. The uid backfill stays where it was. Docs page updated.Two core tests (declared indexes are created, a collection declares none by default); the Microsub index test moves with the declaration.
-
🟢 PR #991 — fix(endpoint-micropub): honour `filter` on `q=source`, add `category`
Pull request (OPEN) · PR #991 fix(endpoint-micropub): honour
filteronq=source, addcategory· @rmdesFixes #990.
filteris a case-insensitive match on a post’s name or content,categoryan exact category; both are cast to strings so nothing reaches the database as an operator, and both are passed togetCursoras its filter so paging keeps working within the match (the cursor’sfilteroption landed with #944).Four integration tests, seen failing first. README documents
category.This is one of the last six changes ported from my fork; nothing here needs to hold a release.
-
🐛 Issue #990 — `q=source` ignores the documented `filter` parameter
Issue ouverte · Issue #990
q=sourceignores the documentedfilterparameter · @rmdespackages/endpoint-micropub/README.md:41says list queries supportfilter,limitandoffset.lib/controllers/query.jsreadsfilter(line 32) but applies it only to configuration queries (line 121); the posts list returned byq=sourcenever sees it.Reproduction:
/micropub?q=source&filter=webreturns every post. -
🟢 PR #989 — feat(endpoint-syndicate): syndicate every post awaiting syndication per request
Pull request (OPEN) · PR #989 feat(endpoint-syndicate): syndicate every post awaiting syndication per request · @rmdes
Fixes #988.
A request without
source_urlworks through every published post that still has a target, oldest first, one at a time, and responds with a result per post; a second such request arriving while one runs is told syndication is already in progress. A request withsource_urlbehaves as before.On the way: two existing tests sent
syndication.url, a field the endpoint never read, and passed by coincidence; they now sendsource_url. The mock store replies persist so a batch can write several files.This is one of the last six changes ported from my fork; nothing here needs to hold a release.
-
🐛 Issue #988 — A syndication request without `source_url` handles one post only
Issue ouverte · Issue #988 A syndication request without
source_urlhandles one post only · @rmdesgetPostDatainpackages/endpoint-syndicate/lib/utils.js:30-33takeslimit(1)and returns the oldest post awaiting syndication, so a deploy webhook or a scheduled request after a build syndicates one post per call. With several posts published between builds, the rest wait for as many further requests.Reproduction: publish two posts with
mp-syndicate-to,POST /syndicateonce: the first is syndicated, the second still has its target. -
🟢 PR #987 — feat(endpoint-posts): pre-fill the create form from the query string
Pull request (OPEN) · PR #987 feat(endpoint-posts): pre-fill the create form from the query string · @rmdes
Fixes #986.
urlgoes to the post type’s URL field (bookmark-of,in-reply-to,like-oforrepost-of), or to its content when the type has none;nameonly where the type has a name field. Anything already in the form wins. README gains a section mirroring the share endpoint’s.Three integration tests, seen failing first.
This is one of the last six changes ported from my fork; nothing here needs to hold a release.
-
🐛 Issue #986 — Post creation form cannot be pre-filled from the query string
Issue ouverte · Issue #986 Post creation form cannot be pre-filled from the query string · @rmdes
packages/endpoint-posts/lib/middleware/post-data.js:20reads onlytypefrom the query. The share endpoint documentsurl,nameandcontentpre-filling, so a bookmarklet or a reader’s post button can hand over a page; the posts endpoint cannot, which rules out a pre-filled reply, like, repost or bookmark.Reproduction:
/posts/create?type=bookmark&url=https://example.website/article&name=An+articlerenders an empty form. -
🟢 PR #985 — fix(frontend): close the tabindex clause in add-another's focusable selector
Pull request (OPEN) · PR #985 fix(frontend): close the tabindex clause in add-another’s focusable selector · @rmdes
Fixes #984.
One character: the missing
).This is one of the last six changes ported from my fork; nothing here needs to hold a release.
-
🐛 Issue #984 — add-another's focusable selector is missing a closing bracket
Issue ouverte · Issue #984 add-another’s focusable selector is missing a closing bracket · @rmdes
packages/frontend/components/add-another/index.js:3ends with[tabindex]:not([tabindex="-1"]and no closing). Browsers recover from the malformed last clause today, which is why nothing visibly breaks, but the selector as written is invalid and thetabindexclause is not reliably applied when focusing a newly added item. -
🟢 PR #983 — fix(endpoint-micropub): trim, drop empty and fold duplicate categories
Pull request (OPEN) · PR #983 fix(endpoint-micropub): trim, drop empty and fold duplicate categories · @rmdes
Fixes #982.
getCategoryPropertytrims each value, drops empties, and folds case-insensitive duplicates onto the first spelling given; acategoryleft 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 #982 — Micropub stores categories as typed: whitespace, empty values and case duplicates become distinct categories
Issue ouverte · Issue #982 Micropub stores categories as typed: whitespace, empty values and case duplicates become distinct categories · @rmdes
normalisePropertiesinpackages/endpoint-micropub/lib/jf2.jsnormalisescontent(line 79) andlocation(line 83) but passescategorythrough untouched.Reproduction:
POST /micropubwithh=entry&category=Cheese&category=+cheese+&category=, thenq=source&url=…:categoryis["Cheese", " cheese ", ""], three categories on the site for one. -
🟢 PR #981 — feat(endpoint-share): offer syndication targets on the share form
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
infocannot be read is shown disabled with the reason). Chosen targets are sent to Micropub as separatemp-syndicate-tovalues, sinceURLSearchParamswould 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 #980 — Share form offers no way to choose syndication targets
Issue ouverte · Issue #980 Share form offers no way to choose syndication targets · @rmdes
The share form (
packages/endpoint-share/views/share.njk) has nomp-syndicate-tofield, andshare.js:46posts 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 withoutmp-syndicate-to. -
📝 51fe276 — docs: list the Microsub features Indiekit supports
-
💬 @paulrobertlloyd — PR #944 : feat(endpoint-microsub): PR 1 - Core Microsub server with channels and timeline
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. 🚀
-
📝 b6a74a5 — feat(endpoint-microsub): add core Microsub server with channels and t…
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
generateChannelUidbuilt its own string fromMath.random().randomStringfrom@indiekit/utildoes the same job withrandomBytes, 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 oneconsole.infoin the package withdebug, 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 anid, a UUIDv7 stamped with their publication date, listed and paged through util’sgetCursorlike 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_idand can mark or remove items by it; the Mongo_idno 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 -
📝 f07b2d5 — docs(post-type-page): add contributors to package.json
Commit sur main · f07b2d5 · @paulrobertlloyd
docs(post-type-page): add contributors to package.json
-
📝 f10925c — docs(post-type-photo): remove mis-attributed contributors from packag…
-
💬 @paulrobertlloyd — issue #831 : Forgejo first, gitea next
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.
-
📝 ad360c4 — docs: add Forgejo to Gitea plugin label in sidebar navigation
Commit sur main · ad360c4 · @paulrobertlloyd
docs: add Forgejo to Gitea plugin label in sidebar navigation
-
💬 @paulrobertlloyd — issue #979 : Add index property to `addCollection` method
Commentaire d’issue · Issue #979 Add index property to
addCollectionmethod · @paulrobertlloydI like it! Let’s do a PR for this once #944 is merged 😄
-
AI Is Throwing a Roadside Picnic
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
-
Math 2.0
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
-
✋ Changements demandes — PR #944 par @paulrobertlloyd
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! 😬