VS Code extension for Neo N3 development. A webview UI (src/renderer, React)
talks to the extension host (src/host) over postMessage. Shared message
types are mirrored on both sides.
Every new user-facing feature MUST ship with its documentation. When you add one:
- Write
docs/<feature>.mdfollowing the style of existing docs (docs/test-invoke.md,docs/wallet.md): an# Title, a 1–2 line description, then a## Usagesection with concrete steps. - Reference it in
README.mdunder the## Featureslist, matching the existing pattern:- **[Feature](docs/feature.md)**. - Only document enabled features. If a tool/action is still
enabled: falsein the UI (e.g. an entry inHome.tsxTOOLSor aWalletHub.tsxACTIONS), do NOT add its doc yet. When it's flipped toenabled: true, add the doc and the README line in the same change.
Keep docs in the same voice as the existing ones: short, task-focused, no filler.
- One folder per domain (
contract/,rpc/,wallet/, …). - Inside each folder: a PascalCase class file holding only the class
(
Contract.ts), and atypes.tsholding that domain's interfaces and type aliases. The class file imports its types from./types. - Each domain class exposes a single
handle(message)dispatcher as its public entry point. - Implementation constants and data (e.g.
WALLET_SECRET_KEY,NATIVE_TOKENS) stay in the class file —types.tsis for types only. - No comments in host class files; keep the code self-explanatory.
Host and renderer keep their own copies of the message/response types
(src/host/<domain>/types.ts and src/renderer/messages.ts). When you change a
message shape on one side, update the other to match.
Type-check after changes:
npx tsc --noEmit -p .