{
  "name": "Devi Companion",
  "slug": "devi-companion",
  "version": "1.0.0",
  "description": "An interactive local companion and multitasking launcher built with ordinary JavaScript.",
  "manifest": {
    "schema": 2,
    "kind": "extension",
    "permissions": [
      "ui.panel",
      "views.open",
      "storage"
    ],
    "entry": "main.js",
    "files": {
      "main.js": "(()=>{(async()=>{await devdevian.panel.configure({placement:\"bottom\",title:\"Devi Companion\",width:460,height:190});let i=document.getElementById(\"root\");i.innerHTML='<style>body{background:linear-gradient(120deg,#1a1635,#132e35)}main{padding:18px;display:flex;gap:18px;align-items:center}svg{width:90px;animation:float 3s ease-in-out infinite}button{border:1px solid #8674bf;border-radius:12px;padding:10px;color:#eee;background:#30254b;margin:4px}@keyframes float{50%{transform:translateY(-8px)}}@media(prefers-reduced-motion:reduce){svg{animation:none}}</style><main><svg viewBox=\"0 0 100 100\" aria-label=\"Devi\"><ellipse cx=\"50\" cy=\"65\" rx=\"44\" ry=\"13\" fill=\"#9680ff\"/><circle cx=\"50\" cy=\"40\" r=\"26\" fill=\"#30254b\" stroke=\"#c4b7ff\" stroke-width=\"3\"/><circle cx=\"42\" cy=\"38\" r=\"4\" fill=\"white\"/><circle cx=\"59\" cy=\"38\" r=\"4\" fill=\"white\"/><path d=\"M39 51 Q50 60 63 48\" fill=\"none\" stroke=\"#85e4c3\" stroke-width=\"3\"/><path d=\"M24 60h52l-6 26H30z\" fill=\"#161629\" stroke=\"#c4b7ff\"/><circle cx=\"50\" cy=\"73\" r=\"4\" fill=\"#85e4c3\"/></svg><div><strong>Good company. Right here.</strong><div><button id=\"feed\">Open feed beside me</button><button id=\"projects\">Projects</button></div><small id=\"visits\"></small></div></main>';let e=(await devdevian.storage.get(\"visits\")||0)+1;await devdevian.storage.set(\"visits\",e),document.getElementById(\"visits\").textContent=`Devi has joined you ${e} times on this device.`,document.getElementById(\"feed\").onclick=()=>devdevian.views.open(\"feed\",\"Public feed\"),document.getElementById(\"projects\").onclick=()=>devdevian.views.open(\"projects\",\"Projects\")})();})();\n",
      "sources/main.js": "(async()=>{\n await devdevian.panel.configure({placement:'bottom',title:'Devi Companion',width:460,height:190});\n const root=document.getElementById('root');root.innerHTML=`<style>body{background:linear-gradient(120deg,#1a1635,#132e35)}main{padding:18px;display:flex;gap:18px;align-items:center}svg{width:90px;animation:float 3s ease-in-out infinite}button{border:1px solid #8674bf;border-radius:12px;padding:10px;color:#eee;background:#30254b;margin:4px}@keyframes float{50%{transform:translateY(-8px)}}@media(prefers-reduced-motion:reduce){svg{animation:none}}</style><main><svg viewBox=\"0 0 100 100\" aria-label=\"Devi\"><ellipse cx=\"50\" cy=\"65\" rx=\"44\" ry=\"13\" fill=\"#9680ff\"/><circle cx=\"50\" cy=\"40\" r=\"26\" fill=\"#30254b\" stroke=\"#c4b7ff\" stroke-width=\"3\"/><circle cx=\"42\" cy=\"38\" r=\"4\" fill=\"white\"/><circle cx=\"59\" cy=\"38\" r=\"4\" fill=\"white\"/><path d=\"M39 51 Q50 60 63 48\" fill=\"none\" stroke=\"#85e4c3\" stroke-width=\"3\"/><path d=\"M24 60h52l-6 26H30z\" fill=\"#161629\" stroke=\"#c4b7ff\"/><circle cx=\"50\" cy=\"73\" r=\"4\" fill=\"#85e4c3\"/></svg><div><strong>Good company. Right here.</strong><div><button id=\"feed\">Open feed beside me</button><button id=\"projects\">Projects</button></div><small id=\"visits\"></small></div></main>`;\n const visits=(await devdevian.storage.get('visits')||0)+1;await devdevian.storage.set('visits',visits);document.getElementById('visits').textContent=`Devi has joined you ${visits} times on this device.`;\n document.getElementById('feed').onclick=()=>devdevian.views.open('feed','Public feed');document.getElementById('projects').onclick=()=>devdevian.views.open('projects','Projects');\n})();\n"
    },
    "styles": {
      "light": "",
      "dark": ""
    }
  },
  "listing": {
    "full_description": "## A little company while you build\n\nAn animated SVG Devi, a device-local visit counter, and buttons that open the feed and projects beside your current work.\n\nRespects reduced motion. No network or conversation-read capability is requested.",
    "tags": [
      "mascot",
      "multitasking",
      "productivity"
    ],
    "links": [
      {
        "label": "Source code",
        "url": "https://github.com/Tenyokj/devdevian/tree/main/examples/extensions/devi-companion"
      },
      {
        "label": "SDK documentation",
        "url": "https://devdevian.vercel.app/docs/extensions"
      }
    ],
    "screenshots": []
  }
}