Features:
- Add log verbosity configuration #1380 (thanks @dhia-gharsallaoui)
Bugfixes:
- Fix an issue preventing the creation of zombie kernels by adding a KeepAlive between kernel <-> server #1319
- Add support for .txt dependencies in Python #1357
- Add stylesheet versions to bust the CSS cache on new version deployments #1136
- Fix an issue where panels can be dragged to a negative width and then couldn't be adjusted again #1335
- Add an error message on config paste failure #1375
- Fix a bug where execution info was copied when a new cell was inserted without being explicitly requested #1392
Misc:
- Upgrade Monaco version, adding support for various new Monaco features and fixing some longstanding editor bugs #457 #1382
- Upgrade Webpack version to fix CI failures #1388
Features:
- Add a table of contents along with a full left navbar redesign #1301
- The new table of contents can be accessed under the
Summary
button in the new left navbar - Headings will automatically be added as you write h1-h6 headings in text cells. Click on a code cell to see where it is relevant to the closest heading, or click on a heading in the left pane to jump straight to that text cell.
- For full documentation on the new left navbar redesign, see the docs here.
- The new table of contents can be accessed under the
- Display each kernel's time since last run and since last save in settings pane #812
Bugfixes:
- Fix a few issues where focusing raw markdown cells didn't always render the old markdown cell you left #1315
- Use a workaround to fix occasional compilation issues with shadowjars #1352
Misc:
- Pin Jep back to its default version #1360
- Bump to sbt 1.7.2. and fix slash syntax (thanks @MasseGuillaume) #1350
- Mention that Scala 2.13 is in alpha support in docs (thanks @pan3793) #1368
Features:
- Added a new design for the notebook list! #1118
- You can now sort notebooks by recently edited timestamp or by name in ascending or descending order. See docs here.
- Support
.txt
dependency lists for JARs #1349- You can now use
.txt
files as dependencies, where each JAR is listed on a newline. See docs here.
- You can now use
Bugfixes:
- Use relaxed dependency resolution #1300
- Remove extra dropdown button on advanced options label #1358
Features:
- Add branch-level granularity for notebook drag n' drop #1298
- Add in-app notifications for new updates
- Add run selected cell hotkey + VSCode hotkey link #1313
- Add more documentation around the PythonObject API #1320
Bugfixes:
- Fix a bug where new comments could not be created
- Fix an issue with the size of the search modal sometimes not conforming with the result table #1337
- Fix error cards in the task pane appearing clickable on hover when they shouldn't be #1316
- Fix the Copy & Paste configuration buttons to more accurately reflect the saved kernel state #1314
- Add a note to the documentation about using the
?nocache
query string.
Bugfixes:
- Fixes a bug where there was no max width set on the search modal
- Fixes a bug where the kernel pane would not update on notebook switch
- Fixes the link on the Configuration & Dependencies
Learn More
icon
Features:
- Added support for searching across all your notebooks! #983
- You can use the new search icon next to the plus in your notebooks list to search across all of your notebooks for a line of text/code
- Clicking on a running task card in your
Tasks
pane will now jump you to the corresponding cell #1274 - Added help icons throughout various places of the UI #1305
- These will take you directly to the documentation to explain the section of the UI they represent
- Added support for copying and pasting notebook configurations between notebooks
- See here for documentation
- Added dropdowns for each sub-section in the
Configuration & Dependencies
section for easier navigability #1277 - Each error in your
Tasks
pane has a copy button that will copy the error message + stack trace for easy sharability #1294- The stack trace has also been made easier to read.
Bugfixes:
- Fixed a bug where running tasks that got converted to errors couldn't be closed in the
Tasks
pane - Added a UI label to explain how to use absolute file paths for JARs #1212
Features:
- Notebook templates for creating new notebooks #1190
- Allow raw markdown editing in place of RTE #755
- There is a preference to toggle between these two text editing modes in your settings
- Add a cell button to wrap output text #1038
- Add a cell button to split two cells side-by-side in the UI #1023
- Add a button to run this cell and all the cells below #1283
- Various documentation updates (new about menu page, templates, markdown cells, setting up Polynote's development environment, local Spark setup, and more!
Bugfixes:
- Fix MRO issue with Python cells having a problem interfacing with Scala collections #1249
- This fix should greatly improve the polyglot experience between Python and Scala!
- Fix formatting of intersection types
- Make it a bit more obvious on how to add a new cell through the UI #1262
- Increase the number of dependencies a notebook can have (from 255 to 32767!) #1275
- To handle these larger dependency counts, we've capped the number of concurrent downloads to 16.
- Fix
Shift+Enter
not creating the next cell to jump to if none exists #1270 - Change 'Open Kernel' to 'Open Notebooks' and add a description of what the pane does #1280
- Fix bug preventing addition of new cells in empty notebooks #1229
- Fix a failure in the notebook runner when the notebook has a 'viz' cell #1236
- Upgrade Jep to 4.0.0
- Fix for a bug handling JVM arguments in Spark kernels #1221
- Fix a bug displaying the Cause of exceptions #1226
- Preliminary alpha support for Scala 2.13 (with Spark 3) (not yet ready for release)
- Fix an issue which sometimes caused Polynote to reject all updates, "freezing" the notebook in an old state.
- Safety and performance improvements to
ReprsOf
solving OOMs when handling huge collections. - Fix some concurrent editing bugs.
- Support for output of stderr to the UI (only really for Python right now)
- Fix a crash when insanely long lines are printed to console.
- Improve Python performance (in some cases running in Polynote was ~10x slower than the REPL)
- Implement
isatty()
to work around some issues where Python libraries check for this.. - Some Dockerfile improvements and documentation fixes (Thanks @holdenk !)
- Fixed a docs typo! (Thanks @kuckjwi0928 !)
-
PySpark dependencies now configurable. #1175
There are two new configuration parameters in the spark config, under the
pyspark
key:distribute_dependencies
(boolean), which toggles PySpark dependency distribution.distribution_excludes
(list), a list of packages to exclude from PySpark dependency distribution.
Additionally,
boto
andh5py
are now excluded from distribution by default. -
Fix bug where starting cell with "package" could erroneously trigger package-cell detection. #1174
Features:
- Can now cancel (and unqueue) tasks #1129
- Path is now prepopulated when creating notebook after clicking on a directory #1150
- HTML output from cells is now isolated in an iframe. #1140
- Note that this does not make things more secure; it's merely useful to scope CSS rules so they don't affect the entire page.
Bugfixes:
- Fix for a double-typing bug causing odd behavior #1130
- Fix layout of the kernel pane when the symbol table is too large #1128
- Fix a couple issues handling renamed notebooks #1138
- Fix for LaTeX editor positioning #1149, including a performance fix for the text editor #1147
- Cell buttons now more obvious when pressed #1135
- Fix a bug preventing execution times from being displayed when a notebook was first loaded #1146
- Fix broken plotting when JS-invalid variable names are present in a cell's context #1139
- Fix broken viz cells handling non-numeric data #1148
- Cell execution timer now stops if the kernel dies #1143
- Set Python recursion limit in 3.7 to mitigate weird wontfix Python bug #1144
- Better state propagation for Python cells #764
- Focus editor after creating cell #1158
- Fix Open Kernels in About view #1155
- Fix issue preventing
POLYNOTE_INHERIT_CLASSPATH
environment variable from working in IntelliJ #1106 - Fix path entries for
pkg_resources
lib to account for new entries after activating the venv. #1169 - Fix Docker build issue (thanks @ghoto !) #1170
- Frontend Rewrite The frontend has been rewritten from the ground up. This change should be mostly transparent to
users, but puts us on a much better footing for future improvements. The rewrite did resolve a few longstanding issues
and add a few minor features:
- Notebook tabs are now restored upon reload (stored in the browser). #451
- Fix a bug with large notebook scrolling #923
- Fixed the Kill kernel button in the Running Kernels UI #756
- Symbol table now clears when the kernel is restarted #208
- Whitespace in configuration is now trimmed #497
- Cell status badges are shown after reload #449
- When the editor is disconnected an obvious error is shown to the user #721 #701
- Improvements to UI reconnection logic after server restarts #736
- New Plot Editor! #1025
- Brand new plot editor which supports re-editing plots, pie plots, bubble plots, native histogram, coloring by a dimension in many plots, faceted/trellis plots!
- Data tables (from the data browser) and data views (expando-thingy) can also be embedded persistently in the notebook!
- No more inspection modal! It’s a cell in the notebook!
- You can now Move Cells #1068
- Mouse over the cell and select the handle that appears on the left. Drag the cell up or down.
- The state of the cell is also carried along with it.
- New Quick Inspect UI for Symbol Table #1075
- Simply hover over a row in the Symbol Table to see a menu with a representation of the value, type information, etc.
- New Copy to Clipboard button added to cells with output.
- Support for Multiple Scala Versions at the same time! So far only 2.11 and 2.12, sorry. Blame Spark)
- The Scala version can now be set per-notebook. It is no longer related to the server Scala version.
- Distribution now ships with kernels for all supported Scala versions.
- Which Scala version to use can also be configured with
kernel.scalaVersion
. It is automatically detected if not configured. shapeless
was also removed from our dependencies.
- Configuration for setting JVM options on Kernels. #695
- Improvements to dependency caching #1042
- New UI treatment for choosing caching preferences for dependencies. There is a new
...
button next to each dependency. - Behavior depend on the type of dependency:
- Cache status of JVM dependencies specified via URL (e.g.,
s3
orhttp
) can be individually toggled in the UI - Cache status of pip dependencies can be toggled in the UI, but doing so will just reset the virtualenv (i.e., it will affect all pip dependencies).
- Cache status of coordinate dependencies are always cached.
- Cache status of JVM dependencies specified via URL (e.g.,
- New UI treatment for choosing caching preferences for dependencies. There is a new
- Matplotlib output now defaults to PNG format. It can be configured to SVG format as well using
PolynoteBackend.output_format = 'svg' # or 'png'
. #1037 - Polynote now creates the notebook directory if it doesn't already exist. #964 (thanks @akiyamaneko !)
- Stack traces are now saved into the notebook file #981
- Properly set PYTHONPATH on executors, fix regression causing pip dependencies not to be added to Spark automatically #1000
- Hyperlinks now clickable in text cells #106
- New
SparkRepr
forArray[Row]
#999 (thanks @tmnd1991 !) - Scalar seqs are now streamed as structs. #1058
- Added
DEVELOPING.md
(thanks @easel !)
Deprecations
- Configuration option
behavior.kernel_isolation: never
is no longer supported – spark kernels can no longer be launched in-process.never
is now deprecated; it behaves the same way asspark
(remote kernel iff notebook uses Spark) and will be removed in a future version.
Bugfixes
- Fix for some kernel launching issues (one causing duplicate kernels, another causing kernels to be interrupted erroneously) #996
- Python dependency virtualenv is now reset when a change is detected. #921
- Polynote now shows an error when Python dependencies are not found #450
- Fix bug preventing http and s3 dependencies from being cached #1027
- Fix bug running Polynote on Python versions below 3.7 #972 (thanks @akiyamaneko !)
- Added Java8 compile flag (thanks @Lanking !)
- Update Coursier to 2.0.0-RC5-6 which fixes an issue Coursier has resolving platform-native libraries #998, # 1004 (thanks @kamilkloch !)
- Py4j gateway is now created on the jep thread, allowing py4j to see dependency jars.
- Polynote now extracts notebook name from Zeppelin json when importing (thanks @Ewan-Keith !)
- Fix issues preventing deletion of a notebook #974
- Properly handle duplicated dependencies #1039
- Fix some bugs with the LaTeX editor #969
- Fix an issue with Python Data Classes
- Fix issues importing Zeppelin notebooks
- Fix some dependency resolution bugs (Thanks @JD557)
- Fix an issue improperly decoding URI components (Thanks @akiyamaneko)
- Other minor bug fixes
- Fix a regression which stopped certain error types from appearing in the UI
- Check Notebook read permission when loading a notebook.
- New experimental Dark Mode (feedback welcome!)
- Ability to directly paste images into text cells (image button on toolbar still doesn't do anything, but at least now it's possible to insert an image without it having to already have a URL)
- Notebooks are loaded incrementally (better responsiveness for large notebook files)
- Some tweaks/fixes for Scala completions and signature help
- Handle case when the browser generates continuation frames over the websocket
- Replaces
0.3.8
, which was retracted after we found a few issues in it that weren't caught. - Stability A bug that could cause data loss has been fixed in this release.
- Backups Polynote now writes a write-ahead-log (WAL) whenever it gets updates to a notebook. This WAL can be recovered using
polynote.py recover /path/to/wal-file.wal
. This is currently experimental. - Backups Polynote now saves a copy of opened notebooks into the browser's local database. This can be used in case of catastrophic server-side data loss (but where the client has been working).
- New Added a "notebook runner", invoked with
polynote.py run [OPTIONS] input-file input-files*
that can run notebooks in headless mode - Lots of fixes to the Plot UI (Thanks @JD557!)
- Handle naming collisions between Java and Python package imports. Python packages with JVM-like names no longer get swallowed by the Jep importer.
- Fixed bug: saving plots doesn't work because websocket connection dies for no apparent reason
- Fixed bug: Value of zero or
false
causes[object Object]
in table view... sigh javascript - Fixed issue: Plotting pandas DataFrame fails when column identifiers have non-string type (thanks @Baoqi!)
- Configurable port range for remote kernel comms (thanks @hadrienk!)
- Parallel downloads of JVM dependencies
- Allow complex data structure display in table view
- Fixed some edge cases in Scala code that defines classes/types/methods and uses them in later cells
- Fixed regressions:
- Cancel button not working
- Rename active notebook causes bad state / data loss
- Configured
listen
interface was ignored - Crash in SQL interpreter
- JavaScript error when attempting parameter hints
- Fix issue with launcher script
- Fix multiple series in bar chart (Thanks @JD557!)
- Surface error if kernel dies before finishing startup
- Fixed plugin script
- Fixed avatar images in commenting UI (when identity supports them)
- Added configuration for a "default" spark props template
- Reverted bug in remote kernel logging
- Switch HTTP server to https://github.com/polynote/uzhttp (this affects the
IdentityProvider.Service
interface) - Update to ZIO 1.0.0-RC18-2 (this deprecates the
Enrich
macro) - Front-end static files were moved out of the application JAR, so they can be served directly on disk. This changes the directory structure of the polynote installation by adding a
static
directory which contains the (gzipped) static files. These static files can now be served directly by a dedicated webserver if so desired. - Write
language_info
metadata to ipynb files (improves interop with notebook tools)
- Automatic conversion of PySpark <-> Spark DataFrames - it no longer matters which language you used to create the DataFrame!
- Comment support Code cells only for now. Highlight some text in a code cell and you'll be able to add a comment, similar to Google Docs.
- Environment Variable Configuration Requires isolated kernels. Can now set environment variables to be passed to the notebook process.
- Improvements to Pandas DataFrame support.
- Add new
Run to cursor
hotkey - it'sCtrl + Alt + F9
. Thanks @kuckjwi0928 ! - Added support for more IPython repr formats: Polynote now understands
_repr_svg_
,_repr_jpeg_
,_repr_png_
, and_repr_mimebundle_
- Improvement to autocomplete - it should now be higher quality and won't trigger for weird characters like
:
- Python completion improvements: Function parameter hints should now have types, dictionaries now have key completions,
and
jedi
has been updated for even more goodies - Fixed some more bugs in the Python interpreter
- Fix config number format issue. Thanks @bgparkerdev !
- A bunch of other fixes and improvements!
- Fix issue where kernel hangs trying to find
ReprsOf
something that hasvar
s in it - Make
kernel
variable implicit so it can be threaded into functions
- Remove deprecated
polynote
shell script (usepython.py
instead) - Disable notebook if writing fails repeatedly
- Unmangle package name for Spark 2.4.4 compatibility
- Validate config on server startup
- Respect language from imported Jupyter notebook
- Don't save stdout to the notebook if it's subsequently been erased
- Fix docker build for Scala 2.12/Spark 2.4
- Misc UI and backend fixes
- Better handling of unexpected kernel shutdowns
- Presence
- Add copy notebook
- Use index for import
- Use class indexer
- Manually call atexit shutdown hooks
- Fix Py4j version handling
- Added browser notifications for completed cells of unfocused notebooks
- Fix some websocket issues
- Adds UI x to close error boxes
- Retrieve causes of python exceptions
- Get jars from
SPARK_DIST_CLASSPATH
with config
- Create a websocket for every notebook
- Fixes for configuring pyspark executable locations
- Fixed some plotting and streaming data bugs
- Better completions
- Refactor the way notebook files are encoded/decoded and stored. Also fixes some issues in Zeppelin notebook import.
- Address
serialize-javascript
vulnerability - New hotkey,
Shift+F10
, to run all cells (thanks @kuckjwi0928) - Additional bugfixes and improvements
- Improved completions for Scala
- Fixed regression in python+spark interpreter where
kernel
(and thus matplotlib) isn't available.
<base>
tag can now be configured and works properly- Renaming notebooks works properly
- Fixed plot editor buttons
- Improved docker build (thanks @mathematicalmichael and @JD557)
- Removed
pysparksession
(spark
now works properly in pyspark) - More improvements to python interpreter (stack traces, red squigglies, etc)
- Compiles against JDK11 (thanks @aborg0)
- Lazy vals don't cause errors (but still aren't really lazy)
- Identity provider framework and header-based authentication
- Timeout when searching for
ReprsOf
- Fix resolution of some ivy/maven artifacts (thanks @JD557)
- Fix drag-and-drop events in Firefox (thanks @JD557)
- Support Safari (thanks @calmarj)
- Support ivy/maven credentials as coursier credentials.properties (thanks @JD557)
- Misc bugfixes improvements to remote kernel reliability
- Improve remote kernel error handling
- Make LimitedSharingClassLoader configurable (thanks @ghoto !)
- Remove
sun.misc.Cleaner
which is messes up JDK9+ - Resolve insecure py4j gateway issue (thanks again, @ghoto !)
- Fix bug in handling empty configs
- Add ability to specify multiple storage mounts
- Updated notebook list UI, with ability to rename and delete notebooks (right click), navigate with keyboard, etc
- Fixed classloading bug causing e.g. #588
- Don't override spark.app.name if it's set in the spark config
- Fix bug causing issues importing shared modules installed inside virtual environments
- Publish snapshot artifacts of all modules to sonatype
- Happy Halloween! This spoooooky release includes some minor bugfixes!
- Remove scala from the runtime assembly jars
- Set Python's sys.argv to prevent some libraries from complaining
- Configurable base URI, useful when behind a proxy
- Fix an NPE when trying to encode a null string
- Fix issue with package cells not working at all when Spark is enabled
- Self-host some external resources (font-awesome icons and katex)
- Fix critical issue in plot aggregations for collections-of-case-classes
- Attempt to fit initial plot size into available area in plot editor (fixes axes being cut off when window is too small)
- New Python Runscript which should hopefully help people who have been having trouble linking with Jep
- Improved Security by adding a unique websocket key generated on server start, reducing the chance of attacks on the local websocket by malicious users
- Support for
package
definitions in Scala Cells: users can now define package cells that are independent from other notebook cells, useful for solving serialization issues and other problems. - Update Scala to
2.11.12
fixing the error people were having on JDK 9+ - Fix a bug with numeric aggregations (thanks @JD557 !)
- Fix a bug causing compatibility issues on newer JVMs (thanks @diesalbla)
- Fix a bug causing missing state when new interpreters are started in the middle of a notebook session
- Fix compatibility with Python 3.8
- No longer shadowing Scala SparkSession variable
spark
in Python cells. PySpark users should use thepysparksession
variable to access Pyspark's SparkSession. This is a temporary solution until we have a better one in place.
- Fixes a dependency clash which was causing
NoSuchMethodError
and similar.
- Cross build for Scala 2.12
- Support for LaTeX MIME type output
- Fix some race conditions in Scala compiler
- Fix issue with nondeterministic queueing order
- Fix bug when notebook folder doesn't exist (Polynote now creates a notebook directory for you)
- Fix an issue where failed dependency downloads could cause notebook to be unresponsive until a restart
- Fix regression causing missing ExecutionInfo
- Fix regression causing the python interpreter shutdown to crash the kernel
- Fix regression causing symbol table to be stale after page reload
- Fix regression causing inserted cells not to be focused
- Remove spellcheck on code cells that would sometimes come up
- Always add a StringRepr.
- Some minor cleanup of UI events
- Update fonts to address a bug in Firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=1589156)
- Add some initial docs (more to come!)
- Update the logo (slightly)
- Subtasks!
- Now related tasks are properly grouped together as parent and child tasks for less UI clutter
- Matplotlib backend
- A proper Polynote backend for Matplotlib! Only supports regular old plotting, no interactive or animation support (for now)
- Finally added a license :)
- Fix some bugs that were slowing down some Spark jobs.
- Fix some bugs with Python-Scala interop
- Fix some more data encoding bugs
- Fix some bugs with data encoding
- Surface some error messages better in the UI
- Improve completions
- Add rudimentary auto-importing, kinda
- Better output display for some types
- Two new quick link buttons to go straight to the plot and data inspectors
- Fix race condition leading to the 'double typing issue'
- Fix some data encoding bugs
- Improvements and fixes to plot editor
- Better nullability handling across the board.
- Fixes for some remote kernel sync issues
- Various bugfixes
- Fix bug setting spark output path
- Fix bug preventing download of dependencies
- Fix more completion bugs
- Fix more classloader bugs
- Fix more remote kernel bugs
- Fix cell queuing order bug
- add map types to schema view
- fix spark executors ui error
- fix remote kernel crash
- fix some bugs in Configuration UI
- fix case where some completions weren't working
- Significant rewrite of most backend code, switching over to ZIO!
- Frontend ported to Typescript!
- Fix bug preventing jar dependencies with
+
in their name from working - Fix broken restart of PySpark kernels.
- minor UI fixes
- Support for being served under HTTPS
- Fix for
Shift+Enter
creating a newline rather than executing the cell - Show tasks in Welcome screen
- Focus previous cell when last cell is deleted
- Remove formatting when converting text cells to code cells (e.g., if you copy/pasted some code and it has colors and such)
- New About modal:
- Replaced barely used View Settings ugliness with fancy new modal with a bunch of info
About
section has server version infoPreferences
section has are for setting preferences and viewing/clearing storage (can be accessed directly by clicking thegear
button.- The vim mode setting has been moved here
Hotkeys
section has all available hotkeys (can be accessed directly by clicking the?
button)Kernels
section shows all notebooks currently open by the server, with the ability to start/stop their kernel.
- Fix hidden output off-by-one error
- Stability improvements for remote kernels
- Fix error causing failure to display inspector for certain types of Dataframes
- Fix error causing compilation failure when users define variable names that look like scala's generated synthetic members
(e.g., a variable starting with
eq_
) - Add version to app name
- minor refactoring to remove some
unsafeRun*
s.
- Some minor UI improvements like
- Collapse config when save button is pressed
- Make it more obvious that output has been hidden
- Fix some cases where the vim statusline disappeared
- New Repr for Maps, show type in the data table, add Reprs for SparkSession and Runtime.
- Reload the UI upon reconnecting if it detects versions are out of whack.
- Fix cell anchor link regression
- Make step execution favicon bubble green :)
- Only create venv when python dependencies have been provided
- Overhaul python stack traces - get the actual error from py4j (e.g., pyspark) exceptions, clean up regular python stack traces.
- Improve completions in the middle of a line by truncating it when sending to the presentation compiler
- Fix a bug preventing classes extending something imported in the same cell from working properly
- Display python docstrings and types (if possible) in Parameter hints
- Force spark session shutdown to run on the right thread
- Load the default.yml config even if config.yml itself is empty (normal case upon first installation)
- Add number of queued cells to favicon
- Disable running / editing cells upon disconnect. Attempt to reconnect when window is focused.
- bust browser cache on release (hopefully you won't need to force-reload after upgrading any more!)
- Fix cyclic reference error
- Fix issue preventing vega interpreter from working properly if a string-typed variable was defined earlier
- Create a virtual environment every time.
- Lazy vals no longer cause compile errors (they still have some problems though as detailed here)
- Fix compile error preventing definition of functions with default values.
- Python Dependency support!
- You can now specify Python dependencies (there's a little drop-down you can choose from in the Configuration panel).
- When you specify these dependencies, Polynote will create a notebook-specific virtual environment and install those dependencies inside it.
- The virtual environment is configured to delegate to the system python environment so packages that already exist won't be installed again. It's persisted as well so it won't be recreated every time you restart polynote.
- Support for base
default.yml
to be provided in distributions - no more clobbering people's configs! - Fix for broken VIM mode
- Improvements to data display:
- Add chrome-inspector-style display of structures and arrays
- Add Schema tab to inspector UI for table data
- Some refactoring/removal of duplicate stuff
- Add encoding of array fields to spark table data
- Create notebooks directory if it doesn't exist
- Move cell controls to top of cell, horizontally
- Each cell has lang selector
- Buttons to show/hide code and output
- Add new Vega spec interpreter for generating plots
- Add new inspection UI
- Inspection comes up in a modal
- Remove value column from symbol table
- Upgraded plot editor
- Can save plot to a Vega spec cell
- Better UI, can edit size and titles, functioning scatter plot
- Editor size adjusts after code folding
- Remove annoying jep uninstall message #328
- Overhaul Scala compilation for better serializability and stability. #330
- Lift user-defined classes to package namespace (no more inner classes!)
- Only import necessary values from previous cells (rather than everything in that cell). Use proxy values rather than imports to avoid closing over the entire cell.
- Fix regression causing wide output to stretch cell too far #333
- Improvements to completions #335
- Install jep globally rather than locally #324
- Fix lingering positioning bugs (completions should work better now; no
OuterScopes
stuff) - Fix spark serializer issue
- Minor style fixes
- Add support for simple references to
globals()
#19 - Fix Python scoping issue causing NameErrors for imports references inside inner scopes (e.g., in a function) #315
- Add
@transient
annotation topolynote.runtime.Runtime.externalValues
, preventing Spark from serializing it. #316
- Fix Python output folding issue #295
- Duplicate notebook names now handled gracefully, we'll just increment the filename until there's no conflict #296
- Python
SyntaxError
s raised by parsing cell contents now raised asCompileErrors
rather than Runtime Errors. #301 - Fix regression which broke implicits #313
- Improve performance of UI pane resizing, other minor UI improvements
- Fix positioning regression introduced in 0.1.10
- Only close over cells that are referenced in the current cell
- Can now bust cache of URL dependencies (e.g.,
file:///
,s3://
, etc) by adding URL parameter?nocache
to the end of the path #292 - Support
s3n
ands3a
URLs as well (just a config change on our end). - Fix bug in how we were assigning Python cell expressions to
Out
#291 - Fix Spark serialization issues #300
- Fix error when printing empty lines in python
- Fix data streaming on remote kernels
- Add table operations for sequences of case classes (supports plotting)
- Clear error squigglies when cell is run
- Save cell language into metadata field of ipynb
- Improved support for terminal output
- Fix some bugs that caused cell execution to hang
- Fix regression which caused repr display not to show up
- Fix some scala interpreter bugs, including one that prevented case classes (and other things) defined in a class from being visible to other cells
- Better numpy support, fix for
Message class can only inherit from Message
error
- Fix an embarrassingly bad bug in #241
- Update coursier, giving an order-of-magnitude performance boost to dependency resolution (especially for deep dependency trees)
- Hotkey revamp #241
- Share implementation across monaco and text cells
- Added new hotkeys: Delete cell (ctrl-option-D), add cell above (ctrl-option-A), add cell below (ctrl-option-B)
- Up and Down arrows now transition to neighboring cells if cursor is at start/end of cell text
- Display cell execution time while it is running #253
- Fix RuntimeError when using a numpy array.
- Support for importing Zeppelin notebooks #185
- Just drag and drop your
note.json
onto the tree view. - Notebook creation and URL import are now two separate buttons.
- Just drag and drop your
- Can now click between cells to create a new cell #235
- New clear output button - deletes all results/outputs of a notebook from UI and underlying file #237
- Fix scrolling behavior for selected cell #240
-
Import and Export of Notebooks #215
- New download button in Notebook toolbar downloads the ipynb representation of the notebook
- Can import ipynb files by drag and drop onto the notebooks sidebar UI
- Additionaly, can import notebooks directly from another Polynote instance when creating a notebook. Just specify a URL instead of a name for the new notebook.
-
UI cleanup #224
- drag borders always visible
- some fixes for notebook panel view
-
Vim mode no longer swallows Shift+Enter #226
-
Fix bug preventing selection of leftmost tab when notebook panel was collapsed #228
-
Fix bug causing output doubling #227
-
Fix bug causing run script to fail when certain values were present in the config file #232
-
Logging and Error visibility improvements #218
- Kernel Error task message now includes stack trace
- Log kernel errors to Polynote output instead of just UI.
- Run script by default tees logs to file to help debugging later
- Run scripts included in HTML Output #205
- Add UI support for warnings
- Warn (rather than error) if eta-expansion fails #216
- Collapsible sidebars #11
- Cells now show execution progress of top-level statements (scala cells only) #221
- Add VIM mode #220
- Additional bug fixes and UI tweaks (#212, #222)
- Initial release of Polynote! :)