Skip to content

Releases: Crlyzd/Cathet

Cathet v5.0.0

Choose a tag to compare

@Crlyzd Crlyzd released this 17 Oct 20:38

Cathet v5.0.0 Release Notes

1. Title

Cathet v5.0.0 — Dual Pane Side-by-Side Architecture, Proportional and Offset Scroll Synchronization, Spatial Dual Drop Targets, Dynamic OS Window Constraints, Read-Only Save Protection, and UI Refinements

2. Target of the Change

The primary targets of this release are:

  • Introducing Dual Pane mode to enable simultaneous side-by-side editing, viewing, and comparison of two independent documents within a single native window instance.
  • Providing high-precision, bidirectional proportional scroll synchronization between panes with user-configurable relative offset preservation and 1:1 ratio snap modes.
  • Implementing simultaneous dual-zone drag-and-drop spatial targeting with live cursor tracking across DOM and native Windows OLE events.
  • Enforcing hardware-level Win32 Desktop Window Manager (DWM) minimum window constraints (200x300 single-pane default, automatically elevated to 350x350 in Dual Mode) to permanently prevent UI squishing and control clipping.
  • Implementing document baseline dirty tracking to disable redundant saves on unmodified files and intercepting save attempts on Windows files bearing the Read-Only attribute with a safe redirection dialog.
  • Improving top-bar menu telemetry with active mode indicators, and resolving the Settings typography dropdown scroll collapse defect.
  • Hardening the secondary document placeholder island against horizontal card bleeding, title text wrapping, and button margin clipping under compact viewports.

3. Summary of the Change

Cathet version 5.0.0 introduces a major architectural evolution, expanding the application from a single-document scratchpad into a dual-document workstation while preserving its strict anti-monolith modularity standards (each source module kept under 250 lines) and ultra-lightweight binary profile.

Key advancements include:

  • Container-Scoped Multi-Instance Editor Engine: Decoupled EditorComponent from global document element IDs into modular container-scoped DOM instances. Dual Pane mode mounts two fully isolated editor instances with per-pane state management, independent lossless Markdown Preview toggles, and unified window title telemetry.
  • Proportional Scroll Synchronization Engine (SyncScrollController): Built an event-driven scroll coordinator utilizing normalized scroll ratios (0.0 to 1.0) with an atomic recursion guard preventing ping-pong event reverberation. Supports continuous offset-based synchronization (preserving relative scroll displacements when locked) alongside a user-selectable "Dual Pane Snap Scroll" mode.
  • Dual-Zone Spatial Drop Targets (DropOverlay): Replaced the single-document overlay curtain with simultaneous side-by-side frosted glass drop zones. Live cursor coordinates normalized against devicePixelRatio dynamically illuminate the hovered pane with radiant accent feedback while keeping the opposite pane visible as an idle target.
  • Dynamic OS DWM Window Size Constraints: Added the set_window_min_size backend command. Cathet enforces a default floor of 200x300 in single-pane mode, dynamically enforces a 350x350 floor upon entering Dual Pane mode (auto-expanding the window if needed), and cleanly restores single-pane bounds upon exiting.
  • Baseline Dirty Tracking and Windows Read-Only Guard: Integrated baseline text tracking to disable the "Save" menu action when files are up-to-date, preventing unnecessary disk writes. Implemented backend Win32 metadata inspection (is_file_readonly) to catch read-only files before write execution and prompt users via a frosted glass dialog to use "Save As...".
  • Typography Menu Scroll Repair: Resolved wheel event propagation in FontSelect.ts so scrolling within the font dropdown menu no longer triggers ancestor scroll listeners, accompanied by overscroll-behavior: contain, auto-scroll to the selected item, and an integrated 3px micro-scrollbar thumb.
  • Responsive Placeholder Island Hardening: Enforced container boundary masking (overflow: hidden) and box-sizing: border-box across .dualpane-empty-card and its action buttons, preventing border collisions and title bleed on narrow viewports.

4. Detailed Breakdown

4.1 Dual Pane Side-by-Side Editing Architecture & Lifecycle

  • Problem: Users handling comparative note-taking, translation, documentation editing, or side-by-side reference required running multiple OS window instances or manually juggling window positioning. Prior to v5.0.0, Cathet's UI architecture assumed a singleton EditorComponent bound to fixed DOM identifiers (#editor-wrap, #editor, #markdown-preview).
  • Solution & Technical Details:
    • Decoupled src-ui/src/components/Editor.ts by replacing hardcoded ID lookups with container-scoped class queries (.cathet-editor-wrap, .cathet-editor, .cathet-markdown-preview). Exposed modular accessors getWrapperEl() and focus() to support dynamic lifecycle attachment.
    • Implemented src-ui/src/components/dualpane/DualPaneView.ts (orchestrator) managing twin pane DOM slots (#dualpane-left-slot and #dualpane-right-slot), active pane tracking, and layout state.
    • Built src-ui/src/components/dualpane/DualPaneHeader.ts providing a per-pane frosted glass titlebar strip featuring the active filename, a theme-adaptive monochrome SVG folder icon, a lossless Markdown Preview mode toggle, a file open trigger, and a pane dismiss button.
    • Built src-ui/src/components/dualpane/DualPaneSplitter.ts providing an interactive divider with drag-based resize capabilities, min/max layout clamps, and an integrated sync lock badge.
    • Created src-ui/src/services/dualPaneService.ts managing dual-pane state persistence, formatted window title generation (doc1.md | doc2.md - Cathet), and synchronization event dispatching.
    • Implemented keyboard shortcut handler in src-ui/src/utils/shortcuts.ts binding Ctrl+D to toggle Dual Pane mode.
    • Strict Modularity Compliance: All new modules were designed with isolated responsibilities, keeping every file strictly under the 250-line threshold (DualPaneView.ts at 229 lines, DualPaneSplitter.ts at 124 lines, DualPaneHeader.ts at 81 lines, dualPaneService.ts at 76 lines).

4.2 Proportional & Offset-Preserving Scroll Synchronization Engine

  • Problem: Synchronizing two independent scroll containers often leads to infinite event feedback loops (ping-pong recursion). Furthermore, naive synchronization forces both documents to the exact same percentage offset, disorienting users who intentionally align document sections located at different proportional depths.
  • Solution & Technical Details:
    • Built src-ui/src/utils/syncScrollController.ts using normalized scroll ratios:
      ratio = scrollTop / (scrollHeight - clientHeight)
    • Ping-Pong Recursion Prevention: Applied a boolean isSyncing re-entrancy lock and targeted event listener coordination so driver container events do not trigger reciprocal updates from the follower container.
    • Dual Synchronization Modes:
      • Offset-Preserved Synchronization (Snap Scroll OFF, Default): When the user locks the sync badge, the controller calculates the instantaneous ratio delta between panes:
        ratioOffset = followerRatio - driverRatio
        During subsequent scrolling, the follower pane tracks the driver while preserving this calculated relative offset:
        targetRatio = clamp(driverRatio + ratioOffset, 0, 1)
      • Snap-to-Ratio Synchronization (Snap Scroll ON): When enabled via Settings, locking the sync badge immediately snaps the follower pane to match the driver's exact ratio (targetRatio = driverRatio), ensuring 1:1 proportional alignment.
    • Visual Telemetry on Splitter Badge:
      • Anchored the sync badge squircle to the bottom of the splitter divider to avoid visual collision with document headers.
      • Default Locked State: Renders a cosmic magenta/violet galaxy nebula gradient with radiant magenta aura.
      • Snap Scroll Locked State: Dynamically toggles .blue-galaxy on the sync badge, rendering an electric sapphire/cyan gradient with a radiant blue aura to indicate snap mode is active.
    • Added "Dual Pane Snap Scroll" toggle in SettingsPane.ts with cross-window event synchronization (cathet:snap-scroll-change) via Tauri IPC.

4.3 Simultaneous Dual Drop Zones & Spatial Drag-and-Drop Targeting

  • Problem: In Dual Pane mode, dragging a file from Windows Explorer over the window previously displayed either a single full-window overlay or ambiguous drop boundaries, making it impossible to predict which pane would receive the file before releasing the mouse button.
  • Solution & Technical Details:
    • Overhauled src-ui/src/components/DropOverlay.ts and src-ui/styles/editor.css to render simultaneous side-by-side drop targets (.drop-zone-left and .drop-zone-right).
    • Spatial Cursor Tracking: In src-ui/src/services/dragDropService.ts, captured cursor coordinates across both browser DOM dragover events and native Windows OLE drag events forwarded by Tauri.
    • Device Pixel Ratio Normalization: Physical screen coordinates from native OS events are normalized via window.devicePixelRatio against dualPaneView.getSplitterPosition().
    • Dynamic State Toggling: The hovered target receives .active-target (illuminated with a radiant accent border and glowing frosted glass backdrop), while the non-hovered pane receives .idle-target (translucent styling indicating availability).
    • Background Translucency & Clean Masking: Replaced opaque drop curtains with translucent frosted glass (rgba(..., 0.45-0.55) with backdrop-filter: blur(16px)).
    • Anti-Ghosting State: Toggled is-dragging class on document.body during drag operations. In dualpane.css, applied rules to hide the underlying secondary placeholder island during file dragging, preventing visual collisions between placeholder text and drop zone cards.

4.4 Dy...

Read more

Cathet v4.1.0

Choose a tag to compare

@Crlyzd Crlyzd released this 17 Oct 15:09

Release Notes — Cathet v4.1.0

Target of the Change / Release Note

Cathet v4.1.0 Windows x64 and ARM64 Production Release (git diff v4.0.3..HEAD).


Summary of the Change

Cathet v4.1.0 introduces bidirectional scroll position preservation across Markdown edit and preview modes, a configurable Markdown Preview default document opening setting, universal multi-window working set memory compaction across all WebView2 process trees, GPU and memory optimizations for the spammable heart sprout particle subsystem, and refined compact layout aesthetics in the Settings and About window.


Detailed Breakdown

1. Bidirectional Markdown Edit and Preview Scroll Preservation

  • What Changed: Toggling between Markdown Edit mode and Markdown Preview mode via Ctrl+M now preserves the exact proportional scroll position in both directions.
  • Why the Change Was Made: Previously, switching modes completely destroyed and re-rendered the inner DOM of the editor, causing the container scroll height to collapse instantaneously and clamping the scroll position to zero (the top of the document). In addition, returning to Edit mode triggered keyboard focus on the contenteditable container, which prompted the browser engine to scroll the initial caret position into view.
  • Bug Fixing: Resolved viewport snapping to line 0 on mode transitions. Implemented non-scrolling focus using the preventScroll option on the editor element.
  • Technical Details: Created a dedicated utility module, scrollSync.ts, to calculate normalized vertical progress:
    scrollRatio = scrollTop / (scrollHeight - clientHeight)
    Upon DOM reconstruction, scrollSync applies an immediate synchronous scroll restoration followed by a secondary pass within requestAnimationFrame to guarantee alignment after asynchronous font and image layout reflows settle.

2. Markdown Preview Default Document Opening Setting

  • What Changed: Added a toggle in the Settings interface allowing users to configure whether existing text and markdown documents automatically open in rendered Preview mode by default, while preserving immediate Edit mode for blank scratchpads.
  • Why the Change Was Made: Improves reading efficiency for users frequently opening technical documentation, readmes, and notes without requiring manual shortcut invocation on every open operation.
  • Technical Details: Implemented PreviewService to manage persistent storage under the cathet_always_preview key. Wired cross-window communication via the Tauri event cathet:always-preview-change. Updated the main application document loader to evaluate document state and conditionally initialize in rendered preview mode.

3. Universal Multi-Window Working Set Compaction

  • What Changed: Broadened Win32 working set memory compaction to execute across all open windows upon focus loss, and scheduled an automatic memory trim when the secondary Settings window is closed or destroyed.
  • Why the Change Was Made: Cathet utilizes independent native WebView2 windows for the main editor and the Settings dialog. Previously, memory trimming was restricted to focus loss on the main window. Closing or defocusing the Settings window left allocated renderer and GPU working set pages active until the main window was refocused and defocused.
  • Technical Details: Updated the on_window_event handler in src-tauri/src/lib.rs. Any window receiving Focused(false) triggers trim_memory() across the entire process tree via Win32 SetProcessWorkingSetSize. When the Settings window receives CloseRequested or Destroyed, a background asynchronous task waits 250 milliseconds for WebView2 COM interfaces to tear down, then initiates working set compaction.

4. Settings Window Compact Layout & Hidden Scrollbar

  • What Changed: Restored the Settings window inner dimensions to the compact 350x318 form factor, enabled hidden vertical scrolling for the settings card, and balanced the vertical spacing of the About card.
  • Why the Change Was Made: Accommodates the additional Markdown Preview toggle switch without clipping or introducing visual distortion, while preserving a minimal desktop footprint.
  • Bug Fixing: Resolved a flexbox container layout constraint where min-height: auto on intermediate parents prevented scrollHeight from exceeding clientHeight, which previously blocked native mouse wheel scrolling. Corrected with explicit min-height: 0 and overflow-y: auto on the tab pane.
  • Technical Details: Applied custom CSS rules (scrollbar-width: none, -ms-overflow-style: none, and webkit-scrollbar display none) to provide smooth vertical scrolling with zero visual scrollbar obstruction. Added window and container scroll listeners to FontSelect to automatically dismiss open dropdown menus during scroll events.

5. Settings & About UI Enhancements & Particle Performance

  • What Changed: Integrated monochrome SVG icons for GitHub and Website links, structured left-aligned labels with flush right-aligned frosted glass action capsules, added a continuous glowing pulse to the update button when updates are ready, and upgraded the spammable heart sprout particle utility with an 11-color palette, arc trajectory dispersion, FIFO active particle ceiling, and compositor layer promotion.
  • Technical Details:
    • Particle Pool Ceiling: Enforced a maximum limit of 24 concurrent active particles in heartSprout.ts. When rapid clicks occur, the oldest active DOM particles are retired immediately via a FIFO queue, preventing DOM tree bloat.
    • Template Node Cloning: Replaced synchronous innerHTML string re-parsing on every click with cloneNode(true) from a pre-parsed template element.
    • Compositor Isolation: Added will-change: transform, opacity, contain: layout style, and backface-visibility: hidden to .sprouting-heart-particle in settings.css. Reduced drop-shadow blur radius from 5px to 3px to eliminate per-frame Gaussian blur re-rasterization bottlenecks in Skia GPU compositing.
    • Idle Memory Recovery: Scheduled an automated debounced 1.5-second idle trim hook after particle bursts settle to return memory directly to baseline.

6. Institutional Memory & Governance

  • What Changed: Codified strict architectural standards and mistake guardrails in AGENTS.md, established history.md as the living project changelog, and mandated grouped and staged git commit procedures.
  • Technical Details: Added pre-planning validation rules and mistake logging protocols across all development workflows.

Git Commits Covered by This Release

  • 3ecd9c7: docs: update history.md with memory optimization and scroll sync changelogs
  • 8f876a0: fix(editor): preserve scroll position when toggling Markdown edit and preview modes
  • b1b650b: perf(settings): optimize heart sprout particle rendering and GPU memory usage
  • 152eb8c: perf(backend): broaden memory trimming to all windows and settings teardown
  • e03aae5: docs(history): log Settings and About UI enhancements and sprouting heart cluster burst
  • 17d18bc: feat(settings): enhance About layout alignment, brand hover glow, and update button pulse
  • e1bebd4: feat(ui): add monochrome icons and spammable sprouting heart particle utility
  • cfb4e04: chore(release): bump application version to 4.1.0
  • c41c920: docs(history): record Settings window sizing change and flexbox scroll mistake guardrail
  • 43c5752: feat(settings): enable hidden-scrollbar scrolling and balance About card layout
  • b3c38a7: fix(window): restore Settings window inner dimensions to compact 350x318
  • 4aa44a7: docs(agents): establish history.md and codify agent workflow governance rules
  • a84a499: feat(editor): integrate PreviewService and preview mode file loading
  • c45ff85: feat(settings): add Markdown Preview default toggle and expand window height

Cathet v4.0.3

Choose a tag to compare

@Crlyzd Crlyzd released this 10 Oct 22:27

Cathet v4.0.3 Release Notes

Release Version: v4.0.3
Previous Release: v4.0.2
Target Platform: Windows 10 & Windows 11 (x64 / ARM64)
Git Tag: v4.0.3
Commit Range: v4.0.2..HEAD (2 commits)


⚡ Highlights of v4.0.3

Cathet v4.0.3 introduces a Universal Text Decoder to ensure Cathet can open text and markdown documents created by any Windows application or camera/device workflow. Previously, opening files encoded in UTF-16 LE (such as DJI drone metadata logs, MediaInfo reports, or PowerShell output redirects) triggered an "unsupported encoding" modal. With v4.0.3, Cathet automatically inspects file headers and transcode byte streams transparently into clean Unicode with zero external dependencies and zero binary bloat.


🌟 What's New & Improved

📄 Universal Text & Encoding Pipeline

  • Full Byte Order Mark (BOM) Support:
    • Automatically recognizes and strips UTF-8 with BOM (0xEF 0xBB 0xBF).
    • Seamlessly decodes UTF-16 Little Endian (LE) with BOM (0xFF 0xFE) — natively opening files like DJI camera logs (DJI_*.txt), MediaInfo dumps, and Windows PowerShell exports.
    • Seamlessly decodes UTF-16 Big Endian (BE) with BOM (0xFE 0xFF).
  • BOM-less UTF-16 LE Detection:
    • Implements a lightweight heuristic to detect UTF-16 LE files lacking standard BOM headers by analyzing character byte alignment, preventing decoding failures on raw streams.
  • Native Windows ANSI / System ACP Fallback:
    • For legacy text documents encoded in Windows-1252, ISO-8859, or regional system code pages containing special punctuation (curly quotes “ ”, em-dashes —, currency symbols €, and accents é), Cathet automatically decodes them using the native Win32 MultiByteToWideChar API without garbled characters.
  • Intelligent Binary Guard:
    • Preserves the safety shield against accidentally opening .exe, .png, or .zip archives by verifying null-byte distributions and gracefully showing the frosted glass warning modal.

🏛️ Architecture & Code Quality

  • Dedicated Domain Module (src-tauri/src/encoding.rs):
    • Decomposed text decoding logic out of file.rs into an isolated, single-responsibility module (encoding.rs, 165 lines).
    • Reduced commands/file.rs down to 166 lines, strictly honoring Cathet's anti-monolith standard (< 250 lines per file).
  • Zero-Bloat Win32 Integration:
    • Enabled Win32_Globalization on the existing windows-sys dependency, leveraging built-in Windows kernel functions without pulling any third-party decoding crates.
    • Release binaries strictly preserve the sub-4 MB footprint invariant.
  • Lossless Markdown Guarantee (Ctrl+M):
    • All non-UTF-8 files are normalized into standard Unicode at the Rust backend boundary before hitting Tauri IPC.
    • Toggling between Edit mode and Markdown Preview mode remains 100% idempotent and lossless.
  • Automated Unit Test Suite:
    • Integrated native test cases covering plain UTF-8, UTF-8 BOM, UTF-16 LE/BE, ANSI fallbacks, binary guards, and real-world DJI metadata files.

📦 Commits Included

  • 3de554c — feat(file): add universal text decoder supporting UTF-16, BOMs, and Windows ANSI
  • 657962c — feat: bump version

Cathet v4.0.2

Choose a tag to compare

@Crlyzd Crlyzd released this 10 Oct 20:51

Release Notes — Cathet v4.0.2

What's Changed in v4.0.2

📋 Clipboard & Native Windows ACL Fixes

  • Resolved Silent Context Menu Paste Failure: Explicitly granted "clipboard-manager:allow-read-text" and "clipboard-manager:allow-write-text" capabilities in default.json, eliminating Tauri v2's default ACL block on clipboard read operations.
  • Eliminated WebView2 Permission Popup: Eliminated the Chromium permission prompt flyout (http://tauri.localhost wants to see text and images copied to the clipboard) by routing clipboard read and write actions strictly through native Windows Win32 APIs via @tauri-apps/plugin-clipboard-manager.

🪟 Fluent Context Menu & Editor Experience

  • Focus Preservation on Menu Interaction: Added mousedown default prevention on context menu items so clicking actions like Cut, Copy, Undo, and Redo no longer blurs #cathet-editor or collapses the text selection range.
  • Fixed Escape Key Exit Bug: Switched context menu Escape dismissal to capture phase with stopImmediatePropagation(), ensuring pressing Escape dismisses the context menu without triggering the global application quit handler.
  • Caret Synchronization on Right-Click: Implemented syncCaretToPoint() to place the blinking cursor directly under mouse coordinates when right-clicking in unselected editor space, ensuring pasted text lands precisely where clicked.
  • Mutual Menu Dismissal: Opening the context menu now dismisses an active top-bar dot menu, and vice versa, preventing overlapping frosted-glass overlays.

Full Changelog: v4.0.1...v4.0.2

Cathet v4.0.1

Choose a tag to compare

@Crlyzd Crlyzd released this 10 Oct 02:59

Cathet v4.0.1

⚡ Performance & Responsiveness

  • Eliminated Keystroke Lag with Embedded Images: Resolved an issue where typing words felt sluggish and delayed after pasting multiple images into the document.
  • On-Demand DOM Serialization: Removed continuous full-document re-serialization from the editor's live input keystroke handler. DOM serialization now executes strictly on-demand during file saves and Markdown preview toggles.
  • Zero-Reflow Token Substitution: Optimized Base64 pill DOM extraction by substituting lightweight temporary tokens (~25 bytes) rather than inserting full Base64 strings into the active layout tree, eliminating expensive Chromium layout reflow and text-shaping passes over megabytes of image data.

📖 Documentation

  • Updated README documentation detailing clipboard optimization workflows and offline guide references.

Cathet v4.0

Choose a tag to compare

@Crlyzd Crlyzd released this 26 Sep 11:34

Cathet v4.0.0 Release Notes

Release Date: September 2026
Tag / Version: v4.0.0
License: MIT
Platform: Windows 10 & 11 (x64 / ARM64)
Binary Size: cathet-x64.exe ~3.72 MB | cathet-arm64.exe ~3.49 MB


🌟 Overview: What's New in v4.0.0

Cathet v4.0.0 is focused entirely on a major Markdown & Media subsystem overhaul and a strict modular architectural refactoring.

While earlier 3.x releases laid the foundation with Windows Acrylic backdrops, single-file portability, and process memory trimming, v4.0.0 elevates Cathet into a full-fledged, multimedia-capable Markdown workstation without increasing its featherweight memory footprint.


🚀 What's New Since v3.3

1. 📷 Next-Gen In-Memory Image & Markdown Engine

  • In-Memory Image Optimization (imageOptimizer.ts):
    • Pasting clipboard screenshots or image files (Ctrl + V) over 500 KB automatically downscales them (max 1920px width/height) and re-encodes them to WebP (0.82 quality) entirely in-memory before embedding.
    • Images $\le 500\text{ KB}$ bypass recompression to preserve 1:1 pixel sharpness.
    • Documents stay lightweight, snappy, and easy to share.
  • Interactive Collapsible Base64 Pills (base64Fold.ts):
    • Raw Base64 data URIs can turn raw Markdown into thousands of characters of unreadable text. In Edit mode, Cathet automatically folds massive data URIs into compact, frosted glass pill badges (e.g. [ 📷 WEBP ~245 KB ▾ ]).
    • Clicking a badge toggles between the compact pill and the raw expanded text. Full fidelity is preserved 100% losslessly on Save and Preview.
  • Local & Relative Asset Streaming (imagePathResolver.ts):
    • Markdown preview now seamlessly resolves local relative image links (./images/screenshot.png), Windows absolute paths (C:/Users/.../photo.png), and remote URLs (https://...) using Tauri v2's asset streaming protocol.
  • Lossless Instant Preview Toggle (Ctrl + M):
    • Edit mode now operates strictly on clean plain text (editorEl.innerText). Switching back and forth between Edit and Preview is 100% lossless, idempotent, and never mutates or scrapes the DOM.
  • GFM HTML Sanitization (markdownSanitizer.ts):
    • Embedded HTML in Markdown documents is parsed through a zero-dependency sanitizer using the native DOMParser, safely supporting standard GFM formatting tags while neutralizing XSS vectors.
  • 15 MB Image Paste Safety Cutoff:
    • Prevents WebView freezing or memory spikes when pasting massive graphics files by displaying an in-app frosted glass warning dialog (GlassDialog.ts).
  • Broken Image Fallbacks:
    • Missing or moved local images render clean, frosted fallback cards (brokenImageFallback.ts) instead of breaking page layout.

2. 📖 Built-In Interactive Offline Guide

  • One-Click Tutorial: Added a dedicated "📖 Open Tutorial" button inside the Settings window.
  • Zero-Latency Offline Loading: Loads tutorial.md directly into Cathet in Markdown preview mode, providing an immediate reference for keyboard shortcuts, Markdown syntax, image pasting, and table formatting without requiring an internet connection.

3. 🏗️ Strict Modular Architecture Refactoring (Anti-Monolith Invariant)

  • Eliminated Monolithic Components: Decomposed previously monolithic UI components into focused, single-responsibility modules strictly under 250 lines:
    • Settings tabs split into SettingsTabs.ts, SettingsPane.ts, AboutPane.ts, and FontSelect.ts.
    • Editor paste and media workflows separated into editorPasteHandler.ts, imageOptimizer.ts, imagePathResolver.ts, base64Fold.ts, brokenImageFallback.ts, and markdownSanitizer.ts.
    • Styles modularized into editor.css, settings.css, and main.css.

4. 🪟 UI & Window Refinements

  • Settings Top-Resize Fix: Eliminated the top-border resize cursor artifact and vertical height jump when clicking or focusing the Settings window.
  • Windows Path Handling: Hardened path normalization for Windows drive letters (C:/...) and encoded URI characters when referencing local media.

5. 🛠️ Build Automation Hardening

  • Fast Build Artifact Isolation: Hardened build.ps1 to prevent cross-contamination of fast-release build artifacts and tightened architecture check routines.

📋 Changelog (v3.3 → v4.0.0)

Category Changes
New Features In-memory clipboard image compressor & WebP optimizer (imageOptimizer.ts)
New Features Collapsible Base64 frosted glass pills for Edit mode (base64Fold.ts)
New Features Local, relative, and absolute image path streaming resolver (imagePathResolver.ts)
New Features Zero-dependency GFM HTML sanitizer (markdownSanitizer.ts)
New Features In-app interactive offline guide (tutorial.md) button in Settings
New Features 15 MB image paste safety alert dialog (GlassDialog.ts)
Refactoring Full modular decomposition of Settings & Editor components (< 250 line limit)
Enhancements Lossless Ctrl+M preview toggle (operates purely on raw plain text)
Bug Fixes Eliminated Settings window top-edge resize cursor flicker and height jump
Bug Fixes Fixed Windows drive-letter path parsing for local Markdown images
Tooling Isolated fast-release artifacts and hardened architecture checks in build.ps1

📦 Downloads

  • Windows x64: cathet-v4.0.0-x64.exe (~3.72 MB)
  • Windows ARM64: cathet-v4.0.0-arm64.exe (~3.49 MB)

Cathet v3.3.0

Choose a tag to compare

@Crlyzd Crlyzd released this 12 Sep 16:49
70a1b1a

Cathet v3.3.0 Release Notes

Target Release: v3.3.0
Target Architectures: Windows x64 (release/cathet-v3.3.0-x64.exe) & ARM64 (release/cathet-v3.3.0-arm64.exe)
Previous Stable Release: v3.1.1
Distribution Target: Under 4.0 MB portable single-binary executable


📋 Release Summary

Cathet v3.3.0 introduces major architectural enhancements, native system integrations, and deep performance optimizations. This milestone delivers a custom frameless window header with native controls, a robust zero-admin Windows file association engine with self-healing capabilities, recursive multi-process memory compaction, and 100% offline bundled WOFF2 typography.


🌟 What's New in v3.3.0

1. Frameless Window Header & Integrated Window Controls

  • Native Custom Window Controls: Integrated fluent Minimize, Maximize / Restore, and Close buttons directly into the frosted Acrylic top header (TopBar.ts, topbar.css).
  • Stateful Maximize / Restore Synchronization: Dynamically updates the restore/maximize icon by subscribing to Tauri window resize and maximize events via windowService.ts.
  • Balanced Titlebar Drag Region: Centered document title with smart text-overflow truncation while preserving native Windows DWM window dragging via data-tauri-drag-region.
  • Redesigned Dot Menu Button: Compact 24px fluent circular trigger (●) with translucent backdrop hover feedback.
  • Ambient Hairline Progress Line: File load progress bar moved to the top window edge as a 1.5px glowing hairline indicator.

2. Windows File Association & Portable Self-Healing

  • Zero-Admin HKCU Association: Register Cathet as the default text editor for .txt, .md, .json, .csv, .log, .yml, and code files without administrative privileges via association.rs.
  • Self-Healing Executable Relocation: When Cathet is moved to another folder or drive, self_heal_if_moved() automatically detects the path mismatch at startup and updates the registry quietly without user disruption.
  • Settings Management & Verification: Added a dedicated Default Application management row in SettingsTabs.ts with active path inspection, hover tooltips, and frosted glass confirmation modals.
  • Categorized File Dialog Filters: Filter files by category (Markdown, Code & Scripts, Data & Config, Logs & Output, and All Files) in file.rs.
  • UTF-8 Safety Modal: Catches binary or non-UTF-8 files upon opening or drag-and-drop, warning the user via a friendly glass modal dialog.

3. Recursive Process-Tree Memory Compaction

  • Toolhelp32 Process Tree Walking: Backend memory compaction (memory.rs) now traverses the full process hierarchy to locate all WebView2 child processes (Renderer, GPU, Utility, and Manager).
  • Standby Page Flushing: Flushes unreferenced memory pages to the Windows standby list across the entire process tree via SetProcessWorkingSetSize upon window blur and post-load idle stabilization.
  • Uncompromised Visuals: DirectComposition and Skia backdrop blur shaders remain 100% hardware-accelerated without degraded visuals or blur artifacts.

4. 100% Offline Bundled WOFF2 Typography

  • Zero External Network Dependencies: Replaced remote Google Fonts CDN links with locally bundled WOFF2 font files (Noto Sans, Roboto, Inter, JetBrains Mono, Fira Code) in public/fonts/ and fonts.css.
  • Instant Startup & Privacy: Eliminates network latency on first run and prevents persistent Chromium Network/Storage utility processes.

5. GPU & Energy Optimizations

  • Eliminated Idle GPU Drain: Hidden .cathet-drop-overlay (display: none) when inactive and scoped pulseDrop animations strictly to active drag operations, eliminating continuous 60fps GPU compositor cycles.
  • Compositor-Friendly Glow Effects: Replaced unbounded CSS text-shadow animation loops with lightweight transform and opacity bursts capped to 3 cycles.
  • Process Consolidation: Tuned WebView2 runtime flags (NetworkServiceInProcess, --disable-crash-reporter, --renderer-process-limit=1, --disable-features=SpareRendererForSitePerProcess).

6. Light Mode Readability & Accessibility Overhaul

  • WCAG AAA/AA Contrast Compliance: Upgraded muted text and borders from faint grays to high-contrast slate tones (#334155 / #475569).
  • Elimination of Harsh Pure Black: Replaced #000000 borders and shadows with deep slate tones (#1e293b / rgba(15, 23, 42)), creating a cohesive modern appearance across both dark and light themes.

7. Developer Experience & Fast Release Profiling

  • Rapid Iteration Profile: Added [profile.fast-release] in Cargo.toml with opt-level = 1, lto = "off", and codegen-units = 256 for near-instant native test builds.
  • Hardened Automation Script: Updated build.ps1 with exit code assertions, stale binary purging, and automated multi-file SemVer bumping.

📦 Binary Verification & Checksums

Architecture Binary File Profile Size Target
Windows x64 cathet-v3.3.0-x64.exe Release (opt-level="z", LTO, strip) ~3.7 MB
Windows ARM64 cathet-v3.3.0-arm64.exe Release (opt-level="z", LTO, strip) ~3.5 MB

📂 Key Commits Since v3.1.1

  • fa9cda0 — feat: add TopBar component and styles for window controls and file title display
  • 949e35b — fix: window maximize/restore handling and windowService capabilities
  • 4fe7f93 — feat: add Cargo configuration, UI styles, and fast-release build profile support
  • 6b66e3a — perf(memory): implement recursive process tree working set compaction
  • fb4e878 — feat(ui): implement titlebar-less frameless header and enhance light mode readability
  • ef8ad6d — feat(settings): add default app registration with self-healing and expand supported file types
  • 377cef4 — perf(core): optimize resource usage, bundle local fonts, and harden build pipeline

Cathet v3.1.1

Choose a tag to compare

@Crlyzd Crlyzd released this 02 Sep 21:21

Cathet v3.1.1 — Silent Headless Updates & Clean Staging 🚀

This release focuses on quality-of-life polish and under-the-hood reliability for Cathet's built-in updater, ensuring updates are 100% silent, clean, and seamless.


✨ What's New & Improved

  • 🤫 Completely Silent Updates (No Flashing CMD Window):

    • Resolved an issue where an unstyled black command prompt (cmd.exe) window would flash or linger on screen during application updates. Updates now execute completely headless in the background using Windows CREATE_NO_WINDOW.
  • 🧹 Isolated Temp Staging & Zero Desktop Clutter:

    • Update payloads are now staged strictly within your operating system's %TEMP% directory rather than your Desktop or application folder.
    • No secondary .exe icons will blink or linger next to your application while downloading.
  • ⚡ Instant Native Post-Update Self-Deletion:

    • Implemented an inter-process handshake (--cleanup-update) between the updater and the freshly relaunched Cathet. Temporary staging files and directories are wiped clean immediately upon startup.
  • 🩹 Self-Healing Desktop Cleanup:

    • If an orphaned cathet_update.exe was left behind on your Desktop or in your application folder from a previous update, Cathet will automatically detect and clean it up on launch.
  • 📌 Shortcut & Taskbar Preservation:

    • Continues to preserve all your existing Desktop shortcuts, pinned Taskbar icons, and Windows "Open With" file associations across updates.

📦 Download Assets

Architecture File Name Target Devices
Windows x64 cathet-v3.1.1-x64.exe Standard Intel & AMD laptops / desktop PCs
Windows ARM64 cathet-v3.1.1-arm64.exe Surface Pro Copilot+, Snapdragon X Elite / ARM PCs

Portable: No installer required. Just download, place it wherever you like, and run!

Cathet v3.1.0

Choose a tag to compare

@Crlyzd Crlyzd released this 02 Sep 21:04

Cathet v3.1.0 — Drag & Drop, File Association & Streamlined Releases 🚀

Cathet v3.1.0 introduces seamless file loading workflows, native Windows shell integration, and a cleaner release packaging pipeline.


✨ What's New

📂 Native Drag-and-Drop File Opening

  • Drag any text or markdown file from Windows File Explorer directly into the Cathet window to immediately open and edit it.
  • Frosted Glass Drop Overlay: Features a sleek, hardware-accelerated translucent drop indicator (backdrop-filter: blur(24px)) with subtle animations dynamically adapted to both dark and light modes.

🔗 Windows File Association & CLI Launch Support

  • Default App Integration: Double-clicking files associated with Cathet (e.g. .txt, .md, .log) or using "Open with → Cathet" now instantly opens and loads the document content.
  • Multi-File Spawning: Opening multiple files at once automatically launches clean companion instances so each document receives its own dedicated window.
  • Terminal & Shortcut Arguments: Cathet now fully respects command-line arguments (e.g. cathet.exe .\notes.md), normalizing paths, spaces, and Windows verbatim prefixes.

📦 Streamlined Architecture-Specific Releases

  • The build pipeline (build.ps1) has been refactored to compile strictly versioned architecture binaries:
    • release/cathet-v3.1.0-x64.exe (~3.7 MB for Windows x64)
    • release/cathet-v3.1.0-arm64.exe (~3.5 MB for Windows on ARM64)
  • Eliminated redundant unversioned alias duplicates (cathet.exe, cathet-x64.exe, cathet-arm64.exe), keeping release assets clean, lightweight, and unambiguous.

🛠️ Architecture & Under the Hood

  • Strict Modularity: All changes adhere to Cathet's anti-monolith invariant (< 250 lines per file), decoupling drag-and-drop into dragDropService.ts and DropOverlay.ts.
  • Zero Bloat: Compiled with opt-level = "z", stripped symbols, and native Windows Schannel TLS.

📥 Download Assets

Architecture Binary Checksum
Windows x64 cathet-v3.1.0-x64.exe Self-contained portable executable
Windows ARM64 cathet-v3.1.0-arm64.exe Native ARM64 portable executable

No installer needed — download, place anywhere, and run!

Cathet v3.0

Choose a tag to compare

@Crlyzd Crlyzd released this 02 Sep 19:54

Cathet v3.0.0 — The CleanPad Evolution

Release Tag: v3.0.0
Previous Version: v2.0 (CleanPad v2)
Target Platforms: Windows 10 (1903+) & Windows 11 (x64 and ARM64)

Welcome to Cathet v3.0.0! This milestone release represents a complete ground-up rewrite and reimagining of the original CleanPad text editor. Rebuilt using Rust and Tauri v2, Cathet delivers a modern, crystal-clear frosted glass writing experience with native ARM64 support, rich Markdown formatting, a dedicated Settings window, and a built-in auto-updater—all inside a single portable binary under 4 MB.


🌟 What's New Since v2.0

🦀 1. Re-Architected from C++ to Rust + Tauri v2

  • Zero Legacy Bloat: Replaced the monolithic Win32 C++ codebase (Cleanpad.cpp, GDI rendering) with a modular, memory-safe Rust backend and a lightweight TypeScript frontend.
  • Microscopic Resource Footprint: Idle memory usage reduced to ~15 MB RAM, with instant startup and zero background service overhead.
  • 100% Portable: Just a single standalone .exe. No installer, no MSI, no setup wizards, and no leftover registry entries.

⚡ 2. Native Multi-Architecture Support (x64 & ARM64)

  • First-Class ARM64 Support: Native compilation for aarch64-pc-windows-msvc, delivering maximum battery life and performance on Qualcomm Snapdragon X Elite and Microsoft Surface Copilot+ laptops.
  • Windows x64 Native: Optimized 64-bit compilation for standard Intel and AMD systems.
  • Tiny Binary Footprints:
    • cathet-v3.0.0-arm64.exe: 3.49 MB
    • cathet-v3.0.0-x64.exe: 3.72 MB

🪟 3. Modern Windows 11 Acrylic Frosted Glass

  • Hardware-Accelerated DWM System Backdrop: Replaced problematic legacy SetWindowCompositionAttribute (which suffered from window drag lag and black frame artifacts) with official Windows 11 DWM APIs (DWMWA_SYSTEMBACKDROP_TYPE = DWMSBT_TRANSIENTWINDOW).
  • Smooth, Tear-Free Window Movement: Full-speed window dragging via native Tauri drag regions without raster flicker.
  • Energy-Saving Inactive State: While active, enjoy vibrant translucent acrylic; when unfocused, Windows DWM automatically transitions to an energy-saving solid dark/light backdrop to conserve GPU fill-rate and battery.

📝 4. Instant Markdown Toggle (Ctrl + M)

  • Dual-Mode Editor: Seamlessly switch back and forth between raw text editing and formatted rich Markdown with a single keystroke (Ctrl + M).
  • Rich Element Support: Full rendering for headings, bold, italics, blockquotes, code blocks, task lists, tables, and TSV conversion.
  • Lossless Editing: Switching preview modes never modifies or corrupts your raw text formatting.

⚙️ 5. Dedicated Frosted Settings & Personalization Window

  • Multi-Tab Preferences: Press Ctrl + , or click the ● menu button to open a dedicated native Settings window (settings.html).
  • Frosted Dropdowns: Custom glassmorphism select dropdowns (backdrop-filter: blur(28px)) matching Windows 11 aesthetics—no more ugly, opaque OS <select> rectangles.
  • Curated Typography: Instant font switching between Inter, Cascadia Code, JetBrains Mono, Fira Code, Roboto, Noto Sans, Segoe UI, Consolas, and Arial.
  • Dark & Light Themes: Real-time theme synchronization across both main and settings windows.

🔄 6. Built-In In-Place Auto-Updater

  • Direct GitHub Release Checks: Automatically checks for new versions via the GitHub API.
  • Architecture-Aware: Automatically fetches the correct binary for your system (x64 vs ARM64).
  • Shortcut Preservation: Downloads updates into temporary staging, executes --replace-old, and seamlessly replaces the running executable without breaking existing Taskbar, Start Menu, or desktop shortcuts.
  • Subtle Update Glow: When an update is ready, the top-left dot button (●) emits a gentle blue pulse indicator.

🖱️ 7. Fluent Context Menu & Enhanced Productivity

  • Custom Right-Click Menu: Frosted glass context menu with Cut, Copy, Paste, Select All, Word Wrap toggle, Markdown toggle, and Always on Top.
  • Quick Web Search (Ctrl + E): Highlight any text and press Ctrl + E to look it up on Google instantly.
  • Always on Top (Ctrl + T): Float your notes above browsers, video calls, or code editors.
  • Smart Zoom (Ctrl + Mouse Scroll): Smoothly scale text font sizes on the fly.
  • Drag & Drop: Drop any .txt or .md file directly into Cathet to load it instantly.

🛠️ 8. Unified Build & Dev CLI (build.ps1)

  • Replaced fragmented batch/PowerShell scripts with an all-in-one interactive build automation pipeline:
    • .\build.ps1 -Live: Hot-reload development server.
    • .\build.ps1 -BuildX64: Optimized x64 production build.
    • .\build.ps1 -BuildArm64: Optimized ARM64 production build.
    • .\build.ps1 -All: Compile all target release binaries into release/.
    • .\build.ps1 -Check: Automated Vite + Cargo verification checks.

⚠️ Breaking Changes & Migration from v2.0

  1. Project Name:
    • The project has been renamed from CleanPad to Cathet.
    • Release executable names are now cathet.exe / cathet-x64.exe / cathet-arm64.exe.
  2. Top-Bar Menu Layout:
    • The legacy Win32 system menu has been replaced with a minimalist top-left single dot button (●), followed by the active document's file name.
  3. Settings Storage:
    • Preferences (selected font, dark/light theme, word wrap) are now persisted via modern browser localStorage and Tauri state rather than legacy registry or local .ini files.

📦 Downloads & Verification

Asset Target Architecture Typical Size
cathet-v3.0.0-x64.exe Windows 64-bit (Intel / AMD) ~3.72 MB
cathet-v3.0.0-arm64.exe Windows ARM64 (Surface Copilot+ / Snapdragon X) ~3.49 MB