We'll note all notable changes in this file, including bug fixes, enhancements, and all closed issues.
Dates are in YYYY-MM-DD
format and versions are in semantic versioning format.
- Added ability to change user interface font to one of the supported fonts.
- Fixed #604, adding a project chat feature to enable communication between project collaborators and gallery owners.
- Migrated to Sveltekit page state.
- Simplified login and join pages.
- Updated minor versions.
- Error boundary to prevent
TileView
errors from causing crash.
- Updated all minor releases of dependencies except for Firebase.
- Build functions before starting emulator
- Resume animations after unpausing
- Fixed $effect cycle in palette
- Fixed label ids on palette
- Fixed exiting reactivity bug in StageView.
- Fixed Safari color emoji rendering.
- Fixed history update on initial guide navigation.
- Fixed rendering of text values for stepping highlights.
- Fixed spacing on subheaders.
- Add svelte-check to CI.
- Don't show expand/collapse toggle on guide.
- More consistent use of color and monochrome emojis.
- Removed several unused contexts.
- Faster caret movement by eliminating unnecessary recomputation.
- Fixed free form project layout.
- Corrected several invalid HTML issues for hydration.
- Migrated to Svelte 5, converting to $state, $derived, $effect, and snippets.
- Updated point releases of all dependencies, except Firebase.
- Added animation speed controls to stage
- Fixed rendering of recent values in debugger.
- Fixed debugger highlights on literal values.
- Fixed UI ID for stage to correct highlight.
- Don't wrap node sequences in blocks mode.
- Describe added nodes during editing.
- Fixed ARIA bugs on autocomplete menu.
- Corrected debugger behavior in the presence of reused values.
- Corrected spacing on home page of header.
- Properly render placeholders in blocks mode.
- Consistent rendering of inferred and explicit placeholder types.
- Better type checking on operator wrapping
- Don't show full names of operators.
- Fixed evaluate autocomplete.
- Removed column layout of documented expressions.
- Changed explanation delimiter to ¶ for clarity, disambiguation in parsing.
- Allow entry into emtpy field lists with no tokens.
- Better handling of empty words tokens in blocks mode.
- Fixed caret position for newlines in interior blocks.
- Removed invalid symbol type from placeholder token.
- #529 Redesign of blocks mode for accessibility and error-prevention. Much to do to make it super polished, but it's better than the previous version.
- Show conflicts even when paused.
- Several dependendabot pull request updates.
- Custom descriptions of Stage, Group, Phrase, and Shape output, overriding default descriptions.
- Included past tense verbs in higher order functions.
- Fixed aria-label updates.
- Drop old announcements if the queue exceeds three, preferering most recent.
- #550 Ensure owned projects are marked as owned when loaded directly from Firestore.
- Formatted different types of references
- Added missing variation selector.
- Ensure projects are unmoderated by default.
- Cleaned up animation logs in
Animator
to ensure that new outputs with the same name can animate again.
- Repaired borrowed bindings from other sources.
- Prevent project reevaluation during typing.
- Permit evaluation of functions with operator names without inputs.
- Ability to copy one's own projects.
- Fixed text sorting.
- Preserve concept on guide page refresh.
- Show multiple names when present in guide.
- #533 Fixed URLs to tutorial.
- #542 Provide error message for < Safari 16.4.
- Persist annotations window collapse/expand state.
- Fixed color of example code in docs.
- Changed unused bind conflict to only highlight name, not value.
- More reliable stage value announcements.
- Fixed case where stream expression is the condition, as opposed to in a condition.
- Fixed order of
MissingInput
conflict dialog. - Change to no localization after translation.
- Polished live region announcements to prevent redundant reading.
- Line numbers in editor.
- #514 Fixed cursor position on hidden language tags.
- #485 Allow selection of language for output.
- #524 Fixed color of drop downs in dark mode.
- #525 Ensure projects are removed from galleries, even if they somehow didn't have a gallery ID in them.
- #515 Ensure local projects get an owner after logging in.
- #520 More generous parsing and conflicts around binary and unary evaluates.
- #523 More general handling of hidden tokens in cursor positioning.
- Fixed parsing bug that prevented complete parsing of the program.
- Fixed reactivity dependency bug that included evaluates in branch dependencies.
- Fixed selection of locale in evaluation.
- Reset owner and collaborators of copied project.
- Added variation selectors to emojis for Safari.
- Stripped machine translation tags from locale text on render.
- Fixed name of locale text JSON schema.
- Hide login link on landing page if logged in.
- Fixed closing text delimiter localization.
- Hide comma separator when localizing names and docs.
- Permit comma separators between text literals, docs, and names, allowing line breaks for text.
- Define
Input
s corresponding definition to enable code localization. - Improved
MissingInput
conflict. - Changed value of divide by zero to non-a-number; defined not-a-number literal.
- Improved dark grey contrast.
- Ensure templated strings are localized in tooltips.
- Allow addition to be used as a unary operation.
- Don't tokenize negative numbers; treat them as a unary evaluation.
- More consistent button styling.
- Added additional reactivity tests to cover granular re-evaulation of random.
- A basic project test to ensure all windows are visible.
- Simplified concretization of locale strings.
- Added expressions control dependent on streams to expressions to reevaluate on reaction.
- Fixed background of buttons to make them visible on stage.
- Fixed grid line complementary color.
- #509 Fixed parsing regression from infinite loop fixes.
- #507 Fixed Webpage stream replay bug.
- #216 Improved design of view code and copy buttons.
- #397 Redesigned home page for clarity and navigability.
- #506 Clarified behavior of localized setting.
- #511 Fixed granularity of reevaluation to preserve random values and animations.
- #512 Semi-automated batch translation of locales on command line.
- Added fade out sequence.
- Fixed select all button.
- Better tab symbol to clarify keyboard shortcut and whitespace meaning.
- Improved contrast of delimiters and borders in dark mode.
- Correct typos in tutorial.
- Ensured type errors when a structure definition is given instead of a structure value.
- When generalizing a union type of function types, generalize their output types.
- Repaired structure of Korean locale.
- #503. Prevent infinite loops in parser.
- #504. Account for non-fixed-width characters in caret positioning.
- #488. Added animations off indicator on stage.
- #500. Improved explanation when there's a space between an evaluation's name and inputs.
- #455. Replaced
Bind
s withInput
's inEvaluate
and table operations to prevent invalid bind metadata in evaluations.
- Upgraded to TypeScript 5.5.
- #104. Created a standalone language reference.
- #489. Handled very large strings generated by text.
- #490. Allow curators to add projects to gallery.
- #491. Fixed tutorial content reactivity.
- #106. Added ability to translate names and text in a program to other supported languages.
- #484. Cleaned up project locales and translations.
- #485. Have runtime respect project locales.
- Upgraded to latest versions of Firebase Functions and Firebase Admin.
- Added pull request template
- Prevented palette addition of
Phrase
whenStage
is already present. - Corrected Boolean or operator description in tutorials.
- Fixed typo in number tutorial.
Scene
now supports shapes.- Conflict resolution for duplicate names.
- Fixed
Stage
documentation examples.
- Added clip path to stage rendering.
- Enabled content security policy to enhance security.
- Improved layout of example code output refresh.
- Tidier spacing of project preview lists.
- #468 Fixed example dragging from tutorial dialog.
- #465 Fixed ARIA roles for output.
- Added
Circle
and regularPolygon
forms, which can be added to a stage as a background.
- Changed toggle button color to always contrast backgrounds
- Defined foreground of footer to ensure button text is visible.
- Reset stage output when locales change.
- Signficantly reduced memory usage of edit history
- Improved preferred spacing of compound data structures and blocks.
- Faster and more correct and stable preferred spacing algorithm.
- #451 New project templates.
- #450 Tutorial typos!
- #444 Fixed fullscreen background behavior.
- #452 Fixed aggressive local project persistence causing slowdown.
- Removed
Toggle.svelte
background color when off. - Restored preferred spacing on
CodeView
. - Removed padding from
ConceptLinkUI
for better guide typography. - Included text in whitespace in selection bounding box.
- When deleting program node, also delete its preceding space.
- Remove caret entry direction when selecting parent of caret.
- Only highlight definitions and uses of caret position when inside a token.
- Fixed incorrect placement of caret; it was assuming pretty printing.
- Removed unused font preload.
- Added description of the parent of the node the cursor is at.
- Upgraded to Dexie 4.0.4.
- Updated Firebase
- Added emoji variation selectors to
PhraseView
to ensure proper rendering of color emoji on WebKit browsers. - Empty list values should have an undefined item type, not a never type.
- Fixed types of Webpage stream, should have been number, not none.
- Don't show project footer in tutorial when in non-editable mode.
- #410: Fixed alignment of project preview glyphs.
- #420: Avoid setting tutorial project name.
- Updated Svelte, SvelteKit, and Firebase versions.
- Updated TypeScript to 5.4.
- #422: Improved performance of very long list, set, and map values.
- #423: Improved design of tile expand/collapse.
- #424: Fixed text to list conversion grapheme segmentation.
- #425: Prevent buttons from capturing keyboard focus on mouse down, in order to keep focus on stage and other components.
- #405: Fixed closures on property binds.
- Fixed rendering of structure values, showing all bound values, not just input values.
- Fixed structure value equality, comparing all bound values in scope, not just first level of scope.
- Moved
Chat
input box above stage output - Allow paste in
Chat
input box - Disabled automatic pretty printing.
- Fixed list spread doc example.
- Better unused bind conflict message.
- Narrowed parsing of structure refinements to avoid conflicting with spreads in lists.
- Account for documented expressions in bind recurrence relations.
- More consistently concretize name types in binds.
- #402: Fixed defect in page loading test.
- Check for collisions even when there's no temporal stream, to allow for objects to collide even when not in motion.
- #256: Allow explicit space indicators to be shown or hidden.
- #382: Wait for gallery to be created before redirecting.
- Don't show preview if there are no projects in a gallery.
- Fixed text placeholder error, preventing empty gallery description from being rendered.
- Better feedback on too many login failures
- Added admin script to update user password
- Fixed MIME type on NotoEmoji preload
- More consistent list function names.
- Slightly faster list creation.
- Slightly faster number to list conversion.
- #362: Added elision syntax to allow temporary removal of code from parsing (e.g., removing
2
from1 + *2* 3
). Also included a toolbar and keyboard command for quick toggling. - #336: Added basic syntax error resolution suggestions.
- English tutorial typos
- Maximum project name length in footer.
- Maximum toggle length.
- Anchor dialog close buttons when scrolling.
- Added missing Source input documentation.
- Restored duplicate name warnings.
- Incorrectly formatted inline code in tutorial.
- Fixed font on non-emoji toolbar symbol icons.
- Remove confusing automatically inserted placeholder at end of programs.
- #374: Allow deletion of selected placeholder.
- #381: Removed confusing line break insertion behavior.
- #23: Source file output with
Source()
, allowing data persistence in a project. - Added support for page up and page down to navigate to start and end of source
- Line breaks for long literals
- Fixed list literal types in the presence of spreads (e.g.,
[:list 2 3]
) - Fixed end command to go to end of last line.
- Fixed direction of annotation toggle error.
- #176: TextFields can increment and decrement numbers.
- #364: Enabled email enumeration protection.
- #361: Fixed popup dismissal.
- #359: Fixed error in windows build command.
- #365: Enforce number of acts and scenes.
- #76: Added
Scene
, a new input stream for showing a sequence of optionally interactive output. This will make it easier to tell typographic stories. - #130: Added
Phrase.aura
to allow for text shadows on text. - Defined
[].shuffled()
for quick and easy list randomization. - Added ability to expand and collapse the editor annotations.
- #340: Resolved nested formatting logic for text formatting.
- Filled source output preview background with error color on exception values.
- Distinguished color of docs and text.
- Fixed rendering of example output in docs.
- #340: Corrected partial formatting edge case
- #341: Fixed key overrides in MapLiteral.
- #342: Fixed broken collaborator sharing button.
- Upgraded to SvelteKit 2.32.
- Upgraded to Vite 5.0.11
- Upgraded to Firebase functions 4.6
- Upgraded to Pitchy 4.1
- Upgraded types: matter-js, node, uuid
- #310: Added a new feature for detecting PII in projects and generating conflicts for them, as well as resolutions for marking text as not PII. When PII conflicts are present, projects aren't saved.
- #48: Added basic support for conflict resolutions.
- #209: Redesigned adjust buttons for literals.
- #276: Added weight, italic, and underline formatting controls in palette.
- Added explanations of save errors.
- Require ARIA-label for checkboxes.
- Subconcepts are now scrolled to properly when selected via a concept link.
- Improved error messages and converage of basis unit tests for conflicts.
- Toggle buttons no longer trigger twice on keyboard activation.
- #305: Redesigned auth for simplicity, removing email login option. Punted on account recovery.
- #303: Require password on account deletion and password change.
- #191: Added moderation progess to moderation page.
- #235: Pre-render static pages for speed and SEO.
- #269: Added type guard support for list and map access.
- #257: Infer structure input types from evaluate.
- #220: Less confusing use of writing mode. Removed global setting, changed editor to always be horizontal top to bottom, but respect priority script's horizontal direction, and added direction as attribute of individual outputs, groups, and stages.
- #251: Consistent tutorial lesson drop down appearance.
- #330: Labeled drop downs.
- #314: Removed low opacity footer on fullscreen for accessibility.
- #313: Upgraded to SvelteKit 2, Vite 5, tsx 4.7.0, and related dependencies.
- Redesigned editor annotations to avoid obscuring on hovers.
- Generalized mechanisms for time-based reactions in evaluations.
- Guaranteee re-render on font load.
- Updated minor versions of Playwrite, ESLint, Jester, tsx, and Firebase
- Upgraded to Prettier 3
- Added support for ø coalescing (e.g., a ?? 1) #36.
- Corrected caret position layout in the presence of tabs.
- Added tab insertion command and shortcut.
- Fixed closures on block evaluations #270.
This version includes many other changes made prior to this log was created.
- New change password form on profile.
- Improved design of username and password login #272, #273
- Converted blocks toggle to a keyboard/mouse switch.
- Explicit switch control over localization of editor, instead of automatic.
- Corrected English list literal tutorial, which didn't explain wraparound behavior of indices.
- Decoded getWebpage response as JSON-encoded string, fixing HTML parsing and querying.
- Keep editor caret displayed after losing focus to preserve menu location.
- Fixed caret position of multilingual name renames.
Initial beta release.