Skip to content

v0.0.2

@jerihass jerihass tagged this 09 Nov 17:43
  - Added a first-class async effect system plus runtime plumbing: Effect builders (run, timer, fire) live in Sources/SwifTeaCore/Effect.swift:1-98, and the runtime now installs an action queue, effect runner, and scene hook via
    initializeEffects() with safe SwifTea.dispatch/cancelEffects APIs (Sources/SwifTeaCore/Runtime.swift:29-188). TerminalDimensions gained a lock-protected override stack so size overrides remain thread-safe during concurrent tests
    (Sources/SwifTeaCore/Terminal.swift:22-64).
  - Reworked the TaskRunner demo to rely entirely on effects: actions now cover toast ticks, per-step progress, and completion notifications (Sources/Examples/TaskRunner/TaskRunnerApp.swift:11-199), state exposes timer cadence and minimum
    run duration (Sources/Examples/TaskRunner/TaskRunnerState.swift:5-157), and the view model drives progress/finish reducers that enqueue toasts and clamp remaining times (Sources/Examples/TaskRunner/TaskRunnerViewModel.swift:31-115).
    Snapshot tests dispatch the new async actions instead of hand-ticking the reducer (Tests/SwifTeaTaskRunnerExampleTests/TaskRunnerSnapshotTests.swift:21-57).
  - Documented the new behavior in the README’s “Async Effects & Dispatch” section (README.md:63-68) and flipped the roadmap entry to “Implemented” with follow-up work noted (docs/TUIDesignRoadmap.md:20-27).
  - Hardened the test suite: added coverage for Effect.timer (Tests/SwifTeaCoreTests/EffectTests.swift:1-24), introduced a shared SnapshotSync.cursorBlinkerLock so notebook and text-field snapshots can force cursor visibility without
    trampling one another (Tests/TestSupport/CursorBlinkerTestLock.swift:1-9, Tests/SwifTeaNotebookExampleTests/NotebookTestHelpers.swift:8-25, Tests/SwifTeaUITests/TextFieldTests.swift:150-209).
Assets 2
Loading