{"id":42148474,"url":"https://github.com/mrhunsaker/plainscript","last_synced_at":"2026-01-26T18:01:26.048Z","repository":{"id":328856939,"uuid":"1116817628","full_name":"mrhunsaker/PlainScript","owner":"mrhunsaker","description":"Theia-Based Accessible Text/Code editor","archived":false,"fork":false,"pushed_at":"2025-12-17T18:19:48.000Z","size":123466,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-19T03:20:09.852Z","etag":null,"topics":["code","education","plaintext","theia"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrhunsaker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-15T12:27:53.000Z","updated_at":"2025-12-17T18:19:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mrhunsaker/PlainScript","commit_stats":null,"previous_names":["mrhunsaker/plainscript"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/mrhunsaker/PlainScript","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrhunsaker%2FPlainScript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrhunsaker%2FPlainScript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrhunsaker%2FPlainScript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrhunsaker%2FPlainScript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrhunsaker","download_url":"https://codeload.github.com/mrhunsaker/PlainScript/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrhunsaker%2FPlainScript/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28784093,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code","education","plaintext","theia"],"created_at":"2026-01-26T18:01:24.316Z","updated_at":"2026-01-26T18:01:26.038Z","avatar_url":"https://github.com/mrhunsaker.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PlainScript IDE - Minimal, Accessible Theia-Based Development Environment\n\nA fully customized, lightweight IDE built on Theia with support for both browser-based and Electron desktop versions. Designed with **simplicity and screenreader accessibility** as core principles.\n\n## Vision\n\nPlainScript is a community project to demonstrate how to build a **minimal, focused IDE** from Theia with:\n- **Accessibility First**: Screenreader-compatible, keyboard-navigable, no visual-only controls\n- **Simplicity**: Only essential features; no clutter, no distraction\n- **Transparency**: Clear documentation of what's included and what's excluded, and why\n- **Reproducibility**: Easy to fork and customize as a starting point for your own IDE\n\n## Features\n\n- **Dual Platform Support**: Browser-based (any OS) + native Electron desktop application\n- **Accessible by Design**: \n  - Semantic HTML with proper ARIA labels\n  - Full keyboard navigation (no mouse required)\n  - Screenreader-friendly UI structure\n  - High-contrast Alabaster theme (WCAG AA compliant)\n- **Simple Launch Scripts**: `customide-browser` and `customide-electron` commands (Bash \u0026 PowerShell)\n- **Streamlined UI Layout**: \n  - Top-oriented tabs for better navigation structure\n  - Files panel only (explorer with clear labeling)\n  - Locked output panel (always available, not hidden)\n  - No sidebar clutter; single focused work area\n- **Minimal, Intentional Plugin Ecosystem**: Only 5 VSCode-compatible extensions from Open VSX\n- **Focused Theme Selection**: Alabaster (light), Alabaster Dark, Catppuccin icons\n- **Smart Features**:\n  - Indent Rainbow visualization for code structure\n  - Search-in-workspace functionality\n  - Integrated terminal\n  - Git support with GitHub authentication\n  - Full debugging capabilities\n- **Fast Performance**: Lightweight footprint, quick startup, responsive UI\n- **Open Source \u0026 Extensible**: Apache 2.0 license; easy to fork and customize\n\n## Project Structure\n\n```\ncustomIDE/\n├── customide-browser        # Quick launch script (Bash)\n├── customide-browser.ps1    # Quick launch script (PowerShell)\n├── customide-electron       # Quick launch script (Bash)\n├── customide-electron.ps1   # Quick launch script (PowerShell)\n├── browser-app/             # Browser-based Theia application\n├── electron-app/            # Electron desktop application\n├── custom-ui/               # Custom UI plugin with layout \u0026 command customizations\n├── plugins/                 # VSCode extensions (minimal selection)\n├── package.json             # Root monorepo configuration\n├── README.md                # This file\n└── LICENSE                  # Apache 2.0 license\n```\n\n## Prerequisites\n\n- **Node.js**: \u003e= 20.0\n- **npm**: \u003e= 10.0\n- **Git**: For cloning and version control\n- **Electron** (for desktop app): Automatically managed by dependencies\n\n## Quick Start\n\n### 1. Install Dependencies\n\n```bash\ncd /path/to/customIDE\nnpm install\nnpm run download:plugins\n```\n\n### 2. Launch the IDE\n\n**Option A: Using launch scripts (recommended)**\n\nLinux/macOS:\n```bash\n./customide-browser    # Launch browser version\n# or\n./customide-electron   # Launch Electron version\n```\n\nWindows (PowerShell):\n```powershell\n.\\customide-browser.ps1\n# or\n.\\customide-electron.ps1\n```\n\n**Option B: Direct npm commands**\n\nBrowser version:\n```bash\nnpm run start --workspace=browser-app\n# Access at http://localhost:3000\n```\n\nElectron version:\n```bash\nnpm run start --workspace=electron-app\n```\n\nBoth simultaneously:\n```bash\nnpm run start\n```\n\n## Transparency: What's Included vs. Excluded\n\n### Philosophy\n\nPlainScript intentionally excludes many features to prioritize **accessibility and simplicity**. This section documents exactly what's loaded and what's not, and why.\n\n### Included: Plugins (5 carefully selected)\n\nConfigured in root `package.json` under `theiaPlugins`:\n\n1. **Eclipse Theia Builtin Extension Pack** (eclipse-theia.builtin-extension-pack v1.95.3)\n   - Language servers for JavaScript, Python, Go, Rust, and other core languages\n   - Essential for code intelligence, completion, and debugging\n   - **Why included**: Developers expect syntax support; essential for productivity\n\n2. **Alabaster Theme** (tonsky.theme-alabaster v0.2.9) — Light mode\n   - High-contrast, minimal-distraction light theme\n   - WCAG AA compliant color contrasts\n   - **Why included**: Default theme; supports accessibility-first design\n\n3. **Alabaster Dark Theme** (lao-liang.vscode-theme-alabaster-dark v0.0.2)\n   - High-contrast dark alternative\n   - For users who prefer dark mode or low-light environments\n   - **Why included**: Accessibility requirement; not all users can use light themes\n\n4. **Catppuccin VSC Icons** (Catppuccin.catppuccin-vsc-icons v1.26.0)\n   - Colorful, semantic file type icons\n   - Helps quick visual file identification without relying on text alone\n   - **Why included**: Visual accessibility for file exploration\n\n5. **Indent Rainbow** (oderwat.indent-rainbow v8.3.1)\n   - Adds rainbow-colored indentation guides\n   - Helps structure visualization in nested code\n   - **Why included**: Assistive visualization for code structure; activated on startup\n\n### Excluded: Views \u0026 Features\n\nThe following Theia UI views are **intentionally hidden** via contribution filters in `custom-ui`:\n\n| View | Why Excluded |\n|------|-------------|\n| **Debug** | Debugging UI adds visual complexity; developers who need it can enable manually |\n| **Test** | Testing UI not essential for core editing; adds UI clutter |\n| **SCM (Source Control)** | Git functionality available via command palette and status bar; dedicated panel unnecessary |\n| **Outline** | Structure outline duplicates breadcrumb navigation; reduces cognitive load |\n| **Call Hierarchy** | Advanced feature; not needed for most developers |\n| **Problems Panel** | Errors shown inline; dedicated panel adds clutter |\n| **Plugins View** | Extension management UI hidden; users learn the IDE first before managing plugins |\n| **Tasks** | Task runner UI hidden; use terminal instead (more accessible) |\n| **Notebook** | Jupyter notebook support excluded; focus on traditional code editors |\n| **Breadcrumb** | Navigation via Files panel instead; breadcrumb adds extra UI layer |\n| **Minimap** | Code overview adds visual elements; rely on search and scrolling |\n| **Activity Bar (right side)** | Hidden; top tabs used instead |\n\n**Accessibility rationale**: Fewer UI elements = less cognitive load, clearer screen reader navigation, fewer visual distractions, easier keyboard-only workflow.\n\n### Excluded: Commands \u0026 Menu Items\n\nRemoved via `custom-ui` command filtering:\n\n| Command | Why Excluded |\n|---------|-------------|\n| Workspace-related commands | Monorepo/workspace features create UI complexity |\n| Help menu items | Documentation available externally; menu items clutter |\n| About dialog | Project info in README instead |\n| Show Welcome page | Avoids startup splash; users learn by doing |\n| Switch editor group | Horizontal-only layout; no complex split arrangements |\n\n### UI Layout Choices\n\n**What's visible**:\n- **Files panel** (left): Labeled \"Files\", non-closable, non-draggable. Always present for file navigation.\n- **Editor area** (center): Main code editing. Supports multiple tabs (top-oriented).\n- **Output panel** (bottom): Locked, always accessible. Shows terminal output, build results, etc.\n- **Top tabs**: Open files shown as tabs at top of editor. Standard list format (keyboard-navigable).\n\n**What's hidden**:\n- Right sidebar (removed)\n- Activity bar (right-side icon bar)\n- Debug/test UI panels\n- Welcome/startup screens\n- Context menus (use command palette instead)\n\n**Why**: Screenreader users benefit from linear, predictable UI. Fewer panels = easier to navigate with Tab and arrow keys.\n\n### Accessibility Features\n\n1. **Semantic HTML**: Proper ARIA labels, roles, and landmarks in custom UI\n2. **Keyboard Navigation**: Full IDE control via keyboard; no mouse required\n3. **High-Contrast Colors**: Alabaster theme meets WCAG AA standards\n4. **Clear Focus Indicators**: Visible focus rings on buttons, inputs, tree items\n5. **Logical Tab Order**: Files → Editor → Output (top to bottom)\n6. **Command Palette**: Accessible via `Ctrl/Cmd+Shift+P`; text-based, no visual-only buttons\n7. **Status Bar**: Shows language, line/column, git branch, error count (screenreader readable)\n8. **Terminal**: Integrated terminal for shell commands (accessible via keyboard)\n\n## Configuration\n\n### Plugins\n\nConfigured in root `package.json` under `theiaPlugins`. See [Transparency section](#transparency-whats-included-vs-excluded) for full rationale.\n\nCurrent selection:\n\n- **Eclipse Theia Builtin Extension Pack**: Language servers (JavaScript, Python, Go, Rust, etc.)\n- **Alabaster Theme**: Light mode (WCAG AA compliant)\n- **Alabaster Dark**: Dark mode alternative\n- **Catppuccin VSC Icons**: Semantic file type icons\n- **Indent Rainbow**: Code structure visualization (auto-enabled)\n\n### Theme \u0026 Icon Settings\n\nBoth apps use identical settings (aligned to Theia 1.67.0):\n\n```json\n{\n  \"workbench.colorTheme\": \"Alabaster\",\n  \"workbench.iconTheme\": \"Catppuccin VSC Icons - Latte\",\n  \"security.workspace.trust.enabled\": false,\n  \"security.workspace.trust.startupPrompt\": \"never\",\n  \"extensions.ignoreRecommendations\": true,\n  \"extensions.verifySignature\": false\n}\n```\n\nEdit in `browser-app/package.json` or `electron-app/package.json` under `theia.frontend.config.preferences`.\n\n### Custom UI Features\n\nThe `custom-ui` plugin provides:\n\n- **Contribution Filters**: Removes debug, test, SCM, outline, hierarchy, problems, plugins, tasks, notebook, window views\n- **Command Cleanup**: Removes workspace commands, About/Help menus; adds Files, Search, Terminal, Output tabs\n- **Explorer Widget**: Labeled \"Files\", non-closable, non-draggable\n- **Output Panel**: Locked, no close button, toolbar buttons hidden\n- **Shell Layout**: Top-oriented tabs, no right panel, horizontal-only splits\n- **Island Styling**: Rounded corners, gaps, transparent backgrounds, modern aesthetics\n\n### Customizing Splash/Preload Screen\n\nThe splash screen (loading screen shown before the IDE loads) can be customized for both browser and desktop versions.\n\n**Location**: \n- Browser: `browser-app/resources/preload.html`\n- Electron: `electron-app/resources/preload.html`\n\nBoth files are identical and can be customized independently if desired.\n\n**How to Customize**:\n\n1. **Edit the HTML content** between the `\u003cdiv class=\"splash-content\"\u003e` tags:\n   ```html\n   \u003cdiv class=\"splash-content\"\u003e\n       \u003cp class=\"splash-title\"\u003eYour Custom Title\u003c/p\u003e\n       \u003cp class=\"splash-message\"\u003eYour custom message\u003c/p\u003e\n   \u003c/div\u003e\n   ```\n\n2. **Modify the styles** in the `\u003cstyle\u003e` block:\n   - `background-color`: Change `#1e1e1e` for different background\n   - `.splash-title`: Adjust font size, color, weight\n   - `.splash-message`: Modify text color and font size\n   - `.splash-spinner`: Customize the loading spinner appearance\n\n3. **Replace the spinner SVG** with your own logo or animation:\n   ```html\n   \u003cdiv class=\"splash-spinner\"\u003e\n       \u003cimg src=\"your-logo.png\" alt=\"Loading...\" /\u003e\n   \u003c/div\u003e\n   ```\n\n4. **Add custom CSS animations** for branded loading effects:\n   ```css\n   @keyframes customAnimation {\n       0% { transform: scale(1); }\n       50% { transform: scale(1.1); }\n       100% { transform: scale(1); }\n   }\n   ```\n\n**Example - Custom Company Branding**:\n```html\n\u003cdiv class=\"splash-content\"\u003e\n    \u003cp class=\"splash-title\"\u003eMyCompany IDE\u003c/p\u003e\n    \u003cp class=\"splash-message\"\u003eInitializing workspace...\u003c/p\u003e\n    \u003cp style=\"font-size: 12px; color: #888; margin-top: 20px;\"\u003e\n        Version 1.0 • MyCompany © 2025\n    \u003c/p\u003e\n\u003c/div\u003e\n```\n\n**Tips**:\n- Keep file size small (the splash shows before anything loads)\n- Avoid external dependencies (use inline SVG or base64 images)\n- Test both browser and Electron versions after changes\n- The splash appears momentarily, so optimize for quick visibility\n- Colors should contrast well with the background (default dark grey: `#1e1e1e`)\n\n## Building \u0026 Distribution\n\n### Quick Build (for Fedora Silverblue/Kinoite or Linux with 7zip)\n\nA clean build script removes all caches and rebuilds from scratch (ensures preload and config changes propagate):\n\n```bash\nchmod +x scripts/build-appimage-clean.sh\nscripts/build-appimage-clean.sh\n```\n\nThis:\n1. Removes all `node_modules` and build caches\n2. Installs fresh dependencies\n3. Rebuilds all workspaces\n4. Packages the Electron app as a Linux AppImage\n\nOutput: `electron-app/dist/PlainScript-*-x86_64.AppImage`\n\n### Manual Multi-Step Build\n\n```bash\ncd /path/to/customIDE\n\n# 1) Clean install\nnpm ci\n\n# 2) Build workspaces (order matters)\nnpm run build --workspace=custom-ui\nnpm run build --workspace=browser-app\nnpm run build --workspace=electron-app\n\n# 3) Package\nnpm run package --workspace=electron-app\n```\n\n### Packaging for macOS, Windows, and Linux\n\nSee [PACKAGING.md](./PACKAGING.md) for detailed platform-specific instructions including:\n- Icon requirements (.icns, .ico, .png)\n- Code signing setup\n- Cross-platform builds\n- Troubleshooting\n\n### Automated CI/CD with GitHub Actions\n\nOnce you push to GitHub, automated builds trigger on:\n- **Tag push** (`v*`): Creates GitHub Release with all binaries\n- **Manual trigger**: Anytime via Actions tab\n\n**Workflow** (`.github/workflows/build-appimage.yml`):\n- Builds AppImage on Linux (ubuntu-latest)\n- Builds DMG + ZIP on macOS (macos-latest)\n- Builds NSIS + Portable EXE on Windows (windows-latest)\n- All builds run in parallel\n- Artifacts uploaded and released automatically\n\n**To use**:\n```bash\n# Tag and push\ngit tag v1.0.0\ngit push origin v1.0.0\n\n# GitHub Actions builds all three platforms automatically\n# Artifacts appear in Release and as downloadable artifacts\n```\n\nNo manual packaging needed once CI/CD is set up.\n\n## Development\n\n**Root** (`npm run \u003ccmd\u003e`):\n```bash\nbuild               # Build all workspaces (production)\nstart               # Start browser + Electron simultaneously\nwatch               # Watch mode for development (hot reload)\ndownload:plugins    # Download configured VSCode extensions\nclean               # Remove build artifacts\n```\n\n**Browser app** (`npm run \u003ccmd\u003e --workspace=browser-app`):\n```bash\nbuild               # Production build\nbundle              # Dev build with watch\nrebuild             # Rebuild Theia distribution\nstart               # Start server (port 3000)\nwatch               # Watch and rebuild\n```\n\n**Electron app** (`npm run \u003ccmd\u003e --workspace=electron-app`):\n```bash\nbundle              # Dev build with watch\nrebuild             # Rebuild for Electron\nstart               # Launch desktop app\nwatch               # Watch and rebuild\n```\n\n**Custom UI** (`npm run \u003ccmd\u003e --workspace=custom-ui`):\n```bash\nbuild               # Build Vite bundle + TypeScript defs\ndts                 # Generate type declarations\n```\n\n### Modifying Custom UI\n\nPlugin source code in `custom-ui/src/frontend/`:\n\n- `index.ts` - Plugin entry, registers all contributions\n- `application-shell.ts` - Shell layout, panel sizing, drag restrictions\n- `navigator-widget-factory.ts` - Custom Explorer/\"Files\" widget\n- `commands-contributions.ts` - Command and menu customization\n- `contribution-filters.ts` - View filtering (removes unwanted modules)\n- `output-toolbar-contribution.ts` - Output panel lock state and controls\n- `style/application-shell.less` - Island-style visual design\n- `style/side-panel.less` - Top tabs styling\n\nTo modify:\n```bash\n# 1. Edit files in custom-ui/src/frontend/\n# 2. Rebuild the plugin\nnpm run build --workspace=custom-ui\n\n# 3. Rebuild browser and/or electron apps\nnpm run bundle --workspace=browser-app\nnpm run bundle --workspace=electron-app\n\n# 4. Restart the application\n```\n\n### Adding Plugins\n\n1. Find extension on [Open VSX Registry](https://open-vsx.org)\n2. Get the VSIX download URL\n3. Add to root `package.json` \u003e `theiaPlugins`:\n   ```json\n   \"publisher.extension-name\": \"https://open-vsx.org/api/publisher/extension-name/version/file/...vsix\"\n   ```\n4. Run `npm run download:plugins`\n5. Restart app\n\n### Removing Plugins\n\n1. Remove entry from root `package.json` \u003e `theiaPlugins`\n2. Delete the plugin folder from `plugins/`\n3. Restart app\n\n## Browser vs Electron Parity\n\nBoth versions are **completely aligned**:\n\n| Aspect | Browser | Electron |\n|--------|---------|----------|\n| Theia Version | 1.67.0 | 1.67.0 |\n| Dependencies | Identical | Identical |\n| Plugins | Same set | Same set |\n| Color Theme | Alabaster | Alabaster |\n| Icon Theme | Catppuccin | Catppuccin |\n| UI Layout | Custom | Custom |\n| Preferences | Identical | Identical |\n| Security Settings | Disabled trust | Disabled trust |\n\nThis ensures **perfect feature parity** between the two platforms.\n\n## Troubleshooting\n\n### Port 3000 Already in Use\n\n```bash\n# Find and kill process\nlsof -i :3000\nkill -9 \u003cPID\u003e\n\n# Or use different port\ncd browser-app \u0026\u0026 npm start -- -p 4000\n```\n\n### Plugins Not Loading\n\n- Verify download: `npm run download:plugins`\n- Check `plugins/` directory exists and contains folders\n- Review browser/Electron console for errors\n- Restart the app\n\n### Theme Not Applying\n\n- Ensure theme plugin is downloaded\n- Check console for color parsing errors\n- Manually select theme: Preferences \u003e Color Theme\n- Restart app\n\n### Build Fails\n\n```bash\n# Clean and rebuild\nnpm run clean\nnpm install\nnpm run download:plugins\nnpm run build\n```\n\n## Contributing \u0026 Forking\n\nPlainScript is designed to be a **reference implementation and starting point** for building your own accessible IDE.\n\n### How to Fork \u0026 Customize\n\n1. **Clone or fork** this repository:\n   ```bash\n   git clone https://github.com/yourusername/plainscript-ide.git\n   cd plainscript-ide\n   ```\n\n2. **Customize branding** (optional):\n   - Edit `browser-app/package.json` \u003e `applicationName` and `product.json`\n   - Edit `electron-app/package.json` \u003e `productName`, `appId`, `product.json`\n   - Update icon files in `electron-app/resources/icons/`\n   - Update preload splash screens in `browser-app/resources/preload.html` and `electron-app/resources/preload.html`\n\n3. **Add or remove plugins**:\n   - Edit root `package.json` \u003e `theiaPlugins`\n   - Run `npm run download:plugins`\n   - Document why each plugin is included (accessibility, not bloat)\n\n4. **Modify UI layout**:\n   - Edit `custom-ui/src/frontend/` files\n   - Update `contribution-filters.ts` to show/hide views\n   - Rebuild: `npm run build --workspace=custom-ui`\n\n5. **Build and test**:\n   ```bash\n   npm ci\n   npm run build\n   npm run start  # Test both browser and Electron\n   ```\n\n6. **Set up CI/CD** (optional):\n   - Copy `.github/workflows/build-appimage.yml` to your repo\n   - Push a tag to trigger automated builds\n\n7. **Publish**:\n   - GitHub Releases (automatic if you use the workflow)\n   - Custom download server\n   - Package managers (brew, snap, chocolatey—requires additional config)\n\n### Guidelines for Contributors\n\nIf you'd like to contribute back to PlainScript:\n\n**Code Quality**:\n- Follow existing code style (TypeScript, LESS)\n- Test both browser and Electron versions\n- Ensure changes maintain accessibility\n- Test with a screenreader (NVDA on Windows, JAWS, VoiceOver on macOS)\n\n**Accessibility Standards**:\n- Follow WCAG 2.1 Level AA guidelines\n- Use semantic HTML and ARIA roles\n- Test keyboard navigation\n- Test with screenreaders\n- Avoid visual-only affordances\n\n**Documentation**:\n- Update README for user-facing changes\n- Document UI layout changes\n- Explain why features are included/excluded\n- Provide rationale for plugin choices\n\n**Contributions Welcome**:\n- UI/UX improvements maintaining accessibility\n- Additional language support (via language server extensions)\n- Performance optimizations\n- Cross-platform testing and fixes\n- Documentation and translation\n- Accessibility improvements\n\n### Contributions\n\nContributions are welcome! Areas for enhancement:\n\n- Custom UI improvements (accessible layouts, keyboard shortcuts)\n- Additional useful plugins (with accessibility verification)\n- Performance optimizations\n- Testing on Windows/macOS/Linux\n- Documentation and guides\n- Accessibility audits and fixes\n\n**How to contribute**:\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/my-feature`\n3. Make changes and test in both browser and Electron: `npm run build \u0026\u0026 npm run start`\n4. Run a clean build: `scripts/build-appimage-clean.sh`\n5. Commit with clear messages: `git commit -m \"feat: add accessible feature X\"`\n6. Push and open a pull request\n7. Provide testing notes (browser, Electron, screenreader, keyboard)\n\n**Pull Request Checklist**:\n- [ ] Tested on browser and Electron\n- [ ] No accessibility regressions (keyboard nav, screenreader, colors)\n- [ ] README/PACKAGING.md updated if needed\n- [ ] Clear commit messages\n- [ ] Changes follow code style\n\n## License\n\nLicensed under **Apache License 2.0**. See [LICENSE](./LICENSE) for details.\n\nYou are free to use, copy, and modify this software for any purpose, provided you:\n- Include the license and copyright notice\n- Document significant changes\n- Include the license in derivative works\n\n## Attribution\n\nBuilt with:\n- [Theia IDE](https://theia-ide.org/) - Open-source IDE platform\n- [Electron](https://www.electronjs.org/) - Desktop app runtime\n- [Open VSX Registry](https://open-vsx.org) - Extension registry\n- [Monaco Editor](https://microsoft.github.io/monaco-editor/) - Editor component\n\n## Support\n\n- Check [Theia documentation](https://theia-ide.org/docs/)\n- Review [VSCode API docs](https://code.visualstudio.com/api)\n- Open an issue on GitHub\n- Check existing issues for solutions\n\n## Roadmap\n\n- [ ] Remote development (SSH)\n- [ ] Workspace templates\n- [ ] Extension marketplace UI\n- [ ] Collaborative editing\n- [ ] Docker integration\n- [ ] Cloud storage support\n- [ ] Performance profiling tools\n- [ ] Advanced theming system\n\n## Changelog\n\n### Version 1.0.0-beta (Initial Public Release - December 14, 2025)\n\n**Core Features**:\n-  Dual platform support (browser + Electron)\n-  Launch scripts (Bash + PowerShell)\n-  Perfect browser/Electron parity\n-  Custom accessible UI layout\n\n**Accessibility**:\n-  Screenreader-friendly structure\n-  Full keyboard navigation\n-  WCAG AA compliant color themes\n-  Semantic HTML with ARIA labels\n\n**Plugins \u0026 Theming**:\n-  5 carefully selected plugins (language support, themes, icons)\n-  Alabaster light/dark themes (high contrast)\n-  Catppuccin semantic icons\n-  Indent Rainbow visualization\n\n**UI Customization**:\n-  Transparent inclusion/exclusion documentation\n-  Streamlined layout (Files + Editor + Output only)\n-  Top-oriented tabs\n-  Locked output panel\n\n**Distribution**:\n-  Clean build script (`scripts/build-appimage-clean.sh`)\n-  GitHub Actions CI/CD workflow (Linux, macOS, Windows)\n-  Automated AppImage, DMG, NSIS packaging\n-  Comprehensive PACKAGING.md guide\n\n**Developer Experience**:\n-  Monorepo structure (browser-app, electron-app, custom-ui)\n-  Apache 2.0 license\n-  Clear contribution guidelines\n-  Documentation for forking and customization\n\n---\n\n## FAQ\n\n**Q: Is this a production-ready IDE?**  \nA: Yes, but it's designed as a **starting point** for building accessible IDEs. It includes all essential features for coding. You can use it as-is or customize it for your needs.\n\n**Q: Can I add more plugins?**  \nA: Yes! Edit root `package.json` \u003e `theiaPlugins` and run `npm run download:plugins`. Verify accessibility for new plugins.\n\n**Q: Can I change the UI layout?**  \nA: Yes! Edit files in `custom-ui/src/frontend/` and rebuild with `npm run build --workspace=custom-ui`.\n\n**Q: How do I change the theme or colors?**  \nA: Themes are plugins (Alabaster, Alabaster Dark). Switch via Preferences \u003e Color Theme. To create a custom theme, write a new VS Code extension.\n\n**Q: Will my custom IDE work on Windows/macOS?**  \nA: Yes! Use GitHub Actions CI/CD to build for all platforms. See [PACKAGING.md](./PACKAGING.md).\n\n**Q: Is this accessible to screenreader users?**  \nA: Yes, it's designed with screenreader accessibility as a priority. Test with NVDA (Windows), JAWS, or VoiceOver (macOS). Report accessibility issues!\n\n**Q: Can I use this commercially?**  \nA: Yes, under Apache 2.0 license. You're free to fork, customize, and distribute. Include the license and document changes.\n\n**Q: How do I debug the Electron app?**  \nA: Run `npm run start --workspace=electron-app` and use Chrome DevTools (Ctrl+Shift+I). Or attach VS Code debugger to the main process.\n\n**Q: Where do I get help?**  \nA: Check [Theia docs](https://theia-ide.org/docs/), [VS Code API reference](https://code.visualstudio.com/api), or open an issue.\n\n---\n\n**Last Updated**: December 14, 2025  \n**License**: Apache 2.0  \n**Maintained by**: PlainScript Community\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrhunsaker%2Fplainscript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrhunsaker%2Fplainscript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrhunsaker%2Fplainscript/lists"}