An intuitive software erector kit targeted at people new to programming, but with enough potential to stay useful once they've learned, inspired by HyperCard.
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
Forge @ 578eec9 Better implementation of "(un)mark all cards" that works outside the … May 8, 2016
ForgeDebugger @ 0f06634 WIP restoring visual effects support. We now hand the information dow… Apr 24, 2016
KVOWithBlocks @ 5740134 Track KVOWithBlocks HEAD. Feb 23, 2014
Sparkle @ 54f0c67 This should finally fix Sparkle. The right way. May 5, 2016
Stacks @ 7535511 Track (sample) Stacks HEAD. May 9, 2016
Stacksmith Add entries for the focusWindow and selectWindow messages. Not happy … May 9, 2016
UKDistributedView @ d270403 Make this build with the 10.11 SDK. Apr 2, 2016
UKPaintView @ 038eb23 REALLY track subproject changes. Nov 3, 2015
UKSyntaxColoredTextDocument @ 24e96f8 Add Syntax coloring prefs window. Apr 30, 2016
ULIMelodyQueue @ e7a1f55 Make this build with the 10.11 SDK. Apr 2, 2016
ULINetSocket @ cc68aac Made all dependencies subprojects Apr 15, 2012
ULIWideningBezierPath @ 044383c Fix console log error message from CGPostError() complaining about Na… May 1, 2016
UliKit @ 84f8969 Switch from WILDInputPanelController to ULIInputPanelController. This… Apr 22, 2016
stackimport @ 56c2e69 Correct CSS name for italic text (it was "text-style", but CSS uses "… Apr 5, 2016
tinyxml2 @ fb03ffb Track submodules that gained a gitignore file. Apr 1, 2016
.gitignore Fix ignores and track Leonie HEAD. Jan 29, 2014
.gitmodules Make this build with the 10.11 SDK. Apr 2, 2016
HeaderDocTOCTemplate.html Slight corrections to auto-generation of API docs. Apr 28, 2013 Update Readme's description of how the debugger works. Feb 11, 2015
build_docs.command Build docs faster. Apr 27, 2013
headerDoc2html.config Slight corrections to auto-generation of API docs. Apr 28, 2013
nightly_build.command Open folder with build product upon completion. May 8, 2016
nightly_build_and_upload.command Look up password right at the start of the nightly build script. Apr 2, 2016
writerss.php Look up password right at the start of the nightly build script. Apr 2, 2016

What is it

In short, Stacksmith is a HyperCard clone that runs on the current version of Mac OS X.

How to build

Make sure you've inited all the submodules (especially the Leonie sub-submodule of the Forge submodule!) using

git submodule update --init --recursive

then just build the Stacksmith Xcode project. If you want to contribute, note that you'll probably have to change the subprojects to point to your own clones of the subprojects. These instructions might be helpful:

Debugging Hammer code

Stacksmith's scripting language (its analog to HyperTalk) is called Hammer. There is a source-level debugger for it in the ForgeDebugger project. To use it, simply click to the left of a line of your script where you want to start debugging. Stacksmith will launch and connect to the separate ForgeDebugger application and display script text and bytecode in it, as well as local variables and the call stack, and even the stack where temporary variables live. Should this not work, you can also try launching the debugger application manually, and inserting a "debug checkpoint" command in your script.

What is what

Stacksmith consists of several parts:

  • Stacksmith - the Hypercard clone proper
  • ForgeDebugger - the debugger. Yes, it's currently a separate application. This will change eventually.
  • Forge - the part that reads scripts and compiles them into a special bytecode. This is written in C++, but its public API consists of a handful of C functions with a LEO prefix. [Cross platform]
  • Leonie - the part that runs bytecode (i.e. the "compiled" scripts generated by Forge). All of the functions in there are prefixed with LEO [Cross platform]
  • stackimport - A command-line tool that Stacksmith uses to import HyperCard stacks. [Almost cross platform]
  • Sparkle, UKPaintView, UKSyntaxColoredTextDocument, UliKit, UKMelodyQueue, ULINetSocket - Mac-specific helper code used to implement various parts of Stacksmith.


Note: Some submodules may be subject to different licenses.

Copyright 2003-2014 by Uli Kusterer.

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

   1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required.

   2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.

   3. This notice may not be removed or altered from any source