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
* fix: copy handler migrated to latest api
* flutter analyze
* code formatted
* fix: test added for copy handler
* more test added for copy handler
* fix:write test for copy handler
* text added for html to nodes
* fix: added more test for html encoder
* fix:removed unused imports
* fix: copyhandler collapse state test added
* added direct event handler in test
* flutter analyze
* revert changes in example.json
* refactor: refactor mobile toolbar
* feat: add text decoration icon in AFMobileIcons
* chore: update mobile parameter
* feat: add text decoration basic feature
* chore: replace text by AppFlowyEditorLocalizations
* feat: add code toolbar item
* chore: refactor code
- add hasMenu in MToolbarItem
- add const size
* feat: add line input menu
* chore: create toolbar items draft file
* refactor: textDecorationMToolbarItem refactor
* fix: add key to ensures MToolbarWidget is rebuilt whenever the selection changes
* feat: add link toolbar item and the way to close item menu
* chore: replace m by mobile
* chore:replace BuiltInAttributeKey by FlowyRichTextKeys
* chore: replace m by mobile
* refactor: refactor MobileToolbarWidget
* refactor: add MobileToolbarStyle to control all cosmetic parameters
* refactor: refactor MobileToolbarItemMenuBtn to stateless widget
* feat: add heading menu
* fix: fix open the wrong menu
* feat: add heading icon
* feat: add todo list and list toolbar item
* feat: add quote toolbar item
* fix: fix selection service error
* test: add mobile toolbar basic elements test
* test: add item menu button test and helper widgets
* test: add text decoration mobile toolbar item test
* test: add code mobile toolbar item test
* test: add heading mobile toolbar item test
* test: add list mobile toolbar item test
* chore: fix typo
* test: add quote mobile toolbar item test
* test: add todo list mobile toolbar item test
* test: add link mobile toolbar item test
* chore: update name and add Material widget
* fix: flutter analyze
* fix: flutter analyze in test mobile toolbar
* chore: dart format test code
* refactor: improve code
* fix: fix refactor error
* chore: move all the tests in mobile to test/mobile
* chore: move toolbar/items to toolbar/desktop/items
* chore: remove the mobileToolbarItemMenuStateKey
* chore: add some comments
* test: update testing
---------
Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
* change toolbar and added export so developer can modify according to its need
* revert some chages from examples
* html to document convertion added
* test added
* code formated
* node to html added image parameter
* toolbar color and elevation added in editor stylee
* code formated
* remove duplicated exports
* fix test improts and formating