[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83800":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":11,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":11,"stars30d":11,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":14,"rankGlobal":8,"rankLanguage":8,"license":15,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":18,"hasPages":16,"topics":19,"createdAt":8,"pushedAt":8,"updatedAt":20,"readmeContent":21,"aiSummary":8,"trendingCount":13,"starSnapshotCount":13,"syncStatus":22,"lastSyncTime":23,"discoverSource":24},83800,"ai-linux-webapp-wrapper","trueugenee\u002Fai-linux-webapp-wrapper","trueugenee",null,"JavaScript",65,1,72,0,0.9,"MIT License",false,"main",true,[],"2026-06-12 02:04:35","# AI Linux Webapp Wrapper\n\nA small AI-friendly Electron wrapper template for frameless Linux webapps.\nTradingView is the default example.\n\nIt opens a configured website in a dedicated app window without browser chrome,\nkeeps allowed navigation inside the app, and opens external HTTPS links in your\ndefault browser. Out of the box it opens TradingView.\n\n## Features\n\n- Frameless webapp window.\n- Default URL: `https:\u002F\u002Fwww.tradingview.com\u002Fchart\u002F`.\n- Custom start URL through `app.config.json`.\n- Optional runtime override through `WEBAPP_URL`.\n- Hidden page scrollbars.\n- Electron menu disabled.\n- Renderer permissions denied by default.\n- `nodeIntegration` disabled, `contextIsolation` enabled, sandbox enabled.\n- App state stored in `~\u002F.config\u002Fai-linux-webapp-wrapper`.\n- Small test suite for config and navigation policy.\n\n## How Is This Different?\n\nThis project is not trying to replace larger tools like Nativefier, Pake, or\nLinux Mint Webapp Manager.\n\n- Nativefier and Pake are stronger if you want a full app generator or packaged\n  builds for many platforms.\n- Linux Mint Webapp Manager is stronger if you want a graphical desktop tool for\n  creating and managing webapps.\n- This project is smaller on purpose: it is a readable Electron template with a\n  config file, strict security defaults, tests, and agent-friendly docs.\n\nUse this when you want a tiny Linux-focused webapp wrapper that you can inspect,\nfork, and customize with Codex or another coding agent.\n\n## Requirements\n\n- Linux\n- Node.js\n- npm\n\nOn Arch Linux:\n\n```bash\nsudo pacman -S nodejs npm\n```\n\n## Run\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FYOUR_USERNAME\u002Fai-linux-webapp-wrapper.git\ncd ai-linux-webapp-wrapper\nnpm install\nnpm start\n```\n\n## Set Your Webapp URL\n\nOpen `app.config.json` and change:\n\n```json\n\"startUrl\": \"https:\u002F\u002Fwww.tradingview.com\u002Fchart\u002F\"\n```\n\nFor a custom TradingView chart:\n\n```json\n\"startUrl\": \"https:\u002F\u002Fwww.tradingview.com\u002Fchart\u002FYOUR_CHART_ID\u002F\"\n```\n\nMake sure the host is listed in `allowedHosts`:\n\n```json\n\"allowedHosts\": [\n  \"tradingview.com\",\n  \"www.tradingview.com\"\n]\n```\n\nThen verify and run:\n\n```bash\nnpm run doctor\nnpm run verify\nnpm start\n```\n\nYou can also use a temporary URL without editing the file:\n\n```bash\nWEBAPP_URL=\"https:\u002F\u002Fwww.tradingview.com\u002Fchart\u002FYOUR_CHART_ID\u002F\" npm start\n```\n\n## AI-Assisted Customization\n\nThis project includes agent rules and safe prompt examples for changing the\nwrapper with Codex or another coding agent:\n\n- [AGENTS.md](AGENTS.md)\n- [CONTRIBUTING.md](CONTRIBUTING.md)\n- [ROADMAP.md](ROADMAP.md)\n- [docs\u002FCUSTOMIZE_WITH_CODEX.md](docs\u002FCUSTOMIZE_WITH_CODEX.md)\n- [docs\u002FSECURITY.md](docs\u002FSECURITY.md)\n\nUseful examples:\n\n- [examples\u002Ftradingview.config.json](examples\u002Ftradingview.config.json)\n- [examples\u002Fgeneric-dashboard.config.json](examples\u002Fgeneric-dashboard.config.json)\n- [examples\u002Fchatgpt.config.json](examples\u002Fchatgpt.config.json)\n- [examples\u002Fgithub.config.json](examples\u002Fgithub.config.json)\n- [examples\u002Fdocs.config.json](examples\u002Fdocs.config.json)\n- [examples\u002Fself-hosted-dashboard.config.json](examples\u002Fself-hosted-dashboard.config.json)\n\nSome webapps use separate login or OAuth hosts. Add those hosts only when you\nunderstand why they are needed, and keep `allowedHosts` explicit.\n\n## Verify\n\n```bash\nnpm run doctor\nnpm run verify\n```\n\n`npm run doctor` checks common `app.config.json` mistakes, including:\n\n- non-HTTPS URLs\n- `startUrl` host missing from `allowedHosts`\n- wildcard hosts\n- desktop-unfriendly `appId` values\n\n## Project Structure\n\n```text\n.\n├── app.config.json\n├── main.js\n├── src\u002F\n│   ├── config.js\n│   ├── create-window.js\n│   ├── doctor.js\n│   └── url-policy.js\n├── test\u002F\n│   ├── config.test.js\n│   ├── doctor.test.js\n│   └── url-policy.test.js\n├── examples\u002F\n├── docs\u002F\n└── scripts\u002F\n```\n\n## Publish Checklist\n\nBefore publishing your fork:\n\n```bash\nnpm install\nnpm run doctor\nnpm run verify\ngit status --short\nrg -n \"token|password|cookie|secret|\u002Fhome\u002F|gmail|BEGIN .*KEY\" . -g '!\u002F.git\u002F**'\n```\n\nCreate a GitHub repository and push:\n\n```bash\ngit remote add origin git@github.com:YOUR_USERNAME\u002Fai-linux-webapp-wrapper.git\ngit push -u origin main\n```\n\n## Wayland Notes\n\nIf your Electron version does not select Wayland automatically, try:\n\n```bash\nELECTRON_OZONE_PLATFORM_HINT=auto npm start\n```\n\nor:\n\n```bash\nnpm start -- --ozone-platform=wayland\n```\n\n## Niri Example\n\n```kdl\nwindow-rule {\n    match app-id=r#\"TradingView|ai-linux-webapp-wrapper\"#\n    open-maximized true\n}\n\nbinds {\n    Mod+Shift+T hotkey-overlay-title=\"TradingView\" {\n        spawn-sh \"cd ~\u002Fai-linux-webapp-wrapper && npm start\"\n    }\n}\n```\n\n## Desktop Entry\n\nInstall a local desktop entry and icon:\n\n```bash\n.\u002Fscripts\u002Finstall-desktop-entry.sh\n```\n\nThe script reads `appId` and `appName` from `app.config.json`, then creates:\n\n- `~\u002F.local\u002Fshare\u002Fapplications\u002F\u003CappId>.desktop`\n- `~\u002F.local\u002Fshare\u002Ficons\u002Fhicolor\u002Fscalable\u002Fapps\u002F\u003CappId>.svg`\n\nIf you change `appId` or `appName`, run the script again.\n\n## Security Model\n\nThis wrapper intentionally keeps the Electron surface small:\n\n- The default config allows TradingView hosts inside the app.\n- Non-allowed HTTPS links are opened externally.\n- Non-HTTPS external links are ignored.\n- Renderer permission requests are denied.\n- Node.js integration is disabled in the renderer.\n\nThis is still an Electron wrapper around a website. Treat it like a browser\nsession and keep Electron updated.\n\n## License\n\nMIT\n",2,"2026-06-11 04:11:29","CREATED_QUERY"]