Skip to content

Releases: callstackincubator/simlock

Release list

v0.4.0

Choose a tag to compare

@V3RON V3RON released this 30 Oct 10:39

What's Changed

  • feat(http): expose the control plane over HTTP by @V3RON in #68
  • feat: on-demand component installation for iOS runtimes and Android system images by @V3RON in #69
  • feat(ios): opt-in slim simulators (closes #87) by @V3RON in #89
  • fix(daemon): let the daemon exit while a detached lease is outstanding by @V3RON in #90
  • docs(adr): 0003 — one typed daemon contract behind every frontend by @V3RON in #92
  • feat(contract): declare every daemon operation once, negotiate protocol ranges by @V3RON in #93
  • feat(daemon): one dispatcher for every transport, roles, ownership, admin credential by @V3RON in #94
  • feat(client): a typed, single-connection daemon client by @V3RON in #95
  • feat(cli): render the contract; move token operations into the daemon by @V3RON in #96
  • feat(mcp): derive tool schemas from the contract, delete the session cache by @V3RON in #97
  • fix(contract): a lease grant returns a device projection, not the whole record by @V3RON in #98
  • docs: document the contract, the client, the security model, and 0.3.0's breaks by @V3RON in #99
  • fix(client): make abort actually cancel, and keep the mismatch escape hatch alive by @V3RON in #100
  • fix(daemon,http): one error table for both transports; fail a bind failure loudly by @V3RON in #102
  • fix(mcp,contract): scope lease_status to this session; restore the §1 boundary test by @V3RON in #103
  • fix(client): stop swallowing a second crash on the same lease by @V3RON in #104
  • fix(contract,daemon): narrow status.get, close the stop-during-start window by @V3RON in #105
  • fix(http,mcp,docs): one answer per operation across transports by @V3RON in #106
  • test(cli): restore coverage deleted under a false justification by @V3RON in #107
  • fix(daemon): reject instead of hanging when the socket claim loses the race by @V3RON in #108
  • feat(devices): Simlock-owned device roots for iOS and Android by @V3RON in #111
  • fix: resolve hardware verification findings B2, D1, D2, D3 by @V3RON in #113
  • docs(adr): 0004 TTL-first leases, 0005 gateway and worker modes by @V3RON in #121
  • docs: describe TTL-first leases end state, accept ADR 0004 (PR C) by @V3RON in #122
  • chore: ignore agent worktrees under .claude/worktrees/ by @V3RON in #133
  • docs: describe gateway and worker modes end state, accept ADR 0005 (#120) by @V3RON in #127
  • feat(cli,mcp)!: clients renew their own leases (ADR 0004, PR A) by @V3RON in #124
  • feat!(daemon,contract): one TTL-first lease on every transport (ADR 0004, PR B) by @V3RON in #125
  • feat(contract,daemon,http,cli): device.exec runs simctl/adb on the worker and streams output (ADR 0005, #116) by @V3RON in #128
  • feat(gateway,ports,http,cli): gateway skeleton — config.mode, uplink, worker views, worker.* (ADR 0005, #117) by @V3RON in #129
  • feat(gateway,core,contract,daemon): fleet queue, routing, and lease + exec forwarding (ADR 0005, #118) by @V3RON in #130
  • test(gateway,e2e): prove drain, WORKER_UNREACHABLE and reconnect rebuild end to end (ADR 0005, #119) by @V3RON in #131
  • test(e2e): prove the gateway happy path over the CLI and HTTP (ADR 0005) by @V3RON in #132
  • fix(lefthook): exclude docs/** from the format pre-commit job by @V3RON in #135
  • docs: split end-user docs from maintainer/agent docs by @V3RON in #134
  • docs(delivery): GitHub Issues as spec and queue — kind:state labels, issue forms, spec templates by @V3RON in #136
  • chore(skills): spec-session, triage-bug, and deliver skills for the delivery rule by @V3RON in #137
  • ci(issues): enforce the delivery label rules with one issue-state workflow by @V3RON in #138
  • docs(delivery),chore(skills): plain-language rule and triage fixes from the first live triage by @V3RON in #140
  • docs(delivery),chore(skills),ci(issues): blocked state, task demotion, request close, claim release by @V3RON in #142
  • fix(ios): write the download-lock separator as \0 instead of a raw NUL byte by @V3RON in #143
  • feat(core): create a new device identity for each lease under lease.identity fresh by @V3RON in #145
  • docs(delivery),chore(skills): two blind reviews before every PR — rule 14 and the review skill by @V3RON in #146
  • feat(cli,mcp): take the requester id from the agent session by @V3RON in #165
  • fix(ios): report downloaded runtimes whose disk nothing can reclaim by @V3RON in #144
  • feat(config,android): configure emulator launch options from the config file (#148) by @V3RON in #149
  • docs(adr): 0006 — events and the daemon log are two records; docs follow the implementing PR by @V3RON in #175
  • test(e2e): stop gateway and restart tests from sitting out 30s waits by @V3RON in #176
  • docs(adr): 0007 — a lease request chooses the device mode by @V3RON in #182
  • docs(adr): 0008 — the catalog pairs models with runtimes, and status carries host facts by @V3RON in #183
  • feat(core,http): store lease requests and replay them by idempotency key by @V3RON in #185
  • feat(bus,cli,config): keep business events on disk so the history survives a restart by @V3RON in #184
  • feat(daemon,cli): daemon log records every request and background failure; daemon logs --follow by @V3RON in #187
  • docs(adr): 0009 — gateway routing is a list of stages, and a request that cannot be served fails at once by @V3RON in #196
  • refactor(gateway): routing is an ordered list of stages by @V3RON in #197
  • feat(catalog,gateway,cli): the catalog pairs each model with its installed runtimes by @V3RON in #198
  • feat(contract,core,http,cli): report the device mode as mode on every surface by @V3RON in #199
  • test(e2e): read the nested lease grant in the slow lanes by @V3RON in #200
  • feat(gateway): a worker that answers NO_CAPACITY is asked once per change of its state by @V3RON in #201
  • feat(daemon,gateway,cli): status and the worker list report host facts by @V3RON in #203
  • feat(catalog,gateway,cli): the catalog lists every accepted Android name and every installed image by @V3RON in #202
  • feat(contract,core,ios,cli,http,gateway): a lease request chooses slim or full; ios.defaultMode sets the default by @V3RON in #204
  • feat(gateway): a worker is sent only requests its catalog says it can serve by @V3RON in #207
  • docs(adr): 0010 — components are installed, recorded and removed through one owner in the core by @V3RON in #222
  • feat(core,contract,daemon,gateway,cli): count each device against the RAM budget by its mode, and report the budget in status by @V3RON in #223
  • test(e2e): the slim lane reaches Simlock's device set, and the suite keeps one test per claim by @V3RON in #205
  • fix(ios,docs): stop saying iOS runtimes cannot be downloaded by @V3RON in #224
  • feat(core,ios,android,daemon): lease-triggered downloads go ...
Read more