demo: "Try it" is its own page on the .com, in the landing page's style (#117)

Captain Bob, 2026-11-06: "I want the try it as it's very own page and
use the landing page we designed earlier ... as a baseline."

The landing page is the .com's Main.WebHome. The Try-it page follows
it: a floating box -- Your Machine, in place of Quick Facts -- a linked
title, == sections, {{info}} and {{warning}}. It goes at TryIt on the
.com (/bin/view/TryIt/), with the console embedded and links back to
the landing page and the source.

The page is on the .com now, so apache-demo.conf lets the .com frame
the console (frame-ancestors), and the demo's host is
try.starshipos-f18.com.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
This commit is contained in:
rajames
2026-11-06 20:47:35 +00:00
co-authored by Claude Opus 5.5
parent 672d275f5c
commit 475dac67ef
3 changed files with 68 additions and 25 deletions
+3 -3
View File
@@ -21,8 +21,8 @@ XWiki "Try it" page (iframe) -> Apache: TLS, websocket -> ttyd -> start-session.
| `console.py` | Joins the visitor's terminal to the machine only once it runs, discarding keys typed while it loads | | `console.py` | Joins the visitor's terminal to the machine only once it runs, discarding keys typed while it loads |
| `qemu-args.sh` | The machine, shared by the two above: a resumed machine must match the saved one exactly | | `qemu-args.sh` | The machine, shared by the two above: a resumed machine must match the saved one exactly |
| `starshipos-demo.service` | ttyd as a systemd service, on localhost, at most 3 sessions (#114) | | `starshipos-demo.service` | ttyd as a systemd service, on localhost, at most 3 sessions (#114) |
| `apache-demo.conf` | Example vhost: TLS, the websocket, framing allowed for the XWiki only (#115) | | `apache-demo.conf` | Example vhost: TLS, the websocket, framing allowed for the `.com` only (#115) |
| `xwiki-try-it.xwiki` | The XWiki "Try it" page, with the console embedded (XWiki 2.1 syntax) | | `xwiki-try-it.xwiki` | The "Try it" page, its own page on the `.com` XWiki (`TryIt`), in the landing page's style |
## What a visitor cannot do ## What a visitor cannot do
@@ -45,7 +45,7 @@ DEMO_PROMPT='[zuse@Hera]' demo/make-snapshot.sh /tmp/StarshipOS.iso /var/lib/sta
``` ```
Then install `starshipos-demo.service` and `apache-demo.conf` (their headers say how), and paste Then install `starshipos-demo.service` and `apache-demo.conf` (their headers say how), and paste
`xwiki-try-it.xwiki` into a page on the XWiki. The `{{html}}` macro there needs a page author `xwiki-try-it.xwiki` into the page `TryIt` on the `.com` XWiki. The `{{html}}` macro there needs a page author
with script rights. with script rights.
A new image means re-running `build-iso.sh` and `make-snapshot.sh`: the saved machine belongs to A new image means re-running `build-iso.sh` and `make-snapshot.sh`: the saved machine belongs to
+5 -5
View File
@@ -2,14 +2,14 @@
# name, the certificate paths and the XWiki allowed to embed it are Captain Bob's to set. # name, the certificate paths and the XWiki allowed to embed it are Captain Bob's to set.
# a2enmod proxy proxy_http proxy_wstunnel headers ssl rewrite # a2enmod proxy proxy_http proxy_wstunnel headers ssl rewrite
<VirtualHost *:443> <VirtualHost *:443>
ServerName try.strshipos.com ServerName try.starshipos-f18.com
SSLEngine on SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/try.strshipos.com/fullchain.pem SSLCertificateFile /etc/letsencrypt/live/try.starshipos-f18.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/try.strshipos.com/privkey.pem SSLCertificateKeyFile /etc/letsencrypt/live/try.starshipos-f18.com/privkey.pem
# The terminal may be framed by the XWiki's "Try it" page, and by nothing else. # The terminal may be framed by the "Try it" page on the .com (TryIt), and by nothing else.
Header always unset X-Frame-Options Header always unset X-Frame-Options
Header always set Content-Security-Policy "frame-ancestors https://www.starshipos-f18.org https://starshipos-f18.org" Header always set Content-Security-Policy "frame-ancestors https://starshipos-f18.com https://www.starshipos-f18.com"
ProxyPreserveHost On ProxyPreserveHost On
RewriteEngine On RewriteEngine On
+60 -17
View File
@@ -1,28 +1,71 @@
= Try StarshipOS = {{box cssClass="floatinginfobox" title="**Your Machine**"}}
* **System**: StarshipOS -- LithosAnanke v2.1.0, StarForth v4 (the F18 engine)
* **Architecture**: amd64, emulated
* **Build**: the latest that passed acceptance on all three architectures
* **Logged in as**: Zuse, the superuser -- of this machine only
* **Network**: none
* **Lasts**: up to 30 minutes, then it is gone
{{/box}}
This is StarshipOS, running. Below is the console of a real StarshipOS machine -- the amd64 build = [[Try StarshipOS>>https://starshipos-f18.com/bin/view/TryIt/]] =
from the latest version that passed its acceptance tests -- started just for you. You are logged
in as Zuse, the superuser, of a machine that exists only for your session: there is nothing to This is a real StarshipOS machine, started just for you and already at its prompt. It is not a
simulation of StarshipOS and not a recording: the console below is the serial console of an
amd64 machine running the same image the project publishes every night. You are logged in as
**Zuse**, the superuser -- of a machine that exists only for your session. There is nothing to
break, and nothing you do is kept. Close the page and it is gone. break, and nothing you do is kept. Close the page and it is gone.
{{html clean="false"}} {{html clean="false"}}
<iframe src="https://try.strshipos.com/" title="StarshipOS console" <iframe src="https://try.starshipos-f18.com/" title="StarshipOS console"
style="width:100%; height:34em; border:1px solid #888; border-radius:6px; background:#000;"></iframe> style="width:100%; height:34em; border:1px solid #888; border-radius:6px; background:#000;"></iframe>
{{/html}} {{/html}}
== Things to try == {{info}}
If the console does not connect, every machine we run is in use -- try again in a few minutes.
{{/info}}
StarshipOS speaks FORTH. Type a line and press Enter; ##ok## means it was done. ----
|=You type|=It answers == Things to Try ==
|##3 4 + .##|##7 ok## -- numbers go on a stack, ##+## adds the top two, ##.## prints the result
|##: SQUARE DUP * ;##|##ok## -- you have just defined a new word
|##7 SQUARE .##|##49 ok## -- and used it
== What you are looking at == StarshipOS speaks **FORTH**. Type a line and press Enter; ##ok## means it was done.
* A machine of your own, booted from the same image the project publishes every night, resumed at |=You type|=It answers|=What happened
its prompt so you do not wait for it to boot. |##3 4 + .##|##7 ok##|Numbers go on a stack; ##+## adds the top two; ##.## prints the result
* It runs in an emulator on our server. It has no network, and it lasts at most 30 minutes. |##: SQUARE DUP * ;##|##ok##|You defined a new word, ##SQUARE##
* If the console does not connect, the few machines we run are all in use -- try again in a few |##7 SQUARE .##|##49 ok##|...and used it, as if it had always been there
minutes.
----
== What You Are Looking At ==
=== A Machine of Your Own ===
Each visitor gets a separate machine, resumed at its prompt from one that booted, passed its
power-on self-test (538 checks) and logged Zuse in -- so you do not wait for it to boot. When you
leave, or after 30 minutes, it is stopped and discarded; the next visitor starts from the same
clean state.
=== The Build ===
The demo always runs the most recent build that passed the project's **acceptance protocol**:
booting on amd64, aarch64 and riscv64, the PC stick loaded the way a PC loads it, and the 32-bit
build's tests -- the same checks every change must pass before it reaches the main line.
=== Zuse ===
**Zuse** is StarshipOS's superuser: whoever holds Zuse's identity drive. Here that drive is a
demo Zuse minted for this page alone, attached to every session with its writes thrown away --
not anyone's real identity.
{{warning}}
The demo runs in an emulator on a small server: it is slower than StarshipOS on real hardware,
and only a few people can use it at once.
{{/warning}}
----
== Find Out More ==
* [[StarshipOS>>https://starshipos-f18.com/bin/view/Main/]] -- what StarshipOS is, and how it is built
* [[The source>>https://gitea.starshipos-f18.org/rajames/LithosAnanke]] -- the kernel, StarForth, and this demo (##demo/##)