Skip to content
Open
Show file tree
Hide file tree
Changes from 167 commits
Commits
Show all changes
169 commits
Select commit Hold shift + click to select a range
134662b
First pass at museum mode where can specify a URL of a start script w…
fghalasz Oct 29, 2025
80bec28
Fix typo in server/js/medley.js
fghalasz Oct 29, 2025
6cf61ae
Fix typo in client/js/main.js
fghalasz Oct 29, 2025
f02e6cc
Fix up a small bit of code in /server/js/medley.js
fghalasz Oct 29, 2025
b04276c
Fix up typo in /server/js/medley.js
fghalasz Oct 29, 2025
75b4baa
Fix setting of START_SCRIPT in run-online-medley script
fghalasz Oct 30, 2025
a186c79
fix misformed medleyEnvs function.
fghalasz Oct 30, 2025
0e4191d
Updating ONLINE-INIT to latest
fghalasz Oct 30, 2025
47b4fbd
Create a start script for testing museum mode
fghalasz Oct 31, 2025
928b207
Adding some debugging code
fghalasz Oct 31, 2025
7cd2126
Adding some debugging code
fghalasz Oct 31, 2025
3d49391
Adding some debugging code
fghalasz Oct 31, 2025
9d36aa2
Adding some debugging code
fghalasz Oct 31, 2025
63c5b61
Removing some debugging code; fixing typo in medley.js
fghalasz Oct 31, 2025
991999b
Adding some debugging code
fghalasz Oct 31, 2025
9115104
Adding some debugging code
fghalasz Oct 31, 2025
cca61e6
Adding some debugging code
fghalasz Oct 31, 2025
5e398b8
Adding some debugging code
fghalasz Nov 1, 2025
6b78411
Debugging
fghalasz Nov 1, 2025
6c5faf3
Debugging
fghalasz Nov 1, 2025
ae08c15
Rename START_KINETIC to START-KINETIC
fghalasz Nov 1, 2025
040eb4d
Renaming START_KINETIC to START-KINETIC and adding ADD.PROCESS to it.
fghalasz Nov 1, 2025
7839dac
Fixing up delete of START_KINETIC from last commit
fghalasz Nov 1, 2025
43bee9e
Fixing START-KINETIC
fghalasz Nov 1, 2025
8d0b6e6
Add second mudeum-mode sample start script focused on pamoroso's INSP…
fghalasz Nov 6, 2025
826768a
Updated START-INSPHEX start-script - this time it actually works
fghalasz Nov 7, 2025
43d785e
Scooching INSPHEX window over a bit in START-INSPHEX start script
fghalasz Nov 7, 2025
d9d797b
Move start-scripts to top level of online repo. Add URLs used with t…
fghalasz Nov 7, 2025
48fb93b
Fix start-script URLs
fghalasz Nov 7, 2025
67ee9ae
Update URL to use 'github.com' instead of 'raw.githubusercontent.com'
fghalasz Nov 7, 2025
72b293c
Merge branch 'main' into fgh_museum-mode
fghalasz Nov 8, 2025
958349c
Add new routes for autologin, /demo/guest is equivalent to the curren…
fghalasz Nov 8, 2025
3906ca4
Fixing res.redirect statements to include query
fghalasz Nov 8, 2025
2299b53
Debugging /demo/login route
fghalasz Nov 8, 2025
73bd1b9
Fix typo
fghalasz Nov 8, 2025
cedf381
Debugging /demo/login route
fghalasz Nov 8, 2025
08f5e50
Debugging /demo/login route
fghalasz Nov 8, 2025
e7b0bb6
Redoing routing for /demo/guest and /demo/login paths.
fghalasz Nov 9, 2025
b1ef52c
Add relogin route for /demo routes.
fghalasz Nov 10, 2025
fb52628
Fix typo
fghalasz Nov 10, 2025
4c13770
Fix relogin page; fix adding autologin=true to originalURL
fghalasz Nov 10, 2025
d891c83
Fix typo
fghalasz Nov 10, 2025
2557e31
Fixing handling of encode and decode of URLS
fghalasz Nov 10, 2025
4402053
Debugging relogin route
fghalasz Nov 10, 2025
8ded780
Still debugging /demo/login
fghalasz Nov 10, 2025
24f502b
Still debugging /demo/login
fghalasz Nov 10, 2025
b9a2f03
Fixing up relogin page; adding install_mongodb thats just been hangin…
fghalasz Nov 12, 2025
d9bade1
Fixing up relogin page
fghalasz Nov 12, 2025
83c2c37
Switch yes/no labels on relogin
fghalasz Nov 12, 2025
a93e0f5
Update START-INSPHEX to use new HEXDUMP function signature. Update t…
fghalasz Nov 12, 2025
44f024a
Fix relogin when using &notecards=1
fghalasz Nov 12, 2025
539bf6d
Merge branch 'fgh_museum-mode' of https://github.com/Interlisp/online…
fghalasz Nov 12, 2025
c3b4f40
Update START-INSPHEX to fix wget filename issues
fghalasz Nov 12, 2025
f83ab09
Fix issues with unix vs lisp filenames in ShellWget
fghalasz Nov 12, 2025
a113f19
Update URL for KINETIC script
fghalasz Nov 12, 2025
42e2d5a
Adding start-script option to main Run Medley page
fghalasz Nov 12, 2025
d2f3ea3
Merge branch 'fgh_museum-mode' of https://github.com/Interlisp/online…
fghalasz Nov 12, 2025
9cb9517
Polishing start-script entry on run medley page
fghalasz Nov 12, 2025
2c7fef8
Fix typo
fghalasz Nov 12, 2025
4d5de1b
Fix const -> let
fghalasz Nov 12, 2025
fb0eec9
Adjusting start-script typein element
fghalasz Nov 13, 2025
a4055bf
Adjusting start-script typein element
fghalasz Nov 13, 2025
d0cc9e7
Adjusting start-script typein element
fghalasz Nov 13, 2025
73e4c8e
Still adjusting start-script typein
fghalasz Nov 13, 2025
dee8a0e
Still adjusting start-script typein
fghalasz Nov 13, 2025
9f8c602
Still adjusting start-script typein
fghalasz Nov 13, 2025
fa8d462
Still adjusting start-script typein
fghalasz Nov 13, 2025
38194a6
Still adjusting start-script typein
fghalasz Nov 14, 2025
a4ec07d
Still adjusting start-script typein
fghalasz Nov 14, 2025
3971f5f
Still adjusting start-script typein
fghalasz Nov 14, 2025
f11a42a
Still adjusting start-script typein
fghalasz Nov 14, 2025
3d5a247
Still adjusting start-script typein
fghalasz Nov 14, 2025
c3c2f96
Storing start_script_url in local store so saved between invocations
fghalasz Nov 14, 2025
d9e4744
Fixing error messages on login page
fghalasz Nov 14, 2025
8627d45
docs/Demo_mode.md created from https://stackedit.io/
fghalasz Nov 16, 2025
93ffbf7
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 16, 2025
77bc972
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 16, 2025
e3d033f
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 16, 2025
3141b01
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 16, 2025
48a57a7
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 16, 2025
ff027c6
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 16, 2025
f8e05ce
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 16, 2025
47f3290
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 16, 2025
6721ed5
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
568c7c0
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
4371d1b
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
795ed2d
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
bd3e86d
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
871d12b
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
85b1497
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
169157d
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
1c801ae
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
aff0e04
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
f9a0fc8
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
3eacb70
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
4b71c88
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
ebfa996
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
1a6c8cd
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
f5458c7
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
eebc768
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
c15a7f9
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
d2b9d61
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
e36ea7c
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
44dd9a1
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
bb95e0b
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
b33fdd4
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
d0842b9
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
d5e1ae0
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
f274beb
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
e14b0e9
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
a86ae00
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
299cf51
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
ddd3fcb
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
6ebe691
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
2021f2f
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
4c09969
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
9254cc9
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
4bfa2a0
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
3d476b9
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
ad4b661
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
0fbfbc0
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
4b00ac4
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
eac6ead
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
21b0381
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
7dd8415
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
dc7aa07
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
4e4df7b
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
1fd4253
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
9aa52f3
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
4e0c4fc
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
0cce787
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
d305152
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
6a6a8f9
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
1f3c575
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
b5a9daf
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
06b4717
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
4cbfd0b
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
569f939
docs/Demo_mode.eyJicmFuY2giOiJmZ2hfbXVzZXVtLW1vZGUiLCJvd25lciI6ImludG…
fghalasz Nov 17, 2025
3d03e78
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
041963b
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
716f6e3
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
71c80cd
docs/Demo_mode.eyJicmFuY2giOiJmZ2hfbXVzZXVtLW1vZGUiLCJvd25lciI6ImludG…
fghalasz Nov 17, 2025
3cbc376
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
683b661
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
e1ddc31
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
9552f6f
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
fb54578
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
c7b1f10
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
ec7cba2
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
6e31ec2
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
917fa95
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
db969ff
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
e428528
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
300a720
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
43ca818
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
49886cf
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
f69e7aa
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
013ba8b
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
6365187
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
bc47f1a
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
e84db58
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
d0c873d
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
3980661
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
21aa5bc
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
2f0f711
docs/Demo_mode.md updated from https://stackedit.io/
fghalasz Nov 17, 2025
bf6beb6
Cleaning stackedit garbage out of Demo_mode.md file
fghalasz Nov 17, 2025
5b9d524
Fix up some formatting in Demo_mode.md
fghalasz Nov 17, 2025
244cadb
Fix a few typos in Demo_mode.md
fghalasz Nov 17, 2025
063c292
Rename ShellWget to be ShellHttpGet; ShellHttpGet now tries to use cu…
fghalasz Nov 19, 2025
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
30 changes: 19 additions & 11 deletions docker_medley/init/ONLINE-INIT
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)

(FILECREATED "18-Mar-2025 22:45:51" {DSK}<home>medley>il>ONLINE-INIT.;1 10668
(FILECREATED "29-Oct-2025 23:56:02" {DSK}<home>frank>il>medley>greetfiles>ONLINE-INIT.;2 11034

:EDIT-BY "guest"
:EDIT-BY "FGH"

:PREVIOUS-DATE "17-Mar-2025 17:06:18" {DSK}<home>medley>il>ONLINE-INIT.;1)
:CHANGES-TO (ADVICE (SAVEVM :IN \IDLER))
(FNS Online.SftpInitInfo Online.SftpUpdateInfo Online.SetUpNOTECARDSDIRECTORIES
Online.DoInit ONLINEP Online.FileButton)
(VARS ONLINE-INITCOMS)

:PREVIOUS-DATE "18-Mar-2025 22:45:51" {DSK}<home>frank>il>medley>greetfiles>ONLINE-INIT.;1)


(PRETTYCOMPRINT ONLINE-INITCOMS)
Expand Down Expand Up @@ -149,6 +154,8 @@
(Online.DoInit
[LAMBDA NIL

(* ;; "Edited 29-Oct-2025 23:55 by FGH")

(* ;; "Edited 16-Mar-2025 23:26 by guest")

(* ;; "Edited 25-Feb-2024 11:37 by fgh")
Expand Down Expand Up @@ -217,14 +224,15 @@
(RPLACA (CAR CHAT.DISPLAYTYPES)
NIL)

(* ;;
 "Setup NOTECARDSDIRECTORIES. Should be done it APPS-INIT. But until thats done, we'll do it here.")
(* ;; "Create File Import/Export Button")

(Online.SetUpNOTECARDSDIRECTORIES)
(Online.FileButton)

(* ;; "Create File Import/Export Button")
(* ;; "If there is a start-script file, load it ")

(Online.FileButton])
(LET [(START-SCRIPT (UNIX-GETENV 'START_SCRIPT]
(IF START-SCRIPT
THEN (LOAD START-SCRIPT])

(ONLINEP
[LAMBDA NIL (* ; "Edited 24-Feb-2024 22:31 by fgh")
Expand All @@ -239,7 +247,7 @@
(BKSYSBUF " ")
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1640 10532 (Online.SftpInitInfo 1650 . 2523) (Online.SftpUpdateInfo 2525 . 2780) (
Online.SetUpNOTECARDSDIRECTORIES 2782 . 4490) (Online.FileButton 4492 . 7320) (Online.DoInit 7322 .
10393) (ONLINEP 10395 . 10530)))))
(FILEMAP (NIL (1924 10898 (Online.SftpInitInfo 1934 . 2807) (Online.SftpUpdateInfo 2809 . 3064) (
Online.SetUpNOTECARDSDIRECTORIES 3066 . 4774) (Online.FileButton 4776 . 7604) (Online.DoInit 7606 .
10759) (ONLINEP 10761 . 10896)))))
STOP
Binary file modified docker_medley/init/ONLINE-INIT.LCOM
100755 → 100644
Binary file not shown.
14 changes: 14 additions & 0 deletions docker_medley/scripts/run-online-medley
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,20 @@ if [ $# -gt 1 ] && [ "$2" = "custom" ]; then
fi
fi
#
unset START_SCRIPT
if [ -n "${START_SCRIPT_URL}" ]
then
export START_SCRIPT="${MEDLEY_USERDIR}/initdir/START-SCRIPT"
mkdir -p "$(dirname "${START_SCRIPT}")"
wget "${START_SCRIPT_URL}" -O "${START_SCRIPT}"
if [ $? -ne 0 ]
then
rm -f "${START_SCRIPT}"
unset START_SCRIPT
fi
fi
unset START_SCRIPT_URL
#
if [ $# -gt 2 ]; then
width=$3
else
Expand Down
74 changes: 74 additions & 0 deletions docs/Demo_mode.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@

# Online.Interlisp.Org: Demo mode (aka Museum Mode)
## Overview

When accessing online.interlisp.org (OIO) using Demo Mode, Online Medley will LOAD a Lisp file called a *start script*. The start script is specified by a query parameter in the URL through which OIO was accessed. Before the Online Medley run starts, the start script file is downloaded using ```wget```into a known file in the Medley file system. It is then LOADed as the last step in the ONLINE-INIT initialization. The intent is that upon LOAD the start script will run a demo by defining and/or LOADing additional Lisp code and then starting up that demo, e.g., via a P file package command.

An addition aspect of Demo Mode is that login processing can (optionally) be skipped, the user automatically logged in as guest, and the Online Medley session started with no user interaction required. Alternatively, the login process can remain but the standard "Run Medley" page will be skipped and the user will go directly from login to the running Medley without having to set all the run parameters in the Run Medley page. Automatic guest login is sufficient for most demos. But requiring login allows demos to save files and context between runs of Online Medley, which is not possible with guest login.

## Demo mode URLs
To access Demo mode, use the following URLs:

```https://online.interlisp.og/demo?start=\<START-SCRIPT>``` for automatic guest login.

```https://online.interlisp.og/demo/login?start=\<START-SCRIPT>``` to require logins

```<START-SCRIPT>``` is a URL pointing to a start-script lisp file that can be wget'd by the OIO server. **This URL must be encoded using the equivalent of Javascript's *encodeURIComponent*.** The easiest way to do this is via one of the many websites that offer this service such as https://meyerweb.com/eric/tools/dencoder/.

In addition to the *start* query parameter, Demo mode supports the *notecards=1* and *rooms=1* query parameters. If these query parameters are included in the Demo mode URL, then NoteCards and/or Rooms will be automatically started when Online Medley runs, in addition to the start-script.

Any of the query parameters (start, notecards, rooms) can be left off, with the expected change of function. For example, https://online.interlisp.org/demo?notecards=1 will automatically login as guest and start notecards - but not run any start script.

Example Demo mode URL: https://online.interlisp.org/demo?start=https%3A%2F%2Fgithub.com%2FInterlisp%2Fonline%2Fraw%2Frefs%2Fheads%2Ffgh_museum-mode%2Fstart-scripts%2FSTART-INSPHEX.LCOM&notecards=1. This URL will automatically login as guest, wget and LOAD the file START-INSPHEX.LCOM from the Interlisp/Online repo on github and start Notecards.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When visiting the example demo URL I get this error in Firefox and Chrome on Linux:

/demo?start=https%3A%2F%2Fgithub.com%2FInterlisp%2Fonline%2Fraw%2Frefs%2Fheads%2Ffgh_museum-mode%2Fstart-scripts%2FSTART-INSPHEX.LCOM&notecards=1 Not Found

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expected. The URL in the documentation points to production OIO But demo-mode is not yet running on production, only on the development OIO. To test the URL at this point, you will need to manually add the :8081. This should go away once we deploy demo-mode PR to production.


## Start scripts

Any LOADable Lisp file (source or compiled, Interlisp or Medley CommonLisp) can serve as a start script.

Sample start scripts can be found in the Interlisp/Online Github repo in the start-scripts directory.

Most demos will require Lisp (or other) files that are not included in the standard Online Medley image. One very handy function to be used in start scripts for these demos is ```(ShellWget URL OUTFILE)```. This function will download (using wget) the file specified by URL and store it in the versioned Online Medley file system under the name OUTFILE. OUTFILE can then be LOADed by the start script.

Below is the start script for a demo of Pamoroso's INSPHEX utility The start script defines and then runs a function called START-INSPHEX. The START-INPHEX function in turn uses ShellWget to download the source code to INSPHEX from Github, compiles it, loads the compiled file and then uses ADD.PROCESS to run the main HEXDUMP function. There is some additional complication in the call to ADD.PROCESS to ensure that packages are handled correctly. But most existing Interlisp demos will not need this complexity since they don't use packages.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing period after "utility".

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.


```
(DEFINE-FILE-INFO ^^PACKAGE "INTERLISP" ^^READTABLE "INTERLISP" ^^BASE 10)

(FILECREATED "16-Nov-2025 21:15:14" {DSK}<home>frank>il>START-INSPHEX.;1 1641)

(PRETTYCOMPRINT START-INSPHEXCOMS)

(RPAQQ START-INSPHEXCOMS ((FNS START-INSPHEX)
(P (START-INSPHEX))))
(DEFINEQ

(START-INSPHEX
[LAMBDA NIL
(LET* ((INSPHEX.FILE (OUTFILEP "{CORE}INSPHEX"))
INSPHEX.DFASL)
(ShellWget "https://raw.githubusercontent.com/pamoroso/insphex/refs/heads/main/INSPHEX"
INSPHEX.FILE)
(SETQ INSPHEX.DFASL (CL:COMPILE-FILE INSPHEX.FILE))
(LOAD INSPHEX.DFASL)
(ADD.PROCESS (LIST (CL:FIND-SYMBOL "HEXDUMP" "INSPHEX")
(KWOTE INSPHEX.DFASL)
'(CREATEW (CREATEREGION (FIX (TIMES 0.35 SCREENWIDTH))
(FIX (TIMES 0.25 SCREENHEIGHT))
(FIX (TIMES 0.5 SCREENWIDTH))
(FIX (TIMES 0.5 SCREENHEIGHT])
)
(START-INSPHEX)
STOP

```

## Start scripts outside of Demo mode

Start scripts can also be used outside of Demo mode. In the normal OIO workflow, the user will be taken to the "Run Medley" page. On the Run Medley page, if you enable *Show advanced options* there will be a field into which you can enter the URL for a start-script (in either original or URI encoded forms). When Online Medley starts up, the specified start script will be wget'd and LOADed as in Demo mode.

Additionally, if a ```start=<encoded start-script URL>``` query parameter is included in the URL used to access OIO (outside of Demo mode), then the specified URL (decoded) will be prepopulated into the Advanced Options/Start URL field on the Run Medley page.

## Synonyms for *https::online.interlisp.org/demo*

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the double colon :: intentional? The URLs don't seem to work.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pamoroso No the double colons are a typo. Fixed.


For legacy reasons, ```https:://online.interlisp.org/demo/guest``` and ```https:://online.interlisp.org/guest``` are synonyms for ```https::online.interlisp.org/demo```.

55 changes: 55 additions & 0 deletions start-scripts/START-INSPHEX
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)

(FILECREATED "11-Nov-2025 23:54:22" {DSK}<home>frank>il>online>start-scripts>START-INSPHEX.;18 2203

:EDIT-BY "FGH"

:CHANGES-TO (FNS START-INSPHEX)
(FUNCTIONS TmpShellWget)
(VARS START-INSPHEXCOMS)

:PREVIOUS-DATE "11-Nov-2025 23:50:23" {DSK}<home>frank>il>online>start-scripts>START-INSPHEX.;17
)


(PRETTYCOMPRINT START-INSPHEXCOMS)

(RPAQQ START-INSPHEXCOMS ((FUNCTIONS TmpShellWget)
(FNS START-INSPHEX)
(P (START-INSPHEX))))

(CL:DEFUN TmpShellWget (URL OUTFILENAME) (* ; "Edited 11-Nov-2025 23:50 by FGH")
(LET* ((WGET (ShellWhich "wget"))
(OUTNAME (OUTFILEP OUTFILENAME))
(TMPFILE (CONCAT "/tmp/wget" (CLOCK)))
(UNIXFILE (CONCAT "{UNIX}" TMPFILE))
(CMD (CONCAT WGET " " URL " -O " TMPFILE)))
(if (NULL WGET)
then (ERROR "ShellWget - wget not available"))
(ShellCommand CMD)
(COPYFILE UNIXFILE OUTNAME)
(DELFILE UNIXFILE)
OUTNAME))
(DEFINEQ

(START-INSPHEX
[LAMBDA NIL (* ; "Edited 11-Nov-2025 23:54 by FGH")
(* ; "Edited 7-Nov-2025 10:43 by FGH")
(LET* ((INSPHEX.FILE (OUTFILEP "{CORE}INSPHEX"))
INSPHEX.DFASL)
(TmpShellWget "https://raw.githubusercontent.com/pamoroso/insphex/refs/heads/main/INSPHEX"
INSPHEX.FILE)
(SETQ INSPHEX.DFASL (CL:COMPILE-FILE INSPHEX.FILE))
(LOAD INSPHEX.DFASL)
(ADD.PROCESS (LIST (CL:FIND-SYMBOL "HEXDUMP" "INSPHEX")
(KWOTE INSPHEX.DFASL)
'(CREATEW (CREATEREGION (FIX (TIMES 0.35 SCREENWIDTH))
(FIX (TIMES 0.25 SCREENHEIGHT))
(FIX (TIMES 0.5 SCREENWIDTH))
(FIX (TIMES 0.5 SCREENHEIGHT])
)

(START-INSPHEX)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (623 1170 (TmpShellWget 623 . 1170)) (1171 2159 (START-INSPHEX 1181 . 2157)))))
STOP
Binary file added start-scripts/START-INSPHEX.LCOM
Binary file not shown.
2 changes: 2 additions & 0 deletions start-scripts/START-INSPHEX.URL
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
https://online.interlisp.org:8081/demo?start=https%3A%2F%2Fgithub.com%2FInterlisp%2Fonline%2Fraw%2Frefs%2Fheads%2Ffgh_museum-mode%2Fstart-scripts%2FSTART-INSPHEX.LCOM

33 changes: 33 additions & 0 deletions start-scripts/START-KINETIC
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)

(FILECREATED " 1-Nov-2025 13:41:38" {DSK}<home>frank>il>medley>START-KINETIC.;2 1112

:EDIT-BY "FGH"

:CHANGES-TO (FNS START-KINETIC)

:PREVIOUS-DATE " 1-Nov-2025 13:21:22" {DSK}<home>frank>il>medley>START-KINETIC.;1)


(PRETTYCOMPRINT START-KINETICCOMS)

(RPAQQ START-KINETICCOMS ((FILES KINETIC)
(FNS START-KINETIC)
(P (START-KINETIC))))

(FILESLOAD KINETIC)
(DEFINEQ

(START-KINETIC
[LAMBDA NIL (* ; "Edited 1-Nov-2025 13:41 by FGH")
(* ; "Edited 1-Nov-2025 13:15 by FGH")
(ADD.PROCESS '(KINETIC (CREATEW (CREATEREGION (FIX (TIMES 0.25 SCREENWIDTH))
(FIX (TIMES 0.25 SCREENHEIGHT))
(FIX (TIMES 0.5 SCREENWIDTH))
(FIX (TIMES 0.5 SCREENHEIGHT])
)

(START-KINETIC)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (517 1068 (START-KINETIC 527 . 1066)))))
STOP
1 change: 1 addition & 0 deletions start-scripts/START-KINETIC.URL
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://online.interlisp.org:8081/demo?start=https%3A%2F%2Fgithub.com%2FInterlisp%2Fonline%2Fraw%2Frefs%2Fheads%2Ffgh_museum-mode%2Fstart-scripts%2FSTART-KINETIC
8 changes: 8 additions & 0 deletions system/install_mongodb8.0.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
!#/bin/bash
wget -qO - https://www.mongodb.org/static/pgp/server-8.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
sudo apt update
sudo apt install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod
59 changes: 27 additions & 32 deletions web-portal/client/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,10 @@ window.addEventListener('load', (event) => {
document.getElementById("interlisp_rb").checked = true;
}
fillWindowOnClick();
document.getElementById("dev-options-checkbox").checked = (localStore.getItem("show_dev_options") == "true");
if (alStart != "") document.getElementById("start_script_url").value = alStart;
else document.getElementById("start_script_url").value = localStore.getItem("start_script_url");
if ((localStore.getItem("show_dev_options") == "true") || (document.getElementById("start_script_url").value != ""))
document.getElementById("dev-options-checkbox").checked = true;
showDevOptionsOnClick();
if( ! (isAutoLogin || fromvnc)) {
if(isVerified != true) {
Expand Down Expand Up @@ -127,7 +130,14 @@ function startSession (interlispOrXterm) {
const runRooms = document.getElementById("run_rooms_cb").checked ? "true": "false";
const startSftp = document.getElementById("sftp_checkbox").checked ? "true": "false";
const medleyExec = document.getElementById("interlisp_rb").checked ? "inter" : "common";
const startScriptUrl =
(function() {
let ss = document.getElementById("start_script_url").value;
if (ss.includes("%2F")) ss = decodeURIComponent(ss);
return ss;
})();
if(!isGuest) {
localStore.setItem("start_script_url", startScriptUrl);
localStore.setItem("fill-window", fillWindow ? 'true' : 'false');
if(! fillWindow) {
localStore.setItem("screen_width", screenWidth);
Expand Down Expand Up @@ -159,36 +169,7 @@ function startSession (interlispOrXterm) {
.then( data => {
const isRunning = data.isRunning;
const sessionType = data.target;
if(isRunning) {
new Promise((resolve, reject) => {
const dlg = document.getElementById("reconnect-dialog");
const typeEl = document.getElementById("rd-type-span");
typeEl.html = sessionType;
dlg.resolve = resolve;
dlg.reject = reject;
dlg.showModal();
}
)
.then(RorK => {
window.location.assign(
`/medley/${interlispOrXterm || "interlisp"}`
+ `?screen_width=${screenWidth}`
+ `&screen_height=${screenHeight}`
+ `&if=${RorK}`
+ `&resume=${resume || "false"}`
+ `&custom=${custom || "false"}`
+ `&custom_init=${customInit || "false"}`
+ `&notecards=${runNotecards || "false"}`
+ `&rooms=${runRooms || "false"}`
+ `&sftp=${startSftp || "false"}`
+ `&exec=${medleyExec || "inter"}`
+ ( isAutoLogin ? "&autologin" : "")
);
}
);
}
else {
window.location.assign(
const medley_url =
`/medley/${interlispOrXterm || "interlisp"}`
+ `?screen_width=${screenWidth}`
+ `&screen_height=${screenHeight}`
Expand All @@ -200,8 +181,22 @@ function startSession (interlispOrXterm) {
+ `&sftp=${startSftp || "false"}`
+ `&exec=${medleyExec || "inter"}`
+ ( isAutoLogin ? "&autologin" : "")
);
+ ( (startScriptUrl != "") ? `&start=${encodeURIComponent(startScriptUrl)}` : "" )
;

if(isRunning) {
new Promise((resolve, reject) => {
const dlg = document.getElementById("reconnect-dialog");
const typeEl = document.getElementById("rd-type-span");
typeEl.html = sessionType;
dlg.resolve = resolve;
dlg.reject = reject;
dlg.showModal();
}
)
.then(RorK => { window.location.assign(medley_url + `&if=${RorK}`); } );
}
else window.location.assign(medley_url);
},
reason => {}
);
Expand Down
2 changes: 1 addition & 1 deletion web-portal/client/views/again.pug
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ block headeradds
block content

.row.text-center#again-button
button.main-button(type="button" onclick='window.location.assign(decodeURI(alURL));')!= "Run Medley Again"
button.main-button(type="button" onclick='window.location.assign(decodeURIComponent(alURL));')!= "Run Medley Again"

13 changes: 13 additions & 0 deletions web-portal/client/views/help_dialogs.pug
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,16 @@ dialog(id="help-dialog-which-exec").help-dialog
Additional Exec windows based on either Interlisp or Common Lisp can be started at any time from the background menu.
.single-button-div
button(type="button" onclick='helpDialogClose("which-exec");').main-button OK
dialog(id="help-dialog-start-script").help-dialog
h2 Help
p.
A start-script if a Medley Lisp file that will be LOADed at the end of the ONLINE-INIT script while Online
Medley is starting up. It can be used to fetch other files from the Internet and/or to run code that will
set-up the Medley environment or start a specific Medley application. This is generally used for automatings
demos. Example start-scripts can be found at https://github.com/interlisp/online/start-scripts.
p.
In this field enter a URL that points to a Medley Lisp file that can be downloaded from the Internet with
wget. This file will be downloaded amd LOADed at the end of ONLINE-INIT.
.single-button-div
button(type="button" onclick='helpDialogClose("start-script");').main-button OK

2 changes: 1 addition & 1 deletion web-portal/client/views/login.pug
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ block headeradds

if(info) {
const errorMessage = document.getElementById("error-message");
errorMessage.innerText = info;
errorMessage.innerText = decodeURIComponent(info);
//errorMessage.style.display = "block";
} else if("#{verificationNotice}" == "true") {
const dlg = document.getElementById("verification-dialog");
Expand Down
Loading