-
Notifications
You must be signed in to change notification settings - Fork 0
Contributing Guidelines
Roubs edited this page Sep 17, 2026
·
1 revision
Thank you for your interest in contributing to Tuim! We welcome bug fixes, documentation improvements, performance optimizations, and feature proposals.
-
Fork and Clone:
git clone https://github.com/<your-username>/tuim.git cd tuim
-
Branch from
dev: Thedevbranch is the active integration branch.maintracks tagged stable releases.git checkout dev git checkout -b feat/your-feature-name
-
Build and Test Locally:
Ensure you have Zig 0.16.0 and Neovim 0.12.0+ installed:
zig build zig build test python3 tests/pty_integration.py
-
Formatting: Always format Zig code with the compiler:
zig fmt build.zig src/
- Memory Ownership: Explicit allocators only. Ensure every allocated buffer has an unambiguous owner and is freed upon destruction. Avoid global mutable state.
-
Error Handling: Use Zig's error unions (
!void,try,catch). Do not use@panic()in non-test production code paths. - Bounded Operations: Background tasks must use generational cancellation and bound their execution time.
- Keep
tuim_init.luaandterminal_init.luaclean, isolated, and fast. - Never pollute global Neovim namespaces or write escape sequences directly to stdout (Neovim's stdout is Tuim's RPC channel).
- Run
shellcheckon all modified.shfiles. - Scripts must support standard POSIX or explicit
bashsemantics and handle spaces in paths properly.
Before submitting a Pull Request, ensure:
-
zig fmt --check build.zig src/main.zig src/nvim/ui_protocol.zig src/tui/renderer.zigpasses without changes. -
zig build testpasses with 0 errors. -
python3 tests/pty_integration.pycompletes cleanly. - Relevant shell scripts pass
shellcheck. - Commit messages clearly describe the problem and solution.
- Platform claims are verified with actual observed runs (see Terminal Compatibility Matrix).
Explore the full keybindings summary in Keybindings Cheat Sheet.
Tuim Repository ยท Releases ยท Issue Tracker ยท Website ยท Licensed under MIT
- Workspace Overview
- Editing Modes
- Keybindings & Shortcuts
- File & Buffer Management
- Integrated Terminal
- Git Integration
- Extensions & Plugins
- Language Tools & LSP
- AI Coding Assistants