Thanks for your interest! WebWordStar is a clean-room, browser-based reimplementation of WordStar with real-time collaborative editing. Contributions are welcome — bug reports, fixes, features, and documentation alike.
git clone https://github.com/DDecoene/WebWordStar.git
cd WebWordStar
nvm use # Node 22 (see .nvmrc)
npm install
npm run dev # Vite on http://localhost:5273 + WS server on :5274Open http://localhost:5273 — you'll be redirected to a fresh document. Visit
/demo for a seeded feature-showcase document.
npm test # Vitest unit + integration tests
npx playwright test # Playwright end-to-end browser testsBoth suites must pass before a PR can merge (CI enforces this).
mainholds only released, tagged code. Never targetmainwith feature PRs.release/vX.Y.Zis the integration branch for a milestone. All work scoped to that milestone lands here.feature/<name>branches off the openrelease/vX.Y.Zbranch and PRs back into it.hotfix/vX.Y.(Z+1)branches offmainfor urgent fixes.
So: base your PR on the current open release/vX.Y.Z branch, not main.
A PR is ready when:
- It's based on the correct release branch (see above).
npm testandnpx playwright testare green. Every user-facing command or feature ships with a Playwright e2e case in the same PR — unit coverage alone is not enough.CHANGELOG.mdhas an entry under the milestone's version heading.README.mdcommand tables and the feature list reflect what was built.- Screenshots in
docs/screenshots/are retaken if the UI changed.
WebWordStar is an independent, unaffiliated reimplementation of the WordStar interface for educational and preservation purposes (see the README's "Trademark & affiliation" section). To keep it legally clean, every contribution must follow these rules — they are hard requirements, and PRs that violate them will be declined:
- Never copy or closely paraphrase text from WordStar manuals, help screens, error messages, or any other original MicroPro/WordStar documentation. All UI text, help text, and error messages must be written independently, in your own words.
- Never use disassembled or decompiled WordStar binaries, or any original
source code, as an implementation reference. Acceptable sources are:
publicly documented behavior (keybindings, dot commands, file-format
descriptions), your own testing against
.wsfiles, and your own design decisions where the original behavior is ambiguous. If you don't know how a feature originally worked, say so in the issue or PR — don't fill the gap from anything resembling leaked or proprietary source. - Frame file-format work as interoperability engineering — reading and
writing
.wsfiles based on their observed structure — never as reproducing MicroPro's implementation. - Don't imply affiliation or endorsement. Nothing in code, docs, commit messages, or announcements may suggest the project is official, licensed, authorized by, or affiliated with any past or present WordStar trademark holder.
- Keep license notices intact. Source files under
server/andsrc/carry an SPDXAGPL-3.0-onlyheader — keep it when editing and add it to new source files. - If a feature can only be implemented correctly by consulting proprietary or leaked material, stop and open an issue to discuss it instead of proceeding.
Use GitHub issues. For bugs, include the steps to reproduce, what you expected, and what happened — a document URL pattern and the keystrokes involved help a lot for a keyboard-first editor.
By contributing you agree that your contributions are licensed under the AGPL-3.0-only license that covers the project.