Commit graph

3 commits

Author SHA1 Message Date
7655e0dc32 fix: use fullText setter — content from previous file no longer leaks
Stefan reported that opening a flow (hello) sometimes showed
content from a different flow (extract-with-approval). Cause:
flutter_code_editor's CodeController distinguishes between
`text` (the visible buffer, post-fold) and `fullText` (the
underlying source). Setting `_code.text = newFile` only
updates the visible buffer; the underlying `_code` data
structure retains the previous file's source, so subsequent
folding/scrolling can surface its content.

Switch all three load sites + the save site to the canonical
setter:

  Before  _code.text = text       (visible buffer only)
  After   _code.fullText = text   (replaces underlying source)

Save also moves to writing `_code.fullText` so any text the
operator collapsed behind a fold survives the round-trip.

Verified against flutter_code_editor 0.3.5 source — the
fullText setter calls `_updateCodeIfChanged` then re-emits
`TextEditingValue(text: _code.visibleText)`, which is the
documented "fully reset the editor" path.

Bump version 0.1.1 → 0.1.2. Studio's pubspec already pins
`ref: main` so the next `flutter pub upgrade` picks it up.

Signed-off-by: flemming-it <sf@flemming.it>
2026-05-30 16:07:44 +02:00
8b918f8f2a fix: dirty detection — compare fullText, snapshot after load
Stefan reported false-positive "Discard unsaved changes?"
dialogs when clicking around in the file list. Cause: the
naive `_code.text == _loadedText` check fired stale even
right after _code.text = text, because CodeController
silently rewrites the visible text during the assignment
(trailing-newline normalisation, fold marker insertion on
some YAML constructs, …) so _code.text deviated from the
just-stored _loadedText immediately.

Fix:
  * Drop `_loadedText` field, replace with `_baseline`.
  * Set `_code.text = ...` first (outside setState), then
    capture `_baseline = _code.fullText` inside setState.
    fullText is the canonical post-processed value, not the
    visible-after-folding text — comparing fullText against
    fullText eliminates the spurious diff.
  * _dirty getter now compares `_code.fullText != _baseline`.

Applied to all four load / save / new-flow sites.

Bump version 0.1.0 → 0.1.1. Studio's pubspec already pins
`ref: main` so the next `flutter pub get` picks the fix up.

Signed-off-by: flemming-it <sf@flemming.it>
2026-05-30 14:56:39 +02:00
F∆I Platform
51f9a1d2b1 feat: initial scaffold — swappable flow editor
Extracted from fai/studio's lib/pages/flow_editor.dart so the
editor can be swapped out independently of the host.

Public surface kept minimal — a single FlowEditorPage widget
with three named parameters (initialFlowName, locale, onRun).
The package brings its own design tokens, empty/error
widgets, l10n table; no host-internal types leak through.

Studio depends on this repo via pubspec.yaml git reference.
Forks point Studio at a different URL and rebuild.

See README.md for the swap recipe.

Signed-off-by: F∆I Platform <platform@flemming.ai>
2026-05-30 14:33:03 +02:00