Webtalk is a web-implementation of HyperTalk. That doesn't mean you have to be online to run it. You can download it and run it from a computer with no internet connection.
What's HyperTalk?
That's another topic, which I'll expand upon a bit further down. If you never had a chance to get into the hypertalk language, you really are missing out. HyperTalk was the scripting language used in HyperCard. There's lots of ways you can experience what HyperCard was (is) today.
So what does webtalk do?
Webtalk is loosely based on the HyperTalk scripting language, and the goal is to be compatible in most major respects. There are additions to it and perhaps things missing from it. The boring bit is I'm not implying it's fit for any particular purpose, and there's no guarantees implied or otherwise about how it might run on your system. (Being based on Javascript and CSS, it heavily relies on what your browser is capable of).
The point of it is it's a programming language that's easy to type and understand.
For example, If I wanted to output the current date in javascript, I'd have to type:
Javascript Code:
const now = new Date();
const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
const dayName = days[now.getDay()];
const dateTimeString = now.toLocaleString();
document.getElementById('datetime').textContent = `${dayName}, ${dateTimeString}`;
Javascript Result:
And although to do that in Python is simpler, it's not as readable:
Python Code:
from datetime import datetime
now = datetime.now()
formatted = now.strftime("%A, %d/%m/%Y, %H:%M:%S")
print(formatted)
Which again, gives us this:
Python Result:
Whereas, if I want to do that in HyperTalk, I'd be able to use:
Hypertalk Script:
put item 1 of the long date & "," && the date & "," && the time
Hypertalk Result:
However, the great thing about hyperTalk (and webtalk), is that it can also be quite flexible:
put item 1 of the long date & "," && dateFormat(the dateitems, "%d/%m/%Y") & "," && the time
HyperTalk script
HyperTalk was the programming language created in 1987 by Dan Winkler, and used in the HyperCard application, created by Bill Atkinson. Creating programs in HyperTalk was known as "scripting". HyperTalk scripts were much more similar to written English than many languages available at the time.
Webtalk script
A simple example of webtalk scripting:
This gives you an idea of what I'm aiming for here, to have something that is platform-agnostic which is capable of running HyperTalk scripts.
I'm trying to give a comparable set of features that were available in Hypertalk, but in Webtalk - so they are available to everyone. As such, there won't be specific Mac-only, Windows-only or Linux-only features implemented on this project. If I add a feature, it will be supported across all platforms.
Current progress:
The current documentation containing the release notes are here, as a PDF
Licensing
You might also want to read the license agreement on that last page of the documentation too.
Download
Webtalk, (current version), is available here: Download
You don't need anything special to run it. Just a recent browser (if you are using Safari, needs to be version 17 or above).
There's also a "rolling-release" version available which is what I'm currently working on as a preview.
Wrappers
Alternatively, you can run it in a wrapper. The wrappers are larger in size because they are akin to a standalone app version. The advantage of the wrapper versions is that they also allow use of the shell (download) command in Webtalk. Note, I don't update these as often as the non-wrapper versions - purely because it's a lot of work. They get updated sporadically.
Online version
Or lastly, if you prefer, you can try it as an online live demo here. You might also want to check out the testing pages, which give you a list of commands and handlers that are currently implemented.
Overview
A project overview (text file) is also available, which covers how this all works at a quick glance.
I should really mention, you can load JSON stacks with:
load stack "" -- if it can't find the file, it will ask you
Recent additions:
See the archives (release 141-180, 181 to 220 and 221 to 260) for earlier notes.
v261
New visual effects in this version, amongst other things:
dynamic-effects
static-effects
legacypict
pendingmessages-cancel-by-string
inherit-font
imageGrid
I also made a chess stack. The main purpose of this was to check that if else statements are working as I'd expect:
chess
Don't expect it to be much of an opponent though!
Documentation for this begins on page 189.
v262
In this version, I've implemented the following new features:
answer-multiline -- demo of the new multiline answer dialog.
char-at-loc -- find a character at an x,y loc on the card.
custom-group-bits -- group label and group border can now have colours
focus-on -- like tabbing to a field, but in script
gamepads -- gamepad support in Webtalk
gif-control -- gif control (current frame, previous frame, next frame, looping)
handlers-as-vars -- execute a handler as a variable
marqueeText -- horizontal scrolling text
matched-control -- find a matched control by param lookup
menu4 -- the menuText uses the answer-multiline now
radial-text -- text on a curve
static-effects -- added both drop shadow variants
tab-tests -- tab palette and groups
text-formatting3 -- formattingCommands cleanup

As normal, documentation for this has been updated and begins on page 193.
Example stacks:
Live demos and tools:
User submissions: