@pinkpixel/promptzy 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +108 -0
- package/LICENSE +21 -0
- package/README.md +187 -0
- package/bin/promptzy.js +79 -0
- package/dist/_headers +23 -0
- package/dist/_routes.json +18 -0
- package/dist/assets/browser-CtsaYQuQ.js +1 -0
- package/dist/assets/index-CAWOSBxH.js +265 -0
- package/dist/assets/index-DSwd6DbH.css +1 -0
- package/dist/favicon.png +0 -0
- package/dist/icon.png +0 -0
- package/dist/index.html +25 -0
- package/dist/robots.txt +14 -0
- package/package.json +128 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Promptzy will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [1.2.0] - 2025-05-26
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **🎯 Rebranded to Promptzy:** Complete rebrand from "AI Prompt Dashboard" to "Promptzy"
|
|
14
|
+
- **✨ New Cute Logo:** Added adorable mascot-style logo for better brand recognition
|
|
15
|
+
- **🚀 Enhanced CLI:** Primary CLI command is now `promptzy` (legacy commands still work)
|
|
16
|
+
- **📦 New Package Name:** Published as `@pinkpixel/promptzy` on npm
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Updated all documentation to reflect Promptzy branding
|
|
20
|
+
- Enhanced package.json with new repository URLs and package name
|
|
21
|
+
- Improved CLI banner with Promptzy branding
|
|
22
|
+
- Updated README with new installation instructions
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- All references to old package name updated
|
|
26
|
+
- Repository URLs updated to new GitHub location
|
|
27
|
+
|
|
28
|
+
## [1.1.0] - 2025-05-26
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
- System prompt configuration for the AI Assistant
|
|
32
|
+
- Option to use default or custom system prompt in settings
|
|
33
|
+
- Enhanced Supabase integration with user-configurable credentials
|
|
34
|
+
- Better connection testing and error handling for Supabase
|
|
35
|
+
- Comprehensive manual table setup guide with SQL code
|
|
36
|
+
- Direct link to Supabase SQL Editor based on project URL
|
|
37
|
+
- Step-by-step instructions for database setup
|
|
38
|
+
- Copy-to-clipboard functionality for SQL setup code
|
|
39
|
+
- Automatic synchronization when switching storage types
|
|
40
|
+
- Integration with vector embeddings search
|
|
41
|
+
- Workspace context in prompts
|
|
42
|
+
- Delete confirmation dialog for prompt deletions, with "Don't show this again" option
|
|
43
|
+
- Cloudflare Pages deployment configuration with wrangler.toml
|
|
44
|
+
- GitHub Actions workflow for automated deployment
|
|
45
|
+
- Comprehensive deployment guide (DEPLOYMENT.md)
|
|
46
|
+
- SPA routing configuration for Cloudflare Pages with _routes.json
|
|
47
|
+
- Improved bidirectional sync between local storage and Supabase
|
|
48
|
+
- Better logging for troubleshooting sync issues
|
|
49
|
+
- Detailed documentation on synchronization behavior in README
|
|
50
|
+
- Updated OVERVIEW.md with latest project information and deployment details
|
|
51
|
+
- Browser refresh notification for new Supabase connections
|
|
52
|
+
- Enhanced AI system prompt with detailed category-specific guidelines
|
|
53
|
+
- Auto-update mechanism for outdated AI system prompts in settings
|
|
54
|
+
- Global CLI installation support with `prompt-dashboard` and `ai-prompt-dashboard` commands
|
|
55
|
+
- Beautiful ASCII banner and colored output for CLI
|
|
56
|
+
- NPX support for running without installation
|
|
57
|
+
|
|
58
|
+
### Changed
|
|
59
|
+
- Improved Supabase client to dynamically use user-provided credentials
|
|
60
|
+
- More robust error handling for cloud storage operations
|
|
61
|
+
- Better fallback to local storage when cloud operations fail
|
|
62
|
+
- Enhanced feedback during connection testing and table setup
|
|
63
|
+
- Updated table creation flow to focus on manual setup via SQL Editor
|
|
64
|
+
- Prompt card list switched from CSS grid to responsive Masonry-style flex columns to isolate vertical expansion
|
|
65
|
+
- Updated _routes.json to properly handle SPA routing in Cloudflare Pages
|
|
66
|
+
- Enhanced storage type persistence between sessions
|
|
67
|
+
- Improved authentication detection for anonymous Supabase usage
|
|
68
|
+
- Verified Cloudflare Pages deployment configuration with proper SPA routing
|
|
69
|
+
- "Test Connection" button renamed to "Connect" for better UX
|
|
70
|
+
- AI system prompt completely rewritten for better prompt generation quality
|
|
71
|
+
- Removed non-functional "Create Table" button and improved manual setup flow
|
|
72
|
+
|
|
73
|
+
### Fixed
|
|
74
|
+
- Table access error handling for Supabase environments
|
|
75
|
+
- Permissions issues with automatic table creation
|
|
76
|
+
- `.btn-hover-effect` overlay no longer blocks pointer events on card controls
|
|
77
|
+
- Expand/collapse toggle now only affects individual cards, not all cards
|
|
78
|
+
- Cloudflare Pages SPA routing issues by adding proper "serve" configuration
|
|
79
|
+
- Storage preference not persisting between page reloads
|
|
80
|
+
- Supabase synchronization not working correctly between devices
|
|
81
|
+
- Fixed bugs in prompt import/export between storage types
|
|
82
|
+
- Improved handling of Supabase connection failures
|
|
83
|
+
- User-specific data filtering to prevent mixing prompts between users
|
|
84
|
+
- Misleading "Create Table" button that couldn't actually create tables
|
|
85
|
+
- Better error handling and messaging for Supabase connection failures
|
|
86
|
+
- Automatic update of outdated AI system prompts for existing users
|
|
87
|
+
|
|
88
|
+
## [0.1.0] - 2025-05-19
|
|
89
|
+
|
|
90
|
+
### Added
|
|
91
|
+
- Initial release of the Prompt Dashboard
|
|
92
|
+
- Create, edit, and delete AI prompts
|
|
93
|
+
- Organize prompts with custom tags
|
|
94
|
+
- Search functionality with text and tag filtering
|
|
95
|
+
- Dual storage options (local and Supabase)
|
|
96
|
+
- AI Assistant for generating prompt ideas
|
|
97
|
+
- User authentication with Supabase
|
|
98
|
+
- Responsive UI with Shadcn/UI components and Tailwind CSS
|
|
99
|
+
|
|
100
|
+
### Changed
|
|
101
|
+
- Enhanced UI with improved styling
|
|
102
|
+
- Icon-based send button
|
|
103
|
+
- Automatic API key configuration
|
|
104
|
+
|
|
105
|
+
### Fixed
|
|
106
|
+
- Storage synchronization issues
|
|
107
|
+
- Tag management bugs
|
|
108
|
+
- Form validation errors
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Pink Pixel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# ✨ Promptzy 🎯
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="./public/promptzy-logo.png" alt="Promptzy Logo" width="200" />
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
**Promptzy** - A modern, cute web application for managing and organizing your AI prompts, with tagging, search, and cloud storage.
|
|
8
|
+
|
|
9
|
+
<div align="center">
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+

|
|
13
|
+

|
|
14
|
+

|
|
15
|
+

|
|
16
|
+

|
|
17
|
+

|
|
18
|
+

|
|
19
|
+

|
|
20
|
+

|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
## ✨ Features
|
|
26
|
+
|
|
27
|
+
- **Organize AI Prompts**: Store, edit, and categorize prompts for various AI models
|
|
28
|
+
- **Custom Tagging**: Organize prompts with custom tags for easy retrieval
|
|
29
|
+
- **Powerful Search**: Find the perfect prompt with full-text search and tag filtering
|
|
30
|
+
- **Dual Storage**:
|
|
31
|
+
- Store prompts locally in your browser
|
|
32
|
+
- Cloud sync with Supabase for cross-device access
|
|
33
|
+
- Optional hybrid mode to sync between both
|
|
34
|
+
- **AI Assistant**: Generate new prompt ideas with AI help
|
|
35
|
+
- **Modern UI**: Clean, responsive interface built with Shadcn/UI and Tailwind
|
|
36
|
+
|
|
37
|
+
## 🖥️ Screenshots
|
|
38
|
+
|
|
39
|
+
*Coming soon*
|
|
40
|
+
|
|
41
|
+
## 🛠️ Installation
|
|
42
|
+
|
|
43
|
+
### Quick Start (Global Installation)
|
|
44
|
+
|
|
45
|
+
Install globally from npm and run with a single command:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Install globally
|
|
49
|
+
npm install -g @pinkpixel/promptzy
|
|
50
|
+
|
|
51
|
+
# Run Promptzy
|
|
52
|
+
promptzy
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Promptzy will start on `http://localhost:4173` and open automatically in your browser!
|
|
56
|
+
|
|
57
|
+
**Alternative commands:**
|
|
58
|
+
```bash
|
|
59
|
+
# Legacy commands still work
|
|
60
|
+
prompt-dashboard
|
|
61
|
+
ai-prompt-dashboard
|
|
62
|
+
|
|
63
|
+
# Or run directly with npx (no installation needed)
|
|
64
|
+
npx @pinkpixel/promptzy
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Local Development
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Clone the repository
|
|
71
|
+
git clone https://github.com/pinkpixel-dev/promptzy.git
|
|
72
|
+
|
|
73
|
+
# Navigate to the project directory
|
|
74
|
+
cd promptzy
|
|
75
|
+
|
|
76
|
+
# Install dependencies (choose one)
|
|
77
|
+
npm install
|
|
78
|
+
# or
|
|
79
|
+
bun install
|
|
80
|
+
# or
|
|
81
|
+
yarn install
|
|
82
|
+
|
|
83
|
+
# Start the development server
|
|
84
|
+
npm run dev
|
|
85
|
+
# or
|
|
86
|
+
bun run dev
|
|
87
|
+
# or
|
|
88
|
+
yarn dev
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Deployment
|
|
92
|
+
|
|
93
|
+
For deploying to Cloudflare Pages or other platforms, see the [DEPLOYMENT.md](DEPLOYMENT.md) guide.
|
|
94
|
+
|
|
95
|
+
## 🔧 Configuration
|
|
96
|
+
|
|
97
|
+
### Local Storage
|
|
98
|
+
|
|
99
|
+
By default, the application uses browser localStorage - no configuration needed!
|
|
100
|
+
|
|
101
|
+
### Supabase Configuration
|
|
102
|
+
|
|
103
|
+
To use cloud storage features:
|
|
104
|
+
|
|
105
|
+
1. Create a Supabase account and project at [supabase.com](https://supabase.com)
|
|
106
|
+
2. Configure your Supabase credentials:
|
|
107
|
+
|
|
108
|
+
- Open Promptzy
|
|
109
|
+
- Go to Settings (gear icon)
|
|
110
|
+
- Select "Supabase" as your storage option
|
|
111
|
+
- Enter your Supabase Project URL and API Key
|
|
112
|
+
- Find these in your Supabase dashboard under Project Settings → API
|
|
113
|
+
- Click "Connect" to verify your credentials
|
|
114
|
+
3. Create the required database table:
|
|
115
|
+
|
|
116
|
+
- After connecting, you'll need to set up the prompts table manually
|
|
117
|
+
- Click the "Open SQL Editor" button in the settings
|
|
118
|
+
- Copy the SQL code provided in the settings (or use the SQL from `supabase-setup.sql`)
|
|
119
|
+
- Paste and run it in the Supabase SQL Editor
|
|
120
|
+
4. Return to Promptzy and click "Connect" again to verify the table setup
|
|
121
|
+
5. Save your settings
|
|
122
|
+
|
|
123
|
+
**Note:** Automatic table creation isn't supported by Supabase for security reasons, so this one-time manual setup is required.
|
|
124
|
+
|
|
125
|
+
The application will now use your Supabase instance for cloud storage!
|
|
126
|
+
|
|
127
|
+
#### Synchronization Details
|
|
128
|
+
|
|
129
|
+
When using the "Both" storage option:
|
|
130
|
+
|
|
131
|
+
- New prompts are saved to both local storage and Supabase
|
|
132
|
+
- When you open the application, it will:
|
|
133
|
+
1. Load local prompts first
|
|
134
|
+
2. Fetch prompts from Supabase
|
|
135
|
+
3. Merge them, preferring Supabase versions for duplicate IDs
|
|
136
|
+
4. Sync any unique local prompts to Supabase
|
|
137
|
+
5. Save any unique Supabase prompts to local storage
|
|
138
|
+
|
|
139
|
+
This bidirectional sync ensures your prompts are available across devices and you always have a local backup.
|
|
140
|
+
|
|
141
|
+
> **Note:** Cloud sync requires opening the application with the same Supabase configuration on all devices. Your storage preference is saved in your browser's localStorage.
|
|
142
|
+
|
|
143
|
+
## 📖 Usage
|
|
144
|
+
|
|
145
|
+
1. Launch the application
|
|
146
|
+
2. Choose your storage preference (local, Supabase, or both)
|
|
147
|
+
3. Add prompts with the "+" button
|
|
148
|
+
4. Assign tags to organize your prompts
|
|
149
|
+
5. Use the search box and tag filters to find prompts
|
|
150
|
+
6. Select a prompt to copy it or edit its details
|
|
151
|
+
|
|
152
|
+
## 🧩 Tech Stack
|
|
153
|
+
|
|
154
|
+
- React 18.3 with TypeScript
|
|
155
|
+
- Vite for fast builds
|
|
156
|
+
- Tailwind CSS
|
|
157
|
+
- Shadcn/UI components
|
|
158
|
+
- TanStack Query
|
|
159
|
+
- React Hook Form with Zod
|
|
160
|
+
- Supabase for auth and storage
|
|
161
|
+
- Cloudflare Pages for deployment
|
|
162
|
+
|
|
163
|
+
## 📋 Roadmap
|
|
164
|
+
|
|
165
|
+
- [ ] Prompt version history
|
|
166
|
+
- [ ] AI prompt templates
|
|
167
|
+
- [ ] Shared prompt libraries
|
|
168
|
+
- [ ] Additional storage backends
|
|
169
|
+
- [ ] Advanced tagging with hierarchies
|
|
170
|
+
|
|
171
|
+
## 🤝 Contributing
|
|
172
|
+
|
|
173
|
+
Contributions are welcome! See the [CONTRIBUTING.md](CONTRIBUTING.md) file for details.
|
|
174
|
+
|
|
175
|
+
## 📜 License
|
|
176
|
+
|
|
177
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
178
|
+
|
|
179
|
+
## 🙏 Acknowledgments
|
|
180
|
+
|
|
181
|
+
- [Shadcn/UI](https://ui.shadcn.com/) for the beautiful UI components
|
|
182
|
+
- [Tailwind CSS](https://tailwindcss.com/) for styling
|
|
183
|
+
- [Supabase](https://supabase.com/) for authentication and cloud storage
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
Made with ❤️ by [Pink Pixel](https://pinkpixel.dev)
|
package/bin/promptzy.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { spawn } from 'child_process';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import { dirname, join } from 'path';
|
|
6
|
+
import { existsSync } from 'fs';
|
|
7
|
+
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
10
|
+
|
|
11
|
+
// ASCII Art Banner
|
|
12
|
+
const banner = `
|
|
13
|
+
\x1b[35m╔═══════════════════════════════════════════════════════════════╗\x1b[0m
|
|
14
|
+
\x1b[35m║\x1b[0m \x1b[36m✨ Promptzy\x1b[0m \x1b[35m║\x1b[0m
|
|
15
|
+
\x1b[35m║\x1b[0m \x1b[32mManage and organize your AI prompts with style!\x1b[0m \x1b[35m║\x1b[0m
|
|
16
|
+
\x1b[35m║\x1b[0m \x1b[35m║\x1b[0m
|
|
17
|
+
\x1b[35m║\x1b[0m \x1b[33mMade with ❤️ by Pink Pixel\x1b[0m \x1b[35m║\x1b[0m
|
|
18
|
+
\x1b[35m╚═══════════════════════════════════════════════════════════════╝\x1b[0m
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
console.log(banner);
|
|
22
|
+
|
|
23
|
+
// Find the package root directory
|
|
24
|
+
const packageRoot = join(__dirname, '..');
|
|
25
|
+
|
|
26
|
+
// Check if we're in development or installed globally
|
|
27
|
+
const distPath = join(packageRoot, 'dist');
|
|
28
|
+
const isBuilt = existsSync(distPath);
|
|
29
|
+
|
|
30
|
+
if (!isBuilt) {
|
|
31
|
+
console.log('\x1b[31m❌ Error: Built files not found!\x1b[0m');
|
|
32
|
+
console.log('\x1b[33m💡 This package needs to be built before running.\x1b[0m');
|
|
33
|
+
console.log('\x1b[36mℹ️ If you\'re developing locally, run: npm run build\x1b[0m');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
console.log('\x1b[32m🎯 Starting Promptzy...\x1b[0m');
|
|
38
|
+
console.log('\x1b[36m📂 Serving from:\x1b[0m', distPath);
|
|
39
|
+
|
|
40
|
+
// Start the preview server
|
|
41
|
+
const vitePreview = spawn('npx', ['vite', 'preview', '--host', '0.0.0.0', '--port', '4173'], {
|
|
42
|
+
cwd: packageRoot,
|
|
43
|
+
stdio: 'inherit',
|
|
44
|
+
shell: true
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Handle process termination
|
|
48
|
+
process.on('SIGINT', () => {
|
|
49
|
+
console.log('\n\x1b[33m🛑 Shutting down Promptzy...\x1b[0m');
|
|
50
|
+
vitePreview.kill('SIGINT');
|
|
51
|
+
process.exit(0);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
process.on('SIGTERM', () => {
|
|
55
|
+
console.log('\n\x1b[33m🛑 Shutting down Promptzy...\x1b[0m');
|
|
56
|
+
vitePreview.kill('SIGTERM');
|
|
57
|
+
process.exit(0);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
vitePreview.on('error', (error) => {
|
|
61
|
+
console.error('\x1b[31m❌ Error starting server:\x1b[0m', error.message);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
vitePreview.on('close', (code) => {
|
|
66
|
+
if (code !== 0) {
|
|
67
|
+
console.log(`\x1b[31m❌ Server exited with code ${code}\x1b[0m`);
|
|
68
|
+
} else {
|
|
69
|
+
console.log('\x1b[32m✅ Promptzy stopped successfully\x1b[0m');
|
|
70
|
+
}
|
|
71
|
+
process.exit(code);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// Show startup info
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
console.log('\n\x1b[32m🎉 Promptzy is running!\x1b[0m');
|
|
77
|
+
console.log('\x1b[36m🌐 Open your browser to:\x1b[0m \x1b[4mhttp://localhost:4173\x1b[0m');
|
|
78
|
+
console.log('\x1b[33m⚡ Press Ctrl+C to stop the server\x1b[0m\n');
|
|
79
|
+
}, 2000);
|
package/dist/_headers
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Cache settings for static assets
|
|
2
|
+
/assets/*
|
|
3
|
+
Cache-Control: public, max-age=31536000, immutable
|
|
4
|
+
|
|
5
|
+
/*.png
|
|
6
|
+
Cache-Control: public, max-age=31536000, immutable
|
|
7
|
+
|
|
8
|
+
/*.svg
|
|
9
|
+
Cache-Control: public, max-age=31536000, immutable
|
|
10
|
+
|
|
11
|
+
/*.jpg
|
|
12
|
+
Cache-Control: public, max-age=31536000, immutable
|
|
13
|
+
|
|
14
|
+
/*.ico
|
|
15
|
+
Cache-Control: public, max-age=31536000, immutable
|
|
16
|
+
|
|
17
|
+
# Security headers for all pages
|
|
18
|
+
/*
|
|
19
|
+
X-Frame-Options: DENY
|
|
20
|
+
X-Content-Type-Options: nosniff
|
|
21
|
+
Referrer-Policy: strict-origin-when-cross-origin
|
|
22
|
+
Permissions-Policy: camera=(), microphone=(), geolocation=()
|
|
23
|
+
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.gpteng.co https://text.pollinations.ai; connect-src 'self' https://text.pollinations.ai https://*.supabase.co; img-src 'self' data: blob:; style-src 'self' 'unsafe-inline'; font-src 'self'; frame-src 'none'; object-src 'none';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"include": ["/*"],
|
|
4
|
+
"exclude": [
|
|
5
|
+
"/assets/*",
|
|
6
|
+
"/*.png",
|
|
7
|
+
"/*.svg",
|
|
8
|
+
"/*.jpg",
|
|
9
|
+
"/*.ico",
|
|
10
|
+
"/*.js",
|
|
11
|
+
"/*.css"
|
|
12
|
+
],
|
|
13
|
+
"serve": {
|
|
14
|
+
"/*.html": "/index.html",
|
|
15
|
+
"/": "/index.html",
|
|
16
|
+
"/*": "/index.html"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as e}from"./index-CAWOSBxH.js";var o=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")};const r=e(o),s=Object.freeze(Object.defineProperty({__proto__:null,default:r},Symbol.toStringTag,{value:"Module"}));export{s as b};
|