1.1.1 — Narrowed store key helper input types
repositoryStoreKey, branchStoreKey, and blobStoreKey now accept narrower
input shapes rather than the GitHubRepository, GitHubBranch, and
GitHubBlob entity types. Calls passing complete entity objects continue to
work, but explicit parameter type annotations must use the new input shapes.
repositoryStoreKey
The helper now takes only an owner's login and repository name:
import {repositoryStoreKey} from 'simulacat-core';
const key = repositoryStoreKey({owner: 'acme', name: 'awesome-repo'});
console.log(key);
branchStoreKey
The branch helper takes only an owner's login, repository name, and branch name:
import {branchStoreKey} from 'simulacat-core';
const key = branchStoreKey({owner: 'acme', repo: 'awesome-repo', name: 'main'});
console.log(key);
blobStoreKey
The blob helper takes repository coordinates and either a path or SHA:
import {blobStoreKey} from 'simulacat-core';
const key = blobStoreKey({owner: 'acme', repo: 'awesome-repo', path: 'README.md'});
console.log(key);
1.2.1 — Request-scoped actor resolution
GET /user, GET /user/memberships/orgs, and Query.viewer no longer fall
back to the first seeded user when no actor header is present. They now return
HTTP 401 with Authentication required for unauthenticated requests.
| Scenario | Before 1.2.1 | After 1.2.1 |
|---|---|---|
| No actor header sent | First seeded user returned | 401 {"message":"Authentication required"} |
x-simulacat-user: <login> sent |
Named user returned (unchanged) | Named user returned (unchanged) |
x-simulacat-actor: user:<login> sent |
Not supported | Named user returned |
Set x-simulacat-actor: user:<login> (or a legacy alias) on every request that
must exercise /user, /user/memberships/orgs, or viewer.
For REST authenticated-user routes, both GET /user and
GET /user/memberships/orgs require x-simulacat-actor: user:<login> or a
legacy user alias. Without an actor that resolves to a seeded user, these
routes return HTTP 401 with {"message":"Authentication required"}.