mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-06 14:11:35 +02:00
Reporter @Andlar94 ran the external-camera flow on an A1 dispatched via the print queue and got no MP4 output even though the log said "Stitching layer timelapse for printer 1" after each print. Support bundle confirmed the external camera was working (Obico was polling the snapshot URL fine for plate detection). Root cause: start_session() only ran in the two new-archive paths in on_print_start (fallback_archive at main.py:2510 and regular new-archive at 2600). The expected-archive branch at main.py:1981-2052 — where every reprint and every queue/VP-dispatched print lands — updated the existing archive row to status=printing but never started a timelapse session. So _background_layer_timelapse ran at print complete, called tl_complete(), found nothing in _active_sessions, returned None silently, and the wrapper at main.py:3917 produced no log message for the no-session case. Every print through the queue silently lost its timelapse — likely the reason this hasn't been caught before (direct slice-and-send-to-printer prints take the new-archive path and work fine). Fix: mirror the same start_session() call in the expected-archive branch, guarded by the same external_camera_enabled + external_camera_url check the other two paths use. Also reworded the snapshot URL help text across all 8 locales to make clear that timelapse and plate detection each require their own per-printer toggle — the URL is just the image source they pull from when active. The previous wording read as if filling in the URL was sufficient.
React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel (or oxc when used in rolldown-vite) for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the ESLint configuration
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])