Path dependencies: name = { path = "../dir" } (or name = "../dir"), relative to the j3.toml that declares it. If <dir> is a package (a j3.toml and a src/), use name.a.b; loads <dir>/src/a/b.j3; otherwise <dir>/a/b.j3. The file’s first line is module name.a.b;, the same rule project files follow (module <package>.a.b;), so a package’s own files work unchanged. A dep’s [package] name must equal the key and its own [dependencies] are used too. Only the modules you import (and what they import) are compiled, for your package’s target; the dep’s main, [link] and other settings are not used. Deps are compiled in, so there is nothing to ship; their assets are not located for you. Type errors point at the dep’s own file:line; manifest errors name the j3.toml line: missing folder, a cycle, a key that is j3, the package name or a module of src/, one name with two paths. Editing a dep file rebuilds what uses it.
# android/j3.toml: the phone app shares the desktop app's wire protocol
[dependencies]
jzero = { path = ".." }