-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the CollabPad wiki!
Use these templates to create GitHub issues for CollabPad enhancements.
Title: [Feature] Add language/syntax highlighting selector
Labels: enhancement, high-priority, ui
Description:
Add a dropdown selector to switch between different programming languages for syntax highlighting.
- Add dropdown in header with language options
- Support languages: JavaScript, TypeScript, Python, HTML, CSS, Markdown, JSON, SQL, Java, C/C++, Go, Rust, PHP, Ruby
- Persist language choice per room (sync to all users)
- Update file extension for download feature
- Store language preference on server
- Dropdown should be styled to match dark/light theme
- Show current language icon/name
- Group languages by category (Web, Systems, Scripting, etc.)
- CodeMirror modes to load dynamically
- Emit
language-changeevent via Socket.IO - Server should store
room.languageproperty
- User can switch language and syntax updates immediately
- All users in room see the language change
- New users joining see correct language
Title: [Feature] Show remote user cursors with name labels
Labels: enhancement, high-priority, collaboration
Description:
Display other users' cursor positions in real-time with colored labels showing their names.
- Track cursor position for each user
- Render colored cursor line at position
- Show username label above cursor
- Animate cursor movements smoothly
- Handle cursor cleanup when user leaves
- Show selection ranges for remote users
- Cursor color matches user's avatar color
- Label appears on hover or always visible
- Fade out label after 3 seconds of inactivity
- Smooth animation for cursor movement
// Cursor data structure
{
oduserId: "socket-id",
name: "SwiftCoder42",
color: "#ff79c6",
cursor: { line: 10, ch: 5 },
selection: { anchor: {line: 10, ch: 0}, head: {line: 10, ch: 15} }
}- Can see all other users' cursors in real-time
- Cursors are correctly colored per user
- Labels show correct usernames
- Cursors disappear when users leave
Title: [Feature] Download code as file
Labels: enhancement, high-priority, export
Description:
Allow users to download the current editor content as a file with appropriate extension.
- Add "Download" button in header
- Auto-detect file extension from language mode
- Generate filename:
collabpad-{roomId}.{ext} - Support custom filename input (optional)
- Trigger browser download
| Language | Extension |
|---|---|
| JavaScript | .js |
| TypeScript | .ts |
| Python | .py |
| HTML | .html |
| CSS | .css |
| Markdown | .md |
| JSON | .json |
| SQL | .sql |
function downloadFile(content, filename) {
const blob = new Blob([content], { type: 'text/plain' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
a.click();
URL.revokeObjectURL(url);
}- Clicking download saves file to user's device
- File extension matches current language
- File content matches editor content exactly
Title: [Feature] Add password protection for rooms
Labels: enhancement, high-priority, security
Description:
Allow room creators to set a password that others must enter to join.
- Add "Set Password" option when creating room
- Show password modal when joining protected room
- Store hashed password on server
- Validate password before allowing join
- Show lock icon for protected rooms
- Allow room owner to change/remove password
- Password modal with input field and submit button
- Show error message for incorrect password
- Lock icon indicator in header for protected rooms
- Toast notification on successful unlock
// Server-side room structure
{
id: "room-abc123",
passwordHash: "bcrypt-hash", // null if not protected
owner: "socket-id",
content: "...",
users: Map
}- Use bcrypt for password hashing
- Rate limit password attempts (max 5 per minute)
- Clear password from memory after validation
- Room creator can set optional password
- Users must enter correct password to join
- Incorrect password shows error, doesn't allow entry
- Password can be changed by room owner
Title: [Feature] Execute JavaScript code with console output
Labels: enhancement, high-priority, interactive
Description:
Add ability to run JavaScript code and display console output in a panel.
- Add "Run" button (
▶️ ) in header - Create console output panel (collapsible)
- Capture console.log, warn, error, info
- Display output with syntax coloring
- Show execution errors with stack trace
- Add "Clear" button for console
- Keyboard shortcut: Ctrl/Cmd + Enter
- Console panel slides up from bottom (resizable)
- Color coding: log (white), warn (yellow), error (red)
- Timestamp for each output line
- Monospace font matching editor
// Safe code execution in iframe sandbox
const iframe = document.createElement('iframe');
iframe.sandbox = 'allow-scripts';
iframe.srcdoc = `
<script>
const _log = [];
console.log = (...args) => parent.postMessage({type:'log', args}, '*');
console.error = (...args) => parent.postMessage({type:'error', args}, '*');
try {
${userCode}
} catch(e) {
parent.postMessage({type:'error', args:[e.message]}, '*');
}
</script>
`;- Execute in sandboxed iframe
- Set execution timeout (5 seconds max)
- Prevent infinite loops with loop counter
- No access to parent DOM or cookies
- User can run JS code and see output
- Console shows logs, warnings, errors correctly
- Errors display with helpful messages
- Infinite loops are terminated with warning
Title: [Feature] Add real-time chat panel for collaboration
Labels: enhancement, medium-priority, collaboration
Description:
Side panel for team members to communicate while coding.
- Collapsible chat panel on right side
- Real-time message sync via Socket.IO
- Show sender name, avatar color, timestamp
- Message input with Enter to send
- Unread message indicator/badge
- Emoji picker (optional)
- Chat history persistence (last 100 messages)
- Panel width: 300px (resizable)
- Toggle button in header
- Messages grouped by sender
- Smooth slide-in/out animation
- Badge shows unread count when closed
{
oduserId: "socket-id",
name: "SwiftCoder42",
color: "#ff79c6",
message: "Hey, check line 42!",
timestamp: 1699999999999
}- Users can send and receive messages in real-time
- Messages show correct sender info
- Chat history preserved during session
- Unread indicator works when panel is closed
Title: [Feature] Support multiple files with tab interface
Labels: enhancement, medium-priority, files
Description:
Allow users to work on multiple files within the same room.
- Tab bar below header
- Add new file button (+)
- Rename file (double-click tab)
- Close file (x button on tab)
- Sync file changes across all users
- Each file has independent language mode
- Maximum 10 files per room
- Horizontal scrolling tab bar
- Active tab highlighted
- Unsaved indicator (dot) on tab
- Confirm dialog before closing
{
roomId: "room-abc123",
files: [
{ id: "file-1", name: "index.js", language: "javascript", content: "..." },
{ id: "file-2", name: "styles.css", language: "css", content: "..." }
],
activeFile: "file-1"
}- Users can create, rename, delete files
- Switching tabs shows correct content
- All users see file changes in real-time
- File state syncs for new users joining
Title: [Feature] Add find and replace functionality
Labels: enhancement, medium-priority, editor
Description:
Search and replace text within the editor.
- Open with Ctrl/Cmd + F
- Find input with match highlighting
- Replace input with replace/replace all buttons
- Match case toggle
- Regex toggle
- Match count display (e.g., "3 of 15")
- Navigate between matches (↑/↓ arrows)
- Floating panel at top-right of editor
- Highlight all matches in document
- Current match highlighted differently
- Close with Escape key
- Use CodeMirror's built-in search addon
codemirror/addon/search/search.jscodemirror/addon/search/searchcursor.js
- User can find text and see matches highlighted
- Can navigate between matches
- Replace single or all occurrences works
- Regex and case-sensitive options work
Title: [Feature] Add font size zoom controls
Labels: enhancement, medium-priority, accessibility
Description:
Allow users to increase/decrease editor font size.
- Zoom in button (+)
- Zoom out button (-)
- Reset button (or double-click)
- Font size range: 10px - 24px
- Persist preference in localStorage
- Keyboard shortcuts: Ctrl/Cmd + Plus/Minus
- Small button group in header
- Show current size on hover/tooltip
- Smooth font size transition
function setFontSize(size) {
document.querySelector('.CodeMirror').style.fontSize = size + 'px';
editor.refresh();
localStorage.setItem('collabpad-fontsize', size);
}- User can zoom in/out smoothly
- Font size preference persists across sessions
- Keyboard shortcuts work correctly
Title: [Feature] Add VS Code-style minimap
Labels: enhancement, medium-priority, editor
Description:
Show a zoomed-out overview of the code on the right side.
- Minimap panel on right side of editor
- Shows miniature version of all code
- Highlights visible viewport area
- Click to navigate to position
- Drag viewport indicator to scroll
- Toggle on/off in settings
- Width: 80-100px
- Slightly transparent
- Current view shown as highlighted region
- Smooth scroll animation on click
- Consider using
codemirror-minimappackage - Or custom canvas-based implementation
- Performance: throttle updates on large files
- Minimap shows accurate code representation
- Clicking minimap navigates to that position
- Viewport indicator shows current view
- Performance is smooth on large files
Title: [Feature] Add version history with restore capability
Labels: enhancement, medium-priority, history
Description:
Track document versions and allow restoring previous states.
- Auto-save versions every 5 minutes
- Save version on significant changes (100+ char diff)
- Version list panel/modal
- Preview version before restoring
- Restore button with confirmation
- Show diff between versions
- Keep last 20 versions per file
- History button in header (clock icon)
- Modal with version list
- Each entry shows: timestamp, author, preview
- Diff view with additions (green) and deletions (red)
{
roomId: "room-abc123",
versions: [
{
id: "v1",
timestamp: 1699999999999,
author: "SwiftCoder42",
content: "...",
changeCount: 47
}
]
}- Versions are auto-saved periodically
- User can view list of past versions
- Can preview and restore any version
- Restore syncs to all users
Title: [Feature] Add live Markdown preview panel
Labels: enhancement, medium-priority, markdown
Description:
Show rendered Markdown preview alongside the editor.
- Split view: editor | preview
- Real-time preview updates
- Synchronized scrolling
- Toggle preview on/off
- Support GFM (GitHub Flavored Markdown)
- Syntax highlighting in code blocks
- Only show when language is Markdown
- Preview panel on right (50% width)
- Toggle button in header
- Styled like GitHub Markdown
- Smooth transitions
- Use
markedormarkdown-itlibrary - Use
highlight.jsfor code block highlighting
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>- Markdown renders correctly in preview
- Preview updates in real-time as user types
- Code blocks have syntax highlighting
- Scrolling is synchronized between panels
Title: [Feature] Add automatic code formatting with Prettier
Labels: enhancement, nice-to-have, formatting
Description:
One-click code formatting using Prettier.
- Format button in header
- Keyboard shortcut: Shift + Alt + F
- Support JS, TS, HTML, CSS, JSON, Markdown
- Show error toast if formatting fails
- Preserve cursor position after format
<script src="https://unpkg.com/prettier@3.0.0/standalone.js"></script>
<script src="https://unpkg.com/prettier@3.0.0/plugins/babel.js"></script>- Code is formatted on button click
- Formatting works for supported languages
- Errors are handled gracefully
Title: [Feature] Add keyboard shortcuts help modal
Labels: enhancement, nice-to-have, help
Description:
Modal showing all available keyboard shortcuts.
- Help button (?) in header
- Open with Ctrl/Cmd + /
- List all shortcuts with descriptions
- Categorized: Editor, Navigation, Actions
- Close with Escape or click outside
| Shortcut | Action |
|---|---|
| Ctrl+S | Save (Download) |
| Ctrl+F | Find |
| Ctrl+H | Replace |
| Ctrl+/ | Toggle comment |
| Ctrl+Enter | Run code |
| Ctrl+B | Toggle bold (Markdown) |
| Ctrl++ | Zoom in |
| Ctrl+- | Zoom out |
- Modal opens with shortcut or button
- All shortcuts are listed and accurate
- Modal is styled for dark/light themes
Title: [Feature] Add Zen mode for distraction-free editing
Labels: enhancement, nice-to-have, ui
Description:
Full-screen, minimal UI mode for focused coding.
- Toggle with button or F11
- Hide header, user list, all UI chrome
- Center editor with max-width
- Subtle fade effect on transition
- Press Escape to exit
- Optional: hide line numbers
- Smooth fade transition (0.3s)
- Slightly dimmed background
- Floating exit hint at bottom
- Zen mode hides all distractions
- Editor is centered and focused
- Easy to enter and exit
Title: [Feature] Export code to GitHub Gist
Labels: enhancement, nice-to-have, export
Description:
One-click publish code to GitHub Gist.
- "Export to Gist" button
- GitHub OAuth or Personal Access Token input
- Create public or secret gist
- Show Gist URL after creation
- Copy Gist URL to clipboard
- GitHub Gist API:
POST /gists - Requires OAuth token with
gistscope
- User can authenticate with GitHub
- Gist is created successfully
- User receives link to created Gist
Title: [Feature] Add emoji reactions to code lines
Labels: enhancement, nice-to-have, collaboration
Description:
Allow users to add emoji reactions to specific lines.
- Right-click line → Add reaction
- Emoji picker with common reactions
- Show reactions in gutter
- Click reaction to toggle/add
- Sync reactions to all users
- Remove reaction on second click
👍 ❤️ 🎉 🤔 👀 🔥 🐛 💡
- Users can add reactions to any line
- Reactions sync in real-time
- Can remove own reactions
Title: [Feature] Add voice chat for pair programming
Labels: enhancement, nice-to-have, collaboration, complex
Description:
Real-time voice communication between collaborators.
- Mute/unmute button in header
- Push-to-talk option
- Volume indicator showing who's speaking
- Individual user mute controls
- Connection quality indicator
- Use WebRTC for peer-to-peer audio
- Simple-peer or PeerJS library
- TURN server may be needed for NAT traversal
- Users can voice chat in real-time
- Mute controls work correctly
- Audio quality is acceptable
Title: [Feature] Improve mobile touch/keyboard support
Labels: enhancement, nice-to-have, mobile
Description:
Better editing experience on mobile devices.
- Larger touch targets
- Virtual keyboard code helpers (brackets, etc.)
- Swipe to indent/outdent
- Pinch to zoom
- Better cursor positioning
- Floating toolbar above keyboard
- Quick insert buttons: {} [] () "" '' ; :
- Undo/Redo buttons
- Editing on mobile is comfortable
- Common symbols are easy to insert
- Cursor is easy to position
Title: [Feature] Add room listing and recent rooms
Labels: enhancement, nice-to-have, navigation
Description:
Show user's recent rooms and allow creating named rooms.
- Landing page with room options
- "Create New Room" with optional name
- "Join Room" with room ID input
- Recent rooms list (localStorage)
- Last accessed timestamp
- Clear history option
- Clean landing page design
- Room cards with name, date, preview
- Quick join with one click
// localStorage: collabpad-recent-rooms
[
{ id: "room-abc", name: "Project X", lastAccessed: 1699999999 },
{ id: "room-xyz", name: "Untitled", lastAccessed: 1699888888 }
]- Users see their recent rooms
- Can create named rooms
- Can join by room ID
- History persists across sessions
When creating issues on GitHub:
- Copy the Title - Use as issue title
- Add Labels - Apply suggested labels
- Copy Description - Paste as issue body
- Assign Milestone - Group by priority
- Link Related Issues - Add dependencies
Create these labels in your repository:
| Label | Color | Description |
|---|---|---|
enhancement |
#a2eeef |
New feature or request |
high-priority |
#d73a4a |
Critical for MVP |
medium-priority |
#fbca04 |
Important but not urgent |
nice-to-have |
#0e8a16 |
Polish and extras |
ui |
#7057ff |
User interface related |
collaboration |
#008672 |
Multi-user features |
editor |
#e99695 |
Code editor features |
security |
#b60205 |
Security related |
accessibility |
#0052cc |
A11y improvements |
mobile |
#5319e7 |
Mobile support |
complex |
#c5def5 |
Requires significant work |
| Milestone | Issues | Target |
|---|---|---|
| v1.0 - MVP | #1, #2, #3, #4, #5 | Week 1-2 |
| v1.1 - Collaboration | #6, #7, #8 | Week 3-4 |
| v1.2 - Polish | #9, #10, #11, #12 | Week 5-6 |
| v2.0 - Advanced | #13-#20 | Future |
Generated for CollabPad - Real-time Collaborative Code Editor