Skip to content

Fix AppImage emoji freeze (#45), close prompt option (#40), list editing - #46

Merged
solancer merged 1 commit into
mainfrom
fix/issues-40-45
Nov 8, 2026
Merged

solancer merged 1 commit into
mainfrom
fix/issues-40-45

Conversation

@solancer

@solancer solancer commented Nov 8, 2026

Copy link
Copy Markdown
Owner

Fixes #45. Fixes #40.

AppImage freeze on some emoji (#45)

The AppImage's bundled WebKit (Skia built with assertions) aborts the web process when it paints a gradient COLRv1 emoji, such as U+1F50D with Fedora's Noto Color Emoji, so the window freezes. Inside the AppImage only, Sarala now writes a fontconfig config that hides colour fonts and allows back a bundled bitmap (CBDT) Noto Color Emoji, and points FONTCONFIG_FILE at it before any thread starts (src-tauri/src/appimage_fonts.rs). The font is fetched pinned and SHA-256 checked by scripts/fetch-emoji-font.sh and added only to the AppImage via src-tauri/tauri.appimage.conf.json; CI checks the AppImage contains it. Other packages use the system WebKit and are unchanged.

Verified with fontconfig against a real COLRv1 font: the COLRv1 font is hidden and U+1F50D resolves to the bundled font. Not yet run on Fedora.

Close prompt option and portable settings (#40)

  • Settings > Files > "When closing unsaved": "Close without saving?" (default, as before) or "Save changes?" with Save / Don't Save / Cancel, for tabs and windows.
  • A sarala-settings.json next to Sarala.exe, the .AppImage or Sarala.app makes settings read and write there. Settings saves are now atomic.

Editor fixes

  • Enter in a list item that has a heading or paragraph below its first line adds a line inside the item, instead of leaving that content under an empty item (rendered as a code block). Enter on an indented line stays in the item instead of splitting the list.
  • Rendered list numbers use the live view's geometry, so they no longer jump when a list is clicked into (checked pixel by pixel in system WebKit).
  • Right-click Copy, Cut and Copy as... act on the selection again; Copy as Markdown/HTML copy the selection.
  • Declining "Restore unsaved changes?" keeps the autosave instead of deleting it; the prompt runs once per session.
  • The status bar no longer grows when the caret position gets longer.

Tests: typecheck, lint, the full JS suite (new list Enter and autosave checks) and the new Rust tests pass.

AppImage (#45): the bundled WebKit's Skia aborts the web process on
gradient COLRv1 emoji (e.g. U+1F50D with Fedora's Noto), freezing the
window. Inside the AppImage only, hide colour fonts from fontconfig and
allow back a bundled bitmap (CBDT) Noto Color Emoji, fetched pinned and
checksummed in CI and added through tauri.appimage.conf.json.

Close prompt (#40): Settings > Files > "When closing unsaved" can ask
"Save changes?" (Save / Don't Save / Cancel) instead of "Close without
saving?". A sarala-settings.json next to the app makes settings portable.
Settings are now saved atomically.

Lists: Enter at the end of an item's first line, when the item has a
heading or paragraph below, adds a line inside the item instead of
leaving that content under an empty item as a code block. Enter on an
indented line stays in the item instead of splitting the list. Numbers
are drawn the same way rendered and live, so they no longer jump.

Context menu: Copy, Cut and Copy as... act on the selection again (the
menu taking focus cleared it, or ended the edit); Copy as Markdown/HTML
copy the selection, not the whole document.

Autosave: declining "Restore unsaved changes?" keeps the autosave
(offered again when the file is opened) instead of deleting it, and the
prompt runs once per session so reloads can't stack it.

Status bar: the format readout no longer wraps and grows the bar when
the caret position gets longer.
@solancer
solancer merged commit 141c5be into main Nov 8, 2026
1 check passed
@solancer
solancer deleted the fix/issues-40-45 branch November 8, 2026 18:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

appimage: fault in bundled Skia library where some characters freeze the application req - reverse exit message as a user option

1 participant