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.1.7 Latest August 2026

Fixed

  • The floating search toolbar now keeps the complete match counter and both previous/next navigation buttons visible, preserves a usable search-field width across compact resolutions, expands toward the viewport sides when space is constrained, and hides adaptive quick actions before they can crowd the search controls.
v1.1.6 July 2026

Added

  • Diagram Generator — Turn JSON, JSON Lines, YAML, TOML, XML/RSS, and CSV documents into bounded field-card diagrams from More Actions, the Command Palette, or the native Tools menu. A near-full-window workspace moves controls, status, and downloads into a compact left sidebar, maximizing the live diagram area. The interactive preview uses semantic HTML cards and field rows with inline SVG connectors instead of a scaled image, keeping focused text crisp and preparing the scene for future editing. Primitive arrays such as regions remain readable inline, YAML and TOML timestamps render as ISO date values, and a multi-document YAML source becomes one card per document. CSV delimiter detection recognizes comma, semicolon, tab, and pipe separators. Reference-row minus and plus buttons collapse and restore child branches, while clicking a more fields row reveals that card's remaining bounded fields; both preserve the card position and zoom. Top-to-bottom layouts align these controls along the card's bottom edge with their connector origins. Stable compositor layers keep rapid touchpad zoom clear without stale card fragments. Normal clicks select without zooming, field rows highlight on hover, and double-clicking a card heading focuses that element. Pastel record cards group properties into field rows, hexadecimal colors get swatches, and the dotted canvas is preserved in SVG and PNG exports through the native Save dialog. Choose either layout direction, show or hide compact values, pan with the arrow keys, and use the floating zoom and fit controls.
  • Diagram search — A sidebar search box rings matching cards, highlights their matching field rows, and dims everything else while a counter reports the match total. Enter and the previous/next controls step through the matches and center each hit, and Escape clears the query without closing the tool.
  • Diagram inspector, structure controls, and Mermaid export — Clicking a field row opens a sidebar Field details panel with the full untruncated value and its document path, each one click from the clipboard. Selecting any card highlights its complete ancestor chain of cards and connectors. A Levels control bounds the scene to two, three, or four card levels, Collapse All folds every branch behind re-expandable ports while Expand All restores them, and Copy Mermaid exports the same cards, fields, and connections as a Mermaid class diagram for documentation and issue trackers; the export includes every field of each card, even rows the bounded on-screen card keeps behind its more fields disclosure.

Fixed

  • TOML integers outside the signed 64-bit range now fail validation at their exact line instead of silently wrapping to a wrong value, as the TOML specification requires. This protects every TOML consumer, including formatting, validation, Compare, and the Diagram Generator.
v1.1.5 July 2026

Added

  • JSON to Code Generator — Paste strict JSON, load the active JSON document, or start from an example and generate TypeScript, Zod, C#, Java/Jackson, Kotlin, Python/Pydantic, Go, Rust/Serde, Swift Codable, Dart/json_serializable, or JSON Schema. Multiple array records improve optional/nullable inference; nested models, source-key mappings, root naming, package/namespace controls, copy, save, and open-as-document actions are included. Everything runs locally.
  • Data Converter utilities — Data Converter now includes dedicated Convert, Hash & HMAC, Timestamp, and ID Generator tabs. Create SHA-256, SHA-384, or SHA-512 hashes and HMACs with hex and Base64 output; convert Unix seconds, Unix milliseconds, and timezone-explicit ISO 8601 values; or generate secure UUID v4, time-sortable UUID v7, and ULIDs without adding more entries to General Tools. Compare remains focused on comparing two sources. Processing stays local, and UUID v7/ULID batches remain monotonic.
  • JSON Repair & Transform — Paste JSON-like input or optionally load a compatible current document, normalize it into a local JSON model, then build a live ordered recipe with Filter, Select, Remove, Rename, Sort, Unique, Flatten, Group/Aggregate, and Limit/Offset. Recipes stay local, never alter the source document, and results can be copied, saved, or opened in a new tab.
  • Repair & Salvage — Recover common copied, logged, or hand-edited structured-data damage with a reviewable report. It handles Markdown fences and surrounding prose, comments, single-quoted strings, unquoted keys, trailing commas, JavaScript/Python literals, raw string controls, and JSON Lines records. Excluding broken JSON Lines records is always an explicit opt-in and reports every discarded source line.

Improved

  • Cleaner compact toolbar — Narrow app windows hide the three adaptive quick-action shortcuts and their divider, retain the intended side margins, and keep copy, search, go-to-line, and More uncluttered. Every hidden shortcut remains available from the More menu.
  • General-tool availability — Structured Data Workbench is renamed to JSON Repair & Transform and is now always available in More Actions, the Command Palette, adaptive quick actions, and the native Tools menu. Users can paste independent JSON-like input from any document type, while a compatible current document remains an optional starting point.
  • Two-column More Actions — The floating toolbar separates actions for the active document from reusable utilities. Export, HTTP Context when available, table/navigation/schema tools, Statistics & Diagnostics, Security Scan, and Collapse/Expand stay in the primary left column; JavaScript keeps its lightweight Document Navigator and separate Inspect Runtime workflow there too. Compare, JSON to Code Generator, JSON Repair & Transform, JavaScript Playground, Data Converter, Regex Playground, and HTTP Client are always available in the visually quieter general-tools column. On wider screens the primary column is centered above the More Actions button, while constrained layouts stay inside the viewport and very narrow windows stack both groups.
  • Paired folding controls — Collapse All and Expand All now share one equal-width row beneath the active-document tools, shortening the menu while preserving separate keyboard-accessible actions.
  • General-purpose Compare — Compare now opens as a two-source workbench. The left input starts with the current document, while both sides remain independently editable and can be cleared, restored from the document, or swapped before comparison. Semantic JSON/JSONC/JSON Lines/YAML/TOML mode is detected from the two inputs even when another file type is open, and editor line links appear only while the matching source is still the current document. Native and Explorer file-pair comparisons keep their filenames in the same workbench. Identical Semantic and Text results show one horizontal, centered empty state across the result viewport.
  • Guided JSON Repair & Transform experience — Transform uses a focused recipe-and-result layout with one-click common actions, advanced actions tucked under More transformations, detected field suggestions with samples, plain-language conditions and step summaries, and direct recovery guidance when no rows match. Incomplete steps leave the last valid preview intact. Repair and Transform keep one stable dialog height, while their code textareas use compact type without collapsing the editor viewport.

Fixed

  • Universal tab styling — Collections/History, request-composer tabs, and response tabs in HTTP Client now use the same shared compact tab component as Data Converter. The duplicated HTTP-only tab appearance has been removed.
  • Unified interface controls — Settings and tools now share small, medium, and large scales for inputs, selects, textareas, buttons, and icon buttons. Every visible technical textarea in Compare, JSON to Code Generator, JSON Repair & Transform, Data Converter, Schema Validator, HTTP Client, Regex, JavaScript Playground fallback, and JSON decode uses the same compact 13px code-text scale and monospace stack. Modal titles, section headings, field labels, help text, and status messages use shared typography, while task-specific layout, state colors, and editor sizing remain specialized.
  • Nested-array filtering — Fields such as owners[].name now test every item in the nested array, while the forgiving owners.name form works too. The field picker describes this as “any item” instead of requiring users to discover wildcard syntax.
  • Responsive Security Scan — The scan now opens at its intended wide, viewport-responsive size instead of inheriting the generic 400px modal limit, and its height fits the findings instead of leaving a large empty area. Copy endpoints stays on one line, while compact windows and longer translated labels use a clean stacked header; long scans still grow to the viewport limit and scroll.
  • Exact finding navigation — Selecting a Security Scan result now reveals its folded parent blocks before centering and highlighting the exact source line. Unrelated folds stay collapsed, and other line-linked tools receive the same correction.

Security

  • Local, fail-closed processing — JSON Repair & Transform input and results never leave the device. Unsafe or lossy numbers, prototype-sensitive paths, excessive nesting, oversized input/output, excessive nodes or rows, and overlong recipes are rejected instead of being silently changed or allowed to consume unbounded resources.
v1.1.4 July 2026

Fixed

  • Responsive Data Converter sizing — The desktop app now preserves the intended viewport-scaled editor height instead of collapsing both editors to their minimum size.
  • Compact-window layout — Stacked input and output panels remain separate, the modal stays inside the viewport, and the work area scrolls when both editors cannot fit at once.
  • Paste & Prettify dark mode — The native dialog now consistently themes its title bar, file-type selector, editor border and scrollbars, and both actions. Responsive sizing wraps long text and keeps Open visible in compact windows and at higher display scaling.
  • Localized Paste & Prettify — The title, instructions, field labels, detection status, supported type names, actions, accessibility text, and oversized-clipboard warning are available in all 14 application languages.
  • Reliable last-tab close — Closing the only open tab restores the open-file landing screen instead of revealing the closed document and its validation alert. Landing-page file choices are handed directly to their dedicated tab, avoiding duplicate formatting work, with a defensive native restore if the landing document was changed.

Changed

  • Safer release packaging — Release builds no longer use an unsafe native precompilation mode that could prevent the packaged launcher from starting on the target architecture. Server and concurrent garbage collection remain enabled.
v1.1.3 July 2026

Added

  • Offline Data Converter — One dedicated tool now prettifies, minifies, stringifies, parses, escapes, and unescapes JSON; converts JSON to and from XML, CSV, YAML, and TSV; and encodes or decodes Base64 and URL-encoded text.

Improved

  • One conversion workflow — Formatting, structured-data conversion, and text encoding now share a dedicated input/output experience instead of requiring separate tools or a download-only conversion path.
  • Consistent action feedback — Data Converter, Regex Playground, and Security Scan now confirm copy actions on the clicked button. Disabled controls, button order, live status messages, reduced-motion behavior, high-contrast styling, notification severity, and keyboard navigation for interactive tool rows and menus are consistent across tools.
  • Actions where they belong — Data Converter places Convert beside the operation selector and groups Copy and Download with the output they act on.
  • Guided operation choices — Only conversions proven incompatible with the current document are disabled, with an explanation. Unknown input and lazy-loaded YAML operations stay selectable until they can be validated.
  • Flexible regex input — Regex Playground switches between the displayed document and session-local custom text, and copies the complete /pattern/flags expression. Custom test text is never persisted to history or settings.

Fixed

  • Reliable conversion state — Empty CSV and TSV inputs now produce valid [] JSON, while closing, changing, or reopening a conversion during lazy YAML startup cleanly cancels the old work.
  • Lossless-number guardrails — JSON, YAML, and typed XML numbers that cannot be represented without changing value are rejected instead of rounded. YAML aliases, nesting, node count, and generated output are bounded against runaway expansion.
  • Reliable clipboard and failure feedback — Copying falls back when the Clipboard API is missing or rejects a request, restores repeated button feedback correctly, and always surfaces localized failures. HTTP Client export failures no longer report success, and selection drags cannot accidentally close dismissible tool modals.
  • Visible copied state — Copied-success buttons remain visibly green while hovered, focused, or pressed, including in dark theme.
  • Accurate JSON errors — Data Converter validates JSON syntax before lossless-number checks, so JavaScript and other invalid JSON report a syntax error instead of a misleading -0 or numeric-corruption warning.
  • Prominent conversion failures — Blocking conversion failures appear in an accessible in-modal alert with the detailed cause.
  • Reliable alert icons — Converter alert icons render in DEV/source and packaged runtime views, with regression coverage preventing the runtime icon subset from drifting out of sync.
  • Worker-safe regex highlights — Document highlighting paints match ranges precomputed by the timeout-controlled worker instead of executing the pattern again in the viewer, so hostile expressions cannot bypass the timeout and block the UI during decoration.
  • Stable Regex Playground layout — The guide remains in a right-hand panel at normal desktop widths, and hiding it immediately reclaims the panel's space instead of leaving an empty gap.
  • Stable modal geometry — Opening a dialog on a document with a classic scrollbar preserves its occupied gutter, so the editor, minimap, floating toolbar, and horizontal scrollbar stay in place while background scrolling is locked. The reserved rail now matches the light or dark modal backdrop instead of exposing a white canvas strip, while scrolling dialogs retain their native track color.
  • HTTP Client spacing — The HTTP Client includes its padding inside its declared width and keeps symmetric backdrop margins instead of being flex-shrunk into an edge-to-edge dialog.

Security

  • Local processing — Every Data Converter operation runs locally and offline; input and output are never uploaded or sent to a remote conversion service.
  • Safer spreadsheet export — CSV and TSV conversion neutralizes formula-leading text cells before they reach spreadsheet software.
v1.1.2 July 2026

Improved

  • Useful included scripts — The JavaScript Playground now defaults to Safe definitions, retaining top-level functions and passive values while skipping page startup that depends on window, document, the DOM, jQuery, or page-provided globals. Run entire file remains available explicitly.
  • Console-style results — A final expression such as fApiUrl('test') now displays its value automatically without requiring an explicit return.
  • Accurate environment guidance — The Playground now clearly identifies its Web Worker runtime and explains that DOM APIs, Node.js APIs, and local files are unavailable.

Security

  • Isolation preserved — Safe definitions use strict syntax analysis and preserve source lines for diagnostics. Code still runs only in the offline, terminable Worker; no page-DOM, iframe, network, or synthetic-page access was added.
v1.1.1 July 2026

Security

  • Explicit production signing — Production builds no longer fall back to the development certificate. They require either a certificate-store thumbprint or an explicit PFX/password pair, redact configured passwords from signing errors, and support an optional RFC 3161 timestamp service. Unsigned production output requires a deliberate --allow-unsigned opt-in.

Improved

  • .NET 10 LTS foundation — The native Windows launcher, Explorer context-menu handler, and native regression projects have moved from .NET 8 to .NET 10 LTS. A repository-level global.json pins the current SDK 10.0.302 security patch with patch roll-forward so development and release builds select the same supported toolchain.
  • Reliable first launch — The x64 and Arm64 desktop launchers are self-contained, so the main app starts after a clean installation without a separately installed .NET runtime. The optional Explorer right-click component remains framework-dependent because .NET does not support self-contained COM components. CodePrettify detects its exact .NET 10 prerequisite after startup and, when missing, keeps the app usable while offering Microsoft's architecture-specific installer; the check is also available from Help.
  • WebView2 recovery — Clean Windows installations that do not yet have Microsoft Edge WebView2 Runtime now get a dedicated recovery screen instead of an unusable shell. It opens Microsoft's small, architecture-detecting Evergreen Bootstrapper and keeps a Retry action available after installation.
  • Strict, isolated builds — The build entry point requires an explicit mode, rejects unknown or conflicting options, and validates the AppX version before creating version-derived paths. A process lock and unique temporary work tree keep concurrent architecture builds from sharing or deleting one another's output.
  • Transactional releases — Candidate x64 and Arm64 packages are bundled, the bundle identity, version, architectures, and required signature are verified, and the packaged minified x64 web runtime is tested before publication. Development builds promote those three package artifacts together; production also includes the matching source ZIP in the same four-artifact transaction. A publication failure restores the previous release set instead of leaving mixed or partial artifacts.
  • Complete source archives — Production ZIPs now include the build scripts, lockfiles, Markdown documentation, tests, and .NET SDK pin needed to reproduce the app. Sorted, stable entries are written to a temporary ZIP and join the package artifacts in the production release transaction, while dependencies, generated output, packages, certificates, and test results stay excluded.
  • Safer development install — The installer performs a complete x64/Arm64 build, requires the exact manifest-version bundle, and verifies its identity, architectures, .NET deployment, WebView2 payload, signature, and development-certificate thumbprint before replacing the existing installation. Architecture-specific builds stay package-only.
  • Current WebView2 SDK — The pinned Microsoft WebView2 SDK is updated from 1.0.3967.48 to 1.0.4078.44, with exact Core, WinForms, and native-loader parity checked during packaging.
  • Complete distribution notices — App packages now carry the licenses and third-party notices for their bundled JavaScript parsers, Tomlyn, WebView2, self-contained .NET runtime, and embedded Font Awesome Pro icon subset.

Fixed

  • Reliable Paste & Prettify detection — Strong JavaScript and TypeScript syntax now outranks permissive CSS, YAML, TOML, and CSV shapes, so minified bundles and object-heavy functions open under the correct formatter. Detection is debounced, large JSON Lines input uses .NET 10's streaming multi-value reader, and HTML fragments, modern CSS selectors, BOM-prefixed input, and code-like structured values avoid the previous collisions.
  • Accurate large-document navigation — Document Navigator jumps to the selected object in large and minified JSON arrays instead of repeatedly selecting the first object near line 2.
  • Consistent JavaScript actions — JavaScript and TypeScript documents expose Document Navigator from the floating More actions menu as well as the native Tools menu.
  • Precise copy confirmations — Native Edit menu copy commands identify whether original, formatted, or minified content was copied, matching the floating copy menu.
  • Clear Playground capability errors — JavaScript Playground and Runtime Inspect now identify Node.js/CommonJS modules, Node-only globals, and local-file access as unavailable instead of surfacing misleading follow-on type errors. Browser-only guidance is shown up front, and runtime failures point to the included document or Playground code without exposing internal Worker locations; the filesystem and network sandbox remains unchanged.
v1.0.16 July 2026

Added

  • Paste & Prettify — Press Ctrl+N to open clipboard text in a new unsaved tab. JSON/JSONC, JSON Lines, JavaScript/TypeScript, YAML, TOML, Markdown/text, CSV, CSS, XML/RSS/Atom, and HTML are detected from a bounded sample, with an explicit selector for ambiguous content.
  • Semantic compare — JSON, JSONC, JSON Lines, YAML, and TOML can now be compared by structure instead of formatting or key order. Identity-aware arrays, safe text fallback, JSON jump-to-line, Previous/Next Difference, and Ignore Whitespace make both clipboard and native file comparison easier to navigate.
  • Useful HTTP responses — HTTP Client responses can now be copied, saved with a safe content-aware filename, or opened as a new CodePrettify tab.
  • Complete native Tools menu — Diagnostics, Export, JavaScript Playground, Runtime Inspect, Regex Playground, JSON Path, HTTP Client, and Security Scan are now available directly from the application menu.

Security

  • Validator hardening parity — The desktop JSON Schema Validator now carries the browser extension 1.0.44 fixes for exact multipleOf checks, unsupported unevaluatedProperties, strict formats and paths, negative zero, and hostile regular expressions.
  • Token-aware sandbox rewriting — JavaScript and TypeScript module neutralization no longer rewrites module-like text inside strings, comments, templates, or regular expressions, with a conservative fallback for syntax the tokenizer cannot parse.
  • Bounded scanning and response tabs — Security Scan clearly marks partial, capped work, while HTTP response tabs use a 50 MiB UTF-8 bridge limit, safe leaf filenames, a type allowlist, and recognized-source validation.

Improved

  • Crash-safe workspace recovery — Session checkpoints are saved atomically while the app runs. Bounded rolling diagnostics identify an unclean previous run, redact profile paths, and flush exceptions synchronously.
  • Recoverable viewers — A failed WebView offers Retry and Open Raw, can recreate its controller without losing the tab, and can retry Prettified later. Hidden landing failures repair quietly, while file watchers recover with bounded backoff and check for missed edits.
  • Keyboard and assistive access — Native tabs and status segments now expose screen-reader objects, keyboard actions, visible focus, and high-contrast colors. The web surface honors forced colors and reduced motion, and Ctrl+Tab / Ctrl+Page Down cycle tabs.
  • Restore-session control — Settings now exposes Restore previous session. Fresh profiles still open every supported family in its Prettified, Rendered, or Table view until Raw or Source is chosen explicitly.

Fixed

  • No dead-end viewer failures — A crashed CoreWebView2 can still be mapped to its owning tab, and a FileSystemWatcher.Error no longer silently disables change detection for that tab.
  • Reliable format handling — Large pasted JSON Lines data is detected from a bounded 100-line sample, TOML and JSON Lines format correctly before comparison, and YAML semantic compare loads its parser only when needed.
v1.0.15 July 2026

Security

  • Stronger execution sandbox — JavaScript and TypeScript validation, Playground, Runtime Inspect, and regex work now use an opaque script-only iframe, restrictive CSP, private authenticated message channel, and fail-closed navigation handling. Network-capable worker APIs are disabled before document code runs, preserving the app's offline boundary even when you explicitly execute an untrusted file.
  • Patched build tooling — The app now builds with esbuild 0.28.1, including the fix for the Windows development-server path traversal issue in the previous dependency.

Improved

  • Complete file-type defaults — Settings now covers JSON/JSONC/JSON Lines, JavaScript/TypeScript, YAML, TOML, Markdown, CSV, CSS, XML/RSS/Atom, and HTML, with a default-view choice for every family. Clean profiles start Prettified, Rendered, or in the CSV Table as appropriate, while an explicit Raw or Source choice remains saved.
  • Search with a hidden toolbarCtrl+F and native Find temporarily reveal and focus the search controls without changing your saved toolbar preference, then hide them again when search is cleared or dismissed. Pending searches are canceled when the document changes so an old query cannot affect the next file.
  • Faster, calmer startup — The visible landing page no longer competes with a second hidden WebView. Editor prewarming waits until the visible view is ready and the app is idle, remains deferred while tabs are loading, and the icon stylesheet is no longer fetched and parsed twice.
  • Active tab restored first — The previously active file becomes usable before inactive session tabs restore serially in the background. Background restoration preserves saved order and never steals a later user selection.
  • More deterministic releases — Build dependencies are pinned, conflicting build modes are rejected, production batch failures propagate correctly, clean per-architecture launcher builds exclude old publish outputs from dependency resolution, and bundle verification checks exact WebView2 versions alongside Store identity, signer, and package metadata.
  • Startup regression measurements — Desktop automation now reports precise startup milestones and separate fresh-cache and warm-cache landing results.

Fixed

  • Edit > Find works reliably — The app now waits for the native menu to close before returning keyboard focus to Search, targets the visible Table search field in Table view, and keeps Find available for native large-file tabs.
  • Consistent saved views — JSON and JSON Lines now agree between the native startup preview and web viewer, Markdown respects an explicit Source choice, and a missing or empty native cache no longer replaces preferences that still survive in the WebView profile. Malformed view maps fall back safely, and an older open tab cannot roll back a newer settings change.
  • Reliable reopen after the last tab — Opening a file immediately after closing the final tab no longer leaves the new tab displaying the landing page. Landing and document startup are kept separate, and a page cannot report a document ready before its file content is loaded.
  • Reliable dialog lifecycle — Closing or replacing a dialog restores focus only to a connected, visible control, and global shortcuts no longer fire behind it or while you type. Replacing a document now runs each open feature's cleanup and unregisters old handlers before removing overlays, so scrolling and shortcuts cannot remain locked by a detached dialog.
  • Production packaging restored — The JSON Schema Validator module is now included in the build's exhaustive JavaScript minification list; the 1.0.14 source otherwise stopped every production build before creating an MSIX.
  • Safe settings and session writes — A writer that times out waiting for the cross-process lock now skips the write instead of proceeding unlocked, while unique temporary files and atomic replacement protect persisted state from concurrent instances and failed commits.
  • Strict app handoff — Single-instance and Explorer messages reject malformed UTF-8 and oversized payloads rather than accepting a truncated path list; official senders fall back to a local window when a handoff cannot fit safely.
  • Atomic Save As — Original and binary saves now use short, independently named sibling temporary files and atomic replacement, preserving an existing destination on failure, cleaning up incomplete files, and supporting valid near-limit NTFS filenames.
  • Consistent WebView2 packaging — App packages no longer mix stale Core and WinForms assemblies with a newer native loader. Production builds now reject any package whose WebView2 components do not all match the pinned version.
v1.0.14 July 2026

Added

  • Local JSON Schema Validator — Paste a schema to check the open JSON or JSONC document against common keywords and local $ref references. Nothing is fetched or uploaded, validation is cooperatively scheduled and capped, and every violation can jump to its JSON path and source line. It is available from the viewer and the native Tools menu.

Security

  • Private Markdown previews — Remote and network images are now shown as explicit links instead of loading automatically, so opening an untrusted Markdown file cannot silently contact an external host. Safe embedded images can still render.
  • Safer CSV conversion — Native JSON/XML-to-CSV conversion now neutralizes formula-like text cells without changing genuine negative numbers, preventing spreadsheet software from treating untrusted text as a formula.

Fixed

  • Reliable save in placeCtrl+S now saves the JavaScript view that is actually visible and synchronizes the web document, raw view, native tab, and future-save baseline, so a later save cannot restore stale text.
  • Safer JSONC saves — Saving formatted JSONC now warns that comments and trailing commas will be removed, with No as the safe default.
  • Consistent file entry points.jsonc and .toml now work through the native and landing-page file pickers, installed file handlers, and Explorer integration.
v1.0.13 July 2026

Improved

  • Clearer view toggle — The Prettify/Raw button is now a two-state switch that shows both options with the current one highlighted, so it is obvious which view you are in. The wording adapts to the file — Rendered/Source for Markdown and XML/RSS, Prettified/Raw for code and data — and the raw view uses the same switch, so both views look and behave alike.

Fixed

  • Syntax warning could be missed — Invalid JavaScript files could open without the invalid-code warning: the syntax check could give up while its sandbox was still loading during startup. The check now waits properly and re-runs in the background if needed, so the warning still shows a moment later.
v1.0.12 July 2026

Fixed

  • Markdown always opens rendered — A remembered “show raw” choice could leave every Markdown file opening as raw source. Markdown now always opens in the rendered preview (with no raw flash on the way in), while the raw source stays one click away from the toolbar toggle.
  • Inline code in the Markdown preview — Back-tick code spans now render inline the way they should, instead of stretching into full-width boxes on their own line.
  • Exact numbers in the Table view and CSV export — Very large whole numbers (such as Snowflake/BigInt ids) and high-precision decimals now keep their exact value instead of being rounded or rewritten in scientific notation, matching what the JSON viewer shows.
  • Large files stay responsive — Formatting, validating, and comparing very large documents now runs in the background, so the window no longer freezes while it works.
  • Reliable session restore — A rare shutdown timing issue could reopen the app with no tabs and a stale window position; your open tabs and window placement are now saved reliably on close.
  • Better encoding detection — A file that contains the odd NUL byte is no longer mistaken for UTF-16 and garbled on open.
  • HTML formatting — Tags with a > inside an attribute value (for example title="1 > 0") are no longer split and corrupted when you format the document.
  • Settings — Changing the font size now also resizes open comparison views, and a custom indent width is no longer reset when you save unrelated changes.
  • Opening files — A file whose name begins with -- now opens instead of being silently ignored.
  • Reliability — Internal hardening: background requests can no longer hang, view toggles can no longer desync, and more error paths are logged for diagnosis.
v1.0.11 July 2026

Added

  • Security Scan — A one-keystroke recon pass over the open document, from the Command Palette, for code review and penetration testing. It flags hardcoded secrets — API keys and tokens from the major cloud and SaaS providers, JWTs, private keys, and database connection strings with embedded credentials — with the values masked and ranked by severity, and it pulls out the URLs, API routes, and endpoints hidden inside a script bundle. Every finding jumps to its line, endpoints copy in one click, and it all runs locally.

Improved

  • Better Markdown Preview — Task lists now render as real checkboxes, footnotes work properly with clickable references, :shortcode: emoji are converted, and every heading gets an anchor so in-page links work. Tables with column alignment, strikethrough, and nested lists keep working, and raw HTML stays safely escaped.
v1.0.10 June 2026

Added

  • TOML Support — Open TOML files with native validation and full syntax highlighting; .toml files get file associations and the right-click "Open with CodePrettify" entry.
  • Cross-Format Conversion — Re-serialize the open document to JSON, YAML, or TOML from the Export / Download dialog.
  • JSON with Comments (JSONC) — Files with comments and trailing commas (like tsconfig.json) now format and validate correctly, with .jsonc recognized for file open and the context menu.
  • Command Palette — Press Ctrl+Shift+P to fuzzy-search and run any viewer action from the keyboard.

Security

  • Safer Links & Requests — Links in CSS files and HTTP Client requests are now limited to safe http(s) URLs.
  • Tighter Secret Handling — Saved secrets stay masked across every environment, and very large HTTP responses are capped.

Improved & Fixed

  • Sharper Icons — Several toolbar and menu icons that showed as blank boxes (Regex Playground, Runtime Inspect, HTTP Client) now render correctly.
  • More Accurate Diagnostics — Corrected XML/RSS line numbering, several diagnostics edge cases, and a flickering JSON breadcrumb tooltip.
  • Smoother Editing — As-you-type search is debounced, the color picker is steadier, CSV and table exports keep a consistent column order, and several formatter glitches are fixed.
  • More Reliable Tools — Runtime Inspect now captures modern const/let/class code, Export JSON no longer stalls on a false secrets warning, and the document outline recognizes more declaration styles.

Desktop App

  • Reliable Save — Saving in place no longer reloads the document and loses your scroll position or the "Saved" confirmation.
  • Correct Encoding & BOM — Choosing "UTF-8 with BOM" or UTF-16 now writes the byte-order mark, plain "UTF-8" no longer adds one, and a save that would lose characters in a legacy encoding is now flagged.
  • Safer Edits & Search — Better handling of external file changes while you are editing, and large-file "find next" now lands on the correct match.
v1.0.9 June 2026

Security

  • Parser-Only Validation — Replaced the executor-based syntax validator with a secure parser-only check using Acorn to prevent code execution in the sandbox during document viewing.
  • Formula Injection Prevention — Neutralized formula injections in CSV exports by prefixing formula-triggering characters with a quote.
  • Credential Redaction — HTTP Client history now automatically redacts sensitive headers like Authorization and Cookie before saving.
  • View State Validation — Hardened shared settings URLs by strictly type-validating and range-clamping inputs.

Fixed & Changed

  • Catastrophic Backtracking Protection — Regex Playground now evaluates patterns inside a sandboxed worker with a 1.5-second timeout, preventing app freezes.
  • HTTP Client Replay Fix — Replaying POST/PUT requests from history now correctly restores the request body.
  • Formatting Safeguards — XML/RSS CDATA sections, comments, and CSS string literals are now preserved byte-for-byte during formatting.
  • Smarter JSON Queries — Bracket parsing in JSON Path is now escape-aware, correcting queries on keys containing special characters.
  • Excel-Friendly CSVs — CSV exports now use UTF-8 BOM and CRLF line endings to display correctly in Excel.
  • Improved Table Exports — HTML table exports now respect active filtering, search query, sorting, and column arrangements.

Desktop App (Native Layer)

  • Session Restore & Recent Files — The app now remembers window size, position, maximized state, and open tabs across launches, and includes a "Recent Files" menu.
  • Save in Place (Ctrl+S) — Writes the active document back to its original path and encoding, prompting with warnings if modified externally.
  • Compare from Explorer — Select two files in Windows Explorer and right-click to compare them side-by-side.
  • Status Bar Overrides — Re-open files with custom encoding or convert line endings (CRLF/LF) directly from the status bar.
  • Large-File Enhancements — Cross-page search now continues past the current page, and a new Go To Line/Row tool (Ctrl+G) pages automatically to the right location.
  • WebView & Pipe Hardening — Secured local WebView message routing, disabled browser-level password autosaves/autofill, and restricted single-instance IPC pipe access to the current user.
  • Layout & Performance Fixes — Enabled per-monitor DPI awareness, improved title bar OS-theme integration, resolved Explorer shell DLL COM reference leaks, and optimized memory usage during file scans.
v1.0.8 May 2026

Fixed

  • Search Paste Replacement — Pressing Ctrl+F in the floating search tool now selects the existing search text, so pasting a new query replaces it immediately.
v1.0.7 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.