What is this
An append-only line log (ALOG) editor. The file itself is the complete operation history: there are only two kinds of commands — add (a plain text line, written as-is) and move (:start,endmtarget). Because the file is append-only, reading it reveals every change ever made to the document. This app has zero dependencies: open it in a browser to read and write local .alog files.
Interface
- Left pane · History: lists all operations by number (consecutive adds are merged into one item), with exactly one item always selected. Click an item and the right pane shows the file content after that operation (inclusive), highlighting the lines it touched (add = green, move = yellow); clicking the already-selected item again jumps back to the last operation (the current result). When a file is opened, the last operation is selected by default.
- Right pane · Current Document / History view: shows the current document when the last operation is selected, otherwise the document as of that point in history. Line numbers are always shown. The header shows the point in time and the file the highlighted content belongs to; the deletion zone is grayed out; separator lines are shown in blue. The ✎ quick-edit buttons and the bottom "Move" row appear only in the current document view (line numbers are only meaningful for the current document).
Operations
- Add: use the first input row at the bottom — press Enter or click "Add" to append one line. The "Multi-line…" button opens a dialog for pasting multiple lines (blank lines are preserved).
- Move: use the second row at the bottom — fill in the three line numbers: start / end / target. target < start → inserted after the target line; target > end → the block's last line lands on the target line. Line numbers refer to what the right pane currently shows.
- Quick edit (✎): edits a line's content. On confirm, the new content takes the line's place as a newly added line, while the old content moves to the top of the document (the deletion zone) — the full history stays inspectable.
- Save: writes back to the source file (you choose the location the first time).
- Export Result: exports by file segment to the same directory as the source file (overwrites; the deletion zone is not exported).
- Export History: exports the history version after the currently selected operation (inclusive) — recover the result at any point in time.
- Open: if you opened a file before, the app first asks whether to open that last one (the browser remembers the file handle locally); choose "Cancel" to pick a different file.
File segments (multi-file)
Add a separator line to the file, ======== file name ======== (8 equals signs on each side). Everything above the separator belongs to that file; the tail after the last separator belongs to the main file (the source file name without .alog). The file name may contain / to create subdirectories (e.g. ======== css/style.css ========). Exporting writes out all files at once.
Deletion zone
The first ======== above is deleted ======== line and everything above it form the deletion zone: kept in the history, but not exported. A new document starts with this line as its first line; old content from quick edits moves to the top and automatically enters the deletion zone.
Format notes
- Blank lines are legal content lines; a line starting with
: is a command. If your text needs to start with a colon, a space is automatically prepended.
- All line numbers are 1-based and refer to the document state at the moment the command executes.
- The companion script
aline.js (library + CLI) can batch-process this format: node aline.js help.