Multi-step redo was broken because `getUndoHistoryItem()` cleared the
redo stack whenever the last undo item was sealed — even during redo
operations. After the first redo, the 50ms debounce timer would seal
the item, causing the next redo to wipe the remaining redo history.
Refactored the undo/redo system with:
- `TransactionSource` enum (userEdit, undo, redo, none) replacing
boolean flag combinations in ApplyOptions
- `UndoManager.record()` with symmetric paths for each source:
- userEdit: groups into unsealed items, clears redo on branch
- undo: pushes directly to redo stack
- redo: pushes directly to undo stack (sealed), no redo clear
- Deprecated `getUndoHistoryItem()` and legacy boolean flags
* chore: update Flutter SDK to version 3.38.5
Upgrade Flutter from 3.32.4 to 3.38.5 to meet awesome_lints
requirement for Dart SDK 3.10.0+. Update CI workflow to use
the new Flutter version and add custom_lint verification step.
* chore: integrate awesome_lints with custom lint rules
Add awesome_lints and custom_lint dependencies, configure
analysis_options.yaml to enable newline lint rules: newline_before_case,
newline_before_constructor, newline_before_method, and newline_before_return.
* style: apply newline formatting per awesome_lints rules
Add blank lines before case clauses, return statements, method
declarations, and constructors throughout the codebase to comply
with awesome_lints newline rules.
* fix: replace deprecated translate with leftTranslateByDouble
Update Matrix4.translate() calls to use the new leftTranslateByDouble()
API to resolve deprecation warnings in Flutter SDK 3.38.5.
* chore: improve code readability with blank line formatting
* feat: add command shortcut keys to convert text to title
* fix: use const values from heading block keys
* chore: add test cases for command
* fix: comments and nomenclature
* chore: add appropriate description
* fix: closing a ')' braket to create a link will erase a text following it to the end of a paragraph
* feat: move the cursor to the end of the doc if the cursor is in the last line
* fix: test
* fix: hide the toolbar when all selected content is empty
* test: hide the toolbar when all selected content is empty
* Revert "fix: ignore backspace on empty table cells to avoid editor crash (#964)"
This reverts commit 09f4b17e2e.
* add muliple list indentation at once
* feat: filter out the children node when executing indent command
* feat: keeping only immediate children nodes when executing outdent command
* feat: ignore outdent command if any of the selected nodes have path 1
* add test cases for indent and outdent commands
* fix: linting issues and removed dead code
* chore: remove unecessary comments in test file
---------
Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
currently only its possible to convert single line to bullet or
numbered list.
changed the active check function to also show list items in toolbar
when multiple text lines are selected.
* feat: support formatting greater hyphen to single arrow
* refactor: renamed test group description
* refactor: formatted code file using dart formatter
* refactor: removes GreaterHyphen shortcut event from standard shortcuts
* fix: enable formatGreaterHyphen shortcut in test mode
---------
Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
* feat: backslash to ignore shortcut event
* refactor: refactor format single char logic
* fix: avoid single char formating when in the double chars formatting situation
* fix: refactor the single char formating logic
* test: add test for back slash ignore shortcut cases
* test: add tests for ignoring space enabled shortcut events
* test: add test for checkbox shortcut ignore
* feat: table navigation using TAB key
* feat: shift+tab for reverse navigation in table
* chore: circular traversal for arrow left and right
* test: added tests for tab and shift-tab commands in Table
* test: added tests for arrow left and right in table
* test: added corner case for tab and shift tab
* refactor: made changes as per the review
* refactor: Apply suggestions from code review
Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
---------
Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
* feat: adjust toggle list block
* chore: refactor mobile toolbar and divider block
component
* chore: adjust indentation padding in block component
configuration and indent command test