AtlatestRepositorysigil-app
1
# Changelog3
Versions are synced with Sigil releases. A missing entry indicates no changes for that version.5
All notable changes to this project will be documented in this file.7
The format is based on [Keep a Changelog](https://keepachangelog.com/),8
and this project adheres to [Semantic Versioning](https://semver.org/).10
## [0.10.2] - 2026-09-2112
### Added14
- **The mouse wheel.** `(mouse-wheel)` answers the wheel's vertical travel15
since the last frame and `(mouse-wheel-x)` the horizontal, in GLFW's16
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 the18
other per-frame input. Without a window both answer 0.0. Wanted by Crash19
The Stack's tracker (the wheel scrolls the pattern; David, 2026-09-21).21
## [0.10.1] - 2026-09-2023
### Added25
- **The rest of the keyboard.** `key-down?`, `key-pressed?` and26
`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 the30
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 by32
Crash The Stack's tracker, whose FastTracker key model needs the33
function keys, paging and the punctuation row natively.34
- `(key-code key)`: the GLFW key code a symbol names, or `#f` for a name35
that is no key; needs no window, so a program can check a binding36
before it is used and the symbol table is testable (`test/test-keys.sgl`).38
## [0.10.0] - 2026-09-2040
The package is now **sigil-desktop**, and the window is GLFW instead of41
sokol_app.43
### Changed45
- **Native Wayland on Linux.** GLFW 3.5.1 is vendored as source under46
`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 the49
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; the52
Linux `link-flags` are empty (were `-lX11 -lXi -lXcursor`). A game's53
NEEDED list loses those three.54
- **Framebuffer pixels follow the output scale.** On a Wayland output at55
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 the57
same pixels. Fractional scales work. A program with hard-coded pixel58
coordinates should lay out from `frame-width` and `frame-height`. On X1159
nothing changes.60
- The library is `(sigil desktop)`. `(sigil app)` remains as a re-export61
for this release only.62
- `app-run` raises `app-run: could not open a window` (exit 1) when no63
display platform or GL context is available; sokol_app aborted.64
- `(quit-requested?)` answers `#t` inside the frame the close button was65
pressed in, not only in cleanup.66
- The frame clock restarts after the init procedure, so a long asset load67
is not the first frame's delta time.68
- GL 4.3 core is requested on Linux and Windows and 4.1 on macOS, as69
before; the window has no default icon (sokol_app drew one).71
### Added73
- `include/sigil-desktop.h`: `sigil_desktop_framebuffer_size`,74
`sigil_desktop_gl_get_proc_address`, `sigil_desktop_platform`, the C75
surface sigil-graphics builds its swapchain and GL loader on.76
- `src/c/dl-search.c`: a `dlopen` that finds runtime libraries in Guix and77
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-resolution82
diagnostics.84
### Removed86
- `vendor/sokol` (sokol_app, sokol_time, sokol_log) and the `sapp_*`87
symbols. sigil-graphics 0.11.4 no longer links them.89
### Requires91
- Sigil 0.20+ as before. Building on Guix needs the X11 and Wayland headers92
in `guix/build.scm` (libx11, libxcursor, libxrandr, libxinerama, libxi,93
libxext, xorgproto, wayland, libxkbcommon).95
### Upgrade notes97
- **Relock at the new URL.** The Codeberg repository is98
`sigil/sigil-desktop` since 2026-09-20 (renamed in place, the old URL99
redirects): write `(from-git url: "codeberg:sigil/sigil-desktop"100
version: "^0.10.0")` on your own window dependency line. The101
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 nor104
`name:` beside a sigil-graphics 0.11.4 installs the repository twice105
(`sigil-app` 0.9 beside `sigil-desktop` 0.10, two window stacks, a106
duplicate `slog_func` at link time), because sigil-build keys a107
dependency by the name it derives from the URL.108
- Delete the consumer's `build/` once (a stale `sokol-app.o` otherwise109
stays in the old archive), then rename `(sigil app)` imports to110
`(sigil desktop)` before 0.11.112
## [0.9.0] - 2026-06-25114
### Changed116
- Raised the toolchain requirement to Sigil 0.17. The package now117
declares `sigil: "^0.17"` and pins `sigil-stdlib` to `^0.17`. Sigil118
0.17 makes the package-level `sigil:` field mandatory and derives the119
native codegen runtime (`sigil-lib`) from it, so building under the120
0.17 compiler requires this bump. This is a minor release because121
consumers caret-pinning sigil-app must move to the 0.17 line.123
### Requires125
- Sigil 0.17+ (`sigil-stdlib` / `sigil-lib` 0.17 line).127
## [0.8.4] - 2026-04-24129
### Fixed131
- `link-flags:` now uses `(lambda (ctx) (case (target-os ctx) ...))`132
instead of a host-based `(case (host-os) ...)` expression. The133
host-based form evaluated at package-load time on the host, so134
Linux link flags (`-lX11 -lXi -lXcursor`) leaked into Windows135
cross-compile builds; `sigil build --config windows-amd64` from a136
Linux host would fail at the final link against zig's MinGW137
sysroot. The procedural form re-evaluates at link time with the138
target triple. Branches themselves are unchanged (`linux`:139
`-lX11 -lXi -lXcursor`; `darwin`: `-framework Cocoa -framework140
QuartzCore`; `windows`: `-lkernel32 -luser32 -lshell32 -lgdi32`).142
### Requires144
- `sigil-build` 0.14.0+ (for the `target-os` / `target-arch` helpers145
and the procedural-link-flags dispatch in `collect-native-link-flags`).147
## [0.7.0] - 2026-03-01149
### Added151
- 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-17157
### Added159
- 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
### Fixed165
- 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
### Other169
- New packages split from sigil-studio. Font and image modules moved to (sigil graphics *) namespace.