Releases: JerryI/wolfram-js-frontend
Minor update
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...
We still haven't tried all possible cases.
SummaryBox partial support 🎁
It appears in many Wolfram's expressions. For example
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
andMagnification
options forImage
- 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
Major update 🍎
Much wider support of 2D and 3D graphics
Updated primitives and transformations Polygon
, Disk
, Arrow
, Cylinder
, GraphicsComplex
, Rotate
, GeometricTransformation
and many more. See Reference
WebGL accelerated GraphicsComplex
dynamics
ManipulatePlot
An easy dynamic version of Plot
built on-top of a default dynamics
New features
- AnimationFrameListener triggers events to match refresh rate of a screen
- ZoomAt programmatically zoom into graph
- TransitionType, TransitionDuration allows to control the interpolation between different states of graphics primitives.
- Emissive new material parameter
- MeshMaterial support for different materials (3D graphics)
- ReadClipboard
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]
or some other examples
data = <|
"z" -> Table[x y, {x,-10,10}, {y,-10,10}],
"type" -> "heatmap"
|>;
Plotly[data]
or fast realtime animations
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 🚀
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 🍪
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]
orKet[-2]
, for example).
Binaries
- added M1 architecture
The immortal edition 🔌 (minor update)
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
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 fractionCtrl+2
make a square rootCtrl+6
make a superscriptCtrl+-
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
Major update ⚗️
Plotting Functions
Finally, BarPlot
, BubbleChart
, and other similar types of diagrams are supported by wljs-graphics-d3.
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.
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.
UI Update
- Acrylic material is now supported under Windows 11 & OSX.
- Extended CSS customization and custom HTML header support (directly from the settings menu).
Wolfram Expressions
- Mathematica's
Boxes
improvements. Now everything is a box, and one can also use the nativeMakeBoxes
approach to construct decorations for Wolfram Expressions. Please refer to the Docs.
ByteArray
,Now
, andRGBColor
show an expected placeholder.
- Very powerful components
EditorView
andInputTable
were added.
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
.
Documentation
There are still many empty pages in Reference
; however, some of the sections have been finished.
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
Preview (major update 6)
-
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
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)
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.
Box
es 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 notebookCmd/Ctrl + O
open notebookCmd/Ctrl + S
save- typical undo, redo, copy...
Cmd/Ctrl + F
find on a windowCmd/Win + 2
hide/unhide current cellCmd/Win + 1
hide/unhide upper cellCmd/Win + 3
hide/unhide lower cellCmd/Win + .
abortCmd/Win + i
evaluate initialization cellsCmd/Win + p
snippets
Preview (minor update 4)
- 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