+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
diff --git a/license b/license
new file mode 100644
index 0000000..c4d0515
--- /dev/null
+++ b/license
@@ -0,0 +1,3 @@
+All Rights Reserved.
+
+EMAIL ME.
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..4e8e5d3
--- /dev/null
+++ b/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "sune",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "devDependencies": {
+ "vite": "7.1.*",
+ "vite-plugin-pwa": "1.0.*",
+ "vite-plugin-html": "3.2.*"
+ }
+}
diff --git a/public/.well-known/assetlinks.json b/public/.well-known/assetlinks.json
new file mode 100644
index 0000000..f4b7095
--- /dev/null
+++ b/public/.well-known/assetlinks.json
@@ -0,0 +1,12 @@
+[
+ {
+ "relation": ["delegate_permission/common.handle_all_urls"],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "com.planetrenox.sune",
+ "sha256_cert_fingerprints": [
+ "E8:7D:70:60:C2:7D:EF:CB:4D:4D:2B:E2:2E:5E:37:ED:F7:0B:1E:F5:77:D7:04:1F:6B:07:EC:B8:1D:78:6D:43"
+ ]
+ }
+ }
+]
diff --git a/public/appstore_content/screenshot1.jpg b/public/appstore_content/screenshot1.jpg
new file mode 100644
index 0000000..6c780eb
Binary files /dev/null and b/public/appstore_content/screenshot1.jpg differ
diff --git a/public/appstore_content/screenshot2.jpg b/public/appstore_content/screenshot2.jpg
new file mode 100644
index 0000000..60c8857
Binary files /dev/null and b/public/appstore_content/screenshot2.jpg differ
diff --git a/public/appstore_content/screenshot3.jpg b/public/appstore_content/screenshot3.jpg
new file mode 100644
index 0000000..1848021
Binary files /dev/null and b/public/appstore_content/screenshot3.jpg differ
diff --git a/public/appstore_content/screenshot4.jpg b/public/appstore_content/screenshot4.jpg
new file mode 100644
index 0000000..c83f713
Binary files /dev/null and b/public/appstore_content/screenshot4.jpg differ
diff --git a/public/appstore_content/screenshot5.jpg b/public/appstore_content/screenshot5.jpg
new file mode 100644
index 0000000..43d920b
Binary files /dev/null and b/public/appstore_content/screenshot5.jpg differ
diff --git a/public/appstore_content/screenshot6.jpg b/public/appstore_content/screenshot6.jpg
new file mode 100644
index 0000000..60c8857
Binary files /dev/null and b/public/appstore_content/screenshot6.jpg differ
diff --git a/public/appstore_content/screenshot_marketplace.jpg b/public/appstore_content/screenshot_marketplace.jpg
new file mode 100644
index 0000000..11b3e67
Binary files /dev/null and b/public/appstore_content/screenshot_marketplace.jpg differ
diff --git a/public/appstore_content/screenshot_miku.png b/public/appstore_content/screenshot_miku.png
new file mode 100644
index 0000000..712729e
Binary files /dev/null and b/public/appstore_content/screenshot_miku.png differ
diff --git a/public/appstore_content/✺.png b/public/appstore_content/✺.png
new file mode 100644
index 0000000..1c567c7
Binary files /dev/null and b/public/appstore_content/✺.png differ
diff --git a/public/✺.avif b/public/✺.avif
new file mode 100644
index 0000000..2ea3f33
Binary files /dev/null and b/public/✺.avif differ
diff --git a/public/✺.png b/public/✺.png
new file mode 100644
index 0000000..4655641
Binary files /dev/null and b/public/✺.png differ
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..7346719
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,23 @@
+> It's mostly a single index.html
+
+
+
+> Each sune is like a module. You can have many. And share them.
+
+
+
+
+
+💠 New!
+
+> You can have scripts which run on the page of each sune — either to function call or extend functionality of the app or sune.
+
+
+
+> There are some bugs.
+
+
+
+> There is a marketplace.
+
+
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 0000000..d462011
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,41 @@
+import { defineConfig } from 'vite'
+import { VitePWA } from 'vite-plugin-pwa'
+import { createHtmlPlugin } from 'vite-plugin-html'
+
+export default defineConfig({
+ build:{ minify:false },
+ plugins:[
+ VitePWA({
+ registerType:'autoUpdate',
+ manifest:{
+ id:'https://sune.planetrenox.com/',
+ name:'Sune',
+ short_name:'Sune',
+ description:'OpenRouter GUI Frontend',
+ start_url:'https://sune.planetrenox.com/',
+ display:'standalone',
+ orientation:'portrait',
+ theme_color:'#FFFFFF',
+ background_color:'#000000',
+ categories:['productivity','utilities'],
+ icons:[{ src:'https://sune.planetrenox.com/appstore_content/✺.png', sizes:'1024x1024', type:'image/png' }],
+ screenshots:[{ src:'https://sune.planetrenox.com/appstore_content/screenshot1.jpg', sizes:'1344x2693', type:'image/jpeg' },{ src:'https://sune.planetrenox.com/appstore_content/screenshot2.jpg', sizes:'1344x2699', type:'image/jpeg' }]
+ }
+ }),
+ createHtmlPlugin({
+ minify:false,
+ inject:{
+ tags:[
+ { tag:'meta', attrs:{ charset:'utf-8' }, injectTo:'head' },
+ { tag:'title', children:'Sune', injectTo:'head' },
+ { tag:'link', attrs:{ rel:'icon', type:'image/avif', href:'https://sune.planetrenox.com/✺.avif' }, injectTo:'head' },
+ { tag:'script', attrs:{ src:'https://cdn.jsdelivr.net/npm/tiny-ripple@0.2.0' }, injectTo:'head' },
+ { tag:'style', children:':root{--safe-bottom:env(safe-area-inset-bottom)}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-thumb{background:#e5e7eb;border-radius:999px}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}', injectTo:'head' },
+ { tag:'style', children:'html,body{overscroll-behavior-y:contain}', injectTo:'head' },
+ { tag:'style', children:'', injectTo:'head' },
+ { tag:'script', children:"(()=>{let k,v=visualViewport;const f=()=>{removeEventListener('popstate',f),document.activeElement?.blur()};v.onresize=()=>{let o=v.height