Skip to content

Latest commit

 

History

History
114 lines (114 loc) · 5.77 KB

onwards.md

File metadata and controls

114 lines (114 loc) · 5.77 KB

🏔 Onwards

Notes about what currently breaks 💥 and what could be better tomorrow.

  • Lists spacing is broken
  • Nested lists are not formatted correctly
  • Errors are global, but should be local
  • Printing a var
  • Switch to fast serialization using Nippy
  • Store results as CAS files, only write when needed
  • Don't thaw result if it's already in memory
  • Don't cache things that are fast to evaluate
  • Handle conditional read in cljc files
  • Add README
  • Markdown should support Nextjournal Flavored Markdown including:
  • TODO lists 😹
  • Inline Formulas $E^2=m^2+\vec{p}^2$
  • Fix analyzer error for aliases requires w/o ns (e.g. in viewers notebooks)

🕵🏻‍♀️ Viewers

  • Make viewer api open with predicates
  • Make viewer registration local on namespace
  • Make js-only viewers like plotly & vega work
  • Fix maps
  • Sort maps
  • Lazy seqs
  • Fix Rule 30 maps
  • Drop vector brackets when lazy load map element
  • Review viewer registration api
  • Simplify viewer api (drop view-as & change argument order in with-viewer/s)
  • Fix seeing map with blob-id in Rule 30 notebook
  • Turn with-viewers into a macro and make it take same unquoted form as set-viewers!
  • Consistently use Fn+Form to carry viewer functions
  • Make map-viewer pass down options to select map-entry renderer for children and remove viewer from Rule 30
  • Drop lazy loading attempts in plotly + vega viewers
  • Keep expanded state when lazy loading
  • Move update opts fn to viewer map
  • Restrict string length + enable lazy loading
  • Let the viewer opt into pagination
  • A browser refresh is currently needed to reset a viewer override like in notebooks/rule_30.clj, otherwise it will carry over the viewer override to other notebooks that do no specify an override
  • Evaluation error messages are poorly formatted
  • first-generation in notebooks/rule_30.clj renders incorrectly because of pagination type coercion from vector to list
  • (def r (range 100)) in notebooks/pagination.clj shows incorrect count
  • Printing of very large values

👁 More Viewers

  • Binary / Hex
  • Image

🚀 Private Beta

  • Move to non-jit compiled tailwind stylesheet, purging doesn't work nicely with custom viewers
  • Make static build work
  • Review caching api
  • Change :clerk/no-cache to :nextjournal.clerk/no-cache
  • Move public viewer api to nextjournal.clerk and use (:require [nextjournal.clerk :as clerk]) in all example notebooks

💒 Open Source Release

  • Allow to pin notebook
  • Release to maven & invite contributors
  • Fix error when describing Datomic entities
  • Limit description to make large datasets work
  • Debug & fix extra calls to inspect / rendering
  • Setup up static builds
  • Fix link style when code cell uses markdown viewer
  • Do pass over README
  • Add CHANGELOG
  • Release 0.2
  • Make github repo public

🛠 Up Next

  • Let consumers (SICMUitls) extend sci ns by putting it into an atom
  • Support setting :nextjournal.clerk/no-cache on namespaces as well
  • Datafy or Metadata viewer via :transform-fn
  • Persist viewer expansion state across reloads
  • Show eval error in overlay to persist scroll state when it disappears
  • Improve feedback when viewer errors
  • Verify viewer caching behaviour
  • Fix dark mode for string viewer
  • Release 0.6
  • Make code cells scroll horizontally scrollable and add minimum width of 80 chars
  • Extend reach of viewer api to whole notebook (including the root node)
  • Make viewer api more functional
  • Let :transform-fn act on wrapped-value and use it to also replace :fetch-fn
  • Try using :update-viewers-fn for markdown node
  • Minimize re-rendering when updating notebook
  • Throw on re-definitions
  • Throw when referencing no longer available / deleted var
  • Allow multiple defs per top-level forms
  • Restore *ns* after hashing / eval
  • Support setting :nextjournal.clerk/cache forms to control caching behaviour
  • Add clerk/image (name tbd) viewer supporting links and embedded images
  • Derefenced Clojure atoms should get value semantics in dependency graph
  • Support evaluating (quote 'code 'in 'backticks) in markdown
  • Make it more obvious that results can be expanded
  • Set expanded state depending on shape (width) of the data
  • Allow to control viewer expansion state programmatically
  • Support cherry as alternative js evaluator
  • Make doc-url work in live app using v/clerk-eval with homepage, 404 and symbol links
  • Build static build on CI
  • Hook up new table viewer
  • Status log
  • Rename :nextjournal.clerk/opts to :nextjournal.clerk/render-opts
  • Improve page load performance of large documents like book (probably by evaluating each :render-fn only once)
  • Introduce window/session concept to support opening concurrent documents
  • Introduce per-session/connection state for sync
  • Make clerk sync recomputations more granular (only recompute deps of changed atom)
  • Global config with consistent inheritance to ns, expression
  • Tap & eval viewer window
  • Add multiviewer to default viewers
  • Make stacktraces clickable
  • Mark uncacheable results in browser window including explanation
  • Add CAS storage option for static builds
  • Improve performance of analysis & presentation

📖 Book Updates

  • Explain render-opts and viewer-opts in book
  • Add sync atoms to book
  • Add tap inspector to book
  • Add customizing clerk: markdown backtick eval example to book
  • Add example for cross-document table of contents

💡 Ideas

  • Hook up distributed caching using CAS + cloud bucket