|
8 | 8 | > When a feature is documented, or if it does not need documentation, you can remove it from the list. |
9 | 9 | --- |
10 | 10 |
|
11 | | -## 2. Package Management (Built-in Pkg) |
12 | | -- **Guided Project.toml editor** — A UI for editing the notebook's `Project.toml` with compat entries. (#3218) |
13 | | -- **Auto-fix corrupted manifests** — When a notebook's manifest is broken, Pluto tries strategies to automatically fix it. (#2294, #2298) |
14 | | -- **GracefulPkg.jl integration** — Uses GracefulPkg.jl for safer, more user-friendly Pkg error handling. (#3185) |
15 | | -- **Show Pkg logs in Process Status tab** — Pkg operation logs are visible in the dedicated Process Status panel. (#2498) |
16 | | - |
17 | | ---- |
18 | | - |
19 | | -## 4. Cell Features |
20 | | -- **Add/delete cells** — Cells can be added and deleted via the UI or keyboard shortcuts. (#37) |
21 | | -- **Fold/hide cells** — Cell code can be folded (hidden) while keeping the output visible. (#484) |
22 | | -- **Run button per cell** — Each cell has a run button, and shows its last execution time. (#37) |
23 | | -- **Copy output button** — Context menu item to copy cell output to clipboard. (#2160) |
24 | | -- **Cell context menu** — Right-click a cell to get a context menu with actions. (#2759) |
25 | | ---- |
26 | | - |
27 | | -## 5. @bind and Interactivity |
28 | | -- **`@bind` with date/time inputs** — Works with `<input type=date>`, `<input type=range>`, etc. (#453) |
29 | | -- **Bond-defining-bond support** — A bond's value can depend on another bond (for PlutoSliderServer). (#3158) |
30 | | ---- |
31 | | - |
32 | | -## 6. Output Display & Rendering |
33 | | - |
34 | | -- **Rich output display** — Cells show the richest available MIME type (HTML, SVG, PNG, text). (#37) |
35 | | -- **Tree viewer** — Structs, dicts, arrays, and other objects are shown in an interactive expandable tree view. (#635, #804, #1094) |
36 | | -- **Plotly support** — Plotly.js plots rendered correctly in Pluto. (#213) |
37 | | -- **LaTeXString support** — `LaTeXString` objects are rendered with MathJax. (#381, #1164) |
38 | | -- **MathJax 3 for math rendering** — MathJax 3 renders LaTeX math in Markdown and outputs. (#1947, #2165, #2803) |
39 | | ---- |
40 | | - |
41 | | - |
42 | 11 | ## 8. HTML Export & Static Notebooks |
43 | | - |
44 | 12 | - **"View code" button in static export** — A button in the static HTML allows reading hidden/folded code. (#3313) |
45 | 13 |
|
46 | 14 | --- |
47 | 15 |
|
48 | 16 | ## 10. Main Menu / Welcome Screen |
49 | 17 | - **Recents list** — Recently opened notebooks are shown on the main menu. (#37) |
50 | 18 | - **Recents: shortest unambiguous path** — Recent notebooks are shown with the shortest unambiguous path. (#693) |
51 | | -- **Paste/drop `.jl` files to open** — You can paste or drop a `.jl` file onto the welcome screen to open it. (#1015) |
52 | 19 | - **Open multiple notebooks at start** — Multiple notebooks can be passed to `Pluto.run()` to open on startup. (#1324) |
53 | 20 | --- |
54 | 21 |
|
55 | 22 | ## 11. Notebook Files & Format |
56 | 23 | - **Auto-save on run** — The notebook file is saved every time a cell is run. (#37) |
57 | 24 | - **Option to disable writing to file** — `disable_writing_notebook_file` option prevents Pluto from saving changes to disk. (#1047, #1717) |
58 | | -- **Cell order is explicit** — The notebook file includes an explicit `Cell order:` section. (#37) |
59 | 25 | - **Notebook metadata** — A `metadata` field in the notebook structure stores notebook-wide settings. (#2016) |
60 | 26 | - **Pluto Recording format** — A special file format for recording notebook sessions as interactive replays. (#1623) |
61 | 27 |
|
62 | 28 | --- |
63 | 29 |
|
64 | | -## 12. JavaScript / HTML API for Notebooks |
65 | | - |
66 | | -- **JavaScript in cells** — Cells can output raw HTML with `<script>` tags that execute JavaScript. (#582) |
67 | | -- **`document.currentScript`** — Scripts in cells have access to `document.currentScript` for self-reference. (#1765) |
68 | | -- **`this` persistence** — JavaScript `this` inside `<script>` tags persists across re-runs, enabling stateful JS. (#582) |
69 | | -- **ObservableHQ stdlib** — The Observable HQ standard library (`DOM`, `html`, `svg`, `FileAttachment`, etc.) is available in cell JavaScript. (#582) |
70 | | -- **Lodash available in userland JS** — The Lodash library (`_`) is available in user JavaScript. (#3253) |
71 | | -- **`@htl` for HTML interpolation** — HypertextLiteral.jl's `@htl` macro for safe HTML interpolation. (#582) |
72 | | -- **Pluto object viewer as embeddable element** — `<pluto-display>` element embeds Pluto's output viewer inside custom HTML. (#1126) |
73 | | -- **`invalidation` promise** — A promise that resolves when a cell is about to re-run, for cleanup. (#582) |
74 | | -- **`pluto_get_message_log()`** — Debug function in JS console to get the 100 most recent server messages. (#2926) |
75 | | -- **JS API for `getInputValue` / `setInputValue`** — Functions to get/set bond input values programmatically. (#1755) |
76 | | -- **JS API for cell metadata** — Experimental API to get/set cell metadata from JavaScript. (#2612) |
77 | | -- **JS API for notebook metadata** — JavaScript API to read/write notebook-level metadata. (#2612) |
78 | | -- **`highlight.js` exposed on window** — `hljs` is attached to `window`, allowing custom language registration. (#2244) |
79 | | -- **Session event listeners (frontend extension API)** — External environments can listen to Pluto lifecycle events from the frontend. (#1742) |
80 | | -- **Server event listeners API** — Backend event listener interface for integration by hosting environments. (#1782, #1871) |
81 | | -- **`pluto_server_url` page parameter** — A URL parameter to explicitly tell the frontend where the WebSocket server is. (#2570) |
82 | | -- **`<pluto-editor>` web component** — The Pluto editor is a web component (`<pluto-editor>`) that can be embedded in a page. (#1976) |
83 | | -- **`pluto-editor` embeddable inside Pluto** — The `<pluto-editor>` component can be embedded inside another Pluto notebook. (#3169) |
84 | | - |
85 | | ---- |
86 | | - |
87 | 30 | ## 13. Collaboration & Sharing |
88 | 31 | - **Secret token for access control** — Pluto generates a secret token to prevent unauthorized access on multi-user computers. (#529) |
89 | | -- **Secret printed to console if page accessed without it** — If you access Pluto without the secret, the server prints it to the console. (#2322) |
90 | 32 | - **Token in Binder URL** — On Binder, the token is embedded in the URL so it can be shared. (#429) |
91 | | -- **`open_url` / data URLs** — Pluto can open notebooks from URLs or data URLs directly. (#1670) |
92 | 33 | - **GitHub raw link support** — Opening a GitHub raw link opens the notebook directly. (#493) |
93 | | -- **PlutoSliderServer support** — Pluto supports PlutoSliderServer.jl for hosting interactive static notebooks. (#988, #1703, #2014) |
94 | | -- **Slider server POST request** — Notebooks can be configured to force POST requests to the slider server. (#2362) |
95 | | -- **`slider_server_url` in export JSON** — The slider server URL can be specified in the `pluto_export.json` file. (#2667) |
96 | 34 | --- |
97 | 35 |
|
98 | 36 | ## 16. Accessibility & Keyboard Navigation |
|
101 | 39 | - **Tab-friendly Pkg popup** — The Pkg popup supports keyboard navigation. (#2752) |
102 | 40 | - **Tab-friendly cell context menu** — The cell context menu supports keyboard navigation. (#2759) |
103 | 41 | - **Tab trap help message** — When the Tab key is trapped in a code cell, a help message explains how to escape. (#2746) |
104 | | -- **Tab indexing improvements** — The "add cell" button appears only once in the tab order. (#2744) |
105 | | -- **Screen reader support** — When cell output changes, a screen reader announcement is made. (#2757) |
106 | | -- **Progress bar hidden from screen readers** — The top progress bar is hidden from screen reader users. (#2758) |
107 | | -- **ARIA improvements** — Various ARIA attributes added for better accessibility. (#2766) |
108 | | -- **Touch display button visibility** — All buttons are always visible on touch/coarse-pointer devices. (#378, #2745) |
109 | | -- **Touch: pointer vs any-pointer CSS** — Uses `pointer:coarse` instead of `any-pointer:coarse` for better detection. (#2631) |
110 | | - |
111 | 42 | --- |
112 | 43 |
|
113 | 44 | ## 18. Dark Mode & Themes |
114 | 45 | - **Dark mode** — Pluto has a built-in dark mode that can be toggled. (#1661) |
115 | | - |
116 | 46 | --- |
117 | 47 |
|
118 | | -## 19. Fonts & Typography |
119 | | - |
120 | | -- **JuliaMono font** — JuliaMono is the default monospace font, with full Julia unicode character support. (#364, #1286, #3223, #3450) |
121 | | - |
122 | 48 | *This list was compiled from 1,013 merged pull requests on the JuliaPluto/Pluto.jl repository (PRs #20–#3484).* |
0 commit comments