Binding preload plan
Goals
- Move all engine bindings to
package.preloadand require them explicitly from Lua/Fennel. - Keep module names direct (no root namespace), and use wrapper suffixes only when needed.
- Use module factory functions instead of
.newconstructors while keeping usertypes for methods.
Plan
Convert C++ bindings to
package.preloadmodules.- Status: done for
appdirs,audio,callbacks,colors,fs,gl,glm,http,json,jobs,keyring,notify,ray-box,shaders,textures,terminal,input-state,tray,tree-sitter,vector-buffer,webbrowser,bt, andforce-layout.
- Status: done for
Update Fennel/Lua to
requirebindings explicitly.- Status: done; keep new modules aligned by adding
(local x (require :x))at the top. - Coverage:
appdirs: doneaudio: donebt: donecolors: donefs: donegl: doneglm: donehttp: doneinput-state: donejson: donekeyring: donenotify: doneray-box: doneshaders: doneterminal: donetextures: donetray: donetree-sitter: donevector-buffer: donewebbrowser: donejobs: donecallbacks: doneforce-layout: done
- Status: done; keep new modules aligned by adding
Keep wrapper naming consistent with roles.
- Status: done (
terminal-widget,input-state-router,tray-manager,notify-manager).
- Status: done (
Replace
.newconstructors with factories.- Status: done for
terminal.Terminal(...),VectorBuffer(...),ForceLayout(...),bt.*(...).
- Status: done for
Update docs/tests to match module names and factory usage.
- Status: done; update docs when new bindings or factories change.
