v3
3 (2023-05-13)
Bug Fixes
- add config imports to importmap (63090d7)
- API: allow API to set full
Config
not justContentConfig
(69ff21d) - app: add
es-module-shims
to app.html (2c27485) - app: avoid unnecessary run before importing external content (d9d0499)
- app: do not load defaults (template/last used language) if language is specified in query params (1c8da65)
- app: fix export all sorting (bbbaef8)
- app: fix loading user config (fab4976)
- app: fix security issues and unify UI (c6e74fe)
- app: if mode is codeblock, set config as readonly (b972879)
- app: import external content on loading config (4328d53)
- backup: handle the case of selecting no stores to backup (754e6b7)
- cjs2esm (cb609f2)
- clean css duplicates (d3873ef)
- compilers: fix diagrams compiler errors (e5449a2)
- compilers: fix loading rich text projects (ce3c894)
- config: remove duplicates in config properties (89e2a22)
- editor: fix codeblock and show line numbers (093830a)
- editor: fix losing focus on format (cc51883)
- editor: fix losing types on language change (cd88f67)
- editor: fix overriding monaco autocomplete overlay style (28be0fd)
- embed: avoid changing browser history in embeds (8d1e21e)
- embed: fix logo link in result mode (52b9466)
- fix type imports (d0fbf68)
- hide duplicate tags (from sync) (e60f162)
- inject css to fix FOUT in index.html (4ceaf98)
- move from UserData to AppData (2ad2dc0)
- npm-package: fix loading config object (663941c)
- postMessage origin for loading default template (23cc869)
- result: fix converting
require
if used as method (99c587a) - result: fix result flush (d74a759)
- result: remove messaging script from result in exports (e7415e0)
- SDK: prevent react SDK from rerendering (d265d2a)
- services: fix share service (67fe70a)
- sync: do not re-download unchanged remote sync data (1a56d48)
- sync: fix sync (cache and encoding) (feec8d5)
- templates: fix loading starter template from unsaved project (2f09967)
- tests: fix chai assertion messages by imorting chai from jsdelivr(+esm) (0b9cef0)
- tools: fix firing onActivate on resizing tools pane (6e26981)
- UI: disable autofocus in embeds (b009f74)
- UI: fix focus on hidden editors (2453121)
- UI: fix logo link (b72ce80)
- UI: fix logo link (7bbebe1)
- UI: fix multi-column submenu (70b7e05)
- UI: fix settings menu external resources handler (9bbd933)
- UI: remove formatting on paste to project title (198e2b8)
- web: fix show code styles (b714e4f)
Features
- API: add
params
toEmbedOptions
(c084b3f) - API: add API method
destroy
(c7a0d5b) - API: add API method
onChange
(0e39347) - API: allow going to specific line and column from API (a3740c9)
- API: allow running tests from API (9917095)
- API: API watch changes (9488ea1)
- API: load from API (3e18357)
- API: load on scroll (e81ee4a)
- API: show panes from API (a53da9f)
- app: add
detectLanguage
utility function (251bcc7) - app: add pub/sub (567c514)
- app: allow adding local files as assets (e12d249)
- app: allow partial matching in search (84e3c35)
- app: emit change events (8c025a9)
- app: sandbox app iframe (cbf2aad)
- app: type-safe query params (ccf533e)
- assets: deploy assets to GitHub Pages (13c833a)
- backup: backup/restore UI (WIP) (10c8f39)
- backup: implement backup (1804557)
- backup: implement restore (d71804c)
- broadcast: broadcast playground state (4f394f4)
- broadcast: broadcast result page and code to API (78b1f7e)
- broadcast: inform the server that broadcast has stopped (f0bfba4)
- broadcast: provide a default broadcast service (7023091)
- broadcast: show broadcast status button in toolbar (5693244)
- broadcast: use channelToken (9ded492)
- compiled: show python (brython) compiled code (61fd514)
- compilers: add support for UnoCSS (53e66d6)
- compilers: add Clang compiler for C/C++ (040bb2e)
- compilers: add elkjs in diagram (56c8630)
- compilers: add mjml language support (70562b2)
- compilers: add R language support (0747b71)
- compilers: add R language support (e3dca42)
- compilers: add support for art-template (95da5fc)
- compilers: add support for C++ (d003ea5)
- compilers: add support for Clio (8b4c4d9)
- compilers: add support for common lisp (f2efeb1)
- compilers: add support for cytoscape in diagram (a9b1322)
- compilers: add support for Eta (1d1624d)
- compilers: add support for Fennel language (764aecd)
- compilers: add support for flow (6edbabe)
- compilers: add support for Gnuplot (e9acf92)
- compilers: add support for graphviz (05da2fd)
- compilers: add support for imba (f375c10)
- compilers: add support for Julia (52d7ff0)
- compilers: add support for Lightning CSS (0d7bfe4)
- compilers: add support for Mustache (ae12f3d)
- compilers: add support for nomnoml (504075f)
- compilers: add support for plotly (cb408be)
- compilers: add support for Prolog using Tau Prolog (8721824)
- compilers: add support for Stylis (9865f44)
- compilers: add support for Sucrase (60b7e37)
- compilers: add support for svgbob (6854d3b)
- compilers: add support for Tcl (7786b8c)
- compilers: add support for Token CSS (00c8930)
- compilers: add support for vega and vega-lite (fa0570f)
- compilers: add support for wavedrom (3a0f3e8)
- compilers: add Teal language support (82c6644)
- compilers: allow compilers to return additional data
compileInfo
(2ff9353) - compilers: commonjs support (87757d5)
- compilers: diagrams runOrContinue (4635ece)
- compilers: import css (including css modules) from script (db3160f)
- compilers: reload the compiler sandbox page on repeated failure to load compiler (3791fb9)
- compilers: retry loading compiler on error (c0c3dfd)
- compilers: rich text editor for markup (using quill.js) (e415f90)
- compilers: upgrade mdx to v2.0 (438a0da)
- compilers: use dart-sass instead of sass.js (313ebb3)
- config: add zoom to config (1cd7973)
- config: allow setting enabled tools and status from query param
tools
(4796ba0) - config: collect tools config under
config.tools
(c02ef9c) - config: improve merging config from external content (b5e4bf6)
- config: improve tools config (status) (3a6f9e3)
- console: clear console on result update (c7b47c0)
- CSS Presets: move CSS preset UI from app menu to external resources screen (a052c8e)
- CSS Presets: remove
github-markdown-css
andasciidoctor.css
from css presets (88b4391) - deploy: save project deploy repo (b43126c)
- editor-settings: add editor settings UI (9187ad2)
- editor-settings: add more fonts (ed5bd18)
- editor-settings: allow changing editor fonts (d728238)
- editor: add
closeBrackets
to editor settings (14008c5) - editor: add codejar key bindings (f90bae8)
- editor: add codemirror-lang-vue (cbc7e2d)
- editor: add monaco support for wat (97222be)
- editor: add vim and emacs modes to monaco (75ad047)
- editor: allow configuring editor settings (df03806)
- editor: allow users to add custom types (b466a73)
- editor: create fake editor for use when
mode=result
(478f280) - editor: enable custom editor commands (e.g. keyboard shortcuts) (1ff4b9e)
- editor: enable emmet for more languages (9b2d6cc)
- editor: goToLine in code editors (f9b5ac7)
- editor: italic comments (d40ecdd)
- editor: upgrade codemirror to v6 (38bf731)
- editor: use codejar as editor instead of prism (acd72a6)
- editor: use configurable codemirror basic setup (078b7df)
- editor: use official emmet plugin for codemirror (b765023)
- embed: add embed preview (fdf9aa0)
- embed: add react and vue SDKs to embed screen (2f6eef4)
- embed: add UI for creating embeds (1c6cbe8)
- embed: allow full screen for embeds (5e3e54e)
- embed: allow selecting active editor in embed UI (b1e26a6)
- embed: change embed option
click-to-load
toloading
(032e1b1) - embed: click to load embeds (3c76ff8)
- embed: create a lite build (50874c0)
- embed: do not allow access to storage and auth from embeds (2961f70)
- embed: embed as html code in DOM (ef70847)
- embed: rename view mode
editor,result
tosplit
(4ffeeed) - embed: set as embed if loaded in iframe (b60e92a)
- embed: show embed preview (d3fc4f1)
- embed: use codejar in lite mode (63d72c4)
- export-share: allow codepen export for unsupported languages (957f698)
- export-share: improve QR code UI (68dd329)
- export-share: share using QR code (34d1eb7)
- formatter: add formatter for common lisp and scheme (a4786c9)
- formatter: add lua formatter (84f273f)
- formatter: add sql formatter (2c9b0f5)
- functions: add server-side analytics (3ee4fdc)
- import: allow importing code from local files (5fb211a)
- import: allow importing code in zip file from UI (14d8a5c)
- import: allow importing code in zip file from url (d528022)
- import: import from CodePen (9cc82bf)
- import: import test file (f166b29)
- import: support esm imports for deno modules (c062560)
- import: support esm imports from github/gitlab/bitbucket/rawgit (0443f14)
- import: use language paramSelectors for DOM import (aa43694)
- import: use querystring
x
instead of hash for imports (5257994) - npm-package: add
view
toEmbedOptions
(cc707ed) - npm-package: add library for embeds (c94ccb2)
- npm-package: allow using lite mode in library
EmbedOptions
(6cb97f9) - npm-package: rename EmbedOptions['importUrl'] to EmbedOptions['import'] (16507ec)
- resources: allow adding google fonts in external resources (18c03e1)
- resources: search packages (20a6af6)
- result: add custom settings to enable/disable mapping imports and commonjs (4748dc9)
- result: allow adding head content and html classes to result page (7ce6ddd)
- result: allow showing spacing in result page (d3692ed)
- result: allow users to add custom imports (0fd471c)
- result: auto-update result popup (ea6fbf1)
- result: import from './script' (d538c7c)
- result: import from './script' (5e1f250)
- result: improve result display mode (7bb0d59)
- result: show result in new window (95f26d0)
- result: support bare modules in dynamic imports (91ba4f6)
- result: use type="module" in module scripts (1604082)
- SDK: add react SDK (a8f5822)
- SDK: add react SDK (ba275dd)
- SDK: add types for vue SDK (27a0592)
- SDK: add types for vue SDK (ae79a55)
- SDK: add vue SDK (eb55c90)
- SDK: add vue SDK (7bcabb4)
- SDK: allow accessing the Playground API from react SDK (4495476)
- SDK: allow accessing the Playground API from react SDK (a96ad03)
- SDK: allow accessing the Playground API from vue SDK (8db0abc)
- SDK: allow accessing the Playground API from vue SDK (7e4f43f)
- SDK: apply default styles in JS/TS SDK (75c7e90)
- services: add cors service for non-allowed origins (b744588)
- services: add jsdelivr package info service (9438e04)
- services: allow setting
defaultCDN
inconfig.customSettings
(5da02aa) - services: support importing modules from github, gitlab and bitbucket via githack (778b3ec)
- services: use api non-expiring share service (f2b3593)
- snippets: add code snippets (120dabe)
- storage: allow subscription to changes in storage (e824571)
- storage: load last used language (e9e10eb)
- storage: preserve user data across logout/login (31856b1)
- storage: Request persistent storage (88a6b19)
- storage: user-specific stores (e1c936e)
- Stories: add storybook (524d898)
- Stories: add storybook controls for config and embed options (86799ec)
- sync: communicate with SimpleStorage from web worker (e6d9192)
- sync: implement autosync (2b811d3)
- sync: show sync status (bbaf924)
- templates: add javascript starter template (7b39c96)
- templates: add jest and jest/react starter templates (43312b2)
- templates: add Julia starter template (e3aeeae)
- templates: add ocaml starter template (f34d800)
- templates: add reason starter template (426b06f)
- templates: load default template (4fd2925)
- templates: UI for selecting default template (748ce28)
- templates: upgrade react starter template to v18 (2bbc595)
- templates: use signals in preact template (4c92f7f)
- tests: add user tests to toolspane (e54f2d8)
- tests: add user tests to toolspane (326bca1)
- tests: allow using chai assertions in tests (dc1a630)
- tests: compile user tests and map imports (6ff5df6)
- tests: compile user tests and map imports (c7e0013)
- tests: watch tests (bb1823a)
- tests: watch tests (93e13fb)
- tools: add zoom button (59e3491)
- tools: enable/disable tools in runtime (a5518e4)
- UI: add close button for modals (2ff3303)
- UI: add editor toolbar with buttons for common tasks (6fed698)
- UI: add External Resources button to editor tools bar (2ca095d)
- UI: allow setting default view (via querystring
view
) toeditor
orresult
(c54cf90) - UI: allow setting delay from app menu (bf8e7c8)
- UI: change 404 image (bf89f44)
- UI: close modal on pressing
Esc
keyboard shortcut (3a932ea) - UI: decrease tools pane buttons padding to allow more space (16bc167)
- UI: highlight selected language menu item (83f73bb)
- UI: improve copy button UI (97a8ea0)
- UI: improve menus layout (0117141)
- UI: notify user when downloading a large compiler (46f768c)
- UI: show backup/restore in progress message (d13c4d3)
- UI: show URL length in share screen (35bd0d5)
- UI: use thin scrollbar (6fb2d48)
- web: add
OpenCode
component (57ac7fc) - web: add 404 page (4cbf3ad)
- web: add code sample to homepage (03d3963)
- web: add docs website (9cb490a)
- web: add Examples section (a1f9422)
- web: add link to starter templates on homepage (4f7618c)
- web: build website home page (f07a13a)
- web: format code samples (168dacc)
- web: show code for LiveCodes embed (0dd9205)
- welcome: add recent starter templates to welcome screen (97cf8b8)
- welcome: allow project recover from welcome screen (15b6aff)
- welcome: hide recover section after save or cancel (a2c3bcc)
- welcome: improve welcome screen UI (391438c)
- welcome: show recent projects in welcome screen (52ee33a)
- welcome: show welcome screen (1b34de9)
Performance Improvements
- app: lazy load deploy UI (6841e1e)
- app: lazy load import UI (02c1f23)
- app: lazy load open (saved projects) screen (cf6dc87)
- app: lazy load share UI (e18559a)
- app: lazy-load export (404e534)
- compilers: improve tree-shaking (d5e173b)
- compilers: lazy load assemblyscript (77f61a3)
- compilers: lazy load astro compiler (fb37aee)
- compilers: lazy load clang (03cda20)
- compilers: lazy load clio compiler (3638a36)
- compilers: lazy load commonlisp (b9a24ac)
- compilers: lazy load cpp (a0e0852)
- compilers: lazy load haml (fdb7d0c)
- compilers: lazy load handlebars (e36dea5)
- compilers: lazy load julia (31e5ba9)
- compilers: lazy load liquid (8411b6f)
- compilers: lazy load malina (12c4601)
- compilers: lazy load mdx (48db0b0)
- compilers: lazy load mdx (505218f)
- compilers: lazy load mustache (8b93bd3)
- compilers: lazy load nunjucks (88351a0)
- compilers: lazy load perl (bc07048)
- compilers: lazy load processors (09bcaaa)
- compilers: lazy load prolog (01340f3)
- compilers: lazy load pug (f01941c)
- compilers: lazy load pyodide (3853603)
- compilers: lazy load rescript (908eafc)
- compilers: lazy load riot (febae85)
- compilers: lazy load scss (93fbd01)
- compilers: lazy load solid (a7a0764)
- compilers: lazy load sql (ab3b613)
- compilers: lazy load svelte (73012d7)
- compilers: lazy load tcl (6414732)
- compilers: lazy load twig (44dbf3b)
- compilers: lazy load vue (61c453a)
- compilers: lazy load wat (3f88792)
- compilers: rename
graph
todiagram
and lazy load it (85a27f9) - compilers: run Fennel compiler in web worker (f8933ef)
- editor: asynchronously highlight code in codejar (8b3343f)
- editor: lazy-load codemirror languages and extensions (6636b08)
- editor: lazy-load custom monaco languages (76369d3)
- editor: lazy-load prism languages (b95c55b)
- editor: remove language specs from editor bundles (5f486a5)
- editor: use CodeJar/Prism by default when readonly (2736a93)
- embed: preload script (24da929)
- functions: cache versioned files (b349cc5)
- sync: compress sync files (dc59a91)
- sync: move sync to web worker (cad2123)
- templates: load diagrams template markup from contentUrl (827c06d)