Files
autodoc/README.md
T
Iisyourdad dca3e042f2
Template tests / tests (push) Successful in 1m48s
Cleanup
2026-06-11 09:44:52 -05:00

142 lines
7.2 KiB
Markdown

# StepForge
StepForge is a **fully offline**, open-source desktop app for Windows and
Linux that captures step-by-step workflows as screenshots, lets you annotate
and describe each step in a focused three-pane editor, and exports the result
to JSON, Markdown, HTML (simple and rich), PDF, animated GIF, image bundles,
DOCX, and PPTX.
It is an independent offline desktop guide-capture tool inspired by publicly
documented workflow patterns of commercial documentation tools. It contains no
third-party branding, assets, or code from those tools, and it never talks to
the network: no telemetry, no update checks, no license checks, no cloud, no
remote AI.
## Overview
The core workflow:
1. **Capture** — take full-screen, active-window, or region screenshots with
configurable delay, pause/resume, and global hotkeys; or import images and
paste from the clipboard.
2. **Annotate** — rectangles, ovals, lines, arrows, text, tooltips, numbered
markers, blur, highlight, magnify, and crop on a resolution-independent
annotation scene graph.
3. **Describe** — rich-text titles and descriptions, informational text
blocks, code blocks, tables, step links, and placeholders.
4. **Export** — every exporter renders from the same normalized Render AST,
so output is deterministic across formats.
```text
┌────────────────────────────────────────────────────────────────────────────┐
│ StepForge > Reset Password SOP [Capture] [Export] [Save] │
├──────────────────┬──────────────────────────────────┬──────────────────────┤
│ Steps │ Canvas │ Properties │
│ 1 Open Users │ ┌────────────────────────────┐ │ Title │
│ 2 Search account │ │ [tooltip] │ │ [Reset password] │
│ 3 Click Reset │ │ ↘ ┌────────────┐ │ │ Description │
│ 3.1 Warning │ │ │ Reset btn │ │ │ [rich text editor] │
│ 4 Done │ │ └────────────┘ │ │ Text blocks │
│ [Add Step] │ └────────────────────────────┘ │ Step settings │
├──────────────────┴──────────────────────────────────┴──────────────────────┤
│ Tools: [Select][Rect][Oval][Line][Arrow][Text][Tooltip][#][Blur][Hi][Crop] │
└────────────────────────────────────────────────────────────────────────────┘
```
## What's Included
- **Guide library** with folders, favorites, title search, full-text search,
duplicate/move/delete, and a quick-actions palette (`Ctrl+/`).
- **Capture engine** — the editor's **Capture ▾** button offers full screen,
active window, and region capture (the app hides itself during the shot),
plus continuous capture sessions that grab a step on every click where the
OS allows it, or on a 3/5/10 s auto-interval everywhere else (the REC bar
shows the live count with Shoot/Auto/Pause/Finish controls). Delay, global
hotkeys, click markers, clipboard paste, and PNG/JPEG/GIF import included.
The full keyboard shortcut list lives under **More ▾ → Keyboard
shortcuts** in the editor.
- **Three-pane editor** — step tree with substeps, statuses
(todo/in-progress/done), hidden/skipped steps, focused view (zoom/pan that
never mutates the original image), autosave, and command-stack undo/redo.
- **Annotation canvas** — normalized JSON scene graph with
resolution-independent coordinates; annotations render identically in the
editor and in every exporter.
- **Sharing & backups** — single-file `.sfgz` archives (zip-based, path-
traversal validated), linked guides with `.lock-sfgz` lock files and
explicit save, plus automated snapshot backups and restore.
- **Exports** — JSON, Markdown, Simple HTML, Rich HTML (checkboxes + floating
TOC), PDF, animated GIF, image bundle, DOCX, and PPTX, with per-format
export templates shareable as `.sfglt` files.
- **Settings & theming** — system/light/dark themes, capture options,
keyboard shortcuts, preview step count.
Everything except the Electron shell is dependency-free Node.js: the ZIP,
PNG, GIF, PDF, DOCX, and PPTX writers are all implemented in this repository
using only Node built-ins.
## Getting Started
For a shorter walkthrough, see [docs/GETTING_STARTED.md](docs/GETTING_STARTED.md).
Requirements: Node.js 20+ and npm (Electron is the only dependency).
```bash
npm install # one-time, fetches the Electron shell
npm start # launch StepForge
```
First run creates the local data directory (`~/.local/share/stepforge` on
Linux, `%APPDATA%/stepforge` on Windows; override with `STEPFORGE_DATA_DIR`).
## Testing
Please create your tests so that when the following is ran it automatically
tests your test.
```bash
bash tests/run_test.sh
```
The runner executes every `tests/checks/test_*.sh` script; those scripts run
the workflow test suites under `tests/unit/` with `node --test`. The tests
exercise real workflows — creating guides, round-tripping archives, exporting
documents, and validating the bytes of the output — not string matching.
## Building & Packaging
```bash
bash scripts/bootstrap-offline.sh # verify toolchain availability
bash scripts/verify.sh # full test suite + smoke checks
bash scripts/build-release.sh # assemble runnable app directory
bash scripts/package-linux.sh # portable tar.gz + .deb (+ AppDir spec)
npm run package:windows # portable Windows .exe in releases/
pwsh scripts/package-windows.ps1 # same Windows portable build via PowerShell
```
See [build/build_report.md](build/build_report.md) for what was produced on
this machine and which packaging tools were unavailable.
## Offline Guarantee
The shipping app makes **zero network calls**. There is no telemetry, no
update check, no license validation, no cloud sync, no account system, and no
remote AI. Exports embed no remote fonts or CDN references. See
[docs/SECURITY.md](docs/SECURITY.md) for the threat model.
## Contributing
See [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) for the full contribution flow,
including the issue-number requirement for every pull request and the
clean-room rules.
## Repository Layout
Project docs live in `docs/`, and prompt handoffs live in `ai_prompts/`.
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the repo layout.
## License
Application code is licensed under [MPL-2.0](LICENSE). Bundled example
guides, templates, and screenshots are CC-BY-4.0 unless noted otherwise.