Skip to content

Add HxD feature parity: encodings, bookmarks, checksums, and UI polish#2

Merged
ConnorHowell merged 1 commit intomainfrom
ConnorHowell/hxd-feature-parity
Mar 31, 2026
Merged

Add HxD feature parity: encodings, bookmarks, checksums, and UI polish#2
ConnorHowell merged 1 commit intomainfrom
ConnorHowell/hxd-feature-parity

Conversation

@ConnorHowell
Copy link
Copy Markdown
Owner

Summary

Comprehensive HxD feature parity update adding ~1,900 lines across 26 files:

  • Character encodings & display: Offset base toggle (hex/dec/oct), text encoding toggle (ANSI/CP437/EBCDIC/Mac Roman), configurable bytes per row and byte grouping
  • Navigation & editing: Numbered bookmarks (Ctrl+Shift+0-9 / Ctrl+0-9) with gutter markers, Select Block dialog (Cmd+E), redesigned Go To Offset dialog with relative-to options, fill selection, ghost caret in inactive pane
  • Data Inspector expansion: Unix/DOS/Windows FILETIME timestamps, GUID, LEB128/ULEB128, UTF-8 codepoint decoding; fixed inspector not updating on cursor movement
  • Checksums: SHA-384, SHA-512, CRC-32C, Checksum-8/16/32
  • Tools: Byte statistics histogram, file concatenation, file splitting, Compare Files wired to menu, recent files list
  • UI polish: Empty state welcome screen with logo mark, app icon from SVG, menu extraction to AppDelegate+Menus.swift, disabled native window tabbing
  • Bug fixes: NSButton radio grouping (shared non-nil action required), auxiliary window ARC crash on close, Data Inspector stale reads

Test plan

  • make build passes
  • All 77 unit tests pass
  • Manual: open binary file, verify Data Inspector updates on cursor click/keyboard navigation
  • Manual: Edit > Select Block, Edit > Go To Offset — verify radio buttons are mutually exclusive
  • Manual: View menu — toggle offset base, encoding, bytes per row, byte grouping
  • Manual: Tools > Byte Statistics, Compare Files, Concatenate, Split
  • Manual: Set/go to bookmarks with Ctrl+Shift+0-9 / Ctrl+0-9
  • Manual: Close all tabs — verify empty state; drop file to reopen

🤖 Generated with Claude Code

…and UI polish

Implement comprehensive HxD feature parity across multiple areas:

- Character encoding toggle (ANSI, CP437, EBCDIC, Mac Roman) and offset base (hex/dec/oct)
- Configurable bytes per row and byte grouping options
- Numbered bookmarks (Ctrl+Shift+0-9 to set, Ctrl+0-9 to jump) with gutter markers
- Ghost caret rendering in inactive pane
- Additional checksums: SHA-384, SHA-512, CRC-32C, Checksum-8/16/32
- Expanded Data Inspector: Unix/DOS/FILETIME timestamps, GUID, LEB128/ULEB128, UTF-8
- Select Block dialog (Cmd+E) with start/end/length and hex/dec/oct
- Redesigned Go To Offset dialog matching HxD layout with relative-to options
- Byte statistics histogram, file concatenation, file splitting, fill selection
- Recent files list, Compare Files wired to menu, empty state welcome screen
- App icon from SVG logo, menu extraction to AppDelegate+Menus.swift
- Fix Data Inspector not updating on cursor movement
- Fix NSButton radio grouping (shared non-nil action required)
- Fix auxiliary window ARC crash on close
- Disable native window tabbing in favor of custom tab bar

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@ConnorHowell ConnorHowell merged commit 23e07f2 into main Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant