tree: 3b65b8abfa892a6e935a40077387133410d93db2 [search]
  1. animation.md
  2. api-naming.md
  3. architecture.md
  4. canvas.md
  5. compatibility.md
  6. components.md
  7. dock.md
  8. elements.md
  9. embedding.md
  10. file-drop.md
  11. geometry.md
  12. gpui.md
  13. images.md
  14. js-modules.md
  15. layerfs.md
  16. linux.md
  17. macos.md
  18. native-pipeline.md
  19. performance.md
  20. pitfalls.md
  21. reactive-components.md
  22. README.md
  23. rust-classes.md
  24. rust-modules.md
  25. sandbox.md
  26. scrolling-and-lists.md
  27. signed-packages.md
  28. styles.md
  29. text-view.md
  30. text.md
  31. tooling.md
  32. tui.md
  33. web.md
  34. windows.md
third-party/nsh/docs/dev/README.md

Developer documentation

For people working on NSH itself (AGENTS.md at the root is the short version agents read first).

PageWhat
architecture.mdThreads, the data flow from JS to native views, crates
native-pipeline.mdHow apps are compiled and run: the JSX compiler, the native modules, the renderer, types, hot reload
js-modules.mdThe modules (nsh, nsh/*, apps' UI sets), where each module is implemented and declared, platform props, where new things go
api-naming.mdAPI names: how TSX names follow gpui-base's, the conventions, the renames
components.mdRust components (nsh/base‘s, apps’ UI sets): writing one, the host node, bindings, children and slots, events, the JS face and declarations
reactive-components.mdRust components on the shared reactive graph (run once, fine-grained bindings, no diff)
elements.mdHost elements and nsh/base's components, touch, accessibility, the environment, why the main thread never waits for JS
text.mdText blocks, spans, inline attachments
text-view.mdTextView (nsh/base): Markdown, HTML and documents shown with the primitives, streaming, parts, extensions
dock.mdDockArea and ResizablePanelGroup (nsh/base): the layout data, render keys keeping panels across moves, drag and drop, compact presentation
styles.mdTailwind, effects, view styles, Android differences
geometry.mdUnits and geometry (nsh_core::geometry, as GPUI's): the types, the conversion boundaries, the unit_types check, the migration
scrolling-and-lists.mdScroll views, zooming, List
animation.mdAnimated values, composites, layout animation
canvas.mdCanvas
images.mdLoading, decoding, caching, animated images
sandbox.mdVM limits, hardening, capabilities
signed-packages.mdKeys, packages, verification, revocation
embedding.mdnsh package, the iOS / Android SDKs, native components
layerfs.mdOpt-in Linux development and CI trial: Git, Cargo, snapshots and receipts
tooling.md.nsh/types, the dev server, hot reload, symbolication
macos.mdThe macOS backend (AppKit): building, how each area maps to AppKit, nsh test --target macos, what differs
linux.mdThe Linux backend (GTK 4): building, how each area maps to GTK, nsh test --target linux, what differs
windows.mdThe Windows backend (Win32, Direct2D): building, how each area maps to Windows, nsh test --target windows, what differs
gpui.mdThe GPUI backend (macOS, Windows, Linux): building, the surface element and DrawCx, embedding as a GPUI view, what differs
tui.mdThe terminal backend (Ratatui): cell metrics, retained rendering, input, graphics, embedding and scripts
web.mdThe WebAssembly runtime of the website's demos: LocalEngine, the clock, the DOM protocol
compatibility.mdThe backward compatibility contract: what apps depend on, the rules, nsh-compat and tests/compat/
performance.mdBaselines
pitfalls.mdVerified constraints and pitfalls, by area

How a module works inside is documented in the module itself (//! docs, Javadoc); these pages describe behavior and decisions and point there.