{"_id":"ohmyposh-configurator","_rev":"3-a08f21954886fadfef96f4a21fd9f35d","name":"ohmyposh-configurator","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"ohmyposh-configurator","version":"1.0.0","_id":"ohmyposh-configurator@1.0.0","maintainers":[{"name":"jamesmontemagno","email":"james.montemagno@gmail.com"}],"homepage":"https://github.com/jamesmontemagno/ohmyposh-configurator#readme","bugs":{"url":"https://github.com/jamesmontemagno/ohmyposh-configurator/issues"},"bin":{"ohmyposh-mcp":"dist/mcp/index.js"},"dist":{"shasum":"c408348e1e0e587b1ea921305781ea75cfd4be3f","tarball":"https://registry.npmjs.org/ohmyposh-configurator/-/ohmyposh-configurator-1.0.0.tgz","fileCount":126,"integrity":"sha512-3GvJuxTzCNuh8/r1+BO6FLqzBseCKmbVRMmZqN5SE3iCrbjecVsfpuJehrOjmZba77KamW2CTBpxECnQ78hjmA==","signatures":[{"sig":"MEUCIBRKUDqDAkUydUx9l/9QFXGkOPswKQxmt6aRy/9ClaBvAiEAu7mM7u9c8J6JHkK2r9BF70mImnrQcLTH1UWicWHVqXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ohmyposh-configurator@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2915391},"type":"module","gitHead":"13df34afbee9a6a9764ccb67a4f3ccac7b63b87e","scripts":{"dev":"vite","mcp":"npm run build:mcp && node dist/mcp/index.js","lint":"eslint .","test":"vitest","build":"tsc -b && vite build && node scripts/minify-json.js dist","minify":"node scripts/minify-json.js public","prepare":"husky","preview":"vite preview","test:run":"vitest run","validate":"node scripts/validate-configs.js && node scripts/validate-icons.js","build:mcp":"npm run build:mcp-apps && tsc -p mcp/tsconfig.json","format:json":"node scripts/format-json.js public","test:coverage":"vitest run --coverage","build:mcp-apps":"MCP_APP=preview vite build --config mcp/vite.apps.config.ts && MCP_APP=segments vite build --config mcp/vite.apps.config.ts","validate-icons":"node scripts/validate-icons.js","generate-font-subset":"node scripts/generate-font-subset.js","generate:official-themes":"node scripts/fetch-official-themes.mjs"},"_npmUser":{"name":"jamesmontemagno","email":"james.montemagno@gmail.com"},"repository":{"url":"git+https://github.com/jamesmontemagno/ohmyposh-configurator.git","type":"git"},"_npmVersion":"10.8.2","description":"<div align=\"center\">","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^19.2.0","js-yaml":"^4.1.0","zustand":"^5.0.5","react-dom":"^19.2.0","idb-keyval":"^6.2.2","@iarna/toml":"^2.2.5","tailwindcss":"^4.1.8","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@tailwindcss/vite":"^4.1.8","@dnd-kit/utilities":"^3.2.2","@modelcontextprotocol/sdk":"^1.26.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ls":"^0.2.1","npm":"^11.10.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.16","globals":"^16.5.0","happy-dom":"^20.0.11","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.4","@types/react":"^19.2.5","@types/js-yaml":"^4.0.9","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitest/coverage-v8":"^4.0.16","@vitejs/plugin-react":"^4.7.0","vite-plugin-singlefile":"^2.3.0","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/ohmyposh-configurator_1.0.0_1771032449084_0.9205841962764707","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"ohmyposh-configurator","version":"1.1.0","_id":"ohmyposh-configurator@1.1.0","maintainers":[{"name":"jamesmontemagno","email":"james.montemagno@gmail.com"}],"homepage":"https://github.com/jamesmontemagno/ohmyposh-configurator#readme","bugs":{"url":"https://github.com/jamesmontemagno/ohmyposh-configurator/issues"},"bin":{"ohmyposh-mcp":"dist/mcp/index.js"},"dist":{"shasum":"8bdee86a49f524978c925cea29a6bd30a4cd0387","tarball":"https://registry.npmjs.org/ohmyposh-configurator/-/ohmyposh-configurator-1.1.0.tgz","fileCount":557,"integrity":"sha512-hWnnpY3RqmFUE83UCsXqA9iOSJHlE0kPG/rkqCI+8a+g8vaTEuB08q/65QnAabZltJFyU9fmQJiK+g4XHGBI5w==","signatures":[{"sig":"MEUCIQCM7TwSsVcUKN92Q2PHVRFQFX8jzFwpbuy+wz6olnUuFAIgE3HmS3BnCydlcVOxWR6l30uRmzP//DE3XqkBG1jW1kw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ohmyposh-configurator@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":45466749},"type":"module","gitHead":"cdb4bb7d36e3a4242810449acc38ade0ad7fcffe","scripts":{"dev":"vite","mcp":"npm run build:mcp && node dist/mcp/index.js","lint":"eslint .","test":"vitest","build":"tsc -b && vite build && node scripts/minify-json.js dist","minify":"node scripts/minify-json.js public","prepare":"husky","preview":"vite preview","test:run":"vitest run","validate":"node scripts/validate-configs.js && node scripts/validate-icons.js","build:mcp":"npm run build:mcp-apps && tsc -p mcp/tsconfig.json","format:json":"node scripts/format-json.js public","test:coverage":"vitest run --coverage","build:mcp-apps":"MCP_APP=preview vite build --config mcp/vite.apps.config.ts && MCP_APP=segments vite build --config mcp/vite.apps.config.ts","validate-icons":"node scripts/validate-icons.js","validate-studio":"node scripts/validate-studio-assets.mjs","generate-font-subset":"node scripts/generate-font-subset.js","segments:sync:upstream":"node scripts/segment-upstream-sync.mjs","generate:theme-previews":"node scripts/generate-theme-previews.mjs","generate:official-themes":"node scripts/fetch-official-themes.mjs"},"_npmUser":{"name":"jamesmontemagno","email":"james.montemagno@gmail.com"},"repository":{"url":"git+https://github.com/jamesmontemagno/ohmyposh-configurator.git","type":"git"},"_npmVersion":"11.16.0","description":"<div align=\"center\">","directories":{},"_nodeVersion":"24.18.0","dependencies":{"react":"^19.2.0","js-yaml":"^4.1.0","zustand":"^5.0.5","react-dom":"^19.2.0","idb-keyval":"^6.2.2","@iarna/toml":"^2.2.5","tailwindcss":"^4.1.8","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@tailwindcss/vite":"^4.1.8","@dnd-kit/utilities":"^3.2.2","@modelcontextprotocol/sdk":"^1.26.0","@modelcontextprotocol/ext-apps":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ls":"^0.2.1","npm":"^11.10.0","vite":"^6.4.1","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.16","globals":"^16.5.0","happy-dom":"^20.0.11","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.4","@types/react":"^19.2.5","@types/js-yaml":"^4.0.9","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitest/coverage-v8":"^4.0.16","@vitejs/plugin-react":"^4.7.0","vite-plugin-singlefile":"^2.3.0","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/ohmyposh-configurator_1.1.0_1785718861584_0.3288575797199156","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"ohmyposh-configurator","version":"1.1.1","type":"module","mcpName":"io.github.jamesmontemagno/ohmyposh-configurator","repository":{"type":"git","url":"git+https://github.com/jamesmontemagno/ohmyposh-configurator.git"},"bin":{"ohmyposh-mcp":"dist/mcp/index.js"},"scripts":{"dev":"vite","build":"tsc -b && vite build && node scripts/minify-json.js dist","build:mcp":"npm run build:mcp-apps && tsc -p mcp/tsconfig.json","build:mcp-apps":"MCP_APP=preview vite build --config mcp/vite.apps.config.ts && MCP_APP=segments vite build --config mcp/vite.apps.config.ts","mcp":"npm run build:mcp && node dist/mcp/index.js","minify":"node scripts/minify-json.js public","format:json":"node scripts/format-json.js public","lint":"eslint .","preview":"vite preview","segments:sync:upstream":"node scripts/segment-upstream-sync.mjs","validate":"node scripts/validate-configs.js && node scripts/validate-icons.js","validate-icons":"node scripts/validate-icons.js","validate-studio":"node scripts/validate-studio-assets.mjs","generate-font-subset":"node scripts/generate-font-subset.js","generate:official-themes":"node scripts/fetch-official-themes.mjs","generate:theme-previews":"node scripts/generate-theme-previews.mjs","prepare":"husky","test":"vitest","test:run":"vitest run","test:coverage":"vitest run --coverage"},"dependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@iarna/toml":"^2.2.5","@modelcontextprotocol/ext-apps":"^1.0.1","@modelcontextprotocol/sdk":"^1.26.0","@tailwindcss/vite":"^4.1.8","idb-keyval":"^6.2.2","js-yaml":"^4.1.0","react":"^19.2.0","react-dom":"^19.2.0","tailwindcss":"^4.1.8","zustand":"^5.0.5"},"devDependencies":{"@eslint/js":"^9.39.1","@types/js-yaml":"^4.0.9","@types/node":"^24.10.4","@types/react":"^19.2.5","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^4.7.0","@vitest/coverage-v8":"^4.0.16","eslint":"^9.39.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24","globals":"^16.5.0","happy-dom":"^20.0.11","husky":"^9.1.7","ls":"^0.2.1","npm":"^11.10.0","typescript":"~5.9.3","typescript-eslint":"^8.46.4","vite":"^6.4.1","vite-plugin-singlefile":"^2.3.0","vitest":"^4.0.16"},"gitHead":"b691706204b332cce43d2314a46592c43f7de347","_id":"ohmyposh-configurator@1.1.1","description":"<div align=\"center\">","bugs":{"url":"https://github.com/jamesmontemagno/ohmyposh-configurator/issues"},"homepage":"https://github.com/jamesmontemagno/ohmyposh-configurator#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-PXgEmVFyo1cMFk5EY6FLpdCxLgIa1IQYZZcML2FIjrQ9CJislgeA7QRz17For0bFwe4rK+fWKOFeQ6Pw54P93Q==","shasum":"4f7ff20268b63579c0a4eac84f9cc5b2ad60ed4e","tarball":"https://registry.npmjs.org/ohmyposh-configurator/-/ohmyposh-configurator-1.1.1.tgz","fileCount":557,"unpackedSize":45466813,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ohmyposh-configurator@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDiKYwEW9RaNGvC7vK/MAudGRmYP6Cx2/75esTjSjxVnAiEAxUKRuP2OXNcidFnYEb5s4m6E/5anRz9UtZJBzhQGDws="}]},"_npmUser":{"name":"jamesmontemagno","email":"james.montemagno@gmail.com"},"directories":{},"maintainers":[{"name":"jamesmontemagno","email":"james.montemagno@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ohmyposh-configurator_1.1.1_1785798023191_0.18434339880068462"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-14T01:27:29.008Z","modified":"2026-08-03T23:00:23.758Z","1.0.0":"2026-02-14T01:27:29.305Z","1.1.0":"2026-08-03T01:01:02.007Z","1.1.1":"2026-08-03T23:00:23.486Z"},"bugs":{"url":"https://github.com/jamesmontemagno/ohmyposh-configurator/issues"},"homepage":"https://github.com/jamesmontemagno/ohmyposh-configurator#readme","repository":{"type":"git","url":"git+https://github.com/jamesmontemagno/ohmyposh-configurator.git"},"description":"<div align=\"center\">","maintainers":[{"name":"jamesmontemagno","email":"james.montemagno@gmail.com"}],"readme":"# Oh My Posh Visual Configurator ✨\n\n<div align=\"center\">\n\n![Oh My Posh Configurator](https://img.shields.io/badge/Oh%20My%20Posh-Visual%20Configurator-e94560?style=for-the-badge)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge)](LICENSE)\n[![Live Demo](https://img.shields.io/badge/demo-live-success?style=for-the-badge)](https://configurator.ohmyposh.dev/)\n\n**Design beautiful terminal prompts without touching configuration files**\n\n[🚀 Launch App](https://configurator.ohmyposh.dev/) • [📖 Documentation](https://ohmyposh.dev/docs/) • [💬 Discussions](https://github.com/jamesmontemagno/ohmyposh-configurator/discussions)\n\n![Oh My Posh Visual Configurator](blogs/images/main-interface.png)\n\n</div>\n\n---\n\n## 🎯 What is Oh My Posh Configurator?\n\nThe **Oh My Posh Visual Configurator** is a modern, intuitive web application that lets you design and customize your terminal prompt visually. No more manual JSON editing or trial-and-error configuration—just drag, drop, customize, and export!\n\nPerfect for developers, DevOps engineers, and anyone who wants a beautiful, informative terminal prompt for PowerShell, Bash, Zsh, Fish, or any shell supported by [Oh My Posh](https://ohmyposh.dev/).\n\n## ✨ Features\n\n- 🎨 **103+ Segments**: Browse comprehensive segment library organized in 8 categories with detailed properties and options\n- 🖱️ **Drag & Drop Interface**: Intuitive visual editor with real-time updates\n- ⚡ **Live Preview**: See your prompt instantly with sample data and powerline/diamond styles\n- 🎛️ **Full Customization**: Configure colors, templates, styles, and alignment with inline documentation\n- 🚀 **Progressive Disclosure**: Advanced features hidden by default with settings dialog to show/hide complexity as needed\n- 🎯 **Smart Defaults**: Auto-applied cache settings, intelligent feature detection on import\n- 💡 **Command Tooltips**: Configure command-triggered custom prompts (e.g., show git status when typing `git`)\n- 📚 **Segment Documentation**: Built-in properties and options reference for every segment\n- 📦 **Import & Export**: Support for JSON, YAML, and TOML formats\n- 💾 **Auto-Save**: Never lose your work with automatic browser storage\n- 🎯 **Sample Configs**: Start quickly with 6 pre-built professional templates\n- 👥 **Community Themes**: Browse and share community-contributed configurations\n- 🤝 **Easy Sharing**: Submit your own themes via GitHub PR with built-in tools\n- 🌐 **100% Client-Side**: Your configurations never leave your browser\n- 📱 **Responsive Design**: Works on desktop, tablet, and mobile devices\n- 🎨 **Smart Color Schemes**: Category-based default colors for quick setup\n- 🤖 **MCP Server**: Use AI assistants like Claude to create and manage configurations through natural language ([Learn more](docs/MCP_SERVER.md))\n\n## 🗂️ Segment Categories\n\n- **System**: Path, OS, Shell, Session, Battery, Time, Execution Time, Status, and more\n- **Version Control**: Git, Mercurial, SVN, Fossil, Plastic SCM, Sapling, Jujutsu\n- **Languages**: Node.js, Python, Go, Rust, Java, .NET, PHP, Ruby, Swift, and 20+ more\n- **Cloud & Infrastructure**: AWS, Azure, GCP, Kubernetes, Terraform, Docker, Pulumi\n- **CLI Tools**: NPM, Yarn, PNPM, Angular, React, Flutter, and many more\n- **Web**: IP Address, Weather, HTTP requests\n- **Music**: Spotify, YouTube Music, Last.fm\n- **Health**: Nightscout, Strava, Withings\n\n## 🚀 Getting Started\n\n### 🌐 Use Online (Recommended)\n\nNo installation required! Visit the hosted version:\n\n**👉 [https://configurator.ohmyposh.dev/](https://configurator.ohmyposh.dev/)**\n\n### 💻 Local Development\n\n```bash\n# Clone the repository\ngit clone https://github.com/jamesmontemagno/ohmyposh-configurator.git\ncd ohmyposh-configurator\n\n# Install dependencies\nnpm install\n\n# Start development server\nnpm run dev\n\n# Build for production (includes JSON minification)\nnpm run build\n\n# Preview production build locally\nnpm run preview\n```\n\n### 🔧 Development Scripts\n\n- `npm run dev`: Start Vite development server\n- `npm run build`: Build for production and minify all JSON assets\n- `npm run build:mcp`: Build the MCP server\n- `npm run mcp`: Run the MCP server\n- `npm run preview`: Serve the production build from `dist/`\n- `npm run minify`: Manually minify JSON files in the `public/` directory\n- `npm run format:json`: Expand/format JSON files in `public/` for easier editing\n- `npm run validate`: Validate all configuration files and manifests\n- `npm run lint`: Run ESLint check\n- `npm run test`: Run tests\n\n## 🤖 MCP Server (AI-Powered Configuration)\n\nWant to create Oh My Posh configurations using natural language with AI assistants? The Oh My Posh Configurator includes a Model Context Protocol (MCP) server that works with **VS Code** and **GitHub Copilot**.\n\n[![Install in VS Code](https://img.shields.io/badge/Install_in-VS_Code-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect/mcp/install?name=ohmyposh-configurator&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22ohmyposh-configurator%22%5D%2C%22env%22%3A%7B%7D%7D)\n[![Install in VS Code Insiders](https://img.shields.io/badge/Install_in-VS_Code_Insiders-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=ohmyposh-configurator&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22ohmyposh-configurator%22%5D%2C%22env%22%3A%7B%7D%7D&quality=insiders)\n[![Install in Visual Studio](https://img.shields.io/badge/Install_in-Visual_Studio-C16FDE?style=flat-square&logo=visualstudio&logoColor=white)](https://vs-open.link/mcp-install?%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22ohmyposh-configurator%22%5D%2C%22env%22%3A%7B%7D%7D)\n\n**Quick Setup for VS Code:**\n\n1. Add to your workspace `.vscode/mcp.json`:\n   ```json\n   {\n     \"servers\": {\n       \"ohmyposh-configurator\": {\n         \"type\": \"stdio\",\n         \"command\": \"node\",\n         \"args\": [\"/path/to/ohmyposh-configurator/dist/mcp/index.js\"]\n       }\n     }\n   }\n   ```\n\n2. Build the MCP server:\n   ```bash\n   npm run build:mcp\n   ```\n\n3. Open GitHub Copilot Chat in VS Code and start creating prompts with AI!\n\n**Example Requests:**\n- \"Create me a developer prompt with git and Python\"\n- \"Add caching to all language segments\"\n- \"Apply the Dracula color theme\"\n- \"Help optimize my slow prompt\"\n\n📖 **[Full MCP Server Documentation](docs/MCP_SERVER.md)**\n\n## 📖 Usage\n\n### Quick Start Guide\n\n1. **🎯 Choose a Starting Point**\n   - Start from scratch, or\n   - Load a sample configuration, or\n   - Browse community themes, or\n   - Import your existing Oh My Posh config\n\n2. **➕ Add Segments**\n   - Browse categories in the left sidebar\n   - Click segments to add them to your prompt\n   - Or drag them directly to desired positions\n\n3. **🎨 Customize**\n   - Click any segment to edit properties\n   - Adjust colors, styles, and templates\n   - Configure powerline, diamond, or plain styles\n\n4. **👀 Preview**\n   - See changes instantly in the preview panel\n   - Toggle between dark and light backgrounds\n   - View powerline arrows and diamond shapes\n\n5. **💾 Export or Share**\n   - Choose your format: JSON, YAML, or TOML\n   - Download and use with Oh My Posh\n   - Or share your creation with the community!\n\n## 🤝 Contributing Your Theme\n\nLove your configuration? Share it with the community!\n\n1. Click the **\"Share\"** button in the header\n2. Fill in your theme details (name, description, author, tags)\n3. Select **\"Open Submission Issue\"** and submit the prefilled GitHub issue\n4. A maintainer reviews your theme and automatically generates a draft pull request when approved\n5. See your theme in the Community collection!\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed instructions.\n\n### 🔧 Using Your Configuration\n\nAfter downloading your configuration file, follow the [Oh My Posh installation guide](https://ohmyposh.dev/docs/installation/customize) to use it with your shell:\n\n```bash\n# PowerShell\noh-my-posh init pwsh --config ~/your-theme.json | Invoke-Expression\n\n# Bash\neval \"$(oh-my-posh init bash --config ~/your-theme.json)\"\n\n# Zsh\neval \"$(oh-my-posh init zsh --config ~/your-theme.json)\"\n```\n\n## 🛠️ Technology Stack\n\n- **⚛️ Framework**: React 19 with TypeScript\n- **⚡ Build Tool**: Vite 6.4\n- **🎨 Styling**: Tailwind CSS 4.1\n- **🖱️ Drag & Drop**: @dnd-kit (sortable lists and cross-container support)\n- **💾 State Management**: Zustand with localStorage persistence\n- **🎯 Icons**: Custom Nerd Font icon library (200+ icons) with unique IDs\n- **📝 Config Parsing**: js-yaml, @iarna/toml\n- **📦 Data Loading**: Dynamic JSON-based lazy loading with request-deduplication and caching\n\n## ⚡ Performance & Optimization\n\n- **JSON Minification**: All JSON metadata and configuration files are automatically minified during the production build to reduce payload size.\n- **Smart Caching**: The application implements a request-deduplication and caching layer for all JSON assets. Each file is fetched exactly once, even if requested by multiple components simultaneously.\n- **Lazy Loading**: Segment metadata is loaded on-demand by category, keeping the initial bundle size small.\n\n## 🏗️ Project Structure\n\n```\n├── public/\n│   ├── configs/          # Sample and community configurations\n│   │   ├── samples/      # 6 pre-built professional templates\n│   │   │   └── manifest.json  # Sample configs metadata\n│   │   └── community/    # User-contributed themes\n│   │       └── manifest.json  # Community configs metadata\n│   └── segments/         # Segment metadata organized by category (103+ segments)\n│       ├── system.json   # 14 system segments (path, battery, time, etc.)\n│       ├── scm.json      # 8 version control segments (git, svn, etc.)\n│       ├── languages.json # 26 programming language segments\n│       ├── cloud.json    # 12 cloud provider segments\n│       ├── cli.json      # 30 CLI tool segments\n│       ├── web.json      # 7 web-related segments\n│       ├── music.json    # 3 music player segments\n│       ├── health.json   # 3 health tracker segments\n│       └── README.md     # Documentation for adding segments\n├── src/\n│   ├── components/       # React components\n│   │   ├── Canvas/       # Drag-and-drop prompt builder with tooltips support\n│   │   ├── SegmentPicker/ # Category browser with segments\n│   │   ├── PropertiesPanel/ # Segment, block, tooltip, and global properties editor\n│   │   ├── PreviewPanel/ # Live prompt preview with tooltip previews\n│   │   ├── AdvancedSettingsDialog/ # Progressive disclosure settings for advanced features\n│   │   ├── ExtraPromptsDialog/ # Secondary prompts configuration\n│   │   ├── ConfirmDialog/ # Reusable confirmation dialog\n│   │   └── ...\n│   ├── data/            # Configuration data and color schemes\n│   ├── store/           # Zustand state management with persistence\n│   │   ├── configStore.ts  # Main config state (blocks, segments, tooltips, global settings)\n│   │   └── advancedFeaturesStore.ts  # Feature toggles for progressive disclosure\n│   ├── types/           # TypeScript type definitions (SegmentMetadata, Tooltip, etc.)\n│   ├── utils/           # Utility functions\n│   │   ├── segmentLoader.ts  # Dynamic segment loading with caching\n│   │   ├── configExporter.ts # Export to JSON/YAML/TOML\n│   │   ├── configImporter.ts # Import with auto-feature detection\n│   │   └── unicode.ts   # Unicode escape handling\n│   ├── constants/       # Nerd Font icons and other constants\n│   └── hooks/           # Custom React hooks (useConfirm, etc.)\n├── docs/                # Comprehensive documentation\n│   ├── config-migration-guide.md  # Guide for config structure updates\n│   ├── segment-json-migration.md  # Segment refactoring documentation\n│   ├── quick-reference.md         # Quick reference for contributors\n│   └── nerd-font-icons-reference.md # 200+ icon documentation\n└── scripts/             # Build and validation scripts\n    ├── validate-configs.js        # Config validation tool\n    └── README.md                  # Scripts documentation\n```\n\n### Adding New Segments\n\nSegments are now stored in separate JSON files by category in `public/segments/`. This makes it easy to add or modify segments without touching the codebase:\n\n1. Open the appropriate category file (e.g., `public/segments/languages.json`)\n2. Add your segment with the following structure:\n   ```json\n   {\n     \"type\": \"segment-type\",\n     \"name\": \"Display Name\",\n     \"description\": \"Brief description\",\n     \"icon\": \"lang-python\",\n     \"defaultTemplate\": \" {{ .Property }} \",\n     \"properties\": [\n       {\n         \"name\": \".Property\",\n         \"type\": \"string\",\n         \"description\": \"Description of this template variable\"\n       }\n     ],\n     \"options\": [\n       {\n         \"name\": \"option_name\",\n         \"type\": \"boolean\",\n         \"default\": true,\n         \"description\": \"What this option does\"\n       }\n     ],\n     \"defaultCache\": {\n       \"duration\": \"168h\",\n       \"strategy\": \"folder\"\n     }\n   }\n   ```\n3. **Properties** are template variables available in `{{ }}` templates (e.g., `.Full`, `.Path`)\n4. **Options** are segment configuration settings (e.g., `home_enabled`, `fetch_version`)\n5. **defaultCache** (optional) provides recommended caching for performance (see Cache Strategy Guide in `public/segments/README.md`)\n6. Segments are loaded dynamically on demand for better performance\n7. Colors are applied automatically from category-based color schemes\n\nSee [public/segments/README.md](public/segments/README.md) for detailed instructions.\n\n## 🔍 SEO & Sharing\n\nThis project includes comprehensive SEO optimization:\n- ✅ Structured data (JSON-LD) for search engines\n- ✅ Open Graph tags for rich social media previews\n- ✅ Twitter Card support\n- ✅ PWA manifest for \"Add to Home Screen\"\n- ✅ Sitemap and robots.txt\n- ✅ Semantic HTML with proper meta tags\n\n## 🌟 Keywords\n\n`oh my posh`, `terminal customization`, `shell prompt`, `powerline`, `prompt theme`, `terminal theme`, `powershell prompt`, `zsh theme`, `bash prompt`, `terminal configurator`, `visual editor`, `drag and drop`, `oh-my-posh builder`, `prompt generator`\n\n## 📚 Documentation\n\n### User Documentation\n- [Oh My Posh Documentation](https://ohmyposh.dev/docs/)\n- [Configuration Overview](https://ohmyposh.dev/docs/configuration/overview)\n- [Segment Reference](https://ohmyposh.dev/docs/configuration/segment)\n- [Template Syntax](https://ohmyposh.dev/docs/configuration/templates)\n\n### Developer Documentation\n- [CONTRIBUTING.md](CONTRIBUTING.md) - How to contribute themes and code\n- [docs/architecture.md](docs/architecture.md) - Complete architecture and technical overview\n- [docs/quick-reference.md](docs/quick-reference.md) - Quick reference for config structure\n- [docs/config-migration-guide.md](docs/config-migration-guide.md) - Migrate old config format\n- [docs/segment-json-migration.md](docs/segment-json-migration.md) - Segment refactoring details\n- [docs/nerd-font-icons-reference.md](docs/nerd-font-icons-reference.md) - 200+ Nerd Font icons\n- [docs/config-structure-update-summary.md](docs/config-structure-update-summary.md) - Config structure changes\n- [public/segments/README.md](public/segments/README.md) - How to add new segments\n- [scripts/README.md](scripts/README.md) - Validation scripts documentation\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nThis project is open source and available under the [MIT License](LICENSE).\n\n## Acknowledgments\n\n- [Oh My Posh](https://github.com/JanDeDobbeleer/oh-my-posh) by Jan De Dobbeleer\n- All the Oh My Posh contributors and community\n","readmeFilename":"README.md"}