Skip to content

Releases: JerryI/wolfram-js-frontend

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.

Preview (major update 4)

21 Sep 21:05
Compare
Choose a tag to compare
Pre-release

A lot of bug-fixing has been done for multiple platforms. Still some issues with the socket library stability has been reported, since it is based on an outdated fork by me (@JerryI ) instead of a master branch maintained by @KirillBelovTest. By the version 1.0 this will be fixed.

Plugin API covers most needs (even access to the top level menu of the app), but the documentation for it is still in development. A good demo for it is a new core package wljs-snippets, which provide you a sort of palette (by pressing Cmd+P) of short pieces of code, that you can run to make your life easier.

Boxes support from Mathematica was improved a bit, now DateObject, RGBTemplate based on TemplateBox can work properly. This will be updated independently from the client-app attached here.

Search bar was added.

Hot keys were also updated

  • Cmd/Ctrl + N new notebook
  • Cmd/Ctrl + O open notebook
  • Cmd/Ctrl + S save
  • typical undo, redo, copy...
  • Cmd/Ctrl + F find on a window
  • Cmd/Win + 2 hide/unhide current cell
  • Cmd/Win + 1 hide/unhide upper cell
  • Cmd/Win + 3 hide/unhide lower cell
  • Cmd/Win + . abort
  • Cmd/Win + i evaluate initialization cells
  • Cmd/Win + p snippets

show
newlook

Preview (minor update 4)

09 Sep 17:01
Compare
Choose a tag to compare
Pre-release

Minimal2

  • kernel control, evaluation control were moved to the native menu
  • UI simplification. Now the kernel status is shown via colorful vertical stripe on the border of the sidebar
  • new hotkeys (Alt+. for Abort and etc from Mathematica)
  • notebook controls now are in the settings menu
  • examples collection was refined and expanded