Changelog

All notable changes to the CodePrettify desktop app are documented here.

Browser Extension Microsoft Store App
Now Live

Available now on Microsoft Store

Install the Windows desktop app directly from Microsoft Store.

Microsoft Open Microsoft Store
v1.0.7 Latest April 2026

Fixed

  • Search Result Navigation — Pressing Enter repeatedly in the floating search field now moves to the next result instead of getting stranded on the first match.
  • Sandbox Validation — Script validation now uses the shared sandbox bridge, avoiding duplicate sandbox iframe navigation and the noisy unsafe sandbox load error.
v1.0.6 April 2026

Changed

  • Search Without Losing Your Place — Typing or pasting in the floating search field now highlights every match and updates the result count without moving the editor viewport. Press Enter, click the new search button, or use the previous / next arrows to navigate explicitly from the current visible position.
  • Smarter Reload Recovery — Per-file view state now keeps only the 10 most recent files and expires entries after one hour, so accidental reload recovery stays useful without stale state piling up.

Fixed

  • Fixed a disruptive workflow where refining a search while reading deep inside a large file could jump back to the first occurrence near the top of the document.
  • Fixed saved search text not being restored into the floating search field when reopening or reloading a file.
  • Fixed restored search text re-running navigation during reload; saved queries now re-highlight passively so the remembered line position remains intact.
  • Fixed reload recovery storing only explicit highlighted lines; view state now saves and restores the actual viewport line and scroll position.
  • Fixed search in rendered Markdown preview files so visible Markdown text is counted, highlighted, and navigable instead of showing no results.
  • Fixed Table View horizontal scrolling on large virtualized CSV files so the table no longer jumps back to the left while scrolling sideways.
  • Fixed sparse CSV column ordering so generated overflow columns such as column8, column9, and column10 stay after the real CSV headers.
  • Fixed virtualized Table View vertical scrollbar dragging so the scrollbar thumb keeps the requested position and row rendering refreshes after release or scroll idle.
  • Fixed sticky checkbox and row-number cells in Table View so they no longer paint over the sticky header row while scrolling.
v1.0.5 April 2026

Added

  • Added Markdown support for .md and .markdown files in the desktop app, including a rendered preview, heading outline support, formatting / minifying tools, and Windows file association and Explorer integration.
  • Added a full desktop HTTP Client to replace the old cURL / fetch snippet modal. Build requests in a Postman-style composer, save collections, reuse history, manage environments with {{variable}}, import cURL, and export to cURL / fetch() / PowerShell.
  • Expanded the desktop Regex Playground with replace mode, live replacement preview, saved patterns, reusable test cases, snippet export, and support across every supported file type.
  • Expanded Table View with per-column filters, drag-and-drop column reordering, column type summary chips, selected-row CSV / JSON export, and smoother handling for large tables.
  • Expanded Statistics & Diagnostics for JSON with duplicate-key detection, lightweight OpenAPI / JSON Schema checks, suspicious timestamp warnings, and quick-fix guidance.

Changed

  • The HTTP Client now adds timeout and cancel controls, timing breakdowns, multipart/form-data and GraphQL body modes, secret masking, and clearer guidance when requests are blocked or fail.
  • The floating toolbar's cURL / fetch entry now opens the HTTP Client on every file type, and JavaScript Playground / Runtime Inspect now recognize modern JS / TS symbols more accurately.

Removed

  • Removed the legacy cURL / fetch snippet modal in favor of the full HTTP Client workflow.
v1.0.4 April 2026

Added

  • Added a JavaScript Playground (floating toolbar → More actions → "JavaScript Playground", or Ctrl+Alt+P) for JavaScript, JSON, and JSONL files. Write and run code inside a sandboxed worker with captured console.log / console.table output, the return value (top-level await supported), syntax and runtime errors, and execution timing. Choose a 1 / 5 / 15 second timeout and CodePrettify remembers your last buffer, timeout, and "Include" preference across sessions.
  • Added an "Include {filename}" option to the Playground. On a JavaScript file it prepends the document so its top-level functions and variables are in scope. On a JSON or JSONL file it exposes the parsed data as a json variable (with malformed JSONL lines skipped) and a banner at the top of the output reminds you what's available.
  • Added autocomplete to the Playground editor. Suggestions are drawn from both the Playground buffer and the included document, triggered after typing two characters or on Ctrl+Space. Navigate with Up/Down, accept with Enter or Tab, dismiss with Escape. Function suggestions insert () with the caret placed between the parentheses.
  • Added a Runtime Inspect panel (Ctrl+Alt+I, JavaScript files only) that runs the current file in the sandbox and lists every top-level declaration with its final value. Variables show their captured value, functions show their parameter signature, classes are listed, and each row has a jump-to-line button that takes you to the declaration.
  • Added inline value annotations in the main JavaScript viewer. After you run Inspect, each top-level let / const / var / function / class picks up a small arrow at end of line with a summary of its captured value (let total = price * 1.25; → 125). A checkbox in the Inspect modal toggles them live, and a "Clear inline values" entry in the More menu wipes them when you're done.
  • Added a hover tooltip that follows the cursor over any identifier reference and shows its captured name → value after Inspect has run. Hover anywhere a variable or function is used — not just where it's declared — to see its value without scrolling back to the declaration.
  • Added quick-access buttons to the floating toolbar. Every time you open a modal (by menu click, keyboard shortcut, or otherwise), CodePrettify bumps a counter. Once you've used an action more than 10 times and it's available for the current file type, the top three most-used actions are promoted to buttons right after the ⋯ button, so your most common workflow is always a single click away.
  • Refreshed the settings modal's keyboard shortcuts overview with the two new ones (Ctrl+Alt+P and Ctrl+Alt+I). The Inspect entry only shows up on JavaScript files, so shortcuts that don't apply to the current view stay out of sight.

Changed

  • Playground output now renders console.table(data, columns) as a real HTML table with sticky header, hover rows, and horizontal scrolling on wide tables.
  • The Playground modal no longer closes on a backdrop click so in-progress code can't be lost by accident — use Escape or the close button. Inside the editor, Tab and Shift+Tab now indent / dedent instead of moving keyboard focus.
  • The Playground and Inspect harnesses now accept real-world ES module files. Static import / export is rewritten into local stubs before the code is handed to the classic worker, so running or inspecting a module file no longer fails at parse time with SyntaxError: Cannot use import statement outside a module. Dynamic import(...), import.meta, and CommonJS require get safe stubs too.

Performance

  • Raw ↔ Pretty toggles and tab revisits on previously-viewed documents are now instant. Native formatting, validation, diagnostics, navigator, and stats results are memoized for the most recent four documents (keyed by content hash) so the same large JSON or XML file never does the full parse pass twice.
  • The code minimap repaints only the moving viewport band during scroll instead of redrawing every line. Scrolling large files on the minimap is noticeably smoother.
  • File open is faster on slow drives: the encoding-detection pass now reads 16 KB instead of 256 KB (BOM detection only needs the first four bytes), and a latent edge case where a file whose UTF-8 boundary landed mid-character could be misidentified as legacy encoding is fixed.
  • Cold-start time and heavy-document handling improve via PublishReadyToRun and ServerGarbageCollection in the Release build, plus compiled versions of the 30+ regular expressions the native statistics / diagnostics / minimap path uses.

Fixed

  • Fixed the Playground error panel showing line numbers that pointed into the sandbox's internal harness instead of your own code. Errors now report at line N (in your code) or at line N (in included document) and print the actual text of the offending line below the location, so you can tell at a glance what the parser tripped on.
  • Fixed a sporadic Unsafe attempt to load URL…sandbox.html console error that could appear when the JavaScript validator and the Playground / Inspect harness both tried to create the sandbox iframe at the same time. A single shared sandbox bridge now owns the iframe and routes every request through one message listener.
  • Fixed the Playground / Inspect module-syntax rewriter so an import or export that happened to live inside a block comment no longer leaks a */ into the generated code. Files that ran into bizarre downstream parse errors like Unexpected token '|' on lines the user never wrote now run cleanly.
  • Hardened the bundled editor against a transient RangeError: Position X is out of range that could surface while typing inside the Playground; the editor now falls back to an empty decoration set instead of throwing.
  • The Explorer context-menu "Open with CodePrettify" entry now writes a breadcrumb log to %LOCALAPPDATA%\CodePrettify\shell-ext.log when something goes wrong, so silent failures (missing launcher, blocked file, permission issue) are diagnosable. Explorer itself is still never crashed.
v1.0.3 April 2026

Fixed

  • Fixed desktop JSON pretty printing so string values containing embedded JSON or HTML-like text no longer gain extra escape sequences such as \u0022, \u003C, or \u0026 in formatted view.
v1.0.2 April 2026

Fixed

  • Fixed sandboxed JavaScript validation leaking page-side security errors on some raw script documents by moving the classic-script syntax check into a worker-backed parse path that never runs top-level page code during validation.
  • Fixed semicolon-delimited CSV files with raw JSON text in one column so they open correctly in the desktop app.
  • Fixed large-document search navigation so the active result now lands near the middle of the editor viewport when possible, making next and previous result jumps easier to follow.
  • Fixed desktop drag-and-drop so dropping a file into the app no longer opens duplicate tabs, including some larger files.
  • Fixed export filenames so downloads no longer repeat labels such as formatted, min, or table when the original filename already ends with the same label.
  • Fixed PNG export on long CodeMirror-backed desktop documents so captures stay cropped to the visible code area, keep colored formatting when fallback export is used, and show an error instead of a success toast when nothing can be captured.
v1.0.1 April 2026

Added

  • Added native support for opening very large desktop files in a paged viewer.
  • Added a dedicated large-CSV desktop view with paging, sticky headers, and page-level search.
  • Added a split CSV view for smaller desktop files so the formatted table and original text can be viewed together.
  • Added a native Tools -> Compare dialog that accepts two file paths, pre-fills the left side from the current tab when possible, remembers the last-used file pair, and opens a dedicated side-by-side compare tab directly for every file pair.

Fixed

  • Fixed desktop file opening so Explorer launches, file associations, repeated opens, and empty relaunches reuse or reactivate the running window when possible, while still falling back to a new window if the active instance cannot accept the handoff.
  • Fixed large and medium-sized desktop opens so oversized files fall back to the large-file viewer instead of failing silently and regular files appear faster.
  • Fixed renamed files and Original Save As so tabs keep tracking the correct file and preserve the original file format when possible.
  • Fixed CSV viewing so large files no longer show extra columns, smaller split views reliably load the source pane, the lower pane is easier to resize, and table-first opens are faster.
  • Improved desktop startup so the first file becomes interactive sooner and the loading view no longer flashes raw text before the formatted view is ready.
  • Fixed transient success toasts briefly blocking the floating action buttons.
  • Fixed invalid JavaScript diagnostics so line and column details remain visible.

Changed

  • Changed desktop CSV handling so smaller CSV files stay in the split viewer while oversized CSV files open in the paged native viewer.
v1.0.0 Initial Release April 2026

Added

  • Moved the desktop app's pure data-processing work for JSON and JSONL, XML and RSS, and HTML from the WebView into the C# launcher so formatting, validation, diagnostics, statistics, navigator items, CSV and table models, diff results, and minimap line data can be computed natively.
  • Added a full native Windows menu bar with File, Edit, View, Tools, and Help menus, including shortcuts for Open, Save As, Close Tab, search, line navigation, and compare-with-clipboard.
  • Added a native tab bar for managing multiple open files with close buttons, hover states, and an active accent line.
  • Added Ctrl+O, Ctrl+S, and Ctrl+W keyboard shortcuts that work across the native menu and web layer.
  • Added support for TypeScript files using the JavaScript handler.
  • Added support for HTML files with a dedicated formatter, code folding for matched tag pairs, and clickable URLs in attribute values.
  • Added a language override setting for the 14 supported locales.
  • Added a theme setting with Light, Dark, and Auto modes.
  • Reworked CSS syntax validation to report exact line and column locations for unmatched braces, parentheses, and brackets.
  • Added JSONL and NDJSON support with line-by-line parsing, JSON tooling, and preservation of the original raw format.
  • Added JSON path autocomplete suggestions and validation feedback in the query input.
  • Added drag-and-drop file opening from the landing page and the desktop window.
  • Added installed file-handler support for supported code and data file types.
  • Added a Windows 11 Explorer context-menu entry for opening supported files in CodePrettify.
  • Added a loading spinner while large files are being prepared.
  • Added offline support with local storage and i18n polyfills.

Fixed

  • Fixed the JavaScript syntax checker falsely rejecting some valid minified classic scripts, including moment.min.js, by validating standard scripts with the browser parser before falling back to module-aware parsing when needed.
  • Fixed TypeScript files being validated and rendered as plain JavaScript by tracking the actual script file type for syntax checks, CodeMirror highlighting, and extensionless relative import resolution.
  • Fixed sandbox startup and validation transport failures being reported as successful checks. Diagnostics now surface an unavailable-validation warning instead of silently marking the script as valid.
  • Fixed desktop tab startup sometimes getting stuck on loading when WebView settings sync or initial file delivery raced startup. The launcher now keeps loading the tab even if settings sync fails and retries the file payload before showing an error.
  • Fixed dropping a file into an existing desktop tab keeping stale native file metadata, which could leave the Tools menu and minimap in the previous file mode.
  • Fixed web-layer drag-and-drop in the desktop app reusing another tab solely because the filename matched. Dropped files now stay with the tab they were opened on unless the native launcher has a real file path match.
  • Fixed the standalone app settings shortcut opening the browser extension changelog instead of the Microsoft Store app changelog.
  • Fixed prettified XML and RSS word wrap adding an extra blank continuation line for long values by removing the trailing rendered space from each XML line.
  • Fixed desktop raw view font sizing so the native raw editor now follows the same effective font size as the user-configured web editor setting.
  • Fixed desktop external file reloads getting stuck on loading by reusing in-page reinjection instead of forcing a full WebView navigation, and by guarding WebView suspend calls during tab disposal.
  • Fixed dropping a file onto the middle of an existing desktop tab opening the new file in raw mode by resetting transient view state during in-page reinitialization.
  • Fixed the language setting reload flow so it waits for the storage write to complete before reloading.
  • Fixed the HTML formatter producing extra blank lines when source text between tags contained embedded newlines.
  • Fixed clickable URLs in HTML and RSS attribute values not opening in the desktop app by routing target="_blank" links to the default system browser.
  • Fixed the JSON path inspector modal so clicking inside it or selecting text no longer closes it.

Changed

  • Added copy-to-clipboard actions on JSON path query results and tightened the button layout for a more compact inspector UI.