Commit graph

21 commits

Author SHA1 Message Date
Zebreus
23896bced5 Keep the shell server's basic user journey working
The cleanup job now restores the whole home directory instead of only
the four text files: the directory itself, the shell configuration that
gives the prompt, and the files. Anything that is not a regular file is
replaced, so the files stay text files.

The README in server/ describes the security model: the box is a
disposable VPS that may be compromised, the root user may do whatever
they want, and only the prompt, the home directory and the four files
are kept working.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-25 13:02:25 +01:00
Zebreus
54607982cf Sort the server directory and add the restore task installer
The README and Code of Conduct files move to server/resources, the
scripts that build and deploy them to server/scripts. The new
install_restore_task.ps1 installs a scheduled task as SYSTEM that puts
the files back every 30 minutes, so the shell server's root user can
neither stop it nor change the copies it restores from.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-25 12:47:26 +01:00
Zebreus
996cc53e56 Add the shell server's README and Code of Conduct files
The terminal versions of the pages for the home directory of the shell
server's root user, so each page's top command (cat README, cat README.en,
cat CODE_OF_CONDUCT, cat CODE_OF_CONDUCT.en) works in the web terminal.
Generated by server/make_files.py.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 03:04:12 +01:00
Zebreus
4d6900ccf9 Ship styles.css unminified
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 02:44:41 +01:00
Zebreus
cfab5962e4 Put the styles in a separate styles.css
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 02:41:43 +01:00
Zebreus
aed4af0868 Clickable links, full-width terminal and exact page history
- OSC 8 hyperlinks and plain URLs are clickable on the screen and in the
  page history. Links to a section of the current page scroll there,
  others open in a new tab. Links show their target on hover and invert
  in their own color, like the page's links.
- The terminal fills the page column (the fit addon kept room for a
  hidden scrollbar).
- Lines in the page history sit exactly on the terminal's cell grid,
  also for wide and fallback-font characters, and no longer wrap.
- The first command is sent as soon as the shell's line editor is ready,
  instead of guessing from a pause in its output.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 02:36:28 +01:00
Zebreus
f106ffe22d Use relative URLs and fixed script names
The build is flat (pages, loader.js, terminal.js, logo.png) and only uses
relative URLs, so the site works wherever it is hosted, e.g. at
https://berlin.ccc.de/kik/.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 02:36:28 +01:00
Zebreus
986d35376e Let text glow in its own color
The glow used to be green for all text, including red or blue terminal
output. The explicit red glows are no longer needed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 02:01:21 +02:00
Zebreus
7e1f995e7e Keep the prompt's block cursor while it is focused
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 02:01:21 +02:00
Zebreus
fc250b31b6 Keep colors and styles of lines moved into the page
Lines scrolling off the terminal screen are converted from xterm.js's
cells to styled page text: palette, 256 and true colors, background,
bold (bright), italic, dim, underline, strikethrough, inverse and
invisible, without trailing spaces and keeping empty lines.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 02:01:21 +02:00
Zebreus
3c61a3c419 Match the page prompts to the server prompt
All of the prompt is in the normal green now, except the blue ~.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 01:08:58 +02:00
Zebreus
d718172c23 Embed the login key in the terminal script
The key is no longer served as public/root_key. It is stored as base64
of its rot13 and decoded where the connection is made.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 01:08:58 +02:00
Zebreus
83e25907a8 Connect the bottom prompt to the shared SSH server
The bottom prompt is now a real text input. Sending the first command
lazy-loads an xterm.js terminal that continues right below it and
connects to wss://web.nowhere.wirs.ing with a minimal in-browser SSH
client (curve25519, strict kex, pinned ed25519 host key,
chacha20-poly1305, re-keying) using public/root_key.

The page is the scrollback: lines scrolling off the window-sized
terminal screen become page text, the screen grows with the lines in
use, and the wheel scrolls the page except in full-screen apps.
Typing anywhere on the page goes to the prompt, later to the terminal.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 00:58:38 +02:00
Zebreus
a36da4af6f Add root ssh key 2026-10-24 22:37:54 +02:00
Zebreus
93ee2a943e Port to astro 2026-10-24 22:37:39 +02:00
Zebreus
a701743635 Note not accessible 2026-10-23 04:50:10 +02:00
Zebreus
46c913a614 Remove accessibility info 2026-10-23 04:42:19 +02:00
Zebreus
a922a10303 Fix links on the english version 2026-10-23 01:40:45 +02:00
Zebreus
c5f94fbcd6 Fix links on index html 2026-10-23 01:28:15 +02:00
Zebreus
ffc57a88e4 Replace weird dashes with - 2026-10-23 01:22:50 +02:00
April John
87140ccce3 first commit 2026-10-19 02:01:45 +02:00