Release Notes

Q2 2023 Release (June 2023)

This release adds a tool help system and several other new features. It also includes several bug fixes.

Important Note:

New Features

  • Tool Help Feature:

    Many standard WSP tools now incorporate help features. A help-enabled tool displays a progress indicator when you press and hold the tool icon; when the indicator finishes a dialog box appears with a brief description of what the tool does and/or how to use it. (No progress indicator appears for tools that are not help-enabled.)

    For many help-enabled tools, the dialog box also includes either a link to a Help Video or links to both a Tip Video and a Full Video.

    • A Tip Video shows the tool being activated and shows the tool's given objects being placed in the sketch or being matched to existing objects in the sketch. Tip Videos are no more than 30 seconds in length and are muted to reduce classroom distractions.
    • A Full Video provides considerably more detail. (For example, it might show several different ways to use the tool.) Full Videos include both narration and closed captions and are usually between one and two minutes long.
    • A Help Video is usually slightly longer than a Tip Video, and is provided for tools that are sufficiently straight-forward that they don't need as much detail as a Full Video would provide.

    To dismiss the Tool Help dialog box, tap its close icon (X) or tap anywhere outside the dialog box.

    Tool Help is normally available for standard tools in every sketch that has widgets or page controls. To disable Tool Help for a sketch, set the toolhelp author preference to false.

    To learn how to create WSP-based student activity pages that include help-enabled tools, click this link: Incorporating Tool Help in WSP-based Student Activities

  • Labeling Improvements:

    Labeling features have improved in several ways:

    1. The Label Widget can be used to set multiple objects to use the same label style (font, size, and visibility). Activate the Label Widget, tap one object, and set it to your desired style (if it doesn't already have your desired style). Then tap, in turn, each of the other objects that you want to set to the same font, size, and visibility. The label format radio buttons (such as auto and manual for calculations and measurements and prime, short function, and full function for transformed images) must be set individually for each object you tap.
    2. Sketch authors working in GSP to create source sketches for export to WSP can now include signals in object labels to determine how the label is presented when the authored sketch is opened in WSP. These signals can specify label formats (_auto_, _manual_, _prime_, _short_, _full_, and _none_.) as well as _hide_, _show_, and _apply_. The _hide_ signal makes the label visible for the GSP-using author, but hidden for the WSP user. The _show_ signal is normally used for a label that should be generated and shown when the sketch is loaded or when the tool is used. (Though labeling a tool point "given: A" will generate a new label if an object "A" already exists in the sketch, using "given: _show_" is a clearer indication of what will actually happen when the tool is used.) The _apply_ signal applies the object's explicit label regardless of whether or not the explicit label would duplicate the label of some other object that already exists in the sketch. (Thus a tool point labeled "given:A _apply_" will always be labeled "A" even if other objects in the sketch are already labeled "A".)

  • Glide Reflection Improvements:

    The WSP Exporter now allows you to include glide reflections in both tools and sketches. To glide reflect an object using segment PQ as the mirror/vector, use this signal in the glide-reflect image's label: "_glidereflect_". The WSP Exporter will convert the reflection to a glide reflection and remove the "_glidereflect_" signal from the label. Refer to Glide Reflection for details.)

  • Confirm and Cancel buttons, and Return and Escape keys now deactivate a "sticky" tool.

    Further, if you've double-tapped a tool to make it "sticky" and use it repeatedly, both the Confirm button and the Return key confirm the current use of the tool and deactivate it, and both the Cancel button and the Escape key cancel the current use of the tool and deactivate it.

  • Tool icons support high-resolution displays:

    High resolution icons are now displayed properly. Some (but not all) tools incorporate high-resolution icons.

  • sQuery improvement:

    The sQuery mechanism can now select sketch objects based on properties with boolean values.

  • Added new sketch events:

    External clients now have more information about sketch events. The new events include ActivateButton, ToolPlayBegan, EditExpression (replacing EditParameter), ClearTraces, PrefChanged, and events for every widget. Document these events in documentation/Document/document-event.html

  • Intersection improvements:

    When a tool's given or a dragged object is merged to a potentially ambiguous intersection, intersections of two straight objects or two curved objects are preferred to intersections of unlike objects.

    When a tool's given or a dragged object is merged to an intersection of nearly tangent objects, it may be hard for the user to locate precisely the intersection. The user no longer needs to be as accurate when locating such an intersection.

  • Efficiency Improvements

    Web Sketchpad now distinguishes between those changes to an object that affect the object's children and those that don't. (For instance, editing a parameter's value affects the value and/or location of its children, but dragging the parameter has no effect on its children, and there's no need to update them.) In a complex sketch, eliminating such updates can significantly improve performance.

  • Changes in User Preferences

    To be written...

Bug Fixes:

  • Tool icons can no longer be dragged:

    The action of dragging a tool icon into the sketch served no purpose; it only confused users. Once you dragged a tool icon, there was nothing you could do with it except to release the drag, with exactly the same effect as if you tapped the tool icon. Dragging a tool suggested, incorrectly, to users that it would matter where they released the drag.

  • Parameter animation speed is more accurate:

    Animation action buttons for parameters allow you to specify the animation speed in units per time interval, but in some environments the actual speed differed. Parameter animations now use the computer's system clock to keep the actual speed as close as possible to the button's units/second setting.

  • Once-only parameter animation now respects the domain:

    If a once-only parameter animation button's original value is outside its specified domain, the parameter's final value is now the end of the domain closest to the original value. (Previously, the final value jumped to the original value, outside the domain.)

  • Matching a parameter to a text object no longer shows a hidden object:

    You can match a parameter (either during tool use or by drag-merging) to a text object that displays the value of a hidden object (such as a calculation or a measurement). Doing so no longer reveals the hidden object that is the source of the value displayed in the text object.

  • nameOrigin values no longer appear as labels:

    Fixed an issue in which a tool production labeled with a nameOrigin value (such as namedByFullFn) displayed the actual nameOrigin as its label. Such a production now creates and displays the correct label based on the specified nameOrigin.

  • Tool's given objects are now always visible:

    When you activate a tool, the initial locations of the given objects are determined by the tool, and sometimes the given object's location was outside the sketch window. Now the given objects are always located within the sketch window.

  • Improved dragging behavior for text objects:

    Dragging a calculation, measurement, or parameter no longer results in unnecessary updates to all of their descendant objects.

  • Move buttons set to "follow moving target" now do so consistently:

    Depending on the target, some "follow moving target" buttons instead moved to the target's original location.

  • Move buttons set to "move to initial destination" now do so consistently:

    A "move to initial destination" button that moved a point on path might never reach its destination (if the destination is not on the path) and remain active forever. Such a button now moves along its path to the point that was closest to the target point when the movement began.

  • Drag-merging no longer leaves the Widget panel hidden:

    The Widget panel is hidden during dragging and should re-appear when the drag ends. This now happens properly even if the drag ends merging the dragged object to another sketch object.

  • Drag-merging is now disallowed if there's no Undo button:

    Users should not be left with no recourse if they accidentally drag-merge two objects.

  • The Label Widget can now tap labels as well as objects:

    You can now use the Label Widget by tapping either the object's label or the object itself.

  • The Number Pad and Calculator now send EditExpression events:

    This event allows an external client to detect and respond to value changes in the edited objects.

  • Traces no longer drift on the screen.

    Depending on the environment, traces sometimes drifted down and right on the screen. Now they stay in position.

Q3 2021 Release (October 2021)

This release incorporates new features and several bug fixes.

Important Note:

New Features

  • File Format:

    The new file format does a better job of supporting several WSP features not directly supported by GSP. These include:

    • Glide Reflection as a built-in transformation
    • Case action buttons
    • Blank calculations
    • Constructible given objects in a tool
    • More choices in the way objects (especially transformed images) are labeled
    • Autoplay tools that act immediately, with no givens needing to be matched

    All of these features can be specified in a GSP source sketch (mostly by using special labels for certain sketch objects). Until now, these features were detected and implemented during the process of loading a sketch, so that the initial websketch produced by the WSP Exporter left special labels in place, rather than converting them to their final WSP form. Now the WSP Exporter recognizes these features and converts them immediately, so that the exported WSP sketch contains the features in their final native form rather than using the specially-encoded form from the GSP source sketch.

    The current release retains the ability to recognize these features from their special encoding, so it remains backward-compatible: it can still recognize and support files exported in the previous file format. (Files created by the current Exporter can be loaded by previous WSP code. Nevertheless, we encourage users to upgrade their code to the current release.)

Bug Fixes:

  • Unnecessary Labeling of Mirror: If a GSP source sketch contains a visible mirror together with a reflected object labeled with full function notation, the mirror is automatically labeled. For instance, if the resulting label is rmA for "the reflected image of point A in mirror m, the mirror m is automatically generated and shown. However, such mirrors were also being labeled unnecessarily for other notations of the reflected object, notations that don't display the mirror's label. Such unnecessary labeling no longer occurs.
  • Appearance of Hot Text Buttons: When you created a GSP source sketch with buttons embedded as Hot Text in a caption, Web Sketchpad didn't display those embedded buttons in the same color and style as were used in the source sketch. Now they are displayed using the proper color and style.
  • Drag Merge Timing Adjustment: Drag merging is more convenient; it now becomes active only half a second after you drag and hold a free point or parameter over a target object to which you want to merge it, remains active for 2.5 seconds, and subsequently cycles between active and inactive as long as you hold the object over the target. To complete the merge, release the held object while the visual feedback shows that drag-merging is active.
  • Drag Merge Preference: The drag merge author preference is now handled better: drag merging is enabled by default only in sketches with that contain an Undo button, and is disabled if the "Enable drag merging" author preference is set to false.
  • Drag Merge Bug: Drag merging was available even in sketches without an Undo button, resulting in possible drag-merge mistakes that cannot be undone. Drag merging is now properly disabled in such sketches.
  • Drag Merge Labeling Issue: Drag merging now properly updates the labels of children of the merged objects.
  • Label Bug: Objects in both tools and sketch pages whose labeling format was set using the nameOrigin method in the GSP source sketch sometimes showed the format code rather than the desired label. Now the labels appear correctly.

Q3 2021 Release (July 2021)

This release incorporates new features and several bug fixes.

Important Note:

New Features

  • Tool Library Features:

    The WSP Tool Library (geometricfunctions.org/fc/tools/library) now allows the user to specify which tools are available on each page of a sketch. Other improvements in the Tool Library's performance include the preservation of the Undo/Redo history when you make other changes in pages or tools.

  • Changing Length and Angle Units:

    The Utility Menu now includes commands to set your preferences for the length and angle units used on the current page of the sketch.

  • Plotting Points Improvement:

    Now you can plot any numeric value on a coordinate system. Until now, you could not plot values with units like centimeters or degrees. (To use this feature in a sketch, use the (WSP Tool Library) to add the "Plot as (x, y)" tool to a sketch.)

Bug Fixes:

  • Matching a Straight Given to an Axis: Recent accessibility changes broke when you matched a straight given tool object to an axis in the sketch. With this fix, you can once again make such a match.
  • Upload/Download Dialog Boxes: The Download dialog box now describes the two possible file-name patterns (ending in either ".json" or "-json.js"), and enforces the requirement that the part preceding "-json.js" must be a legal javascript variable name.
  • Widget Button: The Widget button beneath the sketch was sometimes visible even if the current page did not enable any widgets. It now appears only when the current page enables at least one widget.
  • Loading of Hidden Sketches: In some web-page configurations a sketch not initially in view failed to load when it did come into view. Such sketches are now properly loaded once they do come into view.
  • Decimal Separator: WSP no longer defaults to using a period decimal separator when no locale is specified. Instead it sniffs the browser by checking a return value from toLocaleString(), so that WSP now uses the same decimal separator as the browser in which it’s running.

Q2 2021 Release (April 2021)

This release incorporates new features and several bug fixes.

Important Note:

New Features

  • Drag Merging

    Free points and parameters can now be merged to other objects in the sketch. This is often useful if you fail to connect one of a tool's given objects to the desired object in the sketch, because you can now drag that given point or parameter onto the object to which it should have been matched.(This feature is available only in websketches with a visible Undo button.)

    To use this feature, drag the desired free point or parameter onto the object to which it should be merged, and hold it there until the object you're dragging starts to glow. Release the held object once the glowing starts. (The object to which your dragged object will be merged is also highlighted to indicate the imminent merge.)

    If you want to position the free point or parameter without merging it, you can drop it before the glowing begins, or wait until the glowing stops. If there are multiple merge targets, such as overlapping paths or multiple intersections, continue holding until the highlighted objects indicate the desired target. As long as you hold the free point or parameter in place over the potential target(s), the glowing behavior will recur every few seconds.

    Use the Undo button to undo an accidental or incorrect drag merge, or use the Redo button to redo it. To prevent accidental drag merge behavior that cannot be undone, the drag merge feature is available only when the Undo and Redo buttons are available. (In other words, the feature is available only in websketches that have tools.

    You can merge two adjacent vertices of a polygon, for example to turn a hexagon into a pentagon. The vertices to be merged must be independent and the polygon must have at least four vertices.

  • f(t) Functions

    You can now define functions to use t as the independent variable. This is useful for parametric functions and for functions that use time as their independent variable. To change an existing function to f(t) form, use the Calculator to edit the function and choose f(t) from the Calculator's Equation drop-down menu. (There is no way to specify such functions in GSP source files at this time.)

  • Assumed Given Objects in Tools

    You can now use a tool with an assumed given object in a sketch that does not yet contain an object for the assumed given object to match. The tool now creates the assumed given if it does not already exist, putting it in the same location (or if it’s a parameter, giving it the same value) as the assumed object on the tool page. See Construction.html#assumed for more details.

  • Save Sketches in Either JSON or JS format

    You can now save sketches in either format, both from the Web Sketchpad Exporter and from the Utility Menu that appears below some sketches. The JS format is of particular value to web-page authors who want to put multiple sketches on a web page or who encounter CORS (cross-origin resource sharing) security restrictions with JSON sketches. (Some browsers implement CORS security provisions in a way that prevents a webpage residing in a local directory from loading a local .json file. These restrictions do not apply to local .js files.)

    For details about exporting and using JS format sketch files, see multiple sketches on a single web page.

  • Calculator Tweak

    When editing calculations and functions, you can now tap a single-valued "composite text" object to incorporate its value into the calculation or function. (A "composite text" object incorporates values and/or labels of other objects in its own text.)

  • Use a Link in the Webpage to Change the Sketch Page

    You can now put a link in the text of your webpage that changes the page displayed in the related sketch. See Use a Link in your Webpage to Change the Page in a Sketch for details.

  • DownloadDocument Sketch Event

    The DownloadDocument sketch event is now sent when the user downlaods the current websketch using the Util menu.

Bug Fixes:

  • Path Markers Stay Inside the Ends of their Paths: Path markers (both crossbars and arrows) now stay inside the endpoints of their paths. (Paths with endpoints include segments, rays, and arcs.)
  • Instant Move Buttons: An Instant Move button for a point on line or point on ray now consistently reaches the target point.
  • Calculator Bugfix: The Calculator didn't allow the user to tap a value that didn't have a visible label. Now tapping an unlabeled value reveals the previously-hidden label. (The user can hide the label again if she prefers.)
  • Angle Bisector Intersections: Sometimes the intersection of an angle bisector with a circle or arc was placed incorrectly. Such intersections are now where they belong.
  • Move/Animate Button Conflict: If an Animate button animates the target point of a Move button and both buttons are started simultaneously, the Animate button now starts properly even if the Move button's moving point is already very close to its target.
  • Loci and Iterated Images Bug: Fixed an obscure bug in which a locus or iterated image could remain visible even when its parent objects no long existed.
  • Number Pad Fix: The Number Pad now allows the user to cancel without changing the value of the parameter being edited.
  • Parameter Editing During Toolplay: If you edit a given parameter while using a tool, the remaining given objects of the tool begin glowing properly once you finish editing the parameter.
  • Widgets are now CORS-compliant: The html code that defines the appearance of widgets is now embedded in the widgets.js file, avoiding the need to load a separate widgets.html file. Some browsers implement CORS security provisions in a way that prevents a webpage residing in a local directory from loading a local .html file. This change overcomes that problem.

Q3 2020 Release (July 2020)

This release incorporates several new features and bugfixes.

Important Notes:

  • File format semantic version bumps a minor version from 4.6.2 to 4.8.0
  • The Style Widget's icon is now a painter’s palette.

New Features

  • Widget Controller Behavior

    The sketch author can now control whether the Widget Controller appears automatically on sketch pages, by using the widget preference showWidgetPanelOnPageStart. With the default setting (false) the user must press the Widgets button beneath the sketch to display the Widget Controller. Set this preference to true to display the Widget Controller automatically whenever a sketch page is displayed. (As before, the Widget Controller, and the Widgets button beneath the sketch, are available only on pages for which at least one widget is enabled.)

  • Widget Sketch Events

    Each of the widgets now sends a sketch event when it's used to change something in the sketch.

  • Case Presentation Buttons

    Case buttons allow you to create a presentation button that presents only one of its parent buttons. The first parent of the Case button must contain a value (e.g., a parameter or calculation), and the remaining parents must be Action Buttons. When the case button is pressed, the value of the first parent serves as an index, determining which of the remaining button parents will be activated. This index must be an integer in the range 1...n, where n is the number of button parents. If the index has any other value the Case button does nothing.

    At this time, there is no direct way to create a Case button in GSP. There is, however, a work-around: create a Hide/Show button with the desired parents, and give it a name that starts with "_Case:". Whatever follows the colon will become the label of the Case button. Alternatively, if you add nothing after the colon, the label of the Case button will match the parent button that it will activate. For instance, if the second and third parents are buttons labeled Foo and Bar, the Case button will be labeled "Foo" when the value of the first parent is 1, and "Bar" when the first parent has value of 2.

    Just as with Sequence and Simultaneous Presentation buttons, pressing an active Case button stops the action.

  • Visibility Widget Improvements

    The Visibility widget now controls the visibility only of objects hidden by the user. It does not allow the user to show objects that were hidden by the original sketch author. It sometimes confused the user to see multiple hidden objects that she didn't create herself, so this change makes the Visibility widget significantly more useful.

Bug Fixes

  • Trace Widget Fixes

    If "traces"Traced Objects Glow" is activated while a motion is already underway, the traced objects begin to glow when the motion ends. (Formerly they began glowing while moving, interfering with the traces.)

    The ChangeTraceStatus event is now sent properly. Glowing traced objects now respond more appropriately to user actions; they stop glowing when you drag anything in the sketch, or when you press an Animate or Move button. (This is required because a glowing object changes its size, and would therefore create traces whose width is erratic. But if tracing is disabled, the erratic traces are not an issue, so in this case the glowing continues even during drags, animations, and movements. You can enable/disable tracing and turn glowing on/off at any time during an animation or movement and glowing responds appropriately. You can tap objects to toggle their traced status during animation or movement. You can even change the trace status of a moving object by tapping it (if you’re quick enough to get the tap in just as the object passes under the mouse).
  • Download Dialog Boxes

    The Download dialog box frame now encloses its two buttons (Download and Cancel).

  • Per-page Preferences

    Fixed a potential fault when checking the prefs for a newly-accessed page.

  • Hidden Sketches in a Webpage

    If a websketch is hidden when its webpage is loaded, preferred practice is to "data-delayed-url" instead of "data-url," thus delaying actual loading of the sketch until its container is revealed. If such a sketch using "data-url" is initially hidden and later shown, it fails to appear correctly. appearance is corruptedketches that are hidden when the webpage is loaded, and only revealed later, are problematic. This fix tries to detect and correct this condition, but is somewhat fragile; it's much better to use "data-delayed-url" to specify the url until a robust fix is available.

  • Delete Widget Confirm Dialog Defaults to "Delete"

    It turns out to be awkward to switch the focus button from Cancel to Delete for every object you want to delete. With Delete operations now undoable, it's better to have Delete as the default.

Q2 2020 Release (May 2020)

This release incorporates several new features and bugfixes.

Important Notes:

  • File format semantic version remains 4.6.2.
  • The Style Widget's icon is now a painter’s palette.

New Features

  • New "Compact" Toolbox Look

    A new "author preference" allows you to choose a narrower toolbox "skin," optimized for use with tool icons. To use this look, enter this caption on the WSP Preferences page of your GSP source document: "Tool Look = compact".

    With the compact skin, the toolbox is narrower than with the "classic" or "new" skins, so takes up less screen space. There's also less space separating it from the sketch area, and the corners of the tool buttons are more distinctly rounded. If a tool has no icon, its name appears in a 20-pixel font. (Short names, up to about 10 characters, are preferred.)

    The compact look is now the default. Older sketches, when used with the current-release library, will now appear with the compact look.

  • Add a Reset Button to Your Sketch

    There is a new "author preference" that makes it possible to include a Reset button next to the Page Controller in your exported sketch. As with widgets, you can determine on a page-by-page basis whether or not the Reset button appears. You can set this preference either on the WSP Preferences page of your sketch (using a caption such as "Reset Button = 1,3,5" or "Reset Button = "all") or in the Exporter dialog box (by entering "all", "none" or a list of pages like "1,3,5" in the Reset Button control).

    The Reset button preserves your sketch's Redo history, so you can press the Reset button and then use the Redo arrow to show your entire contruction history step by step.

    If you want the Reset button to appear inside the sketch (instead of below it), you can do so; see "In-Sketch Reset Button" below.

  • Delete Widget

    There's now a Delete Widget that you can use to delete unwanted objects from your sketch. Until there was no way to delete objects that are already part of the sketch when it starts up, and the only way to delete objects you created yourself was to undo all the way back past the step in which you created them. Now you can use the Delete Widget to delete any object from your sketch. The only caveat is that when you delete an object, any other objects that depend on it will be deleted as well, so before deleting, the widget shows you what other objects will be deleted with it.

    You can undo (and redo) any delete actions, just as you can with construction steps.

    As with other widgets, you can specify the pages of your sketch for which it appears using the WSP Preferences page of your exported sketch (with the caption "Delete Tool = 'all'", where you can replace "all" with "none" or a comma-delimited list of page numbers. Alternatively, you can specify the pages for which it should appear in the Export Document dialog box.

  • Add a WSP Logo to Your Sketch

    There is a new "author preference" that makes it possible to include a WSP logo beneath your exported sketch. You can set this preference either on the WSP Preferences page of your sketch (using this caption: "WSP Logo = true") or in the Exporter dialog box (by checking the Include WSP Logo checkbox).

  • Make Your Webpage Respond to Sketch Page Changes

    The author of a webpage can now display different information depending on the sketch page the user is displaying. For instance, a sketch container can include a <div> element above the sketch that will appear only when the user accesses page 2 or page 3 of the corresponding sketch, and another <div> element that will appear below the sketch only when the user is on page 3.

    See the Authoring document for details.

  • Improved Elimination of Duplicate Objects Resulting from Toolplay

    WSP now does a better job of eliminating duplicates, including identically-defined parallels, perpendiculars, and circles. Merging of duplicates is now recursive: for instance, if two identically-defined segments are merged, with each determining a circle with a common center point, merging the segments also results in merging the two circles.

  • Adding Sketch(es) to an Existing Webpage

    The Web Sketchpad Authoring document now provides details describing how to add one or more websketches to your existing webpage.

  • Modified Highlighting of Active Tool

    The active tool in the toolbox now pops out (with a light yellow background) instead of receding (with gray text or reduced opacity.

  • Improved Toolplay Behavior

    Toolplay now does a better job of distinguishing your intent as you match the given objects of a tool. With "sequential snapping," you can tap to match the currently glowing given object — but you aren't stuck with the default order, because you can match a different given object by dragging it to the desired match in the sketch, and matching the glowing object later. Formerly this allowed for confusion if you had a match candidate for the first (glowing) given overlapping or close to a different given: is your intent to match the glowing given, or to match the tapped-on given object to something in the sketch?

    This potential confusion is now alleviated, because toollplay now uses your behavior to answer the question in this way: if you tap and release, you'll match the glowing given object, but if you press and drag, you'll find yourself dragging the tapped-on given to match it instead of the glowing given. (This explanation may be confusing, but the actual behavior feels natural and appropriate.

  • Widget UI Improvements

    The widget controller now displays tooltips, so that each icon identifies its widget by name. The prompt about how to use the Trace widget is now less obtrusive; it disappears more quickly, and doesn't come back when you switch sketches.

    The Style widget's icon is now a painter's palette to more clearly suggest its purpose.

  • Sequence Buttons Send Start & End Events

    Added events to communicate the start and end of Sequence buttons (as is already done with Animate and Move buttons). Also modified the removeHandler() function so that omitting the handler parameter removes all emitters for the passed targets and eventType

  • In-Sketch Reset Button

    If you want to put a Reset button inside your sketch instead of below it, you can do so. Just create a button that doesn't do anything meaningful and name it "Reset Sketch." (For instance, your button might hide an object that's already hidden.) Then insert the following script into your html page:

    <script type="text/javascript">
      $(function() {
        $(".sketch_container").on ("PressButton.WSP", function (ev, ctx) {
          if (ctx.gobj.label === "Reset Sketch") {
            ctx.document.undo('all');
          }
        });
      });
    </script>

Bug Fixes

  • Points set to "dot" size no longer have borders

    GSP does not outline points set the "dot" size; they are just small circles of color without a black border. Now WSP "dot" points match the GSP appearance.

  • Widgets and Undo/Redo

    Active widgets now do a better job of responding to an Undo or Redo event: the active widget is now deactivated before the Undo or Redo occurs, and then reactivated after it finishes.

  • Label Widget and Hot Text/Pegged Text

    Neither Hot Text (aka Composite Text) nor Pegged Text (text merged to a point) can be edited directly, so the Label Widget's text input box is now disabled for these objects.

  • Preferences Syntax Simplified

    It no longer matters if you leave spaces in an author preference that you specify on the WSP Preferences page. If you set a pref such as "Parallel Line tool=1,2", the pref will now be recognized, even though internally the code uses lower-case form with no spaces: "parallellinetool=1,2".

  • Tracing Enabled During Toolplay for Non-Tool objects

    Tracing of moving or animating existing objects now continues while using a tool, instead of being disabled until the tool is finished. (As before, tool objects for which tracing is turned on do not leave any traces until after the tool is finished.)

  • Edited Calculations Can Be Matched Properly to a Tool's Given Parameters

    The genus of an edited calculation now changes to match the units of its resulting value, allowing it to be properly matched by a tool's given parameter with the same units. With this bugfix, a tool's angle parameter or distance parameter can now be matched to any calculated value that has the appropriate units.

  • Composite Text No Longer Shows As "unfilled"

    Using the Label widget to change a label that's used in a composite-text child object could result in the composite text appearing as "unfilled" until it was dragged or otherwise updated. The composite text object now updates correctly (and immediately) as the parent object's label is changed.

  • You Can Now Match a Tool's Assumed Straight Object to a Parallel Line, a Perpendicular Line, or an Axis

    WSP now uses the same test for an assumed given as was already used for a given to be matched. (Previously a tool's assumed line couldn't match a parallel line, because their internal characteristics differed—constructed by two points vs. constructed by one point and one straight object.)

  • Toolplay no longer mistakenly prunes new angle bisector

    The toolplay test to prune duplicate objects (implemented in the November 2019 release) didn't handle angle bisectors properly, sometimes incorrectly removing an angle bisector. Now it works properly.

  • Trace Widget glowing behavior is now off by default

    The glowing behavior is distracting if your only reason for activating the Trace widget is to control traces of objects already set to leave traces. Now that users must turn it on explicitly to see the glowing, they have a better chance of figuring out how it works and why it's valuable.

  • Undraggable points no longer prevent dragging of objects beneath them

    When a widget is active, you can tap on undraggable objects to change their style, tracing, etc. But if you tried to drag an obect underneath the undraggable object, you were prevented from doing so because the initial touch on the undraggable object might be a tap (allowed) rather than the beginning of a drag (disallowed for the undraggable object, but not for the draggable object beneath it). With this bugfix, you can still tap the undraggable object, but if your touch turns into a drag, you will be dragging the draggable object beneath.

  • Upload and Download command preferences apply to the entire sketch

    These Utility Menu commands download or upload the entire sketch, so there's no good reason to enable the commands to appear on some pages but not others. When you enter this preference on the WSP Preferences page of a source (GSP) sketch, you can add a caption like this: "DownloadUtil=true". (The preferences captions are not case-sensitive, and are also tolerant of spaces, so you could also use this caption: "upload util = false.

  • Exporter Settings now have separate checkboxes for the Upload and Download commands

    You can now set separate preferences for these two commands using the Export Document dialog box. This makes it easy, for instance, to allow students to download their own work during a lesson without allowing them to upload work from other students.

  • Improved Feedback for Trace Widget

    If "Traced Objects Glow" is turned off, it's no longer hard to tell when you've turned off tracing for a path object. Formerly the path was hidden momentarily, which couldn't be seen unless existing traces had already faded. Now the path is momentarily shown in the background color, but above the traces and clearly visible.

  • Bugfix in Pruning of Duplicate Objects

    The duplicate-pruning code (which, for instance, prunes duplicate segments that have the same parents) no longer tries to prune a polygon that's twice descended from the same vertex. (Such double-descent can occur, for instance, if a hexagon's vertex #1 is merged to vertex #4.)

  • Fixed an Issue with Upload/Download Commands

    These two commands were dependent on the id of the sketch_canvas element, but there's no requirement that a sketch_canvas needs to have an id. These two commands no longer depend on the sketch_canvas id; instead there's now a curSketchNode variable that points to the sketch_canvas whose contents are being uploaded or downloaded.

    At the same time, some layout issues affecting the appearance of the upload/download dialog boxes were fixed.

  • Composite Text Bugfix

    When a tool creates composite text (text that shows the labels or values of other objects), if it was supposed to display the label of an unlabeled object, it just left that part of the text empty. Now it does the right thing: it generates a label for the unlabeled object and shows that label properly.

  • Constructing Intersections Bugfix

    When a straight object intersects a curved object (either a circle or an arc), or when two curved objects intersect, there are in principle two possible intersection points (some of which may not exist). Web Sketchpad no longer gets confused about which of the two points you intend to use when you construct such an intersection.

  • Fixed an Issue with Intersections of Transformed Straight Objects

    When you intersected a transformed segment or transformed ray with another object (either a straight object or a curved object) and then dragged the transformed segment or ray away from the intersection point, the intersection point continued to exist, as though your segment or ray were instead a full line. The intersection point now exists only if the two objects actually intersect.

  • Composite Text is Now Properly Colored

    Both composite text ("hot text") and pegged text (text merged to a point) can now be properly colored by the style widget. This fixes a bug in which part or all of the text reverted to its original color.

  • Constructible Givens Correctly Match Transformed Objects

    When you matched a constructible given with a compatible already-existing transformed object, the match might appear to fail during toolplay, with the given object not snapping properly to the existing object you were matching it to. Once toolplay finished, the constructible given did actually match properly, but the incorrect feedback during tool use was disconcerting. Such matches now provide proper visual confirmation during tool use; you no longer have to finish matching any other given objects to see that the tool did indeed work correctly.

  • Label Widget Text Input Enabling

    The text input for the Label Widget is no longer inappropriately enabled for composite text. It is now enabled for text objects only in the case of captions. (Note that if you do use the Label Widget to edit a caption, you will lose any line breaks and formatting that was originally present in the caption.)

Q4 2019 Release (December 2019)

This release incorporates several new features and bugfixes.

Important Notes:

New Features

  • Per-Page Tools

    You can now specify which tools should appear on each page of a websketch.

    For instance, if your GSP document has three tool pages named WSP Tool: Point, WSP Tool: Segment, and WSP Tool: Circle, you could make the Point tool appear on all pages, make the Segment tool appear on both pages 2 and 3, and make the Circle tool appear only on page 3. To do so, create a WSP Preferences page, and enter the following captions:

    • SegmentTool = 2,3
    • CircleTool = 3

    Because the Point tool is not listed, it will appear on all pages of the websketch.

Bug Fixes

  • Toolplay Snapping Behavior

    When you drag a tool’s given point to a path object, the point now snaps in a way that shows it properly centered on the path. (Before this bugfix, if you began dragging the drag by pressing on the edge of the point, the snapped location sometimes appeared off-center on the path object to which it was matched.)

    When you drag a tool’s given point or parameter to snap to a potential match but then drag (without releasing) to unsnap the given object, the point or parameter you are dragging is now centered on the pointer.

Q4 2019 Release (November 2019)

This release incorporates several new features and bugfixes.

Important Notes:

New Features

  • Sketch Exporter Improvements

    The Export dialog box now allows you to control which widgets are available on which pages.

    Similarly, you can choose whether the page controls and the upload/download commands appear in the exported websketch.

    Improved the appearance of the checkboxes and radio buttons, and made it possible to set them by tapping their labels.

  • Eliminate Duplicate Objects

    Using a tool that constructs an object identical to an existing object now uses the existing object instead of creating a duplicate. Until now, you could use a Segment tool to construct multiple segments between points A and B. Now using the segment tool repeatedly on points A and B leaves only the one existing segment.

  • Style Widget Improvements

    The Style widget now allows you to tap an object to mark it as the target and then choose various style settings to apply them to that same target, making it more convenient (for instance) to change both the color and line style of a path object. The targeted object flickers to indicate that it's the current target of style settings that you choose.

  • Trace Widget Redesigned

    The Trace widget is now a single small pane that occupies a minimum of screen space. (When it's first shown, it includes some explanatory text, which soon disappears from view.) When this widget is visible, tap objects to turn their tracing on or off. When you check the "Traced Objects Glow" checkbox, traced objects glow. Whether this box is checked or not, you can drag, animate, or move objects in the sketch to create traces. (Glowing traced objects stop glowing temporarily while objects are moving, and start glowing again when the movement finishes.)

    You can now use the Trace widget to lay down a single traced image of an otherwise untraced object. With the Trace widget active, tap the object twice without dragging it. The first tap activates tracing and produces a single traced image, and the second tap turns tracing off. When you later move the object, that single traced image is left behind.

  • Toolplay: More Flexible Matching of Parameter Givens

    Tools can now match a given parameter to a CompositeText object if the CompositeText object has a single measurement ancestor, or to a Pegged object (text attached to a point) if that object's text parent is either a measurement or a CompositeText object with a single measurement ancestor.

  • Support for Authoring Tools with Glide Reflections

    (Deprecated: Refer to Glide Reflection instead) You can now create a WSP tool that uses glide reflection by including a reflection in the tool's .gsp source sketch and using "glide reflect" in the tool's name. The space betwen "glide" and "reflect" must be a non-breaking space, hex value \xA0. (This restriction guarantees that a previously-created tool, named "glide reflect", that uses composition of reflection and translation won't be corrupted.) The reflected image in such a tool will be converted into a glide-reflection image using the mirror as both mirror and vector. (This method applies only to creating WSP tools; there's still no way to generate a WSP sketch page that incorporates a glide reflection, short of hand-editing the sketch.js or sketch.json file.)

  • Polygon Tools Are More Flexible

    Tools with polygon given objects can now match other polygons even if the two polygons have different numbers of vertices. Such matches are allowed provided that the vertices of the tool's given polygon have no children other than the polygon itself. Thus one tool suffices to measure the area and/or perimeter of any polygon.

  • Tools Confirm Instead of Cancelling Upon a Tool Switch

    If you're using a tool and you've matched at least one but not all of the given objects, switching to a different tool now confirms the first tool rather than canceling it. The result is that you're less likely to lose work. (If you do want to cancel an already-active tool, use the Cancel or Undo button.)

  • Labeling Improvements in Tools

    Tools now do a significantly better job of handling labels. For instance, labels of measurements are better coordinated with the objects they label, and measuring the length of an unlabeled segment now labels the segment's endpoints so the measurement can be labeled based on the segment's endpoints.

    Tools now provide better control for the type of labels you want your tool objects to use. For instance, if your tool creates a transformed image, you can specify prime notation, short function notation, or full function notation for the image object. For details see Labels of Given Objects in the Tool Authoring documentation.

  • Preferences Improvement

    When you use web-page preferences in a web page containing multiple sketches, you formerly had to create an id for the <div> contining the sketch, and use that id to identify the sketch to which a preference applies. You can now identify the sketch by using the file name of the .json file.

  • Autostart Button Change

    Autostart buttons are buttons on a page or in a tool that are designated to start automatically when the page loads or when the tool finishes. Such buttons are designated by being selected in the original .gsp sketch, on either a sketch page (creating an autostart page button) or a tool page (creating an autostart tool button). Autostart page buttons fire when the page is first loaded, and every time the user switches to the page from another page. Autostart tool buttons fire automatically only once, when the user finishes applying the tool.

Bug Fixes

  • Toolplay Animation and matching

    There are multiple improvements in the way tool objects animate and match to existing sketch objects.

    Toolplay now temporarily deactivates any widget but the Visibility widget. A deactivated widget is reactivated when the tool finishes.

  • Various other Toolplay Bugfixes

    Fixed bugs related to matching point givens to transformed points.

    Fixed a bug in which finalizing a tool sometimes corrupted the structure of the sketch.

    You can now match a scalar parameter to a radian angle measurement and vice versa.

    If a visible tool object is merged to a hidden object (because these two are identically-constrained children of other objects being merged), the resulting style is that of the visible object. This avoids having the tool object disappear, or change style, as a result of the merge.

  • Location of Widget Controller

    The default screen location of the widget controller is now more convenient without obstructing other important elements of the WSP screen.

  • Labeling Improvements

    WSP now does a better job of labeling objects when required (for instance, labeling objects to identify them when they are measured) without generating and showing unneeded labels.

  • Widget Bugfixes

    Widgets no longer get confused when they move from one sketch to another in the same web page.

    Widgets no longer break when a sketch already contains a "widget" HTML element.

  • Sketch Exporter Crash

    The Exporter no longer crashes when exporting a large sketch that generates more than 100 entries in its debugValueQueue.

  • Labeling Parents of Measured Objects
  • When a measurement's name is based on the labels of its parents (NamedFromTemplate in the code) those parent labels are now shown if the measurement is created during toolplay, but those same labels remain in their original state (hidden or showing) if the measurement is created while loading a sketch. In other words, when loading a sketch the decision is up to the sketch author, but while playing a tool the labels are shown automatically (and can subsequently be hidden if the user so desires).

Q3 2019 Release (August 2019)

This release incorporates several new features and bugfixes.

Important Notes:

New Features

  • File Format

    The Web Sketchpad files now supports glide reflection (internally "GlideReflect") as a native transformation, and Web Sketchpad can now both read and write .json files containing glide reflection constructions. The Label widget's Prime, Short Function, and Full Function notation also supports glide reflections.

  • Tool Animation

    Tool animation improves the user experience by making a smooth transition when you attach a given object to an already-existing candidate object. When you use a tool and place one of the tool's given objects, two different kinds of animation may occur. If you touch in empty space, the current given object begins a "chase" animation in which it chases the mouse position; the chase animation completes when the given object has caught up either to the touch location (if you are still pressing the mouse) or to the location where you released the mouse. If you touch on a candidate (that is, an object to which the given can be attached), the given object begins a "snap" animation in which it animates to snap itself to the candidate.

  • Transform Labels for Children of Transformed Points

    This feature is best explained with an example, such as the process of transforming triangle ABC, constructed from the three points A, B, and C. Assume also that the three sides (AB, BC, and CA) are also constructed. In desktop Sketchpad, selecting and transforming these seven objects (3 vertices, 3 sides, and the triangle itself) produces seven transformed images that have no direct relationships with each other. With this new feature, combined with the constructible given feature, it's possible to create a triangle transformation tool that actually constructs the image triangle and sides from the image points. Such a tool can be matched either directly to a given triangle, or can have its vertices matched to three points in the sketch. If the triangle is matched directly to a triangle with sides, or if the three triangle vertices are matched to three vertices of an existing triangle with sides, the Label widget will identify the constructed sides and interior as being transformed images of the corresponding pre-image objects.

Bug Fixes

  • Path Markers No Longer Extend Beyond Endpoints

    Path markers at the endpoint of a ray or at either endpoint of a segment extended beyond the end of the object being marked. Now they are limited to the interior of the segment or ray (provided the segment or ray is long for the marker to fit). One result is that it's now possible to place an arrow marker at the very end of a segment and have the tip of the arrowhead actually at the endpoint, and remain at the endpoint even as the segment is made longer or shorter.

  • Trace Widget PreferencesThere are two bugfixes here: (a) When the user activates the Trace widget, the widget's Enabled and Fading settings now come from the preferences of the sketch; and (b) there's a new enableTracing WSP preference that you can use to enable or disable tracing on a page-by-page basis. Thus a caption on a GSP Preferences page of "enableTracing = [2, 4] indicates that tracing should be enabled on only pages 2 and 4, and not on other pages. This preference can also be embedded (via script) in an HTML page. (See below for details.) The default setting for this preference is enabled (as is always the case in desktop Sketchpad).

Q2 2019 Release (June 2019)

This release incorporates several new features and bugfixes.

Important Notes:

New Features

  • Trace Widget

    This widget allows the user to enable/disable tracing for the sketch as a whole, to turn trace fading on and off, and the erase the traces. By tapping the triangle at the upper right of the widget pane, a second pane appears, and the user can choose which objects in the sketch will be traced. In this mode, traced objects glow, untraced objects appear normally, and a tap on any traceable object turns its tracing on or off.

    The Trace Widget makes it easier than ever before for students to control tracing and to use their traces to create interesting and artistic designs.

  • Constructible Given Objects for Tools

    This feature makes it possible to use straight objects, polygons, circles, and other similar objects as given objects for tools. Thus it's no longer necessary for the user to match a triangle by matching each of the three vertices of the given triangle to the corresponding vertex of the existing triangle; instead she can drag or click to match the entire triangle with a single gesture.

    For details on incorporating constructible givens in your own tools, see the Tool Authoring page.

  • Auto-Play Tools

    An auto-play tool has only assumed givens, and no other givens that can be matched. When you tap such a tool, it completes its constructions and finishes without any further interaction. [Unfortunately at the current time the Exporter doesn't support tools without normal givens, so there is a temporary work-around in place to make it possible for you to author such a tool. In desktop Sketchpad, create the auto-play tool with all its assumed given objects, and then add to your sketch a single point labeled "given: delete". This will satisfy the current exporter, and the "given: delete" point will automatically be deleted from your tool when your sketch is loaded.]

  • Label Widget Enhancements
    • The Label Widget now includes a drop-down menu from which you can insert mathematical symbols, Greek letters, and so forth into the current label.
    • Labels of transformed images created by tools are now checked to make the best guess as to whether the image should be labeled with a prime, or using either short or full function notation.
    • You can now use the Label Widget to edit the text of a single-line caption. (If you tap the Label Widget on any other caption, it will distill the caption's text into a single-line format; tap the Cancel button if that's not your intent.)
  • Webpage Responsive to Sketch Page Changes

    The author of a webpage can now display different information depending on the sketch page the user is displaying. For instance, an element using <div class='page_toggle p_2 p_3'> will appear only when the user accesses page 2 or page 3 of the corresponding sketch.

    To use this feature, include widgets on your webpage (even if you don't use the widgets themselves), and locate both the sketch_canvas and page_toggle elements within the same sketch_container <div>.

    The author of a webpage can now display different information depending on the sketch page the user is displaying. For instance, an element using <div class="page_toggle page_2"> will appear only when the user accesses page 2 of the corresponding sketch. (This feature requires the widget code, even if the page doesn't use widgets.)

  • Calculator Tool Improvement

    Until now, to create a Calculator tool you can use a work-around of creating a dummy calculation (for instance, "1 + 1") that the user then has to edit. You can now use the same work-around, but the "1 + 1" calculation will be converted to a blank calculation, and using the tool now puts the user into editing mode immediately.

Bug Fixes

  • Fixed several minor bugs involving the Label Widget.
  • Assumed given objects for a tool sometimes didn't match properly; now they do.
  • Fixed an obscure HTML display issue that could appear on some websites.
  • The Label Widget didn't work properly with function labels. Now it does.
  • Interiors and images produced by a tool now appear in front of interiors and images already present in the sketch.
  • Autostart buttons previously fired on every step of an undo/redo operation. Now they don't fire at all during undo/redo.

Q1 2019 Release (March 2019)

This release incorporates several new features and bugfixes.

Important Notes:

New Features

  • Enhanced Label Widget

    This widget now allows you to change the font and size of labels and text objects, and also to control the format in which various labels are displayed. Measurements, calculated values, and parameters can now be displayed with automatically-generated labels, with manually-editable labels, or with no labels at all. Transformed images can be displayed in prime notation (which remains the default), in short function notation, in full function notation, or using manually-editable labels. Movement buttons that move a single point and Hide/Show buttons that hide or show a single object can be displayed with labels that automatically refer to their parent objects' label.

  • WSP Tool Library

    The Tool Library allows you to insert, remove, and re-order the tools in your websketch.

  • WSP Websketch Viewer

    The Websketch Viewer allows you to load a collection of sketches (for instance, sketches submitted by all the students in a class) onto a single web page. This makes it easy to inspect the websketches, compare them, or show them to a class so that students can demonstrate multiple solution methods or different approaches to a project. The sketches on the page are fully functional: you can manipulate the constructed objects, use the sketch's tools to add to the construction, and even add new pages to a websketch or clone a websketch.

  • Support for Glide Reflection

    Glide reflection is now a supported transformation. Although you cannot create glide reflection constructions or tools in GSP documents, you can use the WSP Tool Library to add a Glide Reflect tool to your websketch.

  • Tools’ Given Objects More Prominent

    Given objects in tools now pulse more dramatically, crying out for the user to do something with them. The new behavior is much more noticeable, and less likely to leave users wondering what to do next when they're just learning to use tools.

Bug Fixes

  • Websketches containing widgets now work properly with Internet Explorer 11.
  • Assumed functions in tools now work properly: An assumed function in a tool now matches properly to a same-named sketch function.
  • Objects with no visible name now appear properly in labels of descendants and in calculations.

Q4 2018 Release (October 2018)

This release incorporates several new features and a bugfix.

Important Notes:

New Features

  • Utility Menu Button

    When the user exports a sketch as a complete webpage using the Include Widgets checkbox, the resulting websketch includes a Utility menu button below the bottom left corner of the sketch frame. Clicking this button brings up the Utility popup menu.

  • Utility Command: Download

    This command allows the user to download the current sketch to her computer, to the same location her browser uses to download other documents. A dialog box appears allowing her to name the file to be saved. (The .json file type will be appended to the name if it's not already part of the name.) Once she has supplied a document name, she'll be prompted by her browser to download the document in the same way as she would any other downloaded document.

  • Utility Command: Upload

    This command allows the user to upload a sketch of her choice into the current sketch frame. Only saved Web Sketchpad documents, with names ending with ".json", can be uploaded in this way. The uploaded document replaces the previously-active sketch document.

Bug Fix

  • Parameters: Parameters that were created without edit boxes in GSP now appear with edit boxes in Web Sketchpad, and can now be edited.

Q3 2018 Release (September 2018)

This release incorporates several new features and bugfixes.

Important Notes:

New Features

  • Label Widget

    This widget enables you to show, hide, or edit the labels of sketch objects. To edit the label of a button, activate the Label Widget and tap the handle of the button.

  • Press-and-Hold Label Editing Turned Off by Default

    With the new label widget, press-and-hold label editing is now turned off by default. Though this feature is deprecated and may become unavailable in a future release, it can still be turned on with an "EnableLabelEditing=true" caption on the "WSP Preferences" page.

Bug Fixes

  • Toolplay: When you match a tool's given point to an object in the sketch, the given is now matched preferentially to the most-recently-contructed selectable point, or (if there is no such point) to the most-recently-contructed unselectable point. The given point is matched to a path object only if there's no existing point at the designated location.

Q2 2018 Release (June 2018)

This release incorporates several new featurea and bugfixes.

Important Notes:

New Features

  • Double-tapping a tool now makes it sticky: you can use it repeatedly with no need to tap the tool icon each time. To unstick a sticky tool, tap the tool icon itself, the cancel or OK button, or any other tool icon.
  • Autostart buttons now work on every page of a sketch, not just the first page.
  • Autostart buttons now work every time a page is loaded, not just the first time.
  • The widget style pane shows the appropriate cursor when hovering over buttons and checkboxes.
  • For HTML authoring, the sketch_canvas element needs an id only if widgets are selectively enabled/disabled by an HTML-page preference using WIDGETS.setWidgetsPrefs().

Bug Fixes

  • Toolplay: Assumed value objects of any kind now match sketch objects properly: identically-named objects now always match if they are both scalars, both distances, or both angles.
  • Toolplay: It's now possible to match a given tool object to an unselectable value in the sketch.
  • Toolplay: When matching a given tool point to overlapping points in the sketch, the given point now matches the most-recently constructed overlapped point rather than the first-constructed overlapped point.

Q1 2018 Release (February 2018)

This release incorporates a few new features and UI enhancements as well as bugfixes.

Important Notes:

New Features:

  • enableLabelEditing Preference

    The sketch author now has control over whether labels can be edited. By default, a long press (3 seconds or more) on a sketch object that can be labeled brings up the Edit Label dialog box. The author can prevent this behavior by specifying an author preference in the WSP Preferences page of the sketch, in the form of a caption: "enableLabelEditing=false" or "enableLabelEditing=none". Alternatively, the caption "enableLabelEditing=1,3,5" enables editing on pages 1, 3, and 5 of the sketch, but not on pages 2 and 4. The default behavior remains equivalent to "enableLabelEditing=all".

    This preference was motivated by sketches in which the user might press an object without moving it, either while thinking about what to do or while waiting for for some ongoing action in the sketch to reach a particular stage. The preference is currently considered specific to such situations; a future feature that provides a better (widget-based?) interface for label editing will almost certainly ignore this preference.

  • Page Numbers UI

    The page number controller interface is improved: one the user presses the page number itself to bring up a popup of page numbers, hovering or dragging over the popup changes the pages immediately, so the user can easily see the page before committing to it by clicking.

  • Widget Button and Page Controller

    The html code that specifies where the widget button and page controller appear is now much simpler. For an example, see the html output by the Exporter when using the Include Widgets checkbox.

  • Widget Preferences

    It's now easy to control what widgets appear on which pages of which sketches from the web-page html. This is particularly convenient for web pages with multiple sketches; it's easy to make a simple edit in the html, but much more laborious to edit the sketch, save it, run it through the exporter, and finally move the newly exported json into place. See the Authoring documentation for more info.

Bug Fixes

  • Fixed several minor issues in the widget functionality.

Q4 2017 Release (October 2017)

This release incorporates several new features as well as bugfixes.

Important Notes:

New Features:

  • Widgets

    The new widgets described below make it easier for you to express yourself mathematically by changing the style, color, and visibility of objects in your sketch. They are particularly useful for students using WSP tools to create their own constructions. The sketch author can control which widgets are available on each page of the sketch.

  • Style Widget

    This widget enables you to conveniently change the sizes of points, the widths of paths (such as straight objects, circles, graphs, and so forth), and the styles of paths (solid, dashed, or dotted). It also enables you to conveniently change the colors of both geometric objects and text objects. To use the widget, tap the style (gear) icon, activate any combination of styles and colors and then tap each of the objects to which you want to apply your chosen styles and/or color.

  • Visibility Widget

    This widget enables you to conveniently hide or show sketch objects. To use the widget, tap the visibility (eye) icon. Hidden objects immediately become visible in a faded color. Tap faded objects to change them from hidden to visible, and tap full-intensity objects to change them from visible to hidden. Tap the visibility icon again when you are finished.

  • Page Numbers

    When you're using or working on a websketch that contains multiple pages, the page control makes it easy to go from page to page, with no more need for the sketch author to create Link action buttons in the original sketch for this purpose. Choose Widgets in the expporter, and page controls will appear automatically for any exported sketch containing more than one page.

  • Overlapping Objects

    When two objects of the same kind overlap, you can now tap the area of overlap to switch between them for the purpose of dragging them, labelling them, or changing their style or color. For instance if you want to drag one of two overlapping lines and your first attempt to drag moves the wrong line, you can tap the overlap area, and your next attempt to drag will drag the other line. As another example, if two points are constructed to overlap and you want to change the color of both points, you can now choose a color in the style widget and then tap once to change the color of the first point, and tap again to change the color of the second point.

Bug Fixes

  • Fixed a bug in which labels sometimes ended up too far away from the objects they label.
  • Fixed a bug in which an image point translated by a vector wasn’t labeled properly. Labels for such points are now set correctly based on the label of the pre-image point. (For instance, if you change the pre-image point’s label to P, the image point’s label becomes P'.
  • Fixed a bug in which parameters with angle or distance units became uneditable after being matched to a tool object or edited by the user.
  • Fixed a bug in which text objects created by a tool were sometimes placed improperly (or even mostly off-screen).
  • When using a tool, it was sometimes hard to notice that a measurement was glowing and ready to be placed. Such objects now change their intensity much more quickly and obviously.
  • (For experts) The WillChangeCurrentPage message was being sent too late. It is now sent earlier, before the information about the current page is cached.

Q4 2015 Release Update 2 (July 2016)

This is a bug-fix update to the Q4 2015 Release.

Important Notes:

Bug Fixes

  • Label Dragging Enabled by Preference Only

    WSP-2211: Reports from the field suggest that some users are accidentally dragging objects labels when they are trying to drag the object itself. We will disable label dragging while we work on improving the algorithm which decides whether the user is trying to drag the object, or the object's label. Meanwhile, you can override this and enable label dragging for individual documents via the enableLabelDragging author preference.

    enableLabelDragging=false
    If true, users can touch on an object's label to reposition it to other positions near the object.
    See the documention for author preferences to see how to set enableLabelDragging to true. Once we have improved the algorithm to better distinguish between label and object drags, we will change the default value of this preference to true, which will enable label dragging except when authors have specifically turned it off.

  • Long Press Too Sensitive

    WSP-2208: Reports from the field suggest that we are to eager to bring up the label dialog after a long press. Users who want to drag objects are getting the dialog instead. We'll mitigate this issue by increasing the time required for a long press from 1 second to 2 seconds.

Q4 2015 Release Update 1 (March 2016)

This is an update to the Q4 2015 Release. It contains several features which improve the behavior of labels, and adds a nice UI/UX experience when dragging tools from the tool palette.

Important Notes:

New Web Sketchpad functionality:

  • Label Dialog via Long Press

    Change or add an object label by long pressing on that object. This will trigger the label dialog, which lets you show, hide, and change the label.

  • Draggable Labels

    Object labels can now be repositioned as on the desktop. Drag them around — though like the desktop we don't let you get too far from the object.

  • Tool Palette Dragging Interface

    You can now drag a tool from the tool palette to initiate toolplay. When you drag a tool icon onto the sketch, the sketch will target-highlight. When you release, toolplay will begin. Feedback from the field suggested that users really expect the "drag" gesture to work - so we make sure that it does!

Bug Fixes

For lagniappe, enjoy some bug fixes.

Q4 2015 Release (January 2015)

Important Notes:

  • File format semantic version is now set to 4.4.0
  • Technical integration note: When instantiating a Web Sketch in a DOM node, we no longer set that node to position:relative. If you've been relying on this (seems unlikely) you'll need to set that yourself.

New Web Sketchpad functionality:

  • Label Tool

    To create a tool that allows users to label objects, create a page called "WSP Tool: Label". This creates a label tool. In WSP, clicking the tool inserts a blue "A" into the center of the sketch, which can be dragged to a point (or the point can be directly clicked). Letting go brings up a dialog box which allows you to enter the label. If you enter a blank string, the current label is hidden.

  • Hot Text Interaction

    Hot text is now "live". As on the desktop, if you tap in hot text on a reference to another sketch object, that object activates (a button will be pressed, other objects will flash).

  • New Placement of Tool OK / Cancel Buttons

    The Tool OK / Cancel buttons are no longer in the upper right corner of the document. Instead, they are placed over the Undo / Redo buttons in the tool palette. They should be easier for users to find there (and during toolplay, Undo / Redo is disabled anyway).

  • New Author Preference

    The disableScrolling author preference disables dragging in whitespace to scroll sketch contents. As a side effect, this will enable standard mobile browser pinch-zoom and pan gestures, which can enhance the navigability and accessibility of the HTML document as a whole.

  • Auto-Start Buttons

    Buttons can now be set to autostart without being selected. If a button's label is of the form: "autostart: label" (note "autostart" is not enough), then the button will be set to autostart.

  • Compression for Thrive Applet Document Storage

    We now support compression of the document's JSON representation. JSON is a pretty wordy format, so this can make big gains - we saw gains of up to 80%. Currently only deployed for the Thrive applet.

Bug Fixes

There were a variety of bug fixes, including:
  • Improved fidelity with the desktop for label italicization
  • Interacting with the calculator on iOS

Summary of Currently Supported Functionalities

This following list indicates desktop Sketchpad objects that are now supported in the current Web Sketchpad Milestone.

Generally, Web Sketchpad supports all object definitions in which both the defined object and the parental objects that define it are objects of supported types (see preceding list). In the current Milestone, however, these relationships are not supported:

Older Release Notes

Q3 2015 Release (October 2015)

Important Notes:

New Web Sketchpad functionality:

  • Toolplay Sequential Snapping

    During toolplay, the user can now click in whitespace to position the givens sequentially. This is a quicker and easier gesture than clicking and dragging each given into position. Clicking and dragging the given is a more discoverable operation for users, however, and it still works. This new functionality is an augmentation of the previous behavior, rather than a replacement.

  • Auto-pressed buttons in toolplay

    Tools with buttons set to auto-press (created by saving a desktop sketch with the button selected) are now are triggered on completion of the tool. Authors can hook up these buttons for a variety of post-toolplay effects.

  • Equation MultiMeasures Constraint Functionality

    Web Sketchpad now supports measurements of the equation of lines and circles.

  • Per-Document Configurable WSP Preferences

    Authors can configure the properties of their web sketch by creating a "WSP Preferences" page in their desktop Sketchpad document. Currently we support preferences for disabling Sequential Snapping, and enabling the "new look" Tool palette appearance under development for Next Generation Math.

  • More compact JSON document format

    The Exporter can now strip out "inaccessible objects" - constructed objects that are not visible, and cannot effect any visible portion of the sketch. These objects are dead weight that can accumulate when you author complicated sketches. We also strip out debugging information and whitespace. You can enable this by checking the "Remove Inaccessible Objects" option when you export (e.g. if you are going to programmatically interact with an apparently inaccessible object, and thus don't want it removed). Alternatively, you can set the author preference "removeInaccessibleObjects" to true or false. This setting will override any setting of the "Remove Inaccessible Objects" checkbox in the exporter.

  • Just in time loading of backwards compatibility web sketchpad javascript library

    The wsp-runner library now supports configuration of just-in-time loading of older versions of web sketchpad, if it's needed to open an old document (3.0.0 or later).

Bug Fixes

A number of issues were addressed including: Toolplay usability and performance issues, and XHTML compatibility issues (the CLO authoring team ran in to these).

Q2 2015 Release (July 2015 point release)

Important Notes:

  • File format semantic version is now set to 4.2.1

    This file format is compatible with the Phase1 Q1 2015 "Technology Preview" Release.

Bug Fixes

  • WSP-1869 "Address integrator use case for applyDocumentDelta"
  • WSP-1874 "Presumed issue in document delta when there are tools"

Q2 2015 Release (July 2015)

Important Notes:

  • File format semantic version is now set to 4.2.0

    This file format is compatible with the Phase1 Q1 2015 "Technology Preview" Release.

New Web Sketchpad functionality:

  • Toolplay Undo / Redo

    Toolplay now supports Undo and Redo, via the buttons at the top of the tool palette.

  • Tables

    Sketchpad Tables are now supported. Add rows of values by double-tapping the table. Tables created by iterations and iterations to depth are also supported.

  • Custom Transformed Points
  • Parametric Plots

Bug Fixes

A number of issues were addressed including: browser specific compatibility issues, calculator copy-paste issues, text formatting issues, and issues in the new toolplay feature.

Q1 2015 Release (Point Release May 2015)

This is a point / bug-fix release of the April Q1 2015 Release

Important Notes:

  • File format is now set to 4.1.1.

    This file format is compatible with the Phase1 Q1 2015 "Technology Preview" Release, but not the Q4 2014 Release.

Notable Bug Fixes

  • WSP-1693 "Support multiple versions of wsp.js in the same Thrive Applet"
  • WSP-1711 "Segment Distance Measurements show unexpected rounding errors in presence of css transforms"

Q1 2015 Release (April 2015)

Important Notes:

  • File format is now set to 4.1.0.

    This file format is compatible with the Phase1 Q1 2015 "Technology Preview" Release, but not the Q4 2014 Release.

New Web Sketchpad functionality:

  • Calculator

    Double-clicking / tapping on an equation or calculation brings up a calculator similar to the current numeric keypad, modeled after the desktop sketchpad calculator.

  • Toolplay

    It is now possible to author documents which include a set of author-specified tools. For example, you can author a document which includes basic ruler and compass tools. For instructions, see the example page.

  • Tick Marks

    Tick Marks on paths are now supported.

  • Blank Calculations and Functions

    Calculations and Functions can now be blank, much like Parameters. To author a blank Function, use the magic value "-0". For a blank Calculation, use the magic value "--0" (we couldn't use "-0", because the desktop turns that into a parameter).

Functionality Improvements:

  • Bug Fixes

Phase1 Q1 2015 Release (February 2015)

Important Notes:

  • This release is a technology preview.
  • File format is now set to 4.0.0. This file format is incompatible with previous releases.
  • This release introduces two new features: The calculator, and tool play. We will continue to work on improving the functionality of these two features for the upcoming Q1 2015 Release, but wanted to give content creators the opportunity to start creating content using the new features, so they can get a jump on any work they have in the pipeline, and also give us the opportunity to process any feedback we receive.

New Web Sketchpad functionality:

Functionality Previews
  • Calculator

    Double clicking / tapping on an equation or calculation brings up a calculator similar to the current numeric keypad, and modeled after the desktop sketchpad calculator.

  • Toolplay

    It is now possible to author documents which include a set of author-specified tools. For example, you can author a document which includes basic ruler and compass tools. For more detailed instructions, see the example page.

Functionality Improvements:

  • Bug Fixes

Q4 2014 Release (December 2014)

Important Notes:

  • File format is now set to 3.0.0. This file format is incompatible with previous releases.

New Web Sketchpad-specific functionality:

User facing features
  • Adaptive Sizing

    Web Sketches will resize to become smaller at smaller window sizes. You can resize your browser window to see how your sketch will look on mobile.

  • Export Options

    The Web Sketchpad document exporter site now supports a variety of export options in order to make life easier for our content creators. Upload a document, and use the button - you'll get to choose your export options.

    • Individual Documents Per Page

      For a document with multiple unrelated pages, you can bulk export all the pages of a document. You'll get a zip file containing a zip file for each page. Previous options for Entire Document and Current Page Only remain available.

    • Non-Geometric Objects Unselectable

      Text, Buttons, Measures, Calculations, Functions, and Coordinate Systems will automatically be locked down, preventing user dragging of those objects.

    • Disable Scrolling

      For sketch content designed to always fit in the current windows size, you can disable scrolling of sketch content.

Deployment and embedding features
  • Numeric Keypad Customization

    See the documentation for available CSS and Javascript configurability.

  • Multiple Concurrent Library Versions

    You can include a new version of web sketchpad in a page while still supporting earlier versions. See the documentation for more details.

  • New Document Events

    We now notify on UnloadDocument, StartSketchFrame, EndSketchFrame, PressButton, and EditParameter. Details to be found in the documentation.

Desktop Sketchpad features newly supported by Web Sketchpad:

  • Custom Transformed Paths
  • Hide/Show Buttons Fade Effect

    When you use a button to show or hide an object, that object now fades in (or out) just as on the desktop.

Functionality Improvements:

  • Bug Fixes

Q3 Phase 2 2014 Release (Sept 2014)

Important Notes:

  • File format is now set to 1.3.0. This file format is compatible with the Q3 Phase 1 2014 Release.

New Web Sketchpad-specific functionality:

  • Java Sketchpad Converter (beta)

    We are testing a method of easily replacing existing Java sketches with web sketches. This is a javascript "shim" which we can add to any web page containing Java sketches, and those Java sketches will be converted on the fly to web sketches. We'll try out this technology in upcoming MHE online Sketchpad professional development courses.

Sketchpad features newly supported by Web Sketchpad:

  • Rectangular/Polar Coordinates
  • Geometric Slope
  • Changing the Domain of a Function Plot

    Drag the arrowheads that appears at the ends of the function plot. (Cartesian functions only)

Functionality Improvements:

  • Bug Fixes

Q3 Phase 1 2014 Release (August 2014)

Important Notes:

  • File format is now set to 1.2.0. This file format is compatible with the Q2 Phase 2 2014 Release.

New Web Sketchpad-specific functionality:

  • isDefined()

    Web Sketchpad now supports an isDefined() fuction, which returns 0 for NaN's (including blank values), and 1 otherwise. This can be used to author sketches which present different results when parameters are blank.

    Currently the isDefined() function is not supported on the desktop. Until it is, there's a temporary workaround. In the desktop, create an identity function named _isDefined. You'll have a function _isDefined(x) = x. When exported, it will be exported as _isDefined(x) = isDefined(x). You can use this function in the rest of your sketch to access the Web Sketchpad isDefined() functionality.

  • CSS Customization

    Button and parameter look and feel are customizable by integration partners using custom css.

Sketchpad features newly supported by Web Sketchpad:

  • Function Plots

Functionality Improvements:

  • Bug Fixes

Q2 Phase 2 2014 Release (July 2014)

Important Notes:

  • File format is now set to 1.1.0. This file format is compatible with the Q2 Phase 1 2014 Release.

New Web Sketchpad-specific functionality:

  • Blank Parameters

    If you change the value of a parameter using the numeric keypad, and delete all the values in it, the parameter becomes blank - it displays as an empty box. Calculations derived from blank parameter values display as blank - without the box.

    Authors can create documents on the desktop that, when exported, are blank in Web Sketchpad by setting the parameter value to the magic constant "-0".

  • Scroll Limiting

    Sketch authors can now declare that a sketch page may not be scrolled beyond the bounds of a rectangle defined by two "Scroll Limiting Corner Points." Under this regime, scrolling is completely disallowed for scroll-limited pages that fit within the visible bounds. Other scroll-limited pages may be scrolled, but no more than is required to bring their edges into contact with the bounds.

    To specify that a sketch is scroll-limited, an author creates two points, each with the label "Scroll Limiter" (case does not matter). If more or less than two such points are created, no scroll limiting occurs.

  • Button User Interface Beautification

    We adopt a modified version of the button user interface / user experience suggested by Margs Plaisted and Sam Thurmond from the MHE Labs team. It has their general look and behavior (with a few tweaks to accomidate the layout of existing desktop documents).

      The basic UI:
    1. Only the drag handle is draggable. A press in the text area of the button always presses it.
    2. A draggable button has a cross-hair on the left-hand "drag handle" (at least, when that can fit in the allotted space).
    3. The appearance when dragging is a slight transparency.
    4. The appearance when pressing is a slight shift down of the text (non-handle) part of the button.

Sketchpad features newly supported by Web Sketchpad:

  • Hot Text now displays and updates dynamically, supporting its use in advanced text layout. Interacting with Hot Text, e.g. to highlight or flash linked objects, is not yet supported.

Functionality Improvements:

  • Bug Fixes

Q2 Phase 1 2014 Release (May 2014)

Important Notes:

  • File format is now set to 1.0.0 - JSON files from older versions of WSP are not supported. Please re-export from the original .gsp files.

Functionality Improvements:

  • Bug fixes

New Web Sketchpad-specific functionality:

  • Numeric keypad for parameter entry

Q1 2014 Release (April 2014)

Sketchpad features newly supported by Web Sketchpad:

  • Multi-Page Documents
  • Link and Scroll Action Buttons

Functionality Improvements:

  • Optimizations
  • Bug Fixes

New Web Sketchpad-specific functionality:

  • Support for partner integrations with Save and Restore of document state using a "delta"

Q4 2013 Release (December 2013)

Sketchpad features newly supported by Web Sketchpad:

  • Iteration
  • Locus

Functionality Improvements:

  • Optimizations
  • Bug Fixes

New Web Sketchpad-specific functionality:

  • Web-based Sketch Exporter Tool

Q3 2013 Release (September 2013)

Sketchpad features newly supported by Web Sketchpad:

  • Axis tick marks and tick mark numbers enabled for Coordinate Systems and Axes

Functionality Improvements:

  • Optimizations
  • Bug Fixes

Q2 2013 Release (July 2013)

Sketchpad features newly supported by Web Sketchpad:

  • Pictures
  • Text Merged to Point
  • Parametric Color
  • Arcs/Arc Interiors
  • Angle Markers
  • Functions (but not Function Plots)
  • Labels, captions, and Action Buttons fully support styled text display

Sketchpad features improved in Web Sketchpad:

  • Units of measurement improvements
  • Movement Button conformance to desktop behavior improved
  • Presentation Buttons support “Stop Any Motions” and “Erase Any Traces”
  • Animation Buttons support animation in the “Random” direction, including "Once Only"

New Web Sketchpad-specific functionality:

  • Dynamic Snapshotting support
  • sQuery support for attribute selectors, compound selectors, and event binding

New Desktop-to-Web Sketch Exporter functionality:

  • Bulk export via the command line
  • Post-export selection of unsupported objects

Q1 2013 Release (April 2013)

  • Unrestricted Dragging (you can now drag dependent as well as independent objects)
  • Coordinate Systems and Axes (axis tick marks and tick mark numbers are not yet enabled)
  • Snap Points (to the marked Coordinate System)
  • Plot (fixed) Value on Path

Improved areas of Web Sketchpad functionality:

  • Various Angle Marker geometry calculation and display fixes
  • Improved visual styling of active Action Buttons
  • Improved web-sketch load time
  • Animation speed now better matches the desktop
  • Revamped handling Straight Arcs for better desktop conformance
  • Numerous bugs fixed