livemd_flutter 0.3.0
livemd_flutter: ^0.3.0 copied to clipboard
A lossless continuous Markdown Live Preview editor for Flutter.
0.3.0 #
- Render complete
syntax as an inline picture with a broken-image fallback, while arrow-key traversal into the image range still reveals the exact source. - Resolve image destinations through an injectable
LiveMarkdownImageResolverthat mapsasset:paths to the application bundle instead of the network. - Disable the editable text forced strut so rendered Markdown owns its line heights, and reserve the exact image row height: heading lines, block rows, and inline placeholders no longer overflow or overlap their neighbors.
- Keep hidden marker runs height-tight so revealing inline syntax keeps the following content vertically stable.
- Report picture clicks through
onImageTapand snap stray pointer carets out of image source ranges, so clicks near a rendered row never reveal source that the caret was not meant to enter. - Render
as a video slot when the destination is a video file, with an injectableLiveMarkdownVideoBuilderfor real playback, anonVideoTappointer action, and source reveal on caret traversal. - Render
as an audio slot when the destination is an audio file, with an injectableLiveMarkdownAudioBuilderfor real playback, anonAudioTappointer action, and source reveal on caret traversal. - Size the caret to the natural glyph height (ascent plus descent) instead of the whole leading-inflated line, so it covers lowercase descenders without poking into the neighbors.
- Make the whole task marker one opaque hit target so clicking anywhere on it toggles the task instead of placing the caret inside the marker.
0.2.0 #
- Replace the per-block preview/TextField switcher with one continuous native editing surface and a source-range projection layer.
- Store the complete
TextEditingValue, including global selection and IME composing state, inLiveMarkdownController. - Add a lossless positioned syntax tree with nested inline nodes, complex link destinations, Wiki aliases, escaping, and literal incomplete states.
- Make rendered links and task checkboxes pointer actions while arrow-key traversal into the same ranges reveals their Markdown source.
- Keep rapid task-checkbox clicks inside a full-line hit target and derive each toggle from the latest source state, preventing accidental source reveal.
- Add Obsidian-style list, task, ordered-list, and quote Enter/Shift+Enter, Backspace, Tab, Shift+Tab, and ordered renumbering commands.
- Keep code fences, Callouts, GFM tables, and thematic breaks rendered until the caret enters their source range.
- Add global selection, IME, interaction, structural editing, nested syntax, and vertical-stability regression tests.
- Record an Obsidian 1.13.7 behavior oracle and expand the macOS example.
0.1.0 #
- Add lossless Markdown block parsing.
- Add live preview editor and document controller.
- Reveal source markers only for the inline token containing the caret.
- Keep font size, weight, and line height stable when source markers appear.
- Keep blank-line insertion focused after Return and support Backspace joins.
- Map preview taps to source offsets instead of always jumping to block end.
- Add arrow-key navigation between semantic blocks.
- Keep task and bullet markers visual while their source stays lossless.
- Keep single-line headings, paragraphs, and list items at a fixed vertical position while source markers expand.
- Add undo/redo, theming hooks, tests, and a macOS/web example.