Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: pages
on:
push:
branches: [main]
paths: ['site/**', '.github/workflows/pages.yml']
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with: { path: site }
- id: deployment
uses: actions/deploy-pages@v4
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# ScriptWidget 🎨

Website: <https://xnu.app/scriptwidget/>

<div align="center">

[![GitHub Stars](https://img.shields.io/github/stars/everettjf/ScriptWidget?style=flat-square&color=4ECDC4)](https://github.com/everettjf/ScriptWidget/stargazers)
Expand Down
1 change: 1 addition & 0 deletions site/.nojekyll
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions site/api/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!doctype html><meta charset="utf-8"><meta name="viewport" content="width=device-width"><meta http-equiv="refresh" content="0; url=https://github.com/everettjf/scriptwidget/blob/main/docs/runtime-api.md"><link rel="canonical" href="https://github.com/everettjf/scriptwidget/blob/main/docs/runtime-api.md"><title>ScriptWidget Runtime API</title><p>Continue to the <a href="https://github.com/everettjf/scriptwidget/blob/main/docs/runtime-api.md">ScriptWidget Runtime API</a>.</p>
1 change: 1 addition & 0 deletions site/components/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!doctype html><meta charset="utf-8"><meta name="viewport" content="width=device-width"><meta http-equiv="refresh" content="0; url=https://github.com/everettjf/scriptwidget/tree/main/Shared/ScriptWidgetRuntime/Widget/Component"><link rel="canonical" href="https://github.com/everettjf/scriptwidget/tree/main/Shared/ScriptWidgetRuntime/Widget/Component"><title>ScriptWidget JSX components</title><p>Continue to the <a href="https://github.com/everettjf/scriptwidget/tree/main/Shared/ScriptWidgetRuntime/Widget/Component">ScriptWidget JSX component source</a>.</p>
9 changes: 9 additions & 0 deletions site/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ScriptWidget — Native widgets with JavaScript + JSX</title><meta name="description" content="Create native iPhone, iPad, and Mac widgets with JavaScript, JSX, and ScriptWidget Studio."><link rel="canonical" href="https://xnu.app/scriptwidget/"><meta property="og:title" content="ScriptWidget"><meta property="og:description" content="Build native Apple-platform widgets with JavaScript and JSX."><meta property="og:type" content="website"><meta property="og:url" content="https://xnu.app/scriptwidget/"><meta property="og:image" content="https://raw.githubusercontent.com/everettjf/scriptwidget/main/Resource/WidgetDemoScreenshots/_contact-sheet-1.jpg"><link rel="stylesheet" href="styles.css"></head>
<body><header class="wrap nav"><a class="brand" href="./">ScriptWidget</a><nav class="navlinks" aria-label="Main navigation"><a class="optional" href="#docs">Docs</a><a href="https://github.com/everettjf/scriptwidget">GitHub</a><a href="https://discord.gg/eGzEaP6TzR">Discord</a></nav></header>
<main><section class="wrap hero"><div><div class="eyebrow">Open source · iOS · iPadOS · macOS</div><h1>Widgets, written your way.</h1><p class="lede">Write JavaScript and JSX, preview in ScriptWidget Studio, and render native WidgetKit experiences across Apple platforms—without authoring every widget in Swift.</p><div class="actions"><a class="button primary" href="https://apps.apple.com/us/app/scriptwidget/id1555600758">Get ScriptWidget ↗</a><a class="button" href="https://github.com/everettjf/scriptwidget">Star on GitHub ↗</a><a class="button" href="https://github.com/everettjf/scriptwidget/blob/main/docs/five-minute-tutorial.md">Start in five minutes</a></div></div><div class="visual"><img src="https://raw.githubusercontent.com/everettjf/scriptwidget/main/Resource/WidgetDemoScreenshots/_contact-sheet-1.jpg" alt="A gallery of widgets created with ScriptWidget"></div></section>
<div class="strip"><div class="wrap"><span>JavaScriptCore runtime</span><span>Native SwiftUI rendering</span><span>Live preview on Mac</span><span>Community gallery</span></div></div>
<section class="section"><div class="wrap"><div class="section-label">Why ScriptWidget</div><h2>From an idea to a native widget.</h2><div class="grid"><article class="card"><h3>Write in JavaScript + JSX</h3><p>Compose familiar declarative layouts and use versioned APIs for data, files, networking, storage, device state, and more.</p></article><article class="card"><h3>Build in Studio</h3><p>Edit with diagnostics, inspect runtime output, and preview multiple widget families without repeating an Xcode build loop.</p></article><article class="card"><h3>Share real packages</h3><p>Use versioned manifests, explicit permissions, host allowlists, and the community Gallery to distribute reusable widgets.</p></article></div></div></section>
<section class="section"><div class="wrap"><div class="section-label">A small example</div><h2>JSX in. Native WidgetKit out.</h2><pre class="code"><code><span class="purple">$render</span>(&#10; &lt;vstack frame=<span class="pink">"max"</span> padding=<span class="pink">"16"</span> background=<span class="pink">"#171923"</span>&gt;&#10; &lt;text font=<span class="pink">"caption"</span> color=<span class="pink">"#a9b0c0"</span>&gt;Today&lt;/text&gt;&#10; &lt;text font=<span class="pink">"largeTitle"</span> color=<span class="pink">"#ffffff"</span>&gt;Build something useful.&lt;/text&gt;&#10; &lt;/vstack&gt;&#10;);</code></pre></div></section>
<section class="section" id="docs"><div class="wrap"><div class="section-label">Documentation</div><h2>Explore the platform.</h2><div class="docs"><a class="doc" href="https://github.com/everettjf/scriptwidget/blob/main/docs/runtime-api.md"><strong>Runtime API →</strong><span>Rendering, storage, network, system, device, and package APIs.</span></a><a class="doc" href="https://github.com/everettjf/scriptwidget/tree/main/Shared/ScriptWidgetRuntime/Widget/Component"><strong>JSX components →</strong><span>The native components and modifiers available to scripts.</span></a><a class="doc" href="https://github.com/everettjf/scriptwidget/blob/main/docs/gallery.md"><strong>Gallery →</strong><span>Discover, verify, install, and publish community packages.</span></a></div></div></section></main>
<footer class="footer"><div class="wrap"><span>Built in the open by Everett.</span><span><a href="privacy/">Privacy</a><a href="https://xnu.app/">All projects</a><a href="mailto:xnuapp@gmail.com">Support</a></span></div></footer></body></html>
1 change: 1 addition & 0 deletions site/privacy/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Privacy — ScriptWidget</title><meta name="description" content="Privacy policy for ScriptWidget."><link rel="canonical" href="https://xnu.app/scriptwidget/privacy/"><link rel="stylesheet" href="../styles.css"></head><body><header class="wrap nav"><a class="brand" href="../">ScriptWidget</a><nav class="navlinks"><a href="https://github.com/everettjf/scriptwidget">GitHub</a><a href="https://discord.gg/eGzEaP6TzR">Discord</a></nav></header><main class="wrap section"><div class="section-label">Privacy</div><h1>Privacy policy.</h1><div style="max-width:760px"><p>ScriptWidget stores your scripts and app data on your devices and, when you enable it, in your iCloud account. ScriptWidget does not operate an account service and does not sell personal information.</p><p>Scripts and packages you choose to run may request access to device capabilities or network hosts. ScriptWidget presents and enforces package permissions, but third-party scripts and services have their own behavior and privacy practices. Review a package and its requested permissions before installing it.</p><p>If you configure an AI provider, requests are sent to the provider and endpoint you select under that provider’s terms. Your API credentials are stored locally using Apple platform security facilities.</p><p>Apple may process App Store downloads, purchases, diagnostics, and iCloud data under Apple’s policies. For privacy questions, contact <a href="mailto:xnuapp@gmail.com">xnuapp@gmail.com</a>.</p><p><em>Last updated: August 22, 2026.</em></p></div></main><footer class="footer"><div class="wrap"><span>ScriptWidget</span><span><a href="../">Home</a><a href="https://xnu.app/">All projects</a></span></div></footer></body></html>
1 change: 1 addition & 0 deletions site/styles.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions site/templates/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!doctype html><meta charset="utf-8"><meta name="viewport" content="width=device-width"><meta http-equiv="refresh" content="0; url=https://github.com/everettjf/scriptwidget/blob/main/docs/gallery.md"><link rel="canonical" href="https://github.com/everettjf/scriptwidget/blob/main/docs/gallery.md"><title>ScriptWidget Gallery</title><p>Continue to the <a href="https://github.com/everettjf/scriptwidget/blob/main/docs/gallery.md">ScriptWidget Gallery guide</a>.</p>