diff --git a/docs.html b/docs.html
index cd0913e..db38aa5 100644
--- a/docs.html
+++ b/docs.html
@@ -40,6 +40,7 @@
jspod docs
Auth ladder
Backup & reset
Bundled apps
+Git remote
Links
@@ -119,6 +120,21 @@ Bundled Solid apps
jspod bundles Pilot at /public/apps/pilot/. It's served from your own pod, so same-origin sign-in works even on strict browsers (Brave with shields up).
The bundle is copied skip-if-exists, so you can pin a specific Pilot version by editing the files locally and they'll survive jspod upgrades. Delete pod-data/public/apps/pilot/ and restart to re-seed from the current jspod's bundled copy.
+Git remote (your pod is a git server)
+jspod enables JSS's git HTTP backend by default. Any pod path you have ACL Read on is git-cloneable; any path you have ACL Write on is git-pushable. Fresh paths auto-initialize on first push (JSS 0.0.195+).
+
+Clone a public path
+git clone http://localhost:5444/public/apps/pilot ./pilot
+
+Push to a new path (auto-creates the bare repo)
+git clone https://github.com/solid-apps/penny.git
+cd penny
+git remote add pod http://localhost:5444/public/apps/penny
+git push pod main
+Note: git push against a Solid pod needs the same DPoP-bound auth as any other Solid write. Easiest workaround today is to set an Authorization header via git -c http.extraHeader=... with a token obtained from /signin.html. Cleaner ergonomics are a known gap.
+
+To opt out: npx jspod --no-git.
+
Links
- jspod source — issues, PRs, releases
diff --git a/index.js b/index.js
index 7c97356..2b4dbfa 100755
--- a/index.js
+++ b/index.js
@@ -41,7 +41,8 @@ const options = {
root: './pod-data',
multiuser: false,
auth: true,
- open: true
+ open: true,
+ git: true
};
// Auth-ladder rung-1 credentials. See issue #6: jspod ships a deliberately
@@ -116,6 +117,8 @@ for (let i = 0; i < args.length; i++) {
options.auth = false;
} else if (arg === '--no-open') {
options.open = false;
+ } else if (arg === '--no-git') {
+ options.git = false;
} else if (arg === '--version' || arg === '-v') {
console.log(`jspod v${pkg.version}`);
process.exit(0);
@@ -134,6 +137,7 @@ for (let i = 0; i < args.length; i++) {
console.log(chalk.green(' --multiuser') + chalk.dim(' Enable multi-user mode'));
console.log(chalk.green(' --no-auth') + chalk.dim(' Disable authentication'));
console.log(chalk.green(' --no-open') + chalk.dim(' Do not open the browser automatically'));
+ console.log(chalk.green(' --no-git') + chalk.dim(' Disable JSS\'s git HTTP backend (it is on by default)'));
console.log(chalk.green(' -v, --version') + chalk.dim(' Show jspod version'));
console.log(chalk.green(' --help') + chalk.dim(' Show this help message\n'));
console.log(chalk.white('Examples:'));
@@ -386,6 +390,12 @@ if (!options.auth) {
jssArgs.push('--public');
}
+// Enable JSS's git HTTP backend by default so the pod is a real
+// git remote (clone for public-read paths, push for owner-write
+// paths, auto-init on first push since JSS 0.0.195). Users who
+// don't want this surface can pass --no-git.
+jssArgs.push(options.git ? '--git' : '--no-git');
+
// Start JSS with enhanced PATH to find the binary
const jss = spawn('jss', jssArgs, {
stdio: 'inherit',
diff --git a/package.json b/package.json
index 4cf6f96..9c0a2f7 100644
--- a/package.json
+++ b/package.json
@@ -51,6 +51,6 @@
},
"dependencies": {
"chalk": "^5.6.2",
- "javascript-solid-server": "^0.0.194"
+ "javascript-solid-server": "^0.0.195"
}
}