Fray

Changelog

What's new in Fray.

Library performance overhaul and Eagle import

What’s new

  • Eagle library import directly from the tray menu
  • Shift focus mode — spotlights the selected grid card
  • Universal thumbnail pipeline with a bundled jpegtran lossless pass
  • “Regenerate Thumbnails” action under Debug → Performance
  • Virtualized grid rows for libraries of 6,000+ notes

Improvements

  • Smarter image loading — viewport first, idle prefetch, hysteresis on unload
  • Scroll smoothness: rAF throttling, lazy decoding, paused glass capture
  • Optimistic space switching with tray reuse and micro-fade
  • Eagle import preserves tags through the registry
  • Image color toggle and image-unloading switch in the debug menu
  • Dock bounce indicator during cold-start warmup

Fixes

  • 6K-note libraries no longer storm the renderer (sort-cascade jank, reflow loops)
  • Cold-start flash on the drawer eliminated; warmup window suppresses sync echoes
  • Search “Enter” regression resolved
  • bug-report.html restored in production bundles
  • Eagle import writes a proper metadata.json so duplicates no longer create ghost notes
  • GIFs animate again; animation hover stutter gone
  • masonryItems recompute reduced from 3.3s to ~73ms
  • Limited backdrop color rects to viewport rows only

Editor hardening and overlay polish

What’s new

  • doctor purge, doctor clear-cache, and doctor clean CLI commands
  • Bug-report window aligned with the onboarding cinematic card style
  • Hardened editor selection with stable atom identity and transactional updates

Improvements

  • Vertical navigation respects empty paragraphs
  • Media viewer with zoom, pan, and arrow navigation
  • Search supports AND across tags; smoother grid scroll
  • Glass freezes during overlay open for a steadier reveal
  • Skip redundant entity fetch on cache hit; batch entity refreshes
  • Search ESC clears tags first; #tag shortcut

Fixes

  • Overlay close flash and pre-reveal glitches eliminated
  • ESC and back navigation preserved across overlays and views
  • Pinned-note swiping stays inside the same floating window
  • Mention and atom focus, caret rendering, and bookmark navigation stabilized
  • Bug-report window full-document scroll, drag region, horizontal overflow
  • Drawer remount on overlay open/close removed
  • Vertical navigation boundary logic and teleportation fix

Atomic elements, note references, and Fray CLI

What’s new

  • Note references with [[ trigger — picker, pill, click-to-navigate
  • Media summoning with ![[ trigger and inline video rendering
  • Media gallery grid with multi-select, right-click menu, and select+delete
  • Fray CLI v0.1 / v0.2 — headless CRUD for notes, spaces, and tasks, plus doctor and agent skill packaging
  • Standalone bug-report window with cross-process replay sync
  • Glass dim layer system (--glass-dim CSS variable)
  • Media optimization pipeline — WebP conversion on import with a keep-originals setting

Improvements

  • ZWS-free pills with arrow skip, two-step backspace, and full selection
  • Mention dropdown captures focus, stays open during typing, scrolls to highlight
  • Note-ref pill restyle (icon, padding, selected state)
  • Larger media thumbnails in dropdowns, 2-line rows, viewport-aware positioning

Fixes

  • Floating-note redirect race and route mismatches resolved
  • Atomic-element focus retention; protocol-handler URI encoding
  • Auto-update applies cleanly with a Restart Now option and stale-cache cleanup
  • Concurrent auto-update dialogs no longer freeze the app
  • Mention dropdown lists the full note set (8-item cap removed)
  • Markdown link corruption from protocol parsing fixed
  • Pills no longer steal focus on creation

Drag-and-drop, performance, and onboarding polish

What’s new

  • Native file drag from Fray to external apps (Figma, Finder, …)
  • Browser image drag-and-drop into the drawer
  • Sync foundations — write-path audit and harness scaffold

Improvements

  • Cross-window typing latency reduced (debounce 150ms, throttle 50ms)
  • Drawer reveal: viewport-limited stagger, ping-pong animation, transform/opacity shell
  • Drawer follows the active display and fills its width on open
  • Tray widths use percentages, with auto-migration from pixel values
  • Keyboard-nav guard for empty trays
  • Skip re-sort on transient cross-window updates

Fixes

  • CMD+N opens a contextual overlay inside the drawer instead of a floating window
  • Onboarding shortcut tightened — shake on wrong combo, accept drawer-opened as truth
  • Drag-drop overlay ignores internal task drags
  • First-run drawer lag during onboarding removed
  • Drawer auto-hide on first open (re-focus after show)
  • Native drag fallback icon and file:// URI hardened

Cinematic onboarding and editor performance

What’s new

  • Cinematic onboarding — Three.js particles, staggered reveal, invite-code UI
  • Task meta-toggle (check all / uncheck all) with completion counter
  • CMD+Enter to toggle a task
  • Drawer keyboard navigation (tray selection, content nav, lens tabs)
  • Search results split into tabs (Medias) with keyboard navigation
  • Context-reactive bottom bar with bounce animations
  • Add-note button per space; “Check for Update” tray entry with download ETA
  • Tag selector keyboard navigation and AND-mode suggestion
  • Custom library folder icon, calendar 30-min grid, today-lens overdue group

Improvements

  • Editor caret auto-scroll; search empty-state polish
  • Task overlay revamped as a modal card with floating metadata tabs
  • Cross-window navigation, focus persistence, icon unification
  • Adaptive backoff for library background polling
  • Editor serialization debounced to 300ms idle
  • Single-note re-index replaces full library fetch on each operation
  • Drawer card stagger on re-open; bottom bar delayed fade

Fixes

  • Sanitizer collapses blank lines between any list items
  • CMD+ESC back-navigation matches the back button (path-based)
  • Bookmark note.content populated with description from local API
  • Floating-note polish: editor feather, topbar alignment, library overlay
  • Auto-update tray state machine corrected

Onboarding fix and icon system refresh

What’s new

  • Shared icons.css and a two-level button structure
  • Scroll-aware feathers; hover-revealed topbar; task row UX polish

Improvements

  • Updated app icon
  • highlight.js installed (preparing for code-block rendering)

Fixes

  • Onboarding window now loads (protocol-handler hash stripping and URL fix)
  • Tray names are preserved when editing an existing space

Task lens, calendar drag-drop, and tray persistence

What’s new

  • Task lens for focused review
  • Calendar drag-and-drop for tasks
  • Tray persistence across sessions
  • WYSIWYG editor hardening

Improvements

  • Post-merge polish across glass, drag-drop, calendar, and the floating window

Fixes

  • Missing highlight.js dependency added (unblocks code-block rendering)

Glass material on note overlays

What’s new

  • Glass material applied to the note overlay
  • Reveal animation when an overlay opens
  • Debug toggle to disable the effect

Density toggle for the floating note list

What’s new

  • Compact / spacious density toggle in the floating note list

Auto-update install reliability

Fixes

  • Auto-update install now completes (Apple Development signing, non-blocking dialog)
  • yml download URL prefixed with download/:version/
  • Auto-updater tray status resets on error, with verbose lifecycle logging

Alpha onboarding and update service

What’s new

  • Alpha onboarding flow with invite-code redemption
  • Fray Update Service backend with electron-updater (auth headers, publish script)
  • DateSwitch in the tray top bar; calendar tabs moved into TrayTopBar
  • DockTray with sort, layout, and type menus, plus a reusable MenuItem component
  • TrayTopBar and TrayBottomBar components, persistent tray names
  • ANY/AND tag matching mode and auto-replace arrows in the editor
  • Arch-specific update delivery — separate arm64 and x64 ymls

Improvements

  • TagSelector footer rework — clear in dropdown, Any/And match mode
  • Bug-report payload forwards reportType, sourceContext, and uiSnapshot to n8n
  • Tag visibility across trays, match-mode persistence, unsaved guard
  • Cleaner DockTray (sort and layout buttons folded into menus)

Fixes

  • Onboarding startup flow, debug reset, contract and docs
  • .npmrc force=true to avoid EBADPLATFORM on cross-arch installs
  • Publish script — zip target, bash in container, DB insert via temp file

Update download progress in the tray

What’s new

  • Live update download progress shown in the tray menu
  • Build scripts now chain publish steps automatically

Build pipeline reliability

Fixes

  • Ad-hoc signing and sharp cross-platform binaries; separate arch builds
  • .command launcher replaced with a proper .app bundle to bypass macOS quarantine

First numbered alpha — drawer, spaces, tasks, and telemetry

This is the first numbered alpha. It bundles the foundational work that shipped before the version sequence began.

What’s new

  • Drawer with redesigned header, tabs, grid and list modes, masonry layout, glass material
  • Space creator — filter-based trays, drag-drop grid, tag filters, floating FAB, chrono grouping
  • Polymorphic Note Overlay — sub-components, full-screen dark glassmorphism, image sidebar
  • Floating note window — search, hover states, tabs, formatting footer, empty states
  • Task system v2 — TaskEntityPanel, P1–P4 priority, subtask tree, drag-drop reorder, sort and filter
  • Telemetry phases 1–3 — diagnostic packages, session recording with privacy masking, Bug Report UI
  • Calendar Tray with global time projection and DLS alignment
  • Hybrid content indexing v2; Virtual Graph and Fragment Architecture
  • Local HTTP API server for the Chrome extension bookmark sync
  • Eagle library import script; tag inheritance for fragments
  • Glass engine with micro-capture blur across DLS components
  • 102 Figma icons via a CSS mask system
  • Block reordering (Cmd+Shift+Arrows) and editor block highlighting
  • Cmd+Option+Arrows to switch drawer spaces
  • Live bidirectional sync with tiered polling and fingerprinting
  • Native library naming via the macOS Save dialog
  • Library presence watcher to auto-trigger onboarding when the library is missing

Improvements

  • Editor typography — Neue Haas Unica Light, Figma-matched scales
  • Drawer vibrancy, transparency, and layout polish; persistent drawer height
  • Native dark vibrancy on the note panel; unified macOS styling across windows
  • Tray management with filter editing and ghost-duplication highlighting
  • NoteFooter and ContextualMenu component extraction

Fixes

  • Production build crashes resolved; SQLite I/O resilient on iCloud-synced libraries
  • Self-healing SQLite initialization for malformed cache recovery
  • Library hot-swap and revival after wipe
  • Cmd+P and Cmd+T shortcut restoration; attachment protocol for filename-only paths
  • Drawer state-management duplication resolved via single-path broadcast mutation
  • Cursor jump during high-speed typing sync

Dual-arch builds and calendar tray toggle

What’s new

  • Calendar view toggle in the tray management menu
  • Dev/production build strategy with debug stripping and a quarantine-bypass launcher

Fixes

  • Launcher resilience improvements
  • Both arm64 and x64 builds produced from the same pipeline