Tom Butcher bb9b472559
All checks were successful
farmcontrol/farmcontrol-server/pipeline/head This commit looks good
Enhance printing functionality in DocumentPrinterClient and interfaces
- Introduced job quantity handling in `DocumentPrinterClient` to manage multiple copies of print jobs.
- Added `resolvePrintQuantity` method to ensure valid print quantities.
- Updated `CupsInterface` and `ReceiptInterface` to accept a quantity parameter in the `print` method, allowing for multiple copies to be printed in a single call.
- Improved logging to reflect the number of copies being printed for better user feedback.
2026-08-22 20:02:53 +01:00
2025-12-28 21:46:58 +00:00

Farm Control Server

Build Status

A Bun application that bridges communication between Farm Control cloud services, local websocket clients, and connected printers.

Features

  • Connects to the Farm Control websocket API
  • Provides a local HTTP server for CLI and integrations
  • Desktop UI built with React, Ant Design, and Electrobun
  • Headless Linux service packaging for servers and Raspberry Pi hosts
  • Relays printer and document printer state to the desktop UI

Requirements

  • Bun 1.1 or newer

Installation

  1. Clone this repository
  2. Install dependencies:
    bun install
    
  3. Edit config.json for your environment
  4. Start the server:
    bun run dev
    

Development

  • Headless server: bun run dev
  • Desktop app with hot reload: bun run dev:app
  • Renderer only: bun run dev:renderer

Building

Build configuration lives in electrobun.config.ts and follows the Electrobun build configuration model:

  • preBuild — validates sources, writes build metadata, and runs the Vite renderer build
  • postPackage — normalizes release artifacts (DMG/PKG on macOS, NSIS installer on Windows)

Commands:

  • Desktop app (current platform): bun run build:app
  • macOS universal (arm64 + x64): bun run build:app:mac
  • macOS single arch: ELECTROBUN_TARGET_ARCH=arm64 bun run build:app:mac
  • macOS arm64 on Intel: cross-builds via patched Electrobun CLI (ELECTROBUN_TARGET_ARCH=arm64)

Universal macOS builds use split CI agents (macos for x64, macos-arm64 for arm64). Locally on Intel, arm64 builds work via ELECTROBUN_TARGET_ARCH=arm64. On Apple Silicon, x64 uses Rosetta (arch -x86_64).

  • Linux headless packages: bun run build:linux
  • Clean build outputs: bun run clean

Desktop artifacts are written to app_dist/. Linux headless builds produce .deb and .rpm packages in the same folder.

Configuration

config.json contains development and production sections. Each section supports:

  • logLevel
  • url (websocket server)
  • apiUrl
  • host.id and host.authCode
  • dataDir

License

MIT

Description
An app for Farmcontrol that bridges communication between Moonraker-controlled 3D printers and websockets.
Readme 5.1 MiB
Languages
JavaScript 95.1%
PowerShell 1.8%
NSIS 1%
CSS 0.8%
TypeScript 0.6%
Other 0.7%