Skip to content

Commit 951513e

Browse files
committed
Rename to vimux, update docs
1 parent eb65e88 commit 951513e

11 files changed

Lines changed: 368 additions & 182 deletions

File tree

.github/workflows/docker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ on:
1010

1111
env:
1212
REGISTRY: ghcr.io
13-
IMAGE_NAME: ${{ github.repository }}/terminal-sandbox
13+
IMAGE_NAME: devatnull/vimux/terminal-sandbox
1414

1515
jobs:
1616
build:

CONTRIBUTING.md

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
# Contributing to Vimux
2+
3+
Thanks for your interest in contributing. This guide covers how to get started.
4+
5+
## Getting Started
6+
7+
1. Fork the repository
8+
2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/vimux.git`
9+
3. Install dependencies: `npm install`
10+
4. Create a branch: `git checkout -b feature/your-feature`
11+
5. Make your changes
12+
6. Run linting: `npm run lint`
13+
7. Run build: `npm run build`
14+
8. Commit and push
15+
9. Open a pull request
16+
17+
## Development Setup
18+
19+
### Frontend
20+
21+
```bash
22+
npm install
23+
npm run dev
24+
```
25+
26+
### Backend (optional, for terminal features)
27+
28+
```bash
29+
cd backend
30+
npm install
31+
docker build -t terminal-sandbox -f Dockerfile.sandbox .
32+
npm run dev
33+
```
34+
35+
## What to Contribute
36+
37+
### High Priority
38+
39+
- New lessons for tmux and neovim
40+
- Bug fixes
41+
- Documentation improvements
42+
- Accessibility improvements
43+
44+
### Lesson Ideas
45+
46+
- Vim macros
47+
- Tmux session management
48+
- Advanced text objects
49+
- Neovim LSP basics
50+
- Workflow tutorials (git + vim + tmux)
51+
52+
### Good First Issues
53+
54+
Look for issues labeled `good first issue` on GitHub.
55+
56+
## Code Guidelines
57+
58+
### TypeScript
59+
60+
- Use strict mode
61+
- Prefer `const` over `let`
62+
- Use explicit types for function parameters
63+
- Avoid `any` type
64+
65+
### React
66+
67+
- Functional components only
68+
- Use hooks for state and effects
69+
- Keep components focused and small
70+
- Co-locate related code
71+
72+
### Commits
73+
74+
- Use clear, descriptive commit messages
75+
- One logical change per commit
76+
- Reference issue numbers when applicable
77+
78+
### Pull Requests
79+
80+
- Keep PRs focused on a single change
81+
- Include a clear description
82+
- Update documentation if needed
83+
- Ensure all checks pass
84+
85+
## Adding Lessons
86+
87+
Lessons are defined in `src/lib/lessons.ts`.
88+
89+
```typescript
90+
{
91+
id: "unique-lesson-id",
92+
title: "Lesson Title",
93+
description: "What the user will learn",
94+
category: "tmux" | "neovim" | "workflow",
95+
difficulty: "beginner" | "intermediate" | "advanced",
96+
estimatedMinutes: 5,
97+
steps: [
98+
{
99+
id: "step-1",
100+
instruction: "Press j to move down",
101+
expectedKeys: ["j"],
102+
hint: "j moves the cursor down one line",
103+
successMessage: "You moved down",
104+
validation: {
105+
cursorLine: 1
106+
}
107+
}
108+
]
109+
}
110+
```
111+
112+
### Step Validation
113+
114+
Available validation options:
115+
116+
- `cursorLine` / `cursorCol`: Check cursor position
117+
- `mode`: Check vim mode (normal, insert, visual, command)
118+
- `bufferContains`: Check if buffer contains text
119+
- `paneCount`: Check number of tmux panes
120+
- `windowCount`: Check number of tmux windows
121+
- `custom`: Function for complex validation
122+
123+
## Adding Shortcuts
124+
125+
Shortcuts are defined in `src/lib/shortcuts.ts`.
126+
127+
```typescript
128+
{
129+
id: "unique-shortcut-id",
130+
keys: ["Ctrl", "b", "\""],
131+
description: "Split pane horizontally",
132+
category: "tmux",
133+
subcategory: "panes"
134+
}
135+
```
136+
137+
## Testing
138+
139+
```bash
140+
npm run lint # Check for linting errors
141+
npm run build # Ensure production build works
142+
```
143+
144+
## Questions
145+
146+
Open an issue on GitHub for questions or discussion.

0 commit comments

Comments
 (0)