Repository files navigation

VoltHex

VoltHex is a focused desktop workspace for inspecting binary files and live memory through the GDB Remote Serial Protocol. It combines a virtualized hex view, typed search, reversible file patches, and live declarative data models in a Tauri 2 application.

Highlights

  • Preact + TypeScript interface designed for dense technical work, with keyboard navigation, ASCII pairing, selectable 8/16/32-byte rows, region context, inspector and command palette.
  • Binary files stay in Rust and are read in pages. Patches are non-destructive overlays until an explicit export.
  • mGBA-optimized GDB RSP client with packet checksums, ACK/no-ACK negotiation, fragmented/coalesced packet handling, bounded timeouts, chunked reads and writes, and safe fallback from fast reads.
  • Typed searches for signed/unsigned integers, floats and fixed-point numbers; comparison operators, alignment and endian controls; validated delta snapshots.
  • Versioned .vhex workspaces with portable references, transactional saves and backups. Opening a workspace never reconnects a live target automatically.
  • Safe .vmodel.json models with typed inline writes, includes, computed values, automatic file watching, and compressed last-known-good project backups.

Development

Requirements: Node.js 22+, stable Rust with the MSVC toolchain, and the Tauri Windows prerequisites.

npm install
npm run tauri dev

Useful checks:

npm run build
npm test
cd src-tauri
cargo fmt --all ----check
cargo clippy --all-targets ---D warnings
cargo test --all-targets

The ordinary Vite page opens with deterministic demo memory, so most visual and interaction work can be done with npm run dev without an emulator.

Models and projects

Release

Windows MSI/NSIS bundles are produced by the tag workflow. Releases are created as drafts for manual smoke testing and signing review. The final updater-signing setup is intentionally a publisher step because its public key and GitHub endpoint depend on the repository that will host releases; follow docs/RELEASING.md before the first public tag.

No analytics or telemetry are collected. Licensed under the MIT License.

About

Desktop hex and live memory inspector with GDB RSP support, typed searches, reversible patches, and declarative data models.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

VoltHex

VoltHex is a focused desktop workspace for inspecting binary files and live memory through the GDB Remote Serial Protocol. It combines a virtualized hex view, typed search, reversible file patches, and live declarative data models in a Tauri 2 application.

Highlights

  • Preact + TypeScript interface designed for dense technical work, with keyboard navigation, ASCII pairing, selectable 8/16/32-byte rows, region context, inspector and command palette.
  • Binary files stay in Rust and are read in pages. Patches are non-destructive overlays until an explicit export.
  • mGBA-optimized GDB RSP client with packet checksums, ACK/no-ACK negotiation, fragmented/coalesced packet handling, bounded timeouts, chunked reads and writes, and safe fallback from fast reads.
  • Typed searches for signed/unsigned integers, floats and fixed-point numbers; comparison operators, alignment and endian controls; validated delta snapshots.
  • Versioned .vhex workspaces with portable references, transactional saves and backups. Opening a workspace never reconnects a live target automatically.
  • Safe .vmodel.json models with typed inline writes, includes, computed values, automatic file watching, and compressed last-known-good project backups.

Development

Requirements: Node.js 22+, stable Rust with the MSVC toolchain, and the Tauri Windows prerequisites.

npm install
npm run tauri dev

Useful checks:

npm run build
npm test
cd src-tauri
cargo fmt --all ----check
cargo clippy --all-targets ---D warnings
cargo test --all-targets

The ordinary Vite page opens with deterministic demo memory, so most visual and interaction work can be done with npm run dev without an emulator.

Models and projects

Release

Windows MSI/NSIS bundles are produced by the tag workflow. Releases are created as drafts for manual smoke testing and signing review. The final updater-signing setup is intentionally a publisher step because its public key and GitHub endpoint depend on the repository that will host releases; follow docs/RELEASING.md before the first public tag.

No analytics or telemetry are collected. Licensed under the MIT License.

About

Desktop hex and live memory inspector with GDB RSP support, typed searches, reversible patches, and declarative data models.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

VoltHex

VoltHex is a focused desktop workspace for inspecting binary files and live memory through the GDB Remote Serial Protocol. It combines a virtualized hex view, typed search, reversible file patches, and live declarative data models in a Tauri 2 application.

Highlights

  • Preact + TypeScript interface designed for dense technical work, with keyboard navigation, ASCII pairing, selectable 8/16/32-byte rows, region context, inspector and command palette.
  • Binary files stay in Rust and are read in pages. Patches are non-destructive overlays until an explicit export.
  • mGBA-optimized GDB RSP client with packet checksums, ACK/no-ACK negotiation, fragmented/coalesced packet handling, bounded timeouts, chunked reads and writes, and safe fallback from fast reads.
  • Typed searches for signed/unsigned integers, floats and fixed-point numbers; comparison operators, alignment and endian controls; validated delta snapshots.
  • Versioned .vhex workspaces with portable references, transactional saves and backups. Opening a workspace never reconnects a live target automatically.
  • Safe .vmodel.json models with typed inline writes, includes, computed values, automatic file watching, and compressed last-known-good project backups.

Development

Requirements: Node.js 22+, stable Rust with the MSVC toolchain, and the Tauri Windows prerequisites.

npm install
npm run tauri dev

Useful checks:

npm run build
npm test
cd src-tauri
cargo fmt --all ----check
cargo clippy --all-targets ---D warnings
cargo test --all-targets

The ordinary Vite page opens with deterministic demo memory, so most visual and interaction work can be done with npm run dev without an emulator.

Models and projects

Release

Windows MSI/NSIS bundles are produced by the tag workflow. Releases are created as drafts for manual smoke testing and signing review. The final updater-signing setup is intentionally a publisher step because its public key and GitHub endpoint depend on the repository that will host releases; follow docs/RELEASING.md before the first public tag.

No analytics or telemetry are collected. Licensed under the MIT License.

About

Desktop hex and live memory inspector with GDB RSP support, typed searches, reversible patches, and declarative data models.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

VoltHex

VoltHex is a focused desktop workspace for inspecting binary files and live memory through the GDB Remote Serial Protocol. It combines a virtualized hex view, typed search, reversible file patches, and live declarative data models in a Tauri 2 application.

Highlights

  • Preact + TypeScript interface designed for dense technical work, with keyboard navigation, ASCII pairing, selectable 8/16/32-byte rows, region context, inspector and command palette.
  • Binary files stay in Rust and are read in pages. Patches are non-destructive overlays until an explicit export.
  • mGBA-optimized GDB RSP client with packet checksums, ACK/no-ACK negotiation, fragmented/coalesced packet handling, bounded timeouts, chunked reads and writes, and safe fallback from fast reads.
  • Typed searches for signed/unsigned integers, floats and fixed-point numbers; comparison operators, alignment and endian controls; validated delta snapshots.
  • Versioned .vhex workspaces with portable references, transactional saves and backups. Opening a workspace never reconnects a live target automatically.
  • Safe .vmodel.json models with typed inline writes, includes, computed values, automatic file watching, and compressed last-known-good project backups.

Development

Requirements: Node.js 22+, stable Rust with the MSVC toolchain, and the Tauri Windows prerequisites.

npm install
npm run tauri dev

Useful checks:

npm run build
npm test
cd src-tauri
cargo fmt --all ----check
cargo clippy --all-targets ---D warnings
cargo test --all-targets

The ordinary Vite page opens with deterministic demo memory, so most visual and interaction work can be done with npm run dev without an emulator.

Models and projects

Release

Windows MSI/NSIS bundles are produced by the tag workflow. Releases are created as drafts for manual smoke testing and signing review. The final updater-signing setup is intentionally a publisher step because its public key and GitHub endpoint depend on the repository that will host releases; follow docs/RELEASING.md before the first public tag.

No analytics or telemetry are collected. Licensed under the MIT License.

About

Desktop hex and live memory inspector with GDB RSP support, typed searches, reversible patches, and declarative data models.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

VoltHex

VoltHex is a focused desktop workspace for inspecting binary files and live memory through the GDB Remote Serial Protocol. It combines a virtualized hex view, typed search, reversible file patches, and live declarative data models in a Tauri 2 application.

Highlights

  • Preact + TypeScript interface designed for dense technical work, with keyboard navigation, ASCII pairing, selectable 8/16/32-byte rows, region context, inspector and command palette.
  • Binary files stay in Rust and are read in pages. Patches are non-destructive overlays until an explicit export.
  • mGBA-optimized GDB RSP client with packet checksums, ACK/no-ACK negotiation, fragmented/coalesced packet handling, bounded timeouts, chunked reads and writes, and safe fallback from fast reads.
  • Typed searches for signed/unsigned integers, floats and fixed-point numbers; comparison operators, alignment and endian controls; validated delta snapshots.
  • Versioned .vhex workspaces with portable references, transactional saves and backups. Opening a workspace never reconnects a live target automatically.
  • Safe .vmodel.json models with typed inline writes, includes, computed values, automatic file watching, and compressed last-known-good project backups.

Development

Requirements: Node.js 22+, stable Rust with the MSVC toolchain, and the Tauri Windows prerequisites.

npm install
npm run tauri dev

Useful checks:

npm run build
npm test
cd src-tauri
cargo fmt --all ----check
cargo clippy --all-targets ---D warnings
cargo test --all-targets

The ordinary Vite page opens with deterministic demo memory, so most visual and interaction work can be done with npm run dev without an emulator.

Models and projects

Release

Windows MSI/NSIS bundles are produced by the tag workflow. Releases are created as drafts for manual smoke testing and signing review. The final updater-signing setup is intentionally a publisher step because its public key and GitHub endpoint depend on the repository that will host releases; follow docs/RELEASING.md before the first public tag.

No analytics or telemetry are collected. Licensed under the MIT License.

About

Desktop hex and live memory inspector with GDB RSP support, typed searches, reversible patches, and declarative data models.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

VoltHex

VoltHex is a focused desktop workspace for inspecting binary files and live memory through the GDB Remote Serial Protocol. It combines a virtualized hex view, typed search, reversible file patches, and live declarative data models in a Tauri 2 application.

Highlights

  • Preact + TypeScript interface designed for dense technical work, with keyboard navigation, ASCII pairing, selectable 8/16/32-byte rows, region context, inspector and command palette.
  • Binary files stay in Rust and are read in pages. Patches are non-destructive overlays until an explicit export.
  • mGBA-optimized GDB RSP client with packet checksums, ACK/no-ACK negotiation, fragmented/coalesced packet handling, bounded timeouts, chunked reads and writes, and safe fallback from fast reads.
  • Typed searches for signed/unsigned integers, floats and fixed-point numbers; comparison operators, alignment and endian controls; validated delta snapshots.
  • Versioned .vhex workspaces with portable references, transactional saves and backups. Opening a workspace never reconnects a live target automatically.
  • Safe .vmodel.json models with typed inline writes, includes, computed values, automatic file watching, and compressed last-known-good project backups.

Development

Requirements: Node.js 22+, stable Rust with the MSVC toolchain, and the Tauri Windows prerequisites.

npm install
npm run tauri dev

Useful checks:

npm run build
npm test
cd src-tauri
cargo fmt --all ----check
cargo clippy --all-targets ---D warnings
cargo test --all-targets

The ordinary Vite page opens with deterministic demo memory, so most visual and interaction work can be done with npm run dev without an emulator.

Models and projects

Release

Windows MSI/NSIS bundles are produced by the tag workflow. Releases are created as drafts for manual smoke testing and signing review. The final updater-signing setup is intentionally a publisher step because its public key and GitHub endpoint depend on the repository that will host releases; follow docs/RELEASING.md before the first public tag.

No analytics or telemetry are collected. Licensed under the MIT License.

About

Desktop hex and live memory inspector with GDB RSP support, typed searches, reversible patches, and declarative data models.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

VoltHex

VoltHex is a focused desktop workspace for inspecting binary files and live memory through the GDB Remote Serial Protocol. It combines a virtualized hex view, typed search, reversible file patches, and live declarative data models in a Tauri 2 application.

Highlights

  • Preact + TypeScript interface designed for dense technical work, with keyboard navigation, ASCII pairing, selectable 8/16/32-byte rows, region context, inspector and command palette.
  • Binary files stay in Rust and are read in pages. Patches are non-destructive overlays until an explicit export.
  • mGBA-optimized GDB RSP client with packet checksums, ACK/no-ACK negotiation, fragmented/coalesced packet handling, bounded timeouts, chunked reads and writes, and safe fallback from fast reads.
  • Typed searches for signed/unsigned integers, floats and fixed-point numbers; comparison operators, alignment and endian controls; validated delta snapshots.
  • Versioned .vhex workspaces with portable references, transactional saves and backups. Opening a workspace never reconnects a live target automatically.
  • Safe .vmodel.json models with typed inline writes, includes, computed values, automatic file watching, and compressed last-known-good project backups.

Development

Requirements: Node.js 22+, stable Rust with the MSVC toolchain, and the Tauri Windows prerequisites.

npm install
npm run tauri dev

Useful checks:

npm run build
npm test
cd src-tauri
cargo fmt --all ----check
cargo clippy --all-targets ---D warnings
cargo test --all-targets

The ordinary Vite page opens with deterministic demo memory, so most visual and interaction work can be done with npm run dev without an emulator.

Models and projects

Release

Windows MSI/NSIS bundles are produced by the tag workflow. Releases are created as drafts for manual smoke testing and signing review. The final updater-signing setup is intentionally a publisher step because its public key and GitHub endpoint depend on the repository that will host releases; follow docs/RELEASING.md before the first public tag.

No analytics or telemetry are collected. Licensed under the MIT License.

About

Desktop hex and live memory inspector with GDB RSP support, typed searches, reversible patches, and declarative data models.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

VoltHex

VoltHex is a focused desktop workspace for inspecting binary files and live memory through the GDB Remote Serial Protocol. It combines a virtualized hex view, typed search, reversible file patches, and live declarative data models in a Tauri 2 application.

Highlights

  • Preact + TypeScript interface designed for dense technical work, with keyboard navigation, ASCII pairing, selectable 8/16/32-byte rows, region context, inspector and command palette.
  • Binary files stay in Rust and are read in pages. Patches are non-destructive overlays until an explicit export.
  • mGBA-optimized GDB RSP client with packet checksums, ACK/no-ACK negotiation, fragmented/coalesced packet handling, bounded timeouts, chunked reads and writes, and safe fallback from fast reads.
  • Typed searches for signed/unsigned integers, floats and fixed-point numbers; comparison operators, alignment and endian controls; validated delta snapshots.
  • Versioned .vhex workspaces with portable references, transactional saves and backups. Opening a workspace never reconnects a live target automatically.
  • Safe .vmodel.json models with typed inline writes, includes, computed values, automatic file watching, and compressed last-known-good project backups.

Development

Requirements: Node.js 22+, stable Rust with the MSVC toolchain, and the Tauri Windows prerequisites.

npm install
npm run tauri dev

Useful checks:

npm run build
npm test
cd src-tauri
cargo fmt --all ----check
cargo clippy --all-targets ---D warnings
cargo test --all-targets

The ordinary Vite page opens with deterministic demo memory, so most visual and interaction work can be done with npm run dev without an emulator.

Models and projects

Release

Windows MSI/NSIS bundles are produced by the tag workflow. Releases are created as drafts for manual smoke testing and signing review. The final updater-signing setup is intentionally a publisher step because its public key and GitHub endpoint depend on the repository that will host releases; follow docs/RELEASING.md before the first public tag.

No analytics or telemetry are collected. Licensed under the MIT License.

About

Desktop hex and live memory inspector with GDB RSP support, typed searches, reversible patches, and declarative data models.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages