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
* 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
* 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>
* 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
* refactor: separate remove line command
* test: delete sentence
* chore: export delete left line command
* refactor: move from internal_key_handler to new
* refactor: move from command to new
* feat: creating open links shortcut command
* test: open links command
* refactor: applying suggestion
* refactor: fetching all unique links by a chain function
* feat: add ctrl+home or end to scroll
* fix: home and end to move in line
* fix: typo redo
* test: home and end command
* fix: ctrl+arrow still works on windows and linux
* test: check behavior on windows nd linux