Commit Graph

220 Commits

Author SHA1 Message Date
IChooseYou
1af0e17ef8 Remove contrast tool from theme editor, keep color config only 2026-02-13 10:00:21 -07:00
ichooseu
ffde3343dd Type chooser: fix composite type changes (struct, pointer, array modifiers) 2026-02-13 07:30:40 -07:00
iamacontributor
c86a6dbc73 Tab titles show root struct name instead of Untitled, sync MDI tab font with editor, rename MCP pipe/exe to ReclassMcpBridge 2026-02-13 06:51:09 -07:00
Sen66
b153665059 Properly delete selected nodes 2026-02-13 02:27:01 +01:00
Sen66
a88b584ca0 Show relative offsets or absolute on the left side 2026-02-13 02:11:09 +01:00
Sen66
3e827194b8 Adjustments to scrollbars 2026-02-13 01:55:52 +01:00
Sen66
9f1c85913c Fix highlighting of hover value for Vec & OOB checks for line 2026-02-13 01:52:03 +01:00
Sen66
cb151ab850 Fix fonts not being themed after switching 2026-02-13 00:45:51 +01:00
sysadmin
b0aa7cda67 Align hex byte preview column with value column using dynamic nameW 2026-02-12 13:54:52 -07:00
IChooseYou
4b1d3e9d3f Theme preview/revert, theme editor enhancements, build and deploy updates 2026-02-12 12:37:09 -07:00
IChooseYou
e73b783cda QMenu + QMenuBar hover: amber indHoverSpan text via QProxyStyle
MenuBarStyle.drawControl overrides CE_MenuBarItem and CE_MenuItem:
- Menu bar: strips hover state flags, swaps ButtonText to Link (amber),
  delegates to Fusion for identical layout (no text shift)
- Popup menus: patches Highlight→Mid, HighlightedText→Link, delegates
  to Fusion for icons/shortcuts/checkmarks

Test: real QEvent::Enter + MouseMove delivery, QScreen::grabWindow
screenshot, pixel-scan for amber, always saves PNGs for inspection.
2026-02-12 10:22:00 -07:00
IChooseYou
db5d3ae311 Unified type popup: explicit TypeEntry model, modifier toggles, section headers
- Replace sentinel-id scheme (kPrimBase) with TypeEntry::Kind discriminant
- Merge showTypeSelectorPopup + showTypePickerPopup into single showTypePopup
- Merge applyTypePickerResult into applyTypePopupResult matching on entryKind
- Add modifier toggle buttons (plain, *, **, [n]) with array count input
- Add section headers (primitives / project types) with dim centered styling
- Root mode shows project types first; non-Root sorts same-size primitives first
- Remove popup outside border, flat "Create new type" button
- Add parseTypeSpec parser, update tests with new TypeEntry API
2026-02-11 13:39:43 -07:00
batallaion caputa
33a093ae7d Widen value column to 96 chars, remove Mat4x4 truncation
kColValue 32 -> 96 to prevent float truncation with ellipsis.
Mat4x4 rows bypass fit() entirely so long matrix rows display fully.
Updated test expectations to use kColValue instead of hardcoded 32.
2026-02-11 10:44:24 -07:00
IChooseYou
968476b65a Mat4x4 row labels, no scientific notation, per-component inline editing
- Add row0..row3 labels to Mat4x4 grid display with aligned columns
- Rewrite fmtFloat() to never use scientific notation (plain decimal + trim)
- Enable per-component inline editing for all 16 Mat4x4 floats
- Fix click-to-edit always selecting first component (thread column from hitTestTarget)
- Add isMatrixKind() helper, remove Mat4x4 from context menu edit exclusion

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 10:36:15 -07:00
IChooseYou
df07b61144 Array element offset display, fold arrow UX, type picker popup, and provider cleanup
- Show relative hex offset on array element separators ([N] +0x...)
- Dim fold arrows and add hover highlight for better visibility
- Extend fold/chevron click areas for easier interaction
- Add type picker popup for array element type and pointer target editing
- Remove process_provider.h in favor of plugin-based provider system
- Expand compose/format to handle struct-of-array type names and widths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 09:13:17 -07:00
IChooseYou
3db051f4ba Fix computeDataExtent undercount, setNodeValue signed offset, and dead isStringArray
- computeDataExtent: use structSpan() for Struct/Array nodes instead of
  byteSize() which returns 0 for Array-of-Struct; use int64_t intermediates
  to prevent truncation of offsets beyond 2GB
- setNodeValue: guard against negative computeOffset results before
  casting to uint64_t (prevents wrapping to huge addresses on malformed trees)
- isStringArray: comment out unused method (was checking UInt8/UInt16
  instead of UTF8/UTF16); corrected version preserved in comment
2026-02-11 08:43:34 -07:00
IChooseYou
fc48fd6d2d Merge IChooseYou/Reclass qt5-support branch 2026-02-11 05:20:56 -07:00
Duncan Ogilvie
0b0d9f23e1 Add dark title bar support for Qt5 2026-02-10 23:07:16 +01:00
Duncan Ogilvie
7194322831 Add support for Qt5 2026-02-10 23:06:55 +01:00
IChooseYou
5f1fd56171 Fix process memory provider base address sync and live refresh
Provider base address now stays in sync with tree base address when
changed via ChangeBase command, fixing reads from arbitrary memory
regions like KUSER_SHARED_DATA at 0x7FFE0000. ReadProcessMemory
handles partial reads gracefully. Snapshot extent uses tree-based
calculation instead of provider size to avoid oversized reads.
MCP source.switch gains pid parameter for programmatic process attach.
MCP server starts by default with logging and slow mode support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 13:04:28 -07:00
IChooseYou
4295460597 Add MCP bridge for external tool integration
Embedded JSON-RPC server over named pipes (rcx-mcp) enabling external
tools like Claude Code to inspect and manipulate the node tree, read/write
hex data, switch sources, and trigger UI actions. Includes stdio adapter
(rcx-mcp-stdio) for stdin/stdout transport. Server is stopped by default;
user starts via File > Start MCP Server.

Also extracts MainWindow class declaration to mainwindow.h and improves
type selector popup Esc button styling.
2026-02-10 10:55:27 -07:00
IChooseYou
df566064ba Fix root class rename targeting wrong struct when using type selector
RootClassName and RootClassType edit handlers now use m_viewRootId
instead of blindly picking the first root struct. Default name for
unnamed structs changed from <no name> to NoName. Dim the opening
brace on the command row to match the rest of the bar's grey text.
2026-02-10 08:06:43 -07:00
IChooseYou
24a7e68136 Add theme system with Reclass Dark and Warm built-in themes
Replaces ~40 hardcoded color values with 27 semantic color roles.
Adds ThemeManager singleton, theme editor dialog, View > Theme menu,
JSON persistence for user themes, and fixes inline edit selection
color from blue #264f78 to #2b2b2b.
2026-02-10 07:46:18 -07:00
IChooseYou
8eab304538 Dim opening brace on root command row to match child struct headers 2026-02-10 06:19:34 -07:00
IChooseYou
9dd104ff34 Copy All as Text now includes margin offset text prepended to each line 2026-02-10 06:17:10 -07:00
IChooseYou
910b607b79 Rename ReclassX to Reclass in window titles and About dialog 2026-02-10 06:10:09 -07:00
IChooseYou
c415b11825 Replace About dialog with build timestamp and GitHub link 2026-02-10 06:06:18 -07:00
IChooseYou
1d6fddb51e Replace Iosevka with JetBrains Mono, fix scrollbar and inline edit UX
- Replace embedded Iosevka font with JetBrains Mono as default font
- Fix wide horizontal scrollbar by enabling SCI_SETSCROLLWIDTHTRACKING
- Remove 28-char trailing whitespace padding from all lines
- Fix arrow keys not collapsing selection in inline edit mode
- Dim struct/array braces ({ and };) to match hex node styling
- Resize margin immediately on font change
2026-02-10 06:00:17 -07:00
penguin time
276dcae444 Reduce status bar left padding to 10px 2026-02-10 04:26:42 -07:00
sysadmin
659fb7bd32 Merge remote-tracking branch 'origin/linux' 2026-02-10 04:25:39 -07:00
administrator
85b840379d Remove Load Binary, View C++/Reclass actions, Debug tab, and dead code
Data sources are now provided by source plugins. View switching is
handled by bottom tabs (Reclass / C/C++ only). Also applies grey
highlight/selected styling globally and removes per-menu stylesheet.
2026-02-09 14:06:22 -07:00
batallion2
f4149faa9a Add type selector popup, view root switching, and new type creation
- Type selector chevron [▸] on command row opens searchable popup
- Popup lists all root structs with filter, keyboard nav, side-triangle indicator
- Selecting a type switches the editor view via setViewRootId
- "Create new type" inserts a new root struct with no name
- Command row displays the active view root's name
- Tests for chevron detection, span compatibility, view switching, undo
2026-02-09 12:21:03 -07:00
Sen66
4029b05298 Added linux support (tested on Ubuntu)
CMakeList: fixed for building on linux
processpicker: linux process enumeration
main.cpp: "_Exit()" works on linux & windows
"ProcessMemory" plugin: added linux support
2026-02-09 15:09:42 +01:00
Sen66
209fa5e0b6 basic plugin support 2026-02-08 23:24:57 +01:00
Bojangles
f27848bf1a Dim command row address, fix source picker zoom/styling, lowercase menu items, margin spacing
- Apply IND_HEX_DIM to base address on command row so it matches source/struct grey
- Source picker QMenu respects Scintilla zoom level for font size
- Style source picker with dark theme selection color instead of system blue
- Disable blue selection background for picker-based edit targets (Source, Type, etc.)
- Rename menu items File/Process to file/process
- Add trailing space to margin offset text for breathing room
2026-02-08 14:10:26 -07:00
megablox
6a9641edc5 Fold arrows, pointer format, teal custom types, collapsed pointers by default
- Change fold indicators from +/- to arrow icons (▸ collapsed, ▾ expanded)
- Move ▾ dropdown arrow after text on command rows (source▾, struct▾)
- Change pointer display from ptr64<Type> to Type* format
- Color custom/user-defined types teal (#4EC9B0) via lexer GlobalClass
- Keep built-in types blue (#569cd6) via KeywordSet2
- Remove underline from root class name on CommandRow2
- Pointer children start collapsed by default (lazy expansion)
- Demo data updated accordingly
2026-02-08 11:00:11 -07:00
batallion caputa
105ad398b6 minorfixes 2026-02-08 05:59:50 -07:00
batallion caputa
9293161039 minorfixes 2026-02-08 05:43:11 -07:00
batallion caputa
18475d0570 minorfixes 2026-02-07 16:41:10 -07:00
megablocks(tm)
9962e55820 Fix cursor jump on command row edit, data-change highlighting for containers, invalid pointer expansion, cycle detection with node IDs, O(n²) addNode cache, duplicate struct in C++ export, collapse bug for non-first root structs, remove hardcoded demo data 2026-02-07 12:02:41 -07:00
megablocks(tm)
39cac316de added project open save new 2026-02-07 11:27:46 -07:00
MegaBlocksTM
9ec06d9658 Move alignas alignment to context menu, fix hover state across refreshes
Replace inline alignas() editing with a proper "Align Members" submenu
in the right-click context menu. Remove alignas display from command row
and all related span/hit-test/edit machinery. Preserve hover highlight
state across document refreshes.
2026-02-07 10:40:04 -07:00
sysadmin
02a5542f38 Add quick-convert suggestions in right-click menu for Hex nodes
- Hex64: offers Change to uint64_t and uint32_t
- Hex32: offers Change to uint32_t
- Hex16: offers Change to int16_t
- Items appear at top of context menu with separator below

Co-Authored-By: combuter <combuter@users.noreply.github.com>
2026-02-07 10:12:27 -07:00
sysadmin
d9fd01f1d1 Add class keyword picker, alignas alignment picker with member realignment
- Class keyword (struct/class/union/enum) persists in JSON, drives generator output
- CommandRow2 shows alignas(N) pill computed from struct member alignment
- Clicking alignas opens picker (1, 4, 8, 16) to realign all members
- Going up: members repositioned to N-byte boundaries, padding fills gaps
- Going down: excess padding removed, members pack tighter
- Add cmd::ChangeOffset for undoable offset repositioning
- All 11 tests pass

Co-Authored-By: combuter <combuter@users.noreply.github.com>
2026-02-07 10:07:38 -07:00
sysadmin
60fda32af0 Add async auto-refresh with change detection and self-test harness
BBB
2026-02-07 05:46:01 -07:00
Ccccc
6232577f87 Unify right-click menu: all items available everywhere
Right-click menu is now one unified menu. Node-specific actions
(edit value, rename, change type, add field below, duplicate, delete,
copy address/offset) appear when clicking on a node. Creation actions
(Add Hex64, Add Struct, Append 128 bytes), Undo/Redo, and Copy All
as Text are always present regardless of where you click.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 18:02:25 -07:00
Ccccc
3cf9a311d2 Add context menu icons, expand empty-area menu, add test_context_menu
- Right-click on empty area: Add Hex64, Add Struct, Append 128 bytes,
  Undo/Redo, Copy All as Text (with icons for each)
- Right-click on node: icons for Edit Value, Rename, Change Type,
  Add Field, Add Child, Expand/Collapse, Duplicate, Delete,
  Copy Address, Copy Offset, Copy All as Text
- Multi-select menu: icons for batch delete and batch change type
- Add test_context_menu.cpp (20 tests): insert adds exactly one node,
  auto-offset placement, duplicate adds exactly one copy, duplicate
  preserves original, duplicate undo, struct duplicate no-op, root
  insert, append 128 bytes (16 nodes), append undo (macro), insert
  child, remove+undo, multiple duplicates, parent correctness, struct
  with children, batch remove, invalid parent, invalid index guards
- Add vsicons to qrc: trash, clippy, link, diff-added, expand-all,
  collapse-all, rename, whole-word, list-selection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 17:38:02 -07:00
BBBBbbbb
0069c942c7 Add C++ code generator, rendered view, fix Hex node display
- Add generator.h/cpp: C++ struct emission with padding gaps, tail
  padding, pragma pack, static_assert, nested structs, pointers
- Add rendered view (QStackedWidget per tab, QsciScintilla + C++ lexer)
- View menu: C/C++ switches to rendered view, Reclass View switches back
- File > Export C++ Header writes full SDK to .h file
- Fix Hex8-Hex64 display: show name + value columns like normal types
  instead of hiding name behind ASCII preview (only Padding keeps that)
- Update column span detection, compose width calc, controller edit
  dispatch, and editor dimming to match new Hex layout
- Sample data: Entity struct with health, armor, speed, flags fields
- Add test_generator (21 tests) and test_validation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 17:31:39 -07:00
sysadmin
f1e3da6e95 Remove command row leading spaces, add right-click menu in empty area
- Command row text is now flush-left (no 3-space fold prefix)
- Right-clicking empty area below nodes shows a limited context menu
  with "Append 128 bytes" (inserts 16 Hex64 fields at root level)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:40:30 -07:00
sysadmin
238d895e83 Add saved sources with quick-switch in source picker
Source picker now remembers loaded files and attached processes below a
separator with checkmarks. Clicking a saved source instantly switches
back to it, preserving base addresses per-source.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:16:26 -07:00