|
| 1 | +# Contributing to stacktale for VS Code |
| 2 | + |
| 3 | +Thanks for stopping by the campfire. 🔥 |
| 4 | + |
| 5 | +This is the VS Code / Cursor / Windsurf editor extension for |
| 6 | +[**stacktale**](https://github.com/stacktale/stacktale). The library lives in the main |
| 7 | +repo; this repo is just the extension that surfaces its `errors-ai.log` in the editor. |
| 8 | + |
| 9 | +New here? The [`good first issue`](https://github.com/stacktale/stacktale-vscode/labels/good%20first%20issue) |
| 10 | +label marks issues written to be picked up cold — each one names the files to touch and how |
| 11 | +to verify. |
| 12 | + |
| 13 | +## Claim the issue before you start |
| 14 | + |
| 15 | +**Comment on the issue saying you'd like to take it, and wait for a reply before writing |
| 16 | +code.** A short "I'd like to work on this" is enough — no need to restate the issue or |
| 17 | +explain your plan. This is the only thing standing between you and someone else spending an |
| 18 | +evening on the same fix, and it lets us tell you upfront if an issue is already half-done or |
| 19 | +narrower than it looks. If nobody replies in a day or two, open the PR anyway. |
| 20 | + |
| 21 | +Two exceptions, where you should just open the PR: an obvious typo or broken link, and |
| 22 | +anything already assigned to you. |
| 23 | + |
| 24 | +## Build & test |
| 25 | + |
| 26 | +```bash |
| 27 | +npm install |
| 28 | +npm run compile # tsc → out/ |
| 29 | +npm test # compile + run the parser tests (node --test) |
| 30 | +``` |
| 31 | + |
| 32 | +Press **F5** in VS Code to launch an Extension Development Host with the extension loaded. |
| 33 | +Open a project that has an `errors-ai.log` and the **stacktale** view appears in the |
| 34 | +activity bar. CI runs `compile` + `test` on every push. |
| 35 | + |
| 36 | +## Where the pieces live |
| 37 | + |
| 38 | +- **`src/stParser.ts`** — pure parser for the `errors-ai.log` (`st/1`) format. No VS Code |
| 39 | + API here, so it's unit-testable in plain Node. This mirrors the parser in the |
| 40 | + [JetBrains plugin](https://github.com/stacktale/stacktale-intellij); keep them in step. |
| 41 | +- **`src/extension.ts`** — the VS Code glue: the tree view, the file watcher, the commands. |
| 42 | +- **`src/test/parser.test.ts`** — `node:test` cases for the parser. |
| 43 | + |
| 44 | +## The report format is a public API |
| 45 | + |
| 46 | +The `errors-ai.log` format (`st/1`, and the opt-in `st-json/1`) is specified in the main |
| 47 | +repo's [docs/FORMAT.md](https://github.com/stacktale/stacktale/blob/main/docs/FORMAT.md). |
| 48 | +Parse defensively — a malformed or partially-written line must never crash the view — and |
| 49 | +when in doubt about a field, check FORMAT.md rather than guessing. |
| 50 | + |
| 51 | +## Working style |
| 52 | + |
| 53 | +- New parsing behavior arrives with the test that demanded it (`src/test/`). |
| 54 | +- Commits: conventional prefixes (`feat:`, `fix:`, `docs:`, `chore:`, `test:`), imperative |
| 55 | + mood, reference issues (`Closes #N`). |
| 56 | +- One logical change per PR; explain the *why*, link the issue. |
| 57 | + |
| 58 | +By taking part you agree to the main repo's |
| 59 | +[Code of Conduct](https://github.com/stacktale/stacktale/blob/main/CODE_OF_CONDUCT.md). |
0 commit comments