MAY 16 2026 / ONE RELEASE / 141 LINES OF JSONL PLUMBING

New AI projects on Hugging Face or GitHub, May 16 2026. Pick one release, open the patch, and the question answers itself.

A dated roundup is a photograph of a moment that has already passed. The artifact that survives is the patch a project shipped that day, because it carries a verifiable timestamp, the author's own inline comments, and a behavior you can describe in one sentence. This guide walks one such patch, the single release the open-source macOS agent Fazm landed on the literal date in this question.

M
Matthew Diakonov
10 min read

Direct answer, verified 2026-05-17

No platform publishes an official "May 16, 2026" list of new AI projects. Both Hugging Face and GitHub order discovery by a rolling trending score, not by calendar date. New projects surface continuously across three live feeds:

For one verifiable record carrying that exact date: the open-source agent Fazm shipped version 2.9.22 on 2026-05-16, a single workspace-preservation fix recorded in CHANGELOG.json at the root of the repository. The rest of this page opens that release.

One release. Two commits. One specific bug.

Two commits authored on May 16, 2026, sitting next to each other in the git log. The first, 3ceb252b at 08:59 Pacific, edits a Swift file in the macOS app. The second, 102b4f97 at 09:20 Pacific, edits a TypeScript file in the Node sub-process that talks to the agent. They land together because they fix the same underlying bug from opposite ends of the wire.

The bug is the kind that does not appear in a feature list. Pop-out chat windows were losing their conversation history when the working directory changed between turns. An ordinary user-visible symptom: you send a follow-up message, the model replies as if it has never seen the conversation before. The actual cause is two layers down, in how a per-window workspace defaulted, and what that default did to the cwd sent to the agent bridge.

0Release shipped on 2026-05-16
0Lines changed in acp-bridge/src/index.ts
0Files touched across the two commits
0Release days in the trailing week of May 11 to 17

The Swift side: anchor the cwd at creation

The pop-out chat window stored its workspace in a per-window struct. When the field was empty, the code "fell back" to a global setting called aiChatWorkingDirectory. That global is what the main chat window writes when the user picks a project folder, and it changes every time the user switches projects. Two pop-outs open at the same time would both read the same global, which meant each one's effective cwd flipped whenever the user picked a different folder in any window. Every flip tore down the upstream session.

The Swift fix is six lines. At pop-out creation, if the per-window workspace is empty, fill it with NSHomeDirectory() so the cwd is explicit and sticky from the first turn. Every pop-out then carries its own workspace for the rest of its life.

Desktop/Sources/FloatingControlBar/DetachedChatWindow.swift

That alone stops new pop-outs from drifting. It does not help the existing ones, because the conversation has already been written to disk under one cwd and the SDK is about to look for it under another. That is what the TypeScript side handles.

The TypeScript side: relocate the transcript

The Claude Agent SDK persists every turn of a session as one line of JSON, appended to a file named for the session id, stored under ~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl. The directory name is the working directory the session was created in, percent-encoded so it can sit in a filename. When you call session/resume, the SDK looks under the encoded directory derived from the cwd you pass at resume time. If the cwd changed since the session was created, the SDK looks under a directory that does not contain the transcript, finds nothing, and either errors out or starts a fresh session.

The fix is to physically copy the JSONL into the new workspace's encoded directory before resuming. The new function does exactly that, and nothing more. It is one function call in the cwd-changed branch of the query handler. The comments in the diff are longer than the implementation.

acp-bridge/src/index.ts

Two guard rails are worth pointing out. The function refuses to touch anything that is not under ~/.claude/projects, so a Codex rollout (which is date-bucketed, not cwd-addressed) is never moved. The copy is followed by an unlink that is wrapped in a try/catch, so a partial failure still leaves a usable transcript at the destination. The caller falls back to the older priorContext replay path on any failure, so the worst case is a capped summary rather than a dropped conversation.

141 lines

Carry a Claude SDK transcript across a workspace (cwd) change so the session can be resumed with its FULL history instead of a capped priorContext summary.

Inline comment from commit 102b4f97, authored 2026-05-16 09:20 Pacific

Why this one patch is the answer to a feature claim

"Persistent sessions" and "no auto-compacting" are easy phrases to put on a landing page. They are hard to deliver, because the place they break is exactly here: the moment a user does something the original session was not opened for, like switching to a different project folder mid-conversation and asking a follow-up. Every workspace switch is a hostile test of the persistence claim, and most implementations fail it quietly.

The May 16 patch is what passing that test costs. A few kilobytes of TypeScript that knows the layout of the Claude Agent SDK's persistence directory, a Swift change that gives every pop-out its own sticky cwd, and a fallback path that degrades to a capped summary rather than an empty context. None of that is visible to the user. All the user sees is that the follow-up question still gets a coherent answer. That is the only acceptable outcome.

Open the diff and you can see exactly which line is doing the work. That is the difference between a feature page and a patch. A feature page tells you what the project would like to be true. A patch tells you what is actually shipping.

Three files to read for any project that catches your eye

The exercise generalizes. For any new project surfacing on Hugging Face or GitHub on any given day, the same three artifacts give you a faster read than any roundup. Open them in order; each step is about thirty seconds.

Open the changelog first

CHANGELOG.json or a Releases page is authored by the maintainer and tied to real dates. It is the cheapest, highest-signal artifact in any repository. For Fazm on May 16, the entry is two paragraphs and names the exact behavior that changed.

Open the commit log second

git log filtered by date shows what landed and when. Two commits on May 16, 2026 carry this release: 3ceb252b at 08:59 Pacific (Swift) and 102b4f97 at 09:20 Pacific (TypeScript). Both have descriptive commit messages, neither is a docs-only edit.

Open one diff third

The inline comments in a real diff are where the why lives. Fazm's 102b4f97 spends more lines explaining cwd-flap behavior than the function itself takes to implement. That ratio, prose over code, is what a maintained patch looks like.

If the changelog is empty, the commit log is one launch commit, or the diff has no inline comments, you are looking at a project that has not yet earned the trust the trending list is granting it. The single release on 2026-05-16 passes all three checks. That is the only reason a dated query is worth answering with one release instead of a list of ten.

What "release cadence" looks like at the day scale

One release on May 16, four on May 15, three on May 14, two on May 13, two on May 12, three on May 11. Then zero on May 17, the day this guide was written. That bumpy line is the shape of a project that ships when it has something to ship and not when it does not. A press-release rhythm of one launch per month would be a worse signal, not a better one.

The texture matters more than the count. The May 16 release is a single bug fix authored two hours after the engineer started looking at the bug, with comments that name a global variable and a fallback path. That kind of patch can only come from a project that has real users hitting real edges. It is uninteresting to a feed and exactly what you want a dependency to look like.

Want a second pair of eyes on an AI project you are about to depend on

Bring a repository you found on Hugging Face or GitHub. In twenty-five minutes we open the changelog, the commit log, and one diff together and decide whether it is worth your week.

Frequently asked questions

What new AI projects appeared on Hugging Face or GitHub on May 16, 2026?

Neither platform publishes a dated release list, so there is no single canonical answer. New models, datasets, and repositories appear continuously, indexed by trending score rather than calendar date. The honest live feeds are huggingface.co/models sorted by trending, huggingface.co/papers/trending for papers with implementation links, and github.com/trending for code. As a concrete and verifiable example of a project carrying the date 2026-05-16 at the release level, the open-source macOS agent Fazm shipped one release that day, version 2.9.22, recorded in CHANGELOG.json at the root of github.com/mediar-ai/fazm. The single change in that release is a fix for pop-out chats losing their conversation when the workspace directory changes between turns.

Why one release on May 16 and four on May 15?

Because release cadence is bursty, and that is normal for an alive project. Bug-fix days cluster. The week from May 11 to 17, 2026 covers six release days in the Fazm changelog: three releases on May 11, two on May 12, two on May 13, three on May 14, four on May 15, one on May 16, and zero on May 17. The pattern is what real software looks like when it has users hitting edges, not a press-release rhythm of one launch per month. Counting raw releases per day is the wrong question. Counting release days per fortnight is the right one.

What did Fazm v2.9.22 actually fix?

Pop-out chat windows were losing their conversation history when the working directory changed between turns. The root cause was that an empty per-window workspace silently followed the global aiChatWorkingDirectory, which fluctuates, so the cwd sent to the agent bridge flapped between turns. Each flap tore down the upstream Claude SDK session and discarded the conversation. The fix is in two parts: DetachedChatWindow.swift now anchors a sticky workspace on the pop-out at creation, and acp-bridge/src/index.ts adds a migrateJsonlForCwdChange function that copies the SDK transcript JSONL into the new workspace's encoded project directory before resuming, so the session resumes with full history instead of replaying a capped priorContext summary.

What is a JSONL transcript and why does relocating it matter?

The Claude Agent SDK persists every turn of a session as one line of JSON in a file named after the session id, stored under ~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl. The directory name is the working directory the session was created in, percent-encoded, so the SDK can find the right transcript when you call session/resume. When the working directory changes mid-conversation, the SDK looks under the new encoded directory and finds nothing. The fix is to physically copy the JSONL file to where the SDK will look next, so resume succeeds with the full transcript intact. It is unglamorous filesystem work, and it is what 'no auto-compacting context' actually means in practice.

How do I check what a project actually shipped on a specific date?

Read its own dated artifacts, not a third-party roundup. Three signals in this order. Open CHANGELOG.json or the GitHub Releases page and find the entry tagged with the date you care about. Then open the commit log for that day and read the commit messages, which are written by the author and tied to exact timestamps. Then open the diff of one commit and read the inline comments, which is where the why lives. A dated entry in a maintainer-authored file beats every aggregator. For Fazm on May 16, 2026, the chain is CHANGELOG.json entry for v2.9.22, two commits authored at 08:59 and 09:20 Pacific that day, and inline comments in the diff that explain the cwd-flap failure mode.

Should I treat trending lists as a discovery tool or a decision tool?

Discovery only. A trending feed is a popularity measurement taken over a rolling window. A coordinated launch, a viral post, or a well-timed announcement spikes it cheaply, and the spike decays within days. Trending is a fine place to surface candidates. It is a poor basis for a decision because it cannot tell you whether the project will still be maintained when you need it. The signal that survives is cadence, which is hard to fake because it is recorded directly in the artifacts the maintainer authors over weeks.

Where should I look for new AI projects day to day?

Three feeds cover most of it. Hugging Face for weights and quantized variants, sorted by trending or by recent. Hugging Face Papers for research with linked implementations, where genuinely new techniques surface before they have a polished repository. GitHub trending for the application layer, agent harnesses, MCP servers, and inference engines. Hugging Face and GitHub are complements, not competitors. A useful project usually has presence on both. For deeper coverage of that split see the April 2026 companion guide on Hugging Face or GitHub for new AI projects.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.