Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add mutedeck extension #16432

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions extensions/mutedeck/.Plan
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
PROJECT: MuteDeck Raycast Extension Publication
STATUS: In Progress
DEADLINE: TBD

[X] Core Functionality
[X] Toggle Microphone command
[X] Toggle Video command
[X] Leave Meeting command
[X] Show Status command
[X] API integration
[X] Error handling
[X] User preferences

[~] Documentation
[X] README.md with features and setup
[X] CHANGELOG.md with version history
[X] Development guidelines (docs/development.md)
[X] Architecture documentation (docs/architecture.md)
[X] Keyboard shortcuts guide (docs/keyboard-shortcuts.md)
[ ] Update GitHub repository links in README and docs
[X] Add troubleshooting.md guide referenced in store description

[X] Testing & Quality (as per development.md)
[X] Manual testing of all commands
[X] Integration testing with MuteDeck app
[X] API interaction verification
[X] State management testing
[X] Error handling verification
[X] UI/UX consistency check
[X] Performance profiling

[~] Store Assets
[X] Store description (assets/store/description.md)
[X] Store screenshots (in progress, assets/store/screenshots/)
[X] Verify all screenshot descriptions match actual images
[X] Final review of store assets
[ ] Create demo video (optional, as noted in description)

[X] Security & Compliance
[X] Local-only API communication documented
[X] Privacy considerations in store description
[X] Complete security review of API endpoints
[X] Add explicit data handling documentation
[X] Verify license file matches MIT license

[X] Release Preparation
[X] Package.json configuration
[X] Dependencies up to date
[X] Project structure documented
[X] Version number finalized in package.json
[X] Release date set in CHANGELOG
[X] Git tags prepared
[X] Release notes prepared

[IN PROGRESS] Store Submission
[X] Final store listing preview
[X] Internal review checklist
[IN PROGRESS] Submit for Raycast review
[ ] Address reviewer feedback
[ ] Prepare launch announcement

NOTES:
- GitHub repository needs to be made public before updating links
- Screenshots are in progress but need final review
- Development guidelines are comprehensive and should be followed for testing
- Store description is complete but needs link updates
- Consider adding more error scenarios to troubleshooting guide
60 changes: 60 additions & 0 deletions extensions/mutedeck/.cursornotes
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Project Notes

## 2024-02-13
- Project initialized: Raycast extension for MuteDeck integration
- Reviewed architecture requirements and project structure
- Established core features:
- Microphone mute toggle
- Video toggle
- Leave meeting functionality
- Defined initial project structure and implementation plan
- Key technical decisions:
- Using TypeScript for type safety
- Following Raycast's recommended extension architecture
- Implementing real-time status monitoring
- Robust error handling for common failure cases
- Development Tools Available:
- Manage Extensions Command (Raycast built-in)
- CLI tools for build/develop/lint
- ESLint configuration for best practices
- VS Code extension (community tool) for enhanced development
- Next steps identified:
- Set up development environment
- Create extension scaffold
- Implement API wrapper
- Setup Progress:
- ✅ Installed Node.js (v23.5.0) and npm (v10.9.2)
- ✅ Installed @raycast/api package globally
- ✅ RESOLVED: Found correct extension creation process
- Must use Raycast app's built-in "Create Extension" command
- Will use "Detail" template for rich UI capabilities
- Development workflow:
1. Create extension through Raycast app
2. Run npm install in created directory
3. Start development with npm run dev
4. Use VS Code for development
- No CLI tools needed for initial creation

## 2024-02-14
- Core functionality implemented:
- ✅ Toggle microphone command
- ✅ Toggle video command
- ✅ Leave meeting command
- ✅ Status view
- API integration complete:
- ✅ Status monitoring
- ✅ Command endpoints
- ✅ Error handling
- Moving to Polish Phase:
- Identified Bear extension as quality benchmark
- Created comprehensive polish plan
- Key focus areas:
1. Assets and Visual Identity
2. Documentation Quality
3. Enhanced User Experience
4. Code Quality
5. Repository Structure
- Next Steps:
- Create new prompt for polish phase
- Follow Bear extension's example
- Implement professional-grade improvements
82 changes: 82 additions & 0 deletions extensions/mutedeck/.cursorrules
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Nova Project Rules

1. Package Management
- Use Poetry ONLY
- Direct pip usage is FORBIDDEN

2. Vision Model
- Use "gpt-4o" model for vision recognition
- Do NOT use gpt-4-vision-preview or any other vision models

3 AI Commands
When I submit a command to you, you MUST follow the procedure outlined in the command.

- "update docs":
- procedure:
1. "Parse all Markdown files in docs/**/*.md and README.md"
2. "Extract relevant updates from conversation"
3. "Apply any relevant and useful updates"

- "update plan":
- procedure:
1. "You MUST read the .Plan file"
2. "Extract relevant updates from conversation"
3. "Apply any relevant and useful updates to the .Plan file"

- "update rules":
- procedure:
1. "Parse .cursorrules file"
2. "Extract rule updates from conversation"
3. "Apply any relevant and useful updates"

- "capture thoughts":
- procedure:
1. "You MUST read the .cursorscratchpad file"
2. "Extract relevant insights from current context"
3. "Interleave your thoughts with previous thoughts in the <SCRATCHPAD> buffer"
4. "You MUST write your thoughts in the <SCRATCHPAD> buffer"
5. "Consolidate your thoughts as necessary, grouping related thoughts together"

- "update cursornotes":
- procedure:
1. "You MUST read the .cursornotes and .cursorscratchpad files"
2. "Consolidate previous thoughts from <SCRATCHPAD>"
3. "Integrate new information from current conversation"
4. "Format as dated entry, request date from user"
5. "Append to .cursornotes file"
6. "Clear <SCRATCHPAD> section in .cursorscratchpad"

- "run tests":
- procedure:
1. "You MUST poetry run pytest"

- "clean run":
- procedure:
1. "You MUST poetry run python -m nova.cleanup -a && poetry run python -m nova.cli --config config/nova.yaml"

- "fix pre-commit":
- procedure:
1. "You MUST poetry run pre-commit run mypy --all-files"
2. "You MUST fix all the errors"

- "create prompt":
- procedure:
1. "You MUST run the capture thoughts command first"
2. "You MUST run the update cursornotes command"
3. "You MUST ask the user if we are implementing a current plan"
4. "If yes, you MUST read the current plan file"
5. "You MUST create a comprehensive prompt that includes:"
- "Context from cursornotes"
- "Plan data if applicable"
- "Clear statement of current goal"
- "Instructions for getting context"
- "Next steps"
- "How to use Nova's file structure"
- "Required tools and commands"
- "You should summarize and link to the relevant docs, instead of just saying all the text that we ahve captured elsewhere."





66 changes: 66 additions & 0 deletions extensions/mutedeck/.cursorscratchpad
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Current Thoughts
<SCRATCHPAD>
- Project involves creating a Raycast extension for MuteDeck integration
- Core functionality revolves around meeting controls (mute, video, leave)
- Need to handle real-time status monitoring and error cases
- Architecture follows standard Raycast extension patterns with clear separation of concerns
- Initial focus is on setting up development environment and project structure
- TypeScript will be primary language with React-based UI components
- Error handling strategy needs to be robust for common failure modes
- RESOLVED: Previous CLI tool issues clarified
- Extension creation should be done through Raycast app's "Create Extension" command
- No direct npm creation commands needed
- Will use "Detail" template for rich UI capabilities

POLISH PHASE INSIGHTS:
- Need to follow Bear extension's example for professional quality
- Key areas for polish:
1. Assets and Visual Identity
- MuteDeck icon integration
- Consistent command icons
- Professional screenshots/GIFs
2. Documentation Quality
- Clear, comprehensive README
- Inline code documentation
- Usage examples and troubleshooting
3. Enhanced User Experience
- Better error messages
- Loading states
- Keyboard shortcut suggestions
4. Code Quality
- TypeScript strict mode
- ESLint/Prettier setup
- Pre-commit hooks
5. Repository Structure
- Professional organization
- Clear contribution guidelines
- Version history tracking

PROMPT REQUIREMENTS:
- Context from current implementation
- Clear goals for polish phase
- Reference to Bear extension as quality standard
- Step-by-step approach to improvements
- Focus on user experience and professional quality
- Tools and commands needed
- File structure and organization

- Development Tools to Use:
- ray CLI commands for development:
- ray develop: Start development mode
- ray build: Build the extension
- ray lint: Check code quality
- VS Code extension for better development experience
- Manage Extensions command in Raycast for testing
- Next steps:
- Set up development environment with npm install
- Start development server with ray develop
- Implement core functionality using available tools
</SCRATCHPAD>

# Reference Information
- Local API endpoint: http://localhost:3491/
- Key endpoints: status, mute, video, leave
- Must handle: MuteDeck not running, no active meeting, command failures
- Bear extension as reference: https://www.raycast.com/hmarr/bear
- Repository structure example: https://github.com/raycast/extensions/tree/main/extensions/bear
8 changes: 8 additions & 0 deletions extensions/mutedeck/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module.exports = {
extends: ['@raycast'],
parserOptions: {
ecmaVersion: 2021,
sourceType: 'module',
project: './tsconfig.json',
},
};
86 changes: 86 additions & 0 deletions extensions/mutedeck/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual environments
.env
.venv
env/
venv/
ENV/

# IDE
.idea/
.vscode/
*.swp
*.swo
.DS_Store

# Testing
.coverage
coverage.xml
htmlcov/
.pytest_cache/
.mypy_cache/

# Nova specific
logs/
cache/
output/
*.log
config/nova.yaml
.env

# Node.js
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
.npm/
.yarn/
.pnp.*

# TypeScript
*.tsbuildinfo
.tscache/
*.js.map

# Raycast Extension
.raycast-swift-build/
.build/
*.xcodeproj
.raycast/

# Development
.env.local
.env.development.local
.env.test.local
.env.production.local

# Misc
.tmp/
.temp/
*.bak
*.backup
*~
.history/
.cache/
10 changes: 10 additions & 0 deletions extensions/mutedeck/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"semi": true,
"trailingComma": "es5",
"singleQuote": true,
"printWidth": 100,
"tabWidth": 2,
"useTabs": false,
"bracketSpacing": true,
"arrowParens": "avoid"
}
Loading
Loading