@@ -274,21 +276,22 @@
### Is this a static site generator?
## Clone WordPress like a Git remote.
- Install Push MD, authenticate with a WordPress Application Password, then clone
- the trunk branch from your site. Any Git client can talk to WordPress directly.
+ Clone the public read-only remote for a first look. When you are ready to push
+ back, install Push MD on your own WordPress site and authenticate with an
+ Application Password.
- - Install and activate the Push MD plugin.
- - Create or use a WordPress Application Password.
- - Clone the WordPress Git remote and work on
trunk.
+ - Try the read-only public remote from this site.
+ - Open the Markdown files with an editor or agent.
+ - Install the plugin on your WordPress site when you are ready to accept pushes.
- git clone https://example.com/wp-json/git/v1/md.git my-site
+ git clone https://pushmd.blog/wp-json/git/v1/md.git my-site
-
Pushes to other branches are rejected. WordPress remains the source of truth.
+
The public remote is pullable for a first look. Pushes need the plugin on your own authenticated WordPress site.
@@ -296,7 +299,7 @@
## Clone WordPress like a G
diff --git a/plugins/push-md/docs/landing/landing.css b/plugins/push-md/docs/landing/landing.css
index 73737709..cd929fa1 100644
--- a/plugins/push-md/docs/landing/landing.css
+++ b/plugins/push-md/docs/landing/landing.css
@@ -175,6 +175,15 @@ pre {
padding: clamp(34px, 5vw, 58px) 0 46px;
}
+.hero-copy,
+.section-copy,
+.authority-strip article,
+.use-case-card,
+.faq-item,
+.install-panel {
+ min-width: 0;
+}
+
.callout-label {
margin: 0 0 12px;
color: var(--hash);
@@ -316,7 +325,7 @@ pre {
background: #191817;
}
-.terminal-summary span {
+.terminal-summary button {
display: inline-flex;
align-items: baseline;
gap: 8px;
@@ -329,12 +338,24 @@ pre {
border-radius: 7px 7px 0 0;
background: #24211e;
color: #bcb2a3;
+ cursor: pointer;
+ font: inherit;
font-size: 12px;
line-height: 1.2;
white-space: nowrap;
}
-.terminal-summary span.is-active {
+.terminal-summary button:hover,
+.terminal-summary button:focus-visible {
+ color: #efe8d8;
+ outline: 0;
+}
+
+.terminal-summary button:focus-visible {
+ box-shadow: inset 0 0 0 1px rgba(145, 214, 238, 0.72);
+}
+
+.terminal-summary button.is-active {
background: #151515;
color: #efe8d8;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
@@ -883,6 +904,12 @@ pre {
}
@media (max-width: 720px) {
+ html,
+ body {
+ width: 100%;
+ overflow-x: hidden;
+ }
+
body {
background-size: 100% 30px;
}
@@ -912,7 +939,11 @@ pre {
}
.markdown-document {
- padding-inline: 16px;
+ width: calc(100vw - 32px);
+ max-width: calc(100vw - 32px);
+ padding-inline: 0;
+ margin-inline: 16px;
+ overflow: hidden;
}
.hero {
@@ -920,7 +951,7 @@ pre {
}
.hero h1 {
- font-size: 40px;
+ font-size: 35px;
line-height: 1.18;
}
@@ -929,8 +960,16 @@ pre {
font-size: 16px;
}
+ .hero-actions {
+ display: grid;
+ grid-template-columns: 1fr;
+ }
+
.hero-actions .button {
- flex: 1 1 180px;
+ min-width: 0;
+ padding-inline: 10px;
+ white-space: normal;
+ text-align: center;
}
.terminal-card {
diff --git a/plugins/push-md/docs/landing/landing.js b/plugins/push-md/docs/landing/landing.js
index 642239a3..f9247387 100644
--- a/plugins/push-md/docs/landing/landing.js
+++ b/plugins/push-md/docs/landing/landing.js
@@ -32,8 +32,9 @@
var inputRowEl = inputEl ? inputEl.closest( '.terminal-input-row' ) : null;
var cwdEl = document.getElementById( 'landing-terminal-cwd' );
var titleEl = document.getElementById( 'landing-terminal-title' );
- var checkoutDir = 'site';
- var remoteUrl = 'https://example.com/wp-json/git/v1/md.git';
+ var tabButtons = document.querySelectorAll( '[data-terminal-demo]' );
+ var checkoutDir = 'my-site';
+ var remoteUrl = 'https://pushmd.blog/wp-json/git/v1/md.git';
var cwd = '~';
var history = [];
var historyIndex = 0;
@@ -42,19 +43,33 @@
var revisionNumber = 184;
var diffRemoveLine = 'Old CTA copy';
var diffAddLine = 'Keep WordPress in charge';
- var files = {
+ var initialFiles = {
'AGENTS.md': '# WordPress content guidelines\n\n- Keep block markup valid.\n- Pull before editing stale content.\n- Let WordPress roles decide who can publish.\n',
+ 'README.md': '# Push MD demo remote\n\nThis read-only repository is exported from pushmd.blog so you can clone WordPress-shaped Markdown immediately.\n',
'page/home.md': '# Home\n\nOld CTA copy\n',
'post/hello-world.md': '# Hello World\n\nHello from WordPress.\n',
'wp_template_part/header.html': '\n\n',
'wp_global_styles/theme.json': '{\n "version": 3,\n "styles": {\n "color": {\n "background": "#faf8f1"\n }\n }\n}\n'
};
+ var files = cloneInitialFiles();
var pendingFiles = {};
if ( ! outputEl || ! inputEl || ! inputGhostEl || ! inputRowEl || ! cwdEl || ! titleEl ) {
return;
}
+ function cloneInitialFiles() {
+ var clone = {};
+ var filePath;
+
+ for ( filePath in initialFiles ) {
+ if ( Object.prototype.hasOwnProperty.call( initialFiles, filePath ) ) {
+ clone[filePath] = initialFiles[filePath];
+ }
+ }
+ return clone;
+ }
+
function appendLine( text, className ) {
var line = document.createElement( 'div' );
line.className = 'terminal-line';
@@ -105,19 +120,58 @@
}
}
- function bootTranscript() {
+ function resetDemoState() {
+ cwd = '~';
+ history = [];
+ historyIndex = 0;
+ dirtyPath = '';
+ aheadMessage = '';
+ revisionNumber = 184;
+ diffRemoveLine = 'Old CTA copy';
+ diffAddLine = 'Keep WordPress in charge';
+ files = cloneInitialFiles();
+ pendingFiles = {};
+ updatePrompt();
+ updateInputGhost();
+ }
+
+ function bootTranscript( demo ) {
outputEl.textContent = '';
appendLine( 'Push MD command emulator', 'terminal-success' );
- appendLine( 'This public demo mirrors commands you can run with any Git client.', 'terminal-muted' );
+ appendLine( 'The public remote is pullable now. Pushes need your own authenticated WordPress site.', 'terminal-muted' );
appendLine( '' );
- runCommand( 'git clone ' + remoteUrl + ' ' + checkoutDir, { silentHistory: true } );
- runCommand( 'cd ' + checkoutDir, { silentHistory: true } );
- runCommand( 'codex "Update page/home.md"', { silentHistory: true } );
- runCommand( 'git diff -- page/home.md', { silentHistory: true } );
- runCommand( 'git commit -am "Update home page"', { silentHistory: true } );
- runCommand( 'git push origin trunk', { silentHistory: true } );
+
+ if ( demo === 'roles' ) {
+ runCommand( 'git clone ' + remoteUrl + ' ' + checkoutDir, { silentHistory: true } );
+ runCommand( 'cd ' + checkoutDir, { silentHistory: true } );
+ runCommand( 'codex "Update page/home.md"', { silentHistory: true } );
+ runCommand( 'git commit -am "Update home page"', { silentHistory: true } );
+ runCommand( 'git push origin trunk', { silentHistory: true } );
+ } else if ( demo === 'pull' ) {
+ runCommand( 'git clone ' + remoteUrl + ' ' + checkoutDir, { silentHistory: true } );
+ runCommand( 'cd ' + checkoutDir, { silentHistory: true } );
+ runCommand( 'git pull', { silentHistory: true } );
+ runCommand( 'git status', { silentHistory: true } );
+ } else {
+ runCommand( 'git clone ' + remoteUrl + ' ' + checkoutDir, { silentHistory: true } );
+ runCommand( 'cd ' + checkoutDir, { silentHistory: true } );
+ runCommand( 'tree', { silentHistory: true } );
+ runCommand( 'cat AGENTS.md', { silentHistory: true } );
+ }
appendLine( '' );
- appendLine( 'Try: git status, git pull, ls, cat AGENTS.md, codex "Update page/home.md", help', 'terminal-muted' );
+ appendLine( 'Try: git status, git pull, ls, cat README.md, codex "Update page/home.md", help', 'terminal-muted' );
+ }
+
+ function activateDemo( demo ) {
+ tabButtons.forEach(
+ function ( button ) {
+ var isActive = button.getAttribute( 'data-terminal-demo' ) === demo;
+ button.classList.toggle( 'is-active', isActive );
+ button.setAttribute( 'aria-pressed', isActive ? 'true' : 'false' );
+ }
+ );
+ resetDemoState();
+ bootTranscript( demo );
}
function runCommand( command, options ) {
@@ -269,6 +323,12 @@
appendLine( 'Everything up-to-date', 'terminal-muted' );
return;
}
+ if ( remoteUrl.indexOf( 'pushmd.blog' ) !== -1 ) {
+ appendLine( 'remote: public Push MD demo is read-only', 'terminal-error' );
+ appendLine( 'remote: install Push MD on your WordPress site to accept authenticated pushes', 'terminal-muted' );
+ appendLine( 'error: failed to push some refs to origin', 'terminal-error' );
+ return;
+ }
revisionNumber++;
appendLine( 'Enumerating objects: 5, done.' );
@@ -327,6 +387,7 @@
function printTree() {
appendLine( '.' );
appendLine( '|-- AGENTS.md' );
+ appendLine( '|-- README.md' );
appendLine( '|-- page/' );
appendLine( '| `-- home.md' );
appendLine( '|-- post/' );
@@ -491,10 +552,18 @@
updateInputGhost();
}
);
+ tabButtons.forEach(
+ function ( button ) {
+ button.addEventListener(
+ 'click',
+ function () {
+ activateDemo( button.getAttribute( 'data-terminal-demo' ) || 'markdown' );
+ }
+ );
+ }
+ );
- updatePrompt();
- updateInputGhost();
- bootTranscript();
+ activateDemo( 'markdown' );
}
function markCopied( button ) {
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/HEAD b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/HEAD
new file mode 100644
index 00000000..8a752b6c
--- /dev/null
+++ b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/HEAD
@@ -0,0 +1 @@
+ref: refs/heads/trunk
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/config b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/config
new file mode 100644
index 00000000..07d359d0
--- /dev/null
+++ b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/config
@@ -0,0 +1,4 @@
+[core]
+ repositoryformatversion = 0
+ filemode = true
+ bare = true
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/info/refs b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/info/refs
new file mode 100644
index 00000000..3d4d7cb1
--- /dev/null
+++ b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/info/refs
@@ -0,0 +1 @@
+4bfb0399fb165468daeaf69cf49d569249c5a2dc refs/heads/trunk
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/19/a7f11173f64576476a85d7e738768643d4b2b7 b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/19/a7f11173f64576476a85d7e738768643d4b2b7
new file mode 100644
index 00000000..ddae07ca
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/19/a7f11173f64576476a85d7e738768643d4b2b7 differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/1b/45061233bb4b3c89bcc57b9feb5dc1ede46220 b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/1b/45061233bb4b3c89bcc57b9feb5dc1ede46220
new file mode 100644
index 00000000..b18d5d6d
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/1b/45061233bb4b3c89bcc57b9feb5dc1ede46220 differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/46/a5f133cbe3574f30b1d37cc4bf9ef619f9f516 b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/46/a5f133cbe3574f30b1d37cc4bf9ef619f9f516
new file mode 100644
index 00000000..f2bd8c27
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/46/a5f133cbe3574f30b1d37cc4bf9ef619f9f516 differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/4b/fb0399fb165468daeaf69cf49d569249c5a2dc b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/4b/fb0399fb165468daeaf69cf49d569249c5a2dc
new file mode 100644
index 00000000..da972a61
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/4b/fb0399fb165468daeaf69cf49d569249c5a2dc differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/5d/2de60d80fcd3d477c9f4ef36ce341bd68cadda b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/5d/2de60d80fcd3d477c9f4ef36ce341bd68cadda
new file mode 100644
index 00000000..35ee0471
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/5d/2de60d80fcd3d477c9f4ef36ce341bd68cadda differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/64/bdf8f216e88d5254dbca838eef787a61fd7426 b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/64/bdf8f216e88d5254dbca838eef787a61fd7426
new file mode 100644
index 00000000..98f4867f
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/64/bdf8f216e88d5254dbca838eef787a61fd7426 differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/6b/7b74a20c2c36bfc70f6c061598d97084c5a811 b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/6b/7b74a20c2c36bfc70f6c061598d97084c5a811
new file mode 100644
index 00000000..602388a8
--- /dev/null
+++ b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/6b/7b74a20c2c36bfc70f6c061598d97084c5a811
@@ -0,0 +1 @@
+xKÊÉOR0±`°QÔÕU(/°*Î,IÕ-É,ÉIUÐ×յらç%–e¦'–dæçAÄÎ(2
\ No newline at end of file
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/78/e2a7923c76f148e0d00571b16bdfc947564202 b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/78/e2a7923c76f148e0d00571b16bdfc947564202
new file mode 100644
index 00000000..aab97aa2
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/78/e2a7923c76f148e0d00571b16bdfc947564202 differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/87/43b3eb29cef1fc12230765d07155bce4ef21d1 b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/87/43b3eb29cef1fc12230765d07155bce4ef21d1
new file mode 100644
index 00000000..bc45687e
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/87/43b3eb29cef1fc12230765d07155bce4ef21d1 differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/8e/6c3523ef95b39a97709e1fab2de358a5f5afb7 b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/8e/6c3523ef95b39a97709e1fab2de358a5f5afb7
new file mode 100644
index 00000000..7088ff0f
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/8e/6c3523ef95b39a97709e1fab2de358a5f5afb7 differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/96/80c7982d428438c027b0b08b48d9010ea00c5a b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/96/80c7982d428438c027b0b08b48d9010ea00c5a
new file mode 100644
index 00000000..f34f70f3
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/96/80c7982d428438c027b0b08b48d9010ea00c5a differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/a0/b45efc0be6108e42ffbab647d1cd4b4c941b28 b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/a0/b45efc0be6108e42ffbab647d1cd4b4c941b28
new file mode 100644
index 00000000..d778e11b
Binary files /dev/null and b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/a0/b45efc0be6108e42ffbab647d1cd4b4c941b28 differ
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/info/packs b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/info/packs
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/objects/info/packs
@@ -0,0 +1 @@
+
diff --git a/plugins/push-md/docs/landing/wp-json/git/v1/md.git/packed-refs b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/packed-refs
new file mode 100644
index 00000000..8f158c2d
--- /dev/null
+++ b/plugins/push-md/docs/landing/wp-json/git/v1/md.git/packed-refs
@@ -0,0 +1,2 @@
+# pack-refs with: peeled fully-peeled sorted
+4bfb0399fb165468daeaf69cf49d569249c5a2dc refs/heads/trunk