Skip to content

Releases: JerryI/wolfram-js-frontend

Major update 🎓

07 May 11:03
Compare
Choose a tag to compare

Since the total bundle size (app + docs + libs) has exceeded 300 MB, we have decided to provide you with two options:

  • WLJS Notebook Minimal: Requires an internet connection for installation and accessing documentation.

  • WLJS Notebook Full: Includes offline documentation and the latest libraries.

Bug Fixes & Features Implemented

Plotting & Graphics

  • Fixed PlotLabel issue.
  • Implemented Graph functionality.
  • DatePlot now correctly converts UNIX time scale into human-readable dates.
  • Added BezierCurve support.
  • Utilized GraphicsComplex for 2D graphics performance enhancements.

Boxes

Screenshot

Screenshot

  • Included new examples showcasing decorations.

Dynamics

  • Demonstrated creation and destruction of dynamic objects.
Video

Video

  • Added new examples highlighting dynamics and interaction.
  • Introduced a new input element, InputJoystick.
  • Supported the use of Beep[].

UI & App

  • Resolved issues with Windows server mode.
  • Enabled haptic feedback for MacOS devices and sliders.
  • Implemented layout improvements.

Minor update 2

24 Apr 17:50
c480eee
Compare
Choose a tag to compare

Bug fixes & changes

  • Full control over a sidebar
    Now it can be hidden on shown by just clicking the button

  • Windows 10/11 title bar fix

  • Updates channel
    You can specify a Github repo used for updates

  • Improved AI
    Now 3500 tokens of our documentation is sent to OpenAI for each chat session, which improves the quality of answers drastically.

  • Better support for Image objects
    Before it was quite buggy

  • Missing boxes
    Sometimes Boxes.wl was not loaded properly to an evaluation kernel. We changed the way how it loads.

  • New examples
    Animation, realtime raster processing is added.

  • Scientific tools
    A new section with useful widgets is added to the examples folder

New snippets

  • Format text
    A small toolbar to change the font-size, color used in any cell (quite experimental)

ToolbarT optimizer

  • Take a picture
    Captures a photo using your active web-camera and sends to Wolfram Kernel

TakeAPic speed

Minor update

14 Apr 15:27
Compare
Choose a tag to compare

Some fancy features were added

Highlights

AI Assistant 🪄

A deep integration with OpenAI. Now there is a separate chat-window and AI has an read/write access to the cells in the notebook. It can help you to fix errors, print new cells and so on...

ASKAI optimizer

We still haven't tried all possible cases.

SummaryBox partial support 🎁

It appears in many Wolfram's expressions. For example

Screenshot 2024-04-14 at 17 26 58

Bugs and dev features

  • minor layout fixes
  • camera and microphone permissions fix
  • NumericArray support on WLJS Interpreter for best performance
  • RevealJS slides markdown directives support (change background and etc)
  • PointLight works properly
  • new events from slides window (Slide, Left, Mount, Destroy)
  • ImageSize and Magnification options for Image
  • reset dynamic symbols, when the connection to kernel was lost
  • an option to disable acrylic material on Windows 11 machines
  • an option to enable JIT Tailwind compiler to use any Tailwind classes in notebook cells (slows down the frontend when enabled)

Code signed release

01 Apr 21:10
5649d12
Compare
Choose a tag to compare

We are officially signed by Apple!
No problems on Mac M1/M2/M3 with installation are expected.

Minor changes

  • code formatter

FormatCode optimizer

  • show options snippet

ShowOptions video to APNG

  • Graphics3D scaling fixes

Major update 🍎

30 Mar 22:44
8464a65
Compare
Choose a tag to compare
Preview

Much wider support of 2D and 3D graphics

Updated primitives and transformations Polygon, Disk, Arrow, Cylinder, GraphicsComplex, Rotate, GeometricTransformation and many more. See Reference

Preview

Rotator-ezgif com-optipng

CuboidGizmo-ezgif com-optipng

WebGL accelerated GraphicsComplex dynamics

Preview

Gauss3DLight-ezgif com-optipng

All vertices are recalculated by WL Kernel in realtime

ManipulatePlot

An easy dynamic version of Plot built on-top of a default dynamics

Preview

Manipulate-ezgif com-video-to-gif-converter

See more

New features

PlotlyJS full integration

It allows to fully utilize an official Plotly library using WL. It mimics 1:1 an original API and also supports animations, 3D graphics, diagrams and so on

Preview
trace1 = <|
	"x" -> {1, 2, 3, 4}, 
	"y" -> {10, 15, 13, 17}, 
	"type" -> "line" 
|>;

Plotly[trace1]

pliplot-ebb91f2acef5548d79d9b1b980f0e126

or some other examples

data = <|
	"z" -> Table[x y, {x,-10,10}, {y,-10,10}],
	"type" -> "heatmap"
|>;

Plotly[data]

newpheatlot-7092fe69ba6a9cd57732fe107c2c14a8

or fast realtime animations

PlotlyAnimate-ezgif com-optipng

Bidirectional export to HTML

  • embed external images from Markdown and Slide cells
  • unicode support
  • auto-convert from HTML back to a normal notebook format (.WLN)
  • embed NotebookStore raw data

UI

  • Open in browser feature, that reopens a window using a system internet browser
  • Offline docs
  • icons update

Documentation

  • Both offline / online. Click to Misc or locate from the top-menu
  • All implemented expressions are finally documented!
  • More examples and tutorials

WLJS Notebook 2.0 is out 🚀

13 Mar 20:23
Compare
Choose a tag to compare
light

It's been a long time, since the last release came out. WLJS Notebook and all supplementary plugins were rewritten from scratch in order to enforce modularity, to make maintainable code-base and more user-friendly UI.

Apple Silicons users

There might be some troubles with installation. Please see the guide if it is the case

There are some breaking changes in some APIs, which will be reflected soon in our documentation.

Major update 🍪

18 Dec 15:05
Compare
Choose a tag to compare

Client app

  • Wolfram Kernel troubleshooting assistant
  • Automatic authorization and activation using Wolfram ID and password provided

Frontend

  • Improved cursor movement between cells (can jump into the hidden input cell).
  • More snippets: code formatting, file uploader.
  • More examples.
  • More features for editable decorations (try Bra[2] or Ket[-2], for example).

Binaries

  • added M1 architecture

The immortal edition 🔌 (minor update)

15 Nov 19:12
Compare
Choose a tag to compare

This covers the case, when there is no internet connection possible (see #57 )
The binaries comes with all packages and plugins necessary for functioning properly. However, if there is internet connection to github.com (where all packages are stored), it will anyway download the latest version.

Other changes

Math input

Now it uses a different way of representing syntax sugar for math input and other decorations

Screenshot 2023-11-15 at 20 01 44

is represented as

(*FB[*)((1)(*,*)/(*,*)((*SqB[*)Sqrt[2](*]SqB*)))(*]FB*)

if you remove comments, it will look like

(1)/(Sqrt[2])

which is safe for using it anywhere keeping the actual code unchanged.

Just to remind the shortcuts

  • Ctrl+/ on the selection - make a fraction
  • Ctrl+2 make a square root
  • Ctrl+6 make a superscript
  • Ctrl+- make a subscript

CellPrint

This comes handy when making progress bars and other temporal messages. Please see the reference.

Please also see new examples located from the main menu

Screenshot 2023-11-15 at 20 09 01

Major update ⚗️

26 Oct 17:30
Compare
Choose a tag to compare
Major update ⚗️ Pre-release
Pre-release

demo2

Plotting Functions

Finally, BarPlot, BubbleChart, and other similar types of diagrams are supported by wljs-graphics-d3.

chart

plbublrot

If PlotRange is not provided, it attempts to autoscale the axes while maintaining an equal aspect ratio.

DensityPlot works since we implemented GraphicsComplex with the VerticesColor option.

dens

Unfortunately, only flat-shading is supported, meaning it does not interpolate a color between vertices of a single triangle. This is a bit tricky in SVG. Probably, we would need to move to canvas and use JavaScript raster graphics for this purpose.

Editor

  • Autocomplete user-defined symbols. The frontend communicates with the Wolfram Kernel every time a new symbol is created. This does have some drawbacks in terms of performance because any internal Wolfram Package brings a lot (~10^4) of new symbols in a private context, which have to be filtered out on the fly. We use $NewSymbol internal handler to manage this.

Screenshot 2023-10-26 at 13 53 31

UI Update

  • Acrylic material is now supported under Windows 11 & OSX.

9

  • Extended CSS customization and custom HTML header support (directly from the settings menu).

Untitled4

Wolfram Expressions

  • Mathematica's Boxes improvements. Now everything is a box, and one can also use the native MakeBoxes approach to construct decorations for Wolfram Expressions. Please refer to the Docs.
    ByteArray, Now, and RGBColor show an expected placeholder.

Screenshot 2023-10-26 at 13 57 15

Screenshot 2023-10-26 at 14 01 07

ezgif com-optimize-7-2 1-5c73ff8f0c5594a3a635b0638561abc9

ezgif com-video-to-gif-6

Miscellaneous

  • Unicode support (Можно писать 何でも). This was done in a somewhat unconventional way, by running over all text strings with a JavaScript RegExp, since Wolfram Language does not provide a clear way to export expressions as a Text + JSON string. Hopefully, it will not introduce any performance issues.

  • More built-in examples (see File -> Open Examples).

  • A standalone client/server mode of the app was added. Since our desktop app is basically a Chromium wrapper over the wolframscript web-server, it allows you to run the server independently. A standalone client app provides a bit more functions compared to if it were opened in a browser, such as: context menu, a top-bar menu, hot-keys... Menu->Reopen as server/client.

Screenshot 2023-10-26 at 14 39 00

Documentation

There are still many empty pages in Reference; however, some of the sections have been finished.

Screenshot 2023-10-26 at 14 29 33

Troubleshooting

Please have a look at this page if you face any issues.

Acknowledgements

@MitsuhaMiyamizu for being the first and only sponsor of this project! ❤️

Devs

@JerryI, @KirillBelovTest

Preview (major update 6)

02 Oct 13:22
3cb44b5
Compare
Choose a tag to compare
Pre-release

Animation

  • Unix/Windows sockets update developed by @KirillBelovTest in pure C, performance and stability improvements. The peak transfer speed is around 170 Megabytes/sec 🚂 (native Mathematica’s socket library gives only 2 Megabytes/sec and passes away on a bigger file). We faced some troubles on Unix platforms, therefore for them we rewrote some parts of it using libuv, which is so far is the most stable candidate for Linux/MacOS (we did not manage to compile it under Windows using LibraryLink, btw debugging is a bloody hell there). Both implementation are async and non-blocking.

  • cell2window projection feature was improved🪟

  • log window was replaced by a normal terminal (you can send commands to wolframscript directly) 👾

  • Kernel startup issues (sometimes it did not attach to a notebook)

  • TemplateBox feature partial support (RGBColor and some other syntax sugar from mathematica are supported )

  • a lot of improvements with 2D graphics 🎨

  • reference section was finally added to docs 📃 and slowly are populated with a material

  • search bar added to docs

Screenshot 2023-10-01 at 20 33 25

As one of the maintainers (@JerryI), WLJS Frontend has transformed for me from being a side project into an essential tool I use daily for processing a significant amount of experimental data (replacing OriginLab and RefFIT), preparing figures for papers in PRB Journals, modeling THz signals, and serving as a sandbox for theoretical calculations.

I hope it can prove to be beneficial for others as well. If you encounter any issues, please submit them to the GitHub repository. For more complex matters, don't hesitate to join the WLJS Support group chat on Telegram.