Repository navigation
ci: the example repos are checked at main again - #598
Merged
Merged
Conversation
Their Zig 0.17 PRs have landed, so check-examples.sh clones each example's default branch, as before the move. The dvui-dev pin's tag, fizzy-sdk-0.2.30-7, is recorded. win32_titlebar.zig takes zig fmt's 0.17 upgrades, which #463 brought in 0.16 form. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 of 8 tasks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
foxnne
marked this pull request as ready for review
October 19, 2026 01:14
foxnne
added a commit
that referenced
this pull request
Oct 19, 2026
Part of #530 ## What changes A plugin can replace the workbench's home page (logo, New File, Open Folder) by registering a surface with the keyword `home` (`sdk.keywords.ide.home`): ```zig try host.registerSurface(.{ .id = "graphl.start", .title = "Start", .keywords = sdk.keywords.ide.home, .draw = drawStart }); ``` While its one document pane is empty, the workbench declares a region named `Home` inside it (`Workspace.drawHome`: `keywords = {"home"}`, `shows = .one`, `hide_when_empty`). It draws the surface that region accepts, or its own page when there isn't one. Because the place exists only while nothing is open, a document opening puts the home away. So does a restored session landing a few frames after startup, and the last document closing brings it back. Graphl no longer has to retry `revealSurface` until the regions exist, or watch for the restore. ### Design note **(a) A `home` keyword, and a Home place the workbench declares (chosen).** This reuses the existing seams. Keywords say what a surface is. A plugin region decides where it goes and when it exists. Assignments choose between two: an app can call `host.assignSurfaces("Home", &.{"graphl.start"})`, the same list session restore and the picker write, and a user can choose in Settings › Layout. None of the shape's regions accept `home` (`Fit.none` against `main`), so a home surface never turns up as a tab in Main. The web build runs the same statically linked workbench. **(b) An app setting or `AppInfo` field naming the home surface id.** The workbench would read it through a new `EditorAPI` member, which moves the fingerprint. It would also be a second way to say where a surface goes, beside keywords and assignments, and only an app could use it: a plugin couldn't offer a home page, and a user couldn't choose between two. (a) is narrower and declarative. The boundary's shape doesn't move (`test-sdk-version` passes unchanged); the only addition is one keyword preset. The note is also on #530. Also: `Editor.fizzy_api_vtable` is now `pub`, so the test can drive the workbench's own `drawHome` through a real `Host`. ## SDK impact - [ ] None - [x] Core-only or additive: reaches plugins at the next SDK release. It adds `sdk.keywords.ide.home`; a plugin on an older SDK can write `&.{"home"}`. The fingerprint did not move. - [ ] Fingerprint moved: recorded in `sdk/src/version.zig`, `sdk_version` untouched, PR labelled `sdk` - [ ] SDK release: bumps `sdk_version`, lists the `sdk` PRs since the last `sdk-v*` tag ## Verified - [x] macOS: the new integration test `workbench: a home surface shows while nothing is open, and a document puts it away` drives the workbench's `Workspace.drawHome` inside a pane declared as `Workspace.draw` declares it. It checks that: with no home surface the place declines and the built-in page draws; a home surface draws once, in Home and not in Main; a restored pane listing a document that hasn't landed keeps the home, and the landing puts it away (drawn nowhere); the last document closing brings it back; and with two home surfaces the first shows until `assignSurfaces("Home", …)` picks the other. I broke one expectation once to confirm the test runs. Gates: `check-fmt` (only the existing `backend/src/platform/win32_titlebar.zig`, untouched here), `zig build`, `test`, `test-integration` (80/80 steps), `check-web`, `test-sdk-version`, `check-tests-reached`, and `check-examples` (example-app `zig-0.17` + example-plugin `main` via `EXAMPLES_DIR`; the default `zig-0.17` ref no longer exists for example-plugin, which #598 fixes). I didn't run it in the live app: fizzy registers no home surface, so its page goes down the unchanged path. - [ ] Windows: - [ ] Linux: CI - [ ] Web: `check-web` only ## Follow-ups - Shapes without the workbench (`example-app`'s minimal, studio, endless) have no `Home` place. A shape that wants one declares a region that takes `home` itself. - Graphl's start page: switch its keywords to `sdk.keywords.ide.home` and drop the startup retry and restore watch, once this reaches an SDK release. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of fizzyedit/plans#5 (
plans/ZIG_0_17_PLAN.md): the last step of the Zig 0.17 switch. Merge after fizzyedit/example-app#8. Until that lands, example-app'smainis still 0.16, and this PR's "Example repos" check buildsmain.What changes
scripts/check-examples.shclones each example's default branch again, as it did before the move. ci: main's checks pass again (a formatted file, the examples' branch) #597 made it fall back tomainwhen an example'szig-0.17branch is gone; with both examples' 0.17 PRs landed (zig: build on Zig 0.17 example-plugin#13, and example-app#8 just before this), the plain clone is all that's left.docs/DEPENDENCIES.mdrule 2 ("tag, then pin"):fizzy-sdk-0.2.30-7→1b29a16onzig-0.17, what SDK 0.2.30 pins. The pin's comment anddocs/DEPENDENCIES.mdsay so. The table names thezig-0.17branch, and thezig/0.17wording becomes "since fizzy moved to Zig 0.17 (zig: fizzy builds on Zig 0.17 #575)".SDK impact
Verified
scripts/check-fmt.shclean;bash -n scripts/check-examples.sh.main: CI, once example-app#8 is in.🤖 Generated with Claude Code