mirror of
https://github.com/lights0123/n-link.git
synced 2026-08-07 18:23:28 +00:00
Router to vue-router 4 with hash history (custom protocol has no server for path-based deep links). createApp replaces new Vue. The device store is registered on globalProperties so n-link-core templates keep resolving $devices, and also provided via DEVICES_KEY for <script setup> injection. Removes Plan A's temporary harness and scaffold assets. Also renames desktop/postcss.config.js and tailwind.config.js to .cjs: with "type": "module" in desktop/package.json, Node treated their `module.exports`/`require` as ES module syntax and errored. This was latent since the Vue 3 foundation task because nothing previously imported n-link-core/assets/tailwind.css for real; this task's App.vue is the first to trigger postcss processing during the build. |
||
|---|---|---|
| .. | ||
| .cargo | ||
| src | ||
| src-tauri | ||
| .gitignore | ||
| app-icon.png | ||
| app-icon.svg | ||
| index.html | ||
| LICENSE | ||
| package.json | ||
| postcss.config.cjs | ||
| README.md | ||
| tailwind.config.cjs | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
N-Link
Free, cross-platform, CX-II compatible computer linking program for the TI-Nspire.
This package is a Tauri 2 + Vue 3 + Vite application. It was ported from
Tauri 1.0.0-beta.8 / Vue CLI, which linked webkit2gtk-4.0 and could not build
or run on current distributions (Ubuntu 26.04 ships only webkit2gtk-4.1).
Currently Linux-only: bundle targets are deb and appimage.
Prerequisites
- Node.js 22+ (npm ships with it — this project uses npm workspaces, not yarn)
- Rust 1.97+
- System libraries (Ubuntu/Debian):
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libjavascriptcoregtk-4.1-dev \
libsoup-3.0-dev \
librsvg2-dev \
libxdo-dev \
libayatana-appindicator3-dev \
libusb-1.0-0-dev \
build-essential curl wget file
Verify they resolve before building:
for p in webkit2gtk-4.1 javascriptcoregtk-4.1 libsoup-3.0 gtk+-3.0 libusb-1.0; do
printf "%-24s " "$p"; pkg-config --modversion "$p" || echo MISSING
done
Setup
Run from the repository root (this is a workspace member):
npm install --workspace desktop --legacy-peer-deps
--legacy-peer-deps is currently required: the sibling n-link-core package is
still on Vue 2 and its peer ranges conflict. It can be dropped once n-link-core
is ported to Vue 3.
Development
cd desktop
npm run tauri dev
Production build
cd desktop
npm run tauri build
Produces src-tauri/target/release/bundle/deb/*.deb and
.../appimage/*.AppImage.
Headless CLI
The same binary works without a GUI:
./src-tauri/target/release/n-link --help
./src-tauri/target/release/n-link ls /
Notes and gotchas
cargocommands needdist/to exist. Tauri'sgenerate_context!macro validates thefrontendDistpath at compile time, so a barecargo check/cargo buildinsrc-tauri/fails on a fresh clone until the frontend has been built once:npm run build --workspace desktop.npm run tauri builddoes this for you.- Do not run the binary from a snap-confined shell (for example, the
integrated terminal of VS Code installed as a snap). Snap injects an
LD_LIBRARY_PATHwhoselibpthreadshadows the system one, producingundefined symbol: __libc_pthread_init. Use a normal terminal. - AppImage needs FUSE. Without it, run the AppImage with
--appimage-extractand launchsquashfs-root/AppRuninstead. vendor/libnspire-sysat the repo root is a locally patched crate wired in via[patch.crates-io]. It raises the CX II NNSE handshake retry limit (10 → 30). The build will not reproduce upstream behaviour without it.- Known upstream limitation: libnspire's CX II support has been frozen since
2020. Against current CX II firmware, data transfers may return
Busyor hang. This is independent of the Tauri version and is not a defect in this port.