The undocumented behavior that every third-party iOS keyboard has to reimplement — reverse-engineered, with the escape hatches spelled out.
Compiled while building Lyklaborð, a privacy-first Icelandic keyboard. Corrections welcome.
The undocumented behavior that every third-party iOS keyboard has to reimplement — reverse-engineered, with the escape hatches spelled out.
Compiled while building Lyklaborð, a privacy-first Icelandic keyboard. Corrections welcome.
Generated: 2026-06-02T15:52:14.847Z
tour.is_published = true, tour.is_unlisted = false, and tour.dato_id IS NOT NULL.allTours records from the Content Delivery API.customData.layout = "vertical".This prompt is for teams that want to bolt an agent-native sandbox onto an existing monorepo.
The goal is not to create another E2E suite or a prettier docker-compose up. The goal is to give coding agents a disposable, inspectable, worktree-local environment where they can behave more like a careful human doing manual QA: open the app in a browser, click through real flows, inspect logs, read local side effects, check emails, review analytics/error events, adjust seeded scenarios, and produce visual proof without waiting for a human to run the project.
Think of this as giving agents vision and x-ray access to the app. Each agent/worktree should be able to spin up its own realistic runtime, keep working longer, avoid port fights with other agents, and leave behind evidence artifacts that make reviews easier.
The shape you are aiming for is this:
Hot take: TUIs are a phase, and GUIs that basically emulate TUIs are a phase too. We just don't know how the IDE of the future will look like.
He's talking about the arc of dev tools. Terminal, then Notepad++, then richer IDEs, then VSCode. Each phase building on the last, borrowing metaphors, adding chrome. What comes next?
But something about the question stuck with me.
Unix evolved under constraints. Teletypes. Tiny memory. Slow connections. Those limits forced everything through text — and text turned out to be strangely universal. Decades later, everything still speaks it.
Deployment plan: dato_tour → tour rename (PR #1418)
PR #1418 renames dato_tour → tour tables, switches 97 files, and establishes the foundation for admin-first tour creation. Existing tour rows keep DatoCMS IDs as Tour.id; new Tour.datoId column (nullable) links to DatoCMS content. New tours get cuid2 IDs.
Migration strategy: Expand-Contract (zero-downtime reads)
This documents the struggles encountered migrating a Next.js 15 blog (with MDX, Shiki syntax highlighting, and OG image generation) to vinext on Cloudflare Workers.
The showstopper. @mdx-js/mdx's run() internally calls new Function() to evaluate compiled MDX. Workers completely blocks eval and new Function at request time.
EvalError: Code generation from strings disallowed for this context
| [core] | |
| excludesfile = ~/.gitignore | |
| [user] | |
| name = Jökull Sólberg | |
| email = jokull@solberg.is | |
| [init] | |
| defaultBranch = main | |
| [push] | |
| autoSetupRemote = true | |
| default = current |
The static fromPrice field in DatoCMS has been replaced by live inventory pricing (amount) from our booking providers. The static price was stale and misleading — it didn't reflect actual availability or seasonal pricing. We've removed it from all queries and components.
What changes for tours without inventory pricing? They simply show no price instead of a stale/incorrect one. This is cleaner and more honest.