_parseDeltaElement's fallback branch called child.text on any
non-Element DOM node, including dom.Comment (whose .text getter
aliases its raw data). This let real HTML comments -- e.g. the
internal tracking marker Google's AI Overview panel injects when
you copy its answer text -- surface as visible garbage in the
editor. Skip non-Text nodes here, matching the dom.Text check
_parseElement already does one level up.
* 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: skip slicing the next inserted text if the previous text has been formatted
* test: skip slicing attribute test
* feat: reset slice flag when updating selection
* feat: support auto complete for text block
* feat: support auto complete for text block
* test: add auto complete test
* feat: support tab to auto complete
* chore: optimize the code
* chore: update token