Skip to content

windows: the socket server builds for Windows - #14

Merged
foxnne merged 1 commit into
sdk/repin-0.2.27from
windows/sockets
Oct 15, 2026
Merged

foxnne merged 1 commit into
sdk/repin-0.2.27from
windows/sockets

Conversation

@foxnne

@foxnne foxnne commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

agent's Windows build did not compile (seen by the CI added in #13): the socket server assumed POSIX descriptors and process ids.

  • Server.zig: the wake pipe stop writes to (so the accept thread wakes without connecting to a path another fizzy may have taken over) is [2]std.c.fd_t, which is HANDLE on Windows and can't be -1 or polled beside a socket. It now exists only off Windows (has_wake_pipe); Windows keeps waking by connecting, as the comment already said it did.
  • plugin.zig: the fallback socket path for a deep profile was /tmp/fizzy-agent-{pid}.sock with std.c.getpid() (a HANDLE on Windows, so {d} failed). On Windows it is %TEMP%\fizzy-agent-{GetCurrentProcessId}.sock.
  • plugin.zig: connection.zon was created with .fromMode(0o600), which Windows' Permissions has no member for. On Windows it is .default_file, so the file inherits the profile directory's ACL (that user's only).

Verified: zig build -Dtarget= for x86_64-windows, x86_64-linux-gnu, aarch64-macos, and zig build test on macOS, all against fizzy main's sdk/ (--fork), with FIZZY_PROFILE in a sandbox. The pinned SDK 0.2.26 still fails on Script.StrokePoint (from fizzy #431) until SDK 0.2.27 is released and repinned. Not run on a Windows machine: this makes it build, it does not show the socket works there.

🤖 Generated with Claude Code

@foxnne foxnne mentioned this pull request Oct 15, 2026
2 of 8 tasks
foxnne added a commit to fizzyedit/fizzy that referenced this pull request Oct 15, 2026
## What changes

`sdk_version` goes from 0.2.26 to 0.2.27. Merging this tags
`sdk-v0.2.27` and publishes its tarball.

**Why now:** the agent plugin's `stroke` step (fizzyedit/agent#11, on
agent `main`) uses `tape.Script.StrokePoint` from #431, which no
released SDK has, so agent's new CI (fizzyedit/agent#13) can't pass
against its pinned SDK until it repins to a release that carries it.

## SDK impact

- [ ] None
- [ ] Core-only or additive: reaches plugins at the next SDK release
- [ ] Fingerprint moved: recorded in `sdk/src/version.zig`,
`sdk_version` untouched, PR labelled `sdk`
- [x] SDK release: bumps `sdk_version`, lists the `sdk` PRs since the
last `sdk-v*` tag

**`sdk` PRs since `sdk-v0.2.26`:**
- **#434:** two optional document vtable members, `historyLine` (a
document's undo history as a line of steps, with a `version`) and
`historyGoTo` (undo or redo to a step), with `Plugin.HistoryLine`. An
owner without them has no timeline; undo and redo are unchanged. The
fingerprint moved, so the repin automation opens a repin PR in each
store plugin.

**Reaching plugins, no fingerprint move:**
- **#431:** `tape`: a stroke carries the pointer in straight lines
(`Script.StrokePoint`).
- **#432:** `tape`: a caption follows where the pointer reaches, not a
pen's path.
- **#433:** `replay`: a tape's pointer gives way to a cursor the app
draws itself.
- **#427:** `core`: the bubble spinner keeps its bubbles near one size
at any scale.

Open `sdk`-labelled #437 (the Zig 0.17 switch) is a draft and not in
this release.

## Verified

- [x] macOS:
- On this head, `zig build test-sdk-version`: 12/12 steps succeeded.
`scripts/pack-sdk.sh` packs `fizzy-sdk-v0.2.27.tar.gz`.
- fizzyedit/agent (main plus fizzyedit/agent#14) builds against this
`sdk/` (`--fork`) for x86_64-windows, x86_64-linux-gnu and
aarch64-macos, and `zig build test` passes.
- [ ] Windows:
- [ ] Linux: CI.
- [ ] Web:

## Follow-ups

- The repin automation opens `sdk: repin to fizzy SDK 0.2.27` PRs in the
store plugins whose build needs it. agent repins too, and then
fizzyedit/agent#13's CI can go green.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The server woke its accept thread through a pipe of POSIX descriptors, which on Windows are
`HANDLE`s: the wake pipe now exists only off Windows, which keeps waking by connecting. The
temp-directory socket path used `/tmp` and a `pid_t`, and `connection.zon` a POSIX mode; on
Windows they are `%TEMP%`, `GetCurrentProcessId`, and the profile directory's own ACL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@foxnne
foxnne changed the base branch from main to sdk/repin-0.2.27 October 15, 2026 14:22
@foxnne
foxnne merged commit 2ae24ec into sdk/repin-0.2.27 Oct 15, 2026
foxnne added a commit that referenced this pull request Oct 15, 2026
* sdk: repin to fizzy SDK 0.2.27

The stroke step uses tape's Script.StrokePoint, first released in 0.2.27, so the
pinned SDK and min_sdk_version both move to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* windows: the socket server builds for Windows (#14)

The server woke its accept thread through a pipe of POSIX descriptors, which on Windows are
`HANDLE`s: the wake pipe now exists only off Windows, which keeps waking by connecting. The
temp-directory socket path used `/tmp` and a `pid_t`, and `connection.zon` a POSIX mode; on
Windows they are `%TEMP%`, `GetCurrentProcessId`, and the profile directory's own ACL.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant