Skip to content

Idempotent keystroke recovery through Echo WAL #86

Description

@flyingrobots

Summary

Explore crash-proof editing sessions where significant keystrokes, commands, or macro executions become deterministic Echo intents and can be recovered from WAL posture after restart.

Assessment

This is an excellent north-star UX, but the granularity needs care. Every raw keystroke as an intent may be too expensive/noisy; command batches, insert spans, macro invocations, and save checkpoints are more likely to be the right first proof. The idea is still structurally right: the editor should recover from Echo causal evidence, not volatile app undo state.

Proposed Experience

  • User edits normally.
  • Jedit batches meaningful editing actions into deterministic intents with stable ids.
  • If the terminal or process crashes, restart recovers the pending/session history from Echo WAL evidence.
  • The user can jump to exact ticks or replay command batches from the session.

Design Constraints

  • Need a batching policy so intent history remains useful and performant.
  • Recovery must distinguish admitted edits, pending submissions, rejected edits, and materialized saves.
  • Jedit should not keep a private causal fallback log.

Proof Sketch

  • Start an editing session and submit several command batches.
  • Simulate process crash before normal app shutdown.
  • Restart and recover from Echo evidence.
  • Assert buffer content, dirty state, and edit history posture match recovered causal history.

Activity

  1. coderabbitai commented on Jun 4, 2026

    @coderabbitai
    🔗 Related PRs

    #1 - Refine jedit pane shell [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cool-ideas™Speculative high-leverage ideas worth exploringenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions