# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.6.1] - 2026-02-01

### Features

- Feature: Support for .d64 disk images. Supports picking a .prg file from within the disk image.
- Feature: CLI: Added `--export_asm` and `--export_lbl` command line options.
- Feature: Bitmap view: Screen RAM address is now configurable.

### Changes

- Settings: "BRK single byte" is now enabled by default.
- UI: Hexdump default view mode is now "Screencode shifted".

### Documentation

- Docs: Added comprehensive "Mini Tutorial" walkthrough.
- Docs: Added graphics and updated tutorials section.
- Docs: Blocks documentation updated with tabs for each supported assembler.
- Docs: Updated keyboard shortcuts documentation.

### Fixes

- Fix: Splitter and collapsed blocks improvements.

### Refactor / Internal

- Refactor: `state.rs` split into multiple submodules (types, settings, project, app_state).
- Refactor: Large methods in `disassembler.rs` moved to separate modules.
- Refactor: Graphics code moved to its own file.
- Testing: Added comprehensive CPU module tests.

## [0.6.0] - 2026-01-30

### Features

- Feature: Support for LoHi and HiLo word block type. Keyboard shortcuts 'T' and 'Shift+T'.
- Feature: Export VICE labels to `.lbl` format (File -> Export -> Export VICE Labels)
- Feature: Import VICE labels from `.lbl` files (--import_lbl command line option)
- Feature: Go to Symbol dialog (Ctrl+P) - navigate to labels by name
- Feature: File dialogs remember last used paths
  - Export As remembers last used filename
  - Save/Export/Import remember last used folders
- Feature: Status bar shows filename for Save, Export, Import, and Open operations
- Feature: File dialogs include file extensions in the dialog
- Feature: Alt+F keyboard shortcut to open File menu
- Feature: Alt+H keyboard shortcut to open Help menu
- Feature: Keyboard shortcuts for Edit Menu and Search Menu

### Changes

- The keyboard shortcut for PETSCII Text changed from 'T' to 'P'.

### Fixes

- Fix: Splitter and collapsed blocks work correctly together
- Fix: Arrow visualization improvements - fixed passthrough arrows, eliminated "ghost" arrows
- Fix: Keyboard shortcuts requiring Shift key now work correctly on Windows
- Fix: Find References dialog only enabled when focus is on Disassembly view

### Documentation

- Docs: Initial MkDocs integration with ReadTheDocs hosting
- Docs: Architecture documentation updated with all current components
- Docs: Architecture diagram converted to Mermaid format
- Docs: Improved ca65 assembler documentation
- Docs: Added Settings dialog documentation
- Docs: Keyboard shortcuts now use pymdownx.keys extensions for better formatting
- Docs: Added FAQ and Views documentation
- Docs: Added logo and favicon for documentation site

### Settings

- Settings: Changed default for sync views (disabled by default)

### Examples

- Examples: Updated example projects with improved annotations

## [0.5.2] - 2026-01-26

### Fixes

- Fix: cargo fmt fixes

## [0.5.1] - 2026-01-26

### Features

- Feature: Mouse support
  - Click on menu expands submenu
  - Close dialogs with mouse
  - File -> Exit works with mouse
  - Navigation with scroll wheel / touchpad two-fingers
- Feature: External labels support
  - Rename labels from external addresses
  - Navigate in external label references
- Feature: Menu -> Edit -> Set Label added
- Feature: Better navigation in Keyboard Shortcut dialog (Page Up, Page Down, Ctrl+D, Ctrl+U)

### Fixes

- Fix: Jump to address works correctly when address has associated lines and subindex
- Fix: Search lands in correct subline
- Fix: Crash when setting block type on empty range
- Fix: Don't allow setting labels in external labels that start with comment
- Fix: Close About dialog faster with mouse

### Refactor

- Refactor: Renamed `comment_address` to `external_label_address`
- Refactor: Reduced duplicate code between disassembler.rs and view_disassembly.rs
- Refactor: Move logic whether opcode should have arrows to cpu.rs
- Refactor: Cross-reference function factored out
- UI: X-ref with more than supported displayed as "..."

## [0.5.0] - 2026-01-24

- Feature: Find Reference dialog (Ctrl+x)
- Feature: Bitmap Viewer with High-Res and Multicolor support.
- Feature: Settings: Auto-analyze on file open (enabled by default)
- Feature: Settings: Sync between Disassembly and Hexdump, Sprites, Charset, Bitmap and Blocks views (enabled by default)
- Feature: Partial bitmap and sprites rendering support
- Feature: Visual selection mode in HexDump, Sprites, and Charset views
- Feature: Search:
  - Hex byte pattern search with wildcards
  - Omni search now includes PETSCII and screencodes
- Feature: Press 'b' in side panels to convert to bytes
- Feature: pressing Enter in right-side pane, updates cursor in Disassembly view.
- UI: Updated Keyboard Shortcut dialog
- UI: Reordered options in Settings dialog
- UI: Don't show addresses if there are no bytes
- Performance: Image caching for faster rendering (Bitmap view)
- Navigation: Move up/down skip lines without "real bytes"
- Settings: Config: "Patch BRK" enabled by default
- Docs: Updated User Guide with illegal opcodes, patch brk, and command line options explanations
- Docs: README fixes and Discord channel correction
- Fix: Jump to collapsed line works correctly

## [0.4.1] - 2026-01-20

- Fix: Works in Windows
- Fix: Add alternative keyboard shortcuts for Windows
- Fix: cursor at end of line, even for default comment
- Refactor: dialog code simplified

## [0.4.0] - 2026-01-19

- Pane view: Added "Blocks" view, that shows the different blocks.
- Formatters: Added support for KickAssembler and ca65
- Refactor: created Widget concept where views and dialog inherits from it.
- Refactor: each view and each dialog has its own file
- Fix: Improve selection and cursor movement in disassembly view
- Fix: Improve input handling code: each view handles their own keyboard shortcuts.

## [0.3.0] - 2026-01-09

- Added user_guide.md
- Added block splitters
- Added support for collapsed blocks
- Added support for searching within comments
- Added 'm' keyboard shortcut to toggle shifted/unshifted charset modes
- Improved arrow visualization in disassembly (removed "ghost" arrows, better styling)
- Improved keyboard shortcuts reliability
- Fixed valid tests altering global configuration (`last_project_path`)
- Fixed search cursor positioning logic
- Fixed 64tass export regression
- Fixed ACME exporter for acum opcodes (ror, rol, lsr, asl)

## [0.2.2] - 2026-01-06

- Update keyboard shortcuts (again, sorry)
- Fix "Patch BRK": was not generating labels
- Fix indentation for relative addresses
- Fix dangling "addresses" generated by illegal opcodes
- Fix "Enter" key in Hex/Charset/Sprite views updating Disassembly cursor

## [0.2.1] - 2026-01-05

- Added support for Charset view: single color and multicolor
- Added support for Sprites view: single color and multicolor
- Added support for undocumented opcodes
- Improved keyboard shortcuts
- Added support for relative addresses in disassembly
- Added support for renaming relative address labels
- `Enter` key in Hex/Charset/Sprite views updates Disassembly cursor
- Improved BRK instruction disassembly
- Fixed Cross-reference comment placement

## [0.1.2] - 2026-01-04

Initial public version
