AtlatestRepositorysigil-app
1# Changelog
2
3Versions are synced with Sigil releases. A missing entry indicates no changes for that version.
4
5All notable changes to this project will be documented in this file.
6
7The format is based on [Keep a Changelog](https://keepachangelog.com/),
8and this project adheres to [Semantic Versioning](https://semver.org/).
9
10## [0.10.2] - 2026-09-21
12### Added
14- **The mouse wheel.** `(mouse-wheel)` answers the wheel's vertical travel
15 since the last frame and `(mouse-wheel-x)` the horizontal, in GLFW's
16 units (a notch is 1.0 on most mice; vertical + is away from the user),
17 summed over the frame from GLFW's scroll callback and cleared with the
18 other per-frame input. Without a window both answer 0.0. Wanted by Crash
19 The Stack's tracker (the wheel scrolls the pattern; David, 2026-09-21).
21## [0.10.1] - 2026-09-20
23### Added
25- **The rest of the keyboard.** `key-down?`, `key-pressed?` and
26 `key-released?` now know `f1`..`f25`, `page-up`/`page-down`, `home`/`end`,
27 `insert`/`delete`, `right-shift`/`right-ctrl`/`right-alt`, `caps-lock`,
28 the punctuation row (`comma` `period` `slash` `semicolon` `apostrophe`
29 `minus` `equal` `left-bracket` `right-bracket` `backslash` `grave`, or the
30 character itself as a symbol) and the keypad (`kp-0`..`kp-9`, `kp-enter`,
31 `kp-add`, `kp-subtract`). The 0.10.0 names are unchanged. Wanted by
32 Crash The Stack's tracker, whose FastTracker key model needs the
33 function keys, paging and the punctuation row natively.
34- `(key-code key)`: the GLFW key code a symbol names, or `#f` for a name
35 that is no key; needs no window, so a program can check a binding
36 before it is used and the symbol table is testable (`test/test-keys.sgl`).
38## [0.10.0] - 2026-09-20
40The package is now **sigil-desktop**, and the window is GLFW instead of
41sokol_app.
43### Changed
45- **Native Wayland on Linux.** GLFW 3.5.1 is vendored as source under
46 `vendor/glfw` (no local patches, `VENDOR.md` has the pin and inventory).
47 One binary runs as a Wayland client or under X11, picked at startup;
48 `SIGIL_DESKTOP_PLATFORM=wayland|x11` forces it. Under sokol_app the
49 Linux window was always X11 (XWayland on a Wayland desktop).
50- **No platform libraries linked.** GLFW loads libwayland-client,
51 libxkbcommon, libX11 and friends, libEGL and libGL at run time; the
52 Linux `link-flags` are empty (were `-lX11 -lXi -lXcursor`). A game's
53 NEEDED list loses those three.
54- **Framebuffer pixels follow the output scale.** On a Wayland output at
55 scale 2 a window asked for at 800x600 has a 1600x1200 framebuffer;
56 `frame-width`/`frame-height` report it and `mouse-x`/`mouse-y` are in the
57 same pixels. Fractional scales work. A program with hard-coded pixel
58 coordinates should lay out from `frame-width` and `frame-height`. On X11
59 nothing changes.
60- The library is `(sigil desktop)`. `(sigil app)` remains as a re-export
61 for this release only.
62- `app-run` raises `app-run: could not open a window` (exit 1) when no
63 display platform or GL context is available; sokol_app aborted.
64- `(quit-requested?)` answers `#t` inside the frame the close button was
65 pressed in, not only in cleanup.
66- The frame clock restarts after the init procedure, so a long asset load
67 is not the first frame's delta time.
68- GL 4.3 core is requested on Linux and Windows and 4.1 on macOS, as
69 before; the window has no default icon (sokol_app drew one).
71### Added
73- `include/sigil-desktop.h`: `sigil_desktop_framebuffer_size`,
74 `sigil_desktop_gl_get_proc_address`, `sigil_desktop_platform`, the C
75 surface sigil-graphics builds its swapchain and GL loader on.
76- `src/c/dl-search.c`: a `dlopen` that finds runtime libraries in Guix and
77 Nix profile directories (`SIGIL_LIBRARY_PATH`, `$GUIX_ENVIRONMENT/lib`,
78 nix-shell inputs, `$NIX_LD_LIBRARY_PATH`, the user and system profiles),
79 with `test/dl-search-test.sh`.
80- `guix/run-wayland.scm`, `guix/run-x11.scm`, `guix/build.scm`.
81- `SIGIL_DESKTOP_VERBOSE=1` for startup, resize and library-resolution
82 diagnostics.
84### Removed
86- `vendor/sokol` (sokol_app, sokol_time, sokol_log) and the `sapp_*`
87 symbols. sigil-graphics 0.11.4 no longer links them.
89### Requires
91- Sigil 0.20+ as before. Building on Guix needs the X11 and Wayland headers
92 in `guix/build.scm` (libx11, libxcursor, libxrandr, libxinerama, libxi,
93 libxext, xorgproto, wayland, libxkbcommon).
95### Upgrade notes
97- **Relock at the new URL.** The Codeberg repository is
98 `sigil/sigil-desktop` since 2026-09-20 (renamed in place, the old URL
99 redirects): write `(from-git url: "codeberg:sigil/sigil-desktop"
100 version: "^0.10.0")` on your own window dependency line. The
101 transitional form the tag notes describe,
102 `(from-git url: "codeberg:sigil/sigil-app" name: "sigil-desktop" ...)`,
103 still works through the redirect; a line with neither the new URL nor
104 `name:` beside a sigil-graphics 0.11.4 installs the repository twice
105 (`sigil-app` 0.9 beside `sigil-desktop` 0.10, two window stacks, a
106 duplicate `slog_func` at link time), because sigil-build keys a
107 dependency by the name it derives from the URL.
108- Delete the consumer's `build/` once (a stale `sokol-app.o` otherwise
109 stays in the old archive), then rename `(sigil app)` imports to
110 `(sigil desktop)` before 0.11.
112## [0.9.0] - 2026-06-25
114### Changed
116- Raised the toolchain requirement to Sigil 0.17. The package now
117 declares `sigil: "^0.17"` and pins `sigil-stdlib` to `^0.17`. Sigil
118 0.17 makes the package-level `sigil:` field mandatory and derives the
119 native codegen runtime (`sigil-lib`) from it, so building under the
120 0.17 compiler requires this bump. This is a minor release because
121 consumers caret-pinning sigil-app must move to the 0.17 line.
123### Requires
125- Sigil 0.17+ (`sigil-stdlib` / `sigil-lib` 0.17 line).
127## [0.8.4] - 2026-04-24
129### Fixed
131- `link-flags:` now uses `(lambda (ctx) (case (target-os ctx) ...))`
132 instead of a host-based `(case (host-os) ...)` expression. The
133 host-based form evaluated at package-load time on the host, so
134 Linux link flags (`-lX11 -lXi -lXcursor`) leaked into Windows
135 cross-compile builds; `sigil build --config windows-amd64` from a
136 Linux host would fail at the final link against zig's MinGW
137 sysroot. The procedural form re-evaluates at link time with the
138 target triple. Branches themselves are unchanged (`linux`:
139 `-lX11 -lXi -lXcursor`; `darwin`: `-framework Cocoa -framework
140 QuartzCore`; `windows`: `-lkernel32 -luser32 -lshell32 -lgdi32`).
142### Requires
144- `sigil-build` 0.14.0+ (for the `target-os` / `target-arch` helpers
145 and the procedural-link-flags dispatch in `collect-native-link-flags`).
147## [0.7.0] - 2026-03-01
149### Added
151- Added procedure specifications with inline (: ...) syntax, optional runtime checking via sigil-checks feature, and predicate combinators (any-of, maybe, list-of, none-of).
152- Added procedure specs and docstrings to all exported procedures.
153- Added procedure specs and docstrings to all exported procedures.
155## [0.5.0] - 2026-02-17
157### Added
159- Added test harness generation and build support for packages with native dependencies. Improved native package handling, added c-flags field to library struct. Fixed stdlib inclusion in bundles with custom native runtimes, directory structure preservation in compile-c-sources, and absolute sigil-lib include path resolution.
160- Added test coverage.
161- Added test coverage.
163### Fixed
165- Fixed random seed initialization crash caused by flonum-to-bignum promotion in modulo. Fixed status command crash when displaying projected versions for packages without changes.
167### Other
169- New packages split from sigil-studio. Font and image modules moved to (sigil graphics *) namespace.