Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
2236600
Rework the SDL detection in configure.ac
bertogg May 13, 2026
0851387
Don't ship ui/gtk3/menu_data.ui in release tarballs
bertogg May 16, 2026
da89fc1
Fix error in manpage
bertogg May 16, 2026
05a0535
desktop file: set the GTK category in GTK builds only
bertogg May 16, 2026
f60387c
Merge /u/bertogg/fuse-emulator/ branch misc-fixes into master
May 16, 2026
48d1d23
Correct Options level full screen toggle for SDL 2 (thanks, Blerkotron)
fmeunier May 17, 2026
fe1d303
Add release process documentation and distribute maintainer helpers
fmeunier May 17, 2026
e6990de
Fix SDL2 Timex tape icon placement
fmeunier May 17, 2026
b54d59a
Advance ALSA buffer pointer after partial writes
fmeunier May 18, 2026
b02f406
Suppress AC_PROG_LEX deprecation warning with noyywrap
fmeunier May 18, 2026
d31999c
Fix duplicate step (7) numbering in build_linux_sub.yml
fmeunier May 18, 2026
cf3e865
Delete nightly build for now
fmeunier May 18, 2026
9542015
Update m4/pkg.m4 from pkg-config 0.24 to 0.29.2
fmeunier May 18, 2026
3ec60b1
Use ARRAY_SIZE macro instead of manual sizeof division in SDL2
fmeunier May 18, 2026
5dad7ae
Remove support for libjsw (fixes bug #21) (thanks, Sergio Baldoví)
fmeunier May 18, 2026
70456ce
Fix GTK display on maximized windows
bertogg May 18, 2026
ab05875
Use layout-aware key mapping in SDL2 keyboard handling
fmeunier May 19, 2026
422f039
Merge /u/bertogg/fuse-emulator/ branch fix-maximized-gtk3 into master
May 19, 2026
d0ca391
Release pressed keys after snapshot restore (fixes bug #77) (thanks, …
fmeunier May 19, 2026
079a77e
desktop file: include the value of EXEEXT in the Exec field
bertogg May 20, 2026
b1feba0
Simplify sdl2keyboard_dispatch after removal of physical map
fmeunier May 20, 2026
8afbb79
Don't ignore the embedded pause at the end of a block
bertogg May 27, 2026
1df203a
gtk3: Fix display artifacts when resizing windows on Wayland
bertogg May 29, 2026
6932086
gtk3: Stop forcing synchronous redraws to fix Wayland artifacts
bertogg May 29, 2026
6b91805
gtk3: Stop forcing X11 over Wayland
bertogg May 29, 2026
f7f561f
Fixes for GitHub actions builds with new SDL autoconf
fmeunier May 30, 2026
90b2d09
Add NTSC TV and replace PAL TV filters (patch #374)
fmeunier May 30, 2026
ec8fe52
Add remaining ED-prefix disassembler coverage
fmeunier Jun 1, 2026
2242ed3
Extend disassembler coverage for CB rotations and register pairs
fmeunier Jun 1, 2026
60a9807
Add DD/FD prefix (IX/IY) disassembler coverage
fmeunier Jun 1, 2026
13b5bd2
Add disassembler unit tests for main (unprefixed) Z80 opcodes
fmeunier Jun 2, 2026
defe026
Merge /u/bertogg/fuse-emulator/ branch dont-ignore-embedded-pause int…
Jun 5, 2026
af848ab
Update SourceForge HTTP URLs to HTTPS
fmeunier Jun 6, 2026
c334a4f
Remove redundant autoreconf and name anonymous workflow steps
fmeunier Jun 6, 2026
fae3af4
Add decimal-mode disassembler unit tests
fmeunier Jun 6, 2026
2870398
Add NOPD boundary tests for ED-prefix disassembler
fmeunier Jun 6, 2026
800101b
Add missing path coverage for sdl2_scaler_state
fmeunier Jun 6, 2026
4ef41eb
Add tests for SDL2 reevaluate-auto and user-select-unfitting paths
fmeunier Jun 6, 2026
ed996e4
Complete disassembler test coverage for conditional instructions
fmeunier Jun 6, 2026
3db5eed
Remove deprecated AM_PROG_CC_C_O
fmeunier Jun 6, 2026
c261186
Add NTSC scaler entries to fill_test_scales() helper
fmeunier Jun 6, 2026
c9fe127
Add missing boundary-condition tests to sdl2joysticktest
fmeunier Jun 7, 2026
bb4f3c8
Update m4/ax_pthread.m4 from serial 21 to serial 31
fmeunier Jun 7, 2026
8e06e57
Add missing m4/ax_strings_strcasecmp.m4 companion macro
fmeunier Jun 7, 2026
b9cb702
Add unit tests for keyboard_read and keyboard_simulate_keypress
fmeunier Jun 7, 2026
b761ec9
Add MEMPOOL_UNTRACKED coverage to mempool_test
fmeunier Jun 7, 2026
2f2939f
Add rectangle active/inactive reallocation path coverage
fmeunier Jun 7, 2026
1408862
Add modulo operator % to expression evaluator
fmeunier Jun 7, 2026
8b45ceb
Guard against undefined behaviour when end <= x in copy_critical_regi…
fmeunier Jun 7, 2026
fbed9f7
Add << and >> bit shift operators to expression evaluator
fmeunier Jun 7, 2026
82d022b
Set the pulse level after loading a ROM block with tape traps
bertogg Jun 8, 2026
b99abc9
Fix missing '%' case in is_non_associative()
fmeunier Jun 10, 2026
f6244c5
Replace magic number 14 with PSG_REGISTERS constant
fmeunier Jun 11, 2026
dfba113
Replace magic number 10 with TIMER_SPEED_HISTORY_SAMPLES
fmeunier Jun 11, 2026
40206ea
Replace magic numbers with AY_CHANNELS and AY_REGISTERS constants
fmeunier Jun 11, 2026
10824ae
Add named constants for flash attribute period
fmeunier Jun 11, 2026
80417d4
Add KEYBOARD_HALFROWS constant for half-row count
fmeunier Jun 11, 2026
e61ae22
Add AY_ENV_STEPS constant for envelope step count
fmeunier Jun 13, 2026
b8aa5ff
Name PSG file-format magic numbers as constants
fmeunier Jun 13, 2026
8537ec5
Add unit tests for expression evaluator
fmeunier Jun 14, 2026
f4512cb
Add DDCB/FDCB rotate/shift disassembler tests
fmeunier Jun 14, 2026
9b394c5
Merge two-pass AY tone-level loops into one
github-actions[bot] Jun 11, 2026
74134a1
Expand undocumented DDCB/FDCB LD reg,rotate test coverage
fmeunier Jun 15, 2026
b25b4ca
Guard shift operators against count >= 32
fmeunier Jun 15, 2026
64e16a7
Updates for a "1.9.0" version
fmeunier Jun 15, 2026
1c9767a
Updates for copyright headers
fmeunier Jun 15, 2026
9297373
Add hacking/releasing.md
fmeunier Jun 15, 2026
b72c83e
Remove reference to ui/scaler/snes_ntsc.txt
fmeunier Jun 15, 2026
e9dddc2
gtk3: Scale the Spectrum display to fit the window
bertogg May 28, 2026
134d884
gtk3: Allow the window to grow beyond MAX_SCALE
bertogg May 31, 2026
fc725bc
gtk3: Allow the user to resize the window freely on X11
bertogg May 31, 2026
e5b0e17
gtk3: Toggle fullscreen mode with F11
bertogg Jun 9, 2026
1215cf1
gtk3: Don't set the window aspect hint
bertogg Jun 9, 2026
38b98d4
gtk3: Don't switch scalers when the window is resized
bertogg Jun 14, 2026
257a1bd
gtk3: Remove the force_scaler parameter from register_scalers()
bertogg Jun 14, 2026
ca0ac97
gtk3: Hide the pointer and bars when the mouse is idle
bertogg Jun 15, 2026
62241ba
gtk3: Enable the full_screen setting in the GTK UI
bertogg Jun 15, 2026
ed7b18a
gtk3: Don't resize the display when the bars are hidden in full screen
bertogg Jun 15, 2026
22e8e6c
Ignore .exe files in unittests directory
sbaldovi Jun 14, 2026
4340e20
Use xmlBufferContent to extract XML data
sbaldovi Jun 14, 2026
d4114c1
Fix drag-and-drop files to GTK3 UI in Windows backend
sbaldovi Jun 19, 2026
663502c
Merge /u/bertogg/fuse-emulator/ branch gtk-scale-surface into master
Jun 22, 2026
ec0e3ff
gtk3: Don't leave a thin border around the scaled display
bertogg Jun 26, 2026
ac13d4c
Always provide initialised memory in memory_pool_allocate_persistent()
fmeunier Jun 27, 2026
116da8c
Include z80/coretest in make check
fmeunier Jun 27, 2026
5180cc9
Complete LD r,(IX/IY+d) and LD (IX/IY+d),r disassembler test coverage
fmeunier Jun 27, 2026
2f54f97
Replace R register magic numbers with named constants
fmeunier Jun 27, 2026
d4f2731
Cache beam position in display_update_critical()
fmeunier Jun 27, 2026
a67a18e
Add unary negation and binary subtraction non-associativity tests
fmeunier Jun 27, 2026
b6955e5
Remove duplicate find_breakpoint_by_id() forward declaration
fmeunier Jun 27, 2026
f1298b1
Replace magic number 40 with DISASM_BUF_LEN constant
fmeunier Jun 27, 2026
c4dfb10
Use GitHub mirror URL for libspectrum clone
fmeunier Jun 27, 2026
54de01d
Remove deprecated AC_C_CONST and AC_C_INLINE macros from configure.ac
fmeunier Jun 27, 2026
dc3f1fd
Remove unused AX_CREATE_STDINT_H macro file
fmeunier Jun 27, 2026
54c562a
Replace magic numbers with named constants in tape.c
fmeunier Jun 27, 2026
71ee8af
Cache adjusted/clamped beam coords in display_update_critical()
fmeunier Jun 27, 2026
c5c109c
Fix decimal deparse of libspectrum_dword values > INT_MAX
fmeunier Jun 27, 2026
d56e342
Cache libspectrum Linux and macOS builds to speed up CI
fmeunier Jun 27, 2026
016b0de
Replace magic ULA bit masks with named constants
fmeunier Jun 28, 2026
918493c
Use libXML for config files in all Windows release build variants
fmeunier Jun 28, 2026
21411d2
Fall back to defaults if loading a settings file fails
fmeunier Jun 28, 2026
36f5b6d
Revert "gtk3: Remove the force_scaler parameter from register_scalers()"
bertogg Jun 22, 2026
5c57618
Revert "gtk3: Don't switch scalers when the window is resized"
bertogg Jun 22, 2026
03941c5
gtk3: Don't switch scalers while the user is resizing the window
bertogg Jun 23, 2026
a254c9e
gtk3: Select scalers from the same family when resizing the window
bertogg Jun 23, 2026
0bc61e0
Add CB prefix rotate/shift test coverage for register A and (HL)
fmeunier Jun 29, 2026
5c57e3a
Add CB prefix rotation/shift tests for registers C, D, E, H, L
fmeunier Jun 30, 2026
28442f7
Add deparse tests for all remaining binary operators
fmeunier Jun 30, 2026
9f42b65
Add deparse tests for unary !, ~, and non-assoc /, <<
fmeunier Jun 30, 2026
09618d8
Add CB BIT/RES/SET disassembler tests for all registers
fmeunier Jun 30, 2026
4b91a65
Add deparse tests for DEBUGGER_TOKEN_DEREFERENCE
fmeunier Jul 1, 2026
2426cdd
Add remaining CB rotation/shift tests for registers D, E, H, L
fmeunier Jul 1, 2026
4f5982b
Add unit tests for user-defined variable expressions
fmeunier Jul 2, 2026
79b224e
Add const to expression evaluate/copy functions
fmeunier Jul 3, 2026
becbb7f
Add copy and rshift-non-assoc tests
fmeunier Jul 3, 2026
c382ccf
Merge /u/bertogg/fuse-emulator/ branch scaler-selection into master
Jul 4, 2026
a365e1a
Add unit tests for DEBUGGER_EXPRESSION_TYPE_SYSVAR expressions
fmeunier Jul 4, 2026
00c19cd
Skip symbol characters on Wii UI (fixes bug #266) (Sergio Baldoví)
fmeunier Jul 5, 2026
27282b7
Remove redundant labels to simplify gtk3 joystick mapping dialog
fmeunier Jul 15, 2026
5f82f24
Fix off-by-one in svg_startcapture allocation
fmeunier Jul 15, 2026
d117c3a
Add scaler_for_size unit tests
fmeunier Jul 15, 2026
e788f18
Add comparison non-associativity deparse tests
fmeunier Jul 15, 2026
9bba793
Eliminate redundant attr lookup in display_write_if_dirty_timex()
fmeunier Jul 15, 2026
f9a1659
Update hacking/unittests.txt to reflect current test suite
fmeunier Jul 15, 2026
8b83280
Replace attribute dirty-tracking lookup tables with arithmetic
fmeunier Jul 17, 2026
b360274
Add const to event/sysvar helper functions and deparse tests for logi…
fmeunier Jul 17, 2026
e70b37c
sound: replace AY noise RNG conditionals with branch-free bit operations
github-actions[bot] Jul 16, 2026
7f543ae
tests: compare AY noise RNG update implementations
fmeunier Jul 17, 2026
01d4cce
Revert accidental commit "compare AY noise RNG update implementations"
fmeunier Jul 17, 2026
8cdd16d
Blend PAL composite scaler chroma across lines
fmeunier Jul 19, 2026
bc66e4d
Fix use-after-free in SDL audio device setup
fmeunier Jul 20, 2026
35b6f8a
Simplify display_all_dirty initialisation to a bitmask expression
fmeunier Jul 20, 2026
0c36516
Add DISPLAY_PIXEL_BYTES, DISPLAY_ATTR_BYTES, and DISPLAY_FILE_SIZE co…
fmeunier Jul 20, 2026
fa36b03
Replace |& with 2>&1 | and drop brew install bash on macOS
fmeunier Jul 20, 2026
17b86ed
Fix strerror( -errno ) to strerror( errno ) in relative_paths
fmeunier Jul 23, 2026
42a4439
Simplify ay_do_tone() by removing redundant else branch
fmeunier Jul 23, 2026
c800906
Replace magic screen size literals with named constants
fmeunier Jul 23, 2026
6c7c5aa
Extend scalerexpandtest to cover all four expander types
fmeunier Jul 23, 2026
3c9bbf5
Fix strerror() calls with wrong arguments in sdlsound.c
fmeunier Jul 23, 2026
57cbfc9
Decode tape header names with libspectrum_zx_string_to_utf8()
fmeunier Jul 23, 2026
57ca1e2
Use updated libspectrum_zx_string_to_utf8()
fmeunier Jul 25, 2026
05ce360
Updates for a "1.9.1" version
fmeunier Jul 25, 2026
f3d754e
Don't redefine main on Windows for palcompositetest
fmeunier Jul 25, 2026
51775b8
Don't redefine main on Windows for scalerexpandtest
fmeunier Jul 25, 2026
8e5be95
Updates for a "1.9.1" version
fmeunier Jul 27, 2026
b782ba1
Distribute data/win32/LICENSES.txt and data/win32/README-win32.txt
sbaldovi Jul 30, 2026
3135b77
Extract transitive dependencies for Windows distribution
sbaldovi Jul 30, 2026
48d0dfd
Merge Fuse 1.9.1
morozov Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .agents/skills/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
Repository skills
=================

This directory contains optional maintainer automation helpers for
agent environments that support repository skills.

These files are not required to build or use Fuse. They exist as
convenience helpers for contributor and release workflows.

Currently included:

* `update-changelog` - drafts a new top-of-file `ChangeLog` release
entry using the existing Fuse project format.

If your agent environment does not support repository skills, follow the
normal documented maintainer process instead.
117 changes: 117 additions & 0 deletions .agents/skills/update-changelog/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
---
name: update-changelog
description: Drafts a new top-of-file Fuse release entry in ChangeLog and a high-level AppStream release entry using unrecorded commits and the project’s existing formats. Drafts first, then waits for confirmation before editing release notes.
---

# Update ChangeLog

This is a project-specific skill for preparing a Fuse release ChangeLog entry.

Use this skill when the user wants to update `ChangeLog` for a release.

## Rules

- Follow the existing style in `ChangeLog` exactly.
- Preserve all existing entries unchanged.
- Draft first.
- Do not edit `ChangeLog` or `data/net.sourceforge.fuse_emulator.Fuse.metainfo.xml` until the user confirms.
- If the release version is not yet known, ask the user for it before drafting the new entry.
- Use the most recent unrecorded commit date for the new heading.
- Use Philip Kendall’s maintainer identity in the heading:
`YYYY-MM-DD Philip Kendall <philip-fuse@shadowmagic.org.uk>`

## Workflow

Update the ChangeLog file in the current directory `ChangeLog` with any commits that are not yet recorded.

1. Use `git log ChangeLog` to find the most recent modification git hash.
2. Run `git log --format="%H %ai %s" <last modification git hash>..HEAD` to find unrecorded commits.
3. Run `git log <last modification git hash>..HEAD` to inspect commit bodies when needed.
4. Filter out noise commits: merges, "revert accidental commit", "add ignore", "update for version",
"first updates for", "bring up to date", "tidy up commit text", and similar meta-commits that don't
describe user-visible changes.
5. For each remaining commit, determine its category according to the principles below.
6. Add a new date entry at the top of the `ChangeLog` after the first line of the file, using the most recent
unrecorded commit's date, with Philip Kendall's name/email as maintainer:
`YYYY-MM-DD Philip Kendall <philip-fuse@shadowmagic.org.uk>`
7. Under that date, add a `* Fuse X.Y.Z released.` entry.
8. Under that date, add entries grouped by category, 8-space indented, matching the existing format.
9. Draft a corresponding high-level `<release>` entry for
`data/net.sourceforge.fuse_emulator.Fuse.metainfo.xml`. Use the same version and date, insert it first in
`<releases>`, and follow the existing XML format. Summarise only the most notable user-facing changes in a
concise `<ul>`; do not duplicate every ChangeLog item.
10. Show both proposed entries to the user and ask for confirmation.
11. Only after confirmation, update both `ChangeLog` and
`data/net.sourceforge.fuse_emulator.Fuse.metainfo.xml`.

## ChangeLog grouping structure

### Top-level structure per release

Each release entry has:
1. Date line (`YYYY-MM-DD`)
2. Author line (`Philip Kendall` with email)
3. Release announcement (`* Fuse X.Y.Z released.`)
4. Categorized bullet groups (see below)
5. Catch-all footer (`* Various other minor bugfixes.` or similar)

### Category groups

The ChangeLog uses a fixed set of category headings, each as a bullet followed by a colon. Sub-items are indented
bullets under the heading:

- `* New features:` User-facing additions: new hardware emulation, new file formats, new UI backends, new capabilities.
- `* Emulation core improvements:` Z80 accuracy, timing fixes, peripheral emulation, disk/tape handling, sound accuracy.
- `* Machine specific improvements:` Fixes scoped to a particular machine type (`+3`, Timex, Pentagon, etc.).
- `* UI improvements:` GTK/Win32/SDL/Xlib UI changes, dialogs, menus, display rendering, redraw fixes.
- `* Debugger improvements:` Breakpoints, disassembly, debugger variables, memory browser.
- `* Profiler improvements:` Code profiler fixes.
- `* Scaler improvements:` Graphics scaler additions/fixes.
- `* RZX improvements:` Recording/playback features.
- `* Deprecated features removed:` Removed UI backends, removed syntax, dropped dependencies.
- `* Miscellaneous improvements:` Build system, compiler warnings, docs, platform portability, memory leaks, anything that doesn't fit above.
- `* Testing improvements:` Unit tests, CI workflows, test coverage.
- `* Bugfixes:` / `* Minor bugfixes:` Small standalone fixes used in older releases.

## Key patterns

1. Not all categories appear in every release — only categories that have relevant changes are included.
2. Each bullet is a single sentence describing the change, often with:
- the what
- the impact
- credits in parentheses at the end: `(Author Name)` or `(thanks, Contributor) (Author Name)`
- bug references: `(fixes bug #NNN)`
3. Credits are consistent — the primary author of the commit is in the final parentheses. `thanks, X` acknowledges
upstream or community input.
4. Bullet hierarchy is two levels deep — category heading to specific changes. No deeper nesting.
5. Most releases end with `* Various other minor bugfixes.` as a catch-all for small fixes not worth itemizing.
6. Order is roughly consistent: New features, Emulation core, Machine specific, UI, Debugger, optional categories,
Deprecated, Miscellaneous, Testing, footer.
7. Indentation: 8 spaces for the category heading line, 10 spaces for sub-bullets, using spaces and not tabs.
8. Older releases use a simpler flat bullet list; follow the current grouped format used at the top of the file.

## When generating entries

- Classify each commit into one of the standard categories.
- Write a single-sentence bullet per change.
- Include impact or context where available, including bug numbers and affected games.
- Include credits in parentheses.
- Use the standard category ordering.
- Skip categories with no entries.
- Add `Various other minor bugfixes` as a footer if there are unclassified small fixes.

## Drafting instructions

When presenting the draft:

- show only the proposed new ChangeLog and AppStream release entries
- do not edit either file yet
- ask the user to confirm or request changes

When the user confirms:

- insert the new entry at the top of `ChangeLog` after the first line
- insert the matching high-level release entry first in `<releases>` in
`data/net.sourceforge.fuse_emulator.Fuse.metainfo.xml`
- do not alter older entries
- validate the AppStream XML after editing
Loading
Loading