4631 Commits
Author SHA1 Message Date
MartinNYHC ad6cc7cd03 Merge pull request #303 from bnap00/fix/timezone-env-variable
Fix: Use TZ from .env instead of hardcoded value
2026-02-09 08:15:42 +01:00
MartinNYHC dc306af888 Merge branch '0.1.9b' into fix/timezone-env-variable 2026-02-09 08:07:27 +01:00
Thomas Rambach 06c14adb17 Merge pull request #16 from cadtoolbox/copilot/update-global-email-settings
Update Global Email settings to match notification email provider fields
2026-02-08 18:39:22 -05:00
Thomas Rambach d87aca45b8 Update package-lock.json 2026-02-08 18:37:06 -05:00
copilot-swe-agent[bot]andcadtoolbox efe574591e Add validation for SMTP username when authentication is enabled
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 23:10:07 +00:00
copilot-swe-agent[bot]andcadtoolbox 14c9e9120e Add i18n translations for Global Email settings in en, de, ja locales
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 23:08:33 +00:00
copilot-swe-agent[bot]andcadtoolbox 3231a487c9 Update email settings to match notification provider fields and rename tab to Global Email
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 23:03:28 +00:00
copilot-swe-agent[bot] bb9c35ef03 Initial plan 2026-02-08 22:54:40 +00:00
Gernot Vormayr 47ed16ae60 Limit maximum TLS version in ftp_server to 1.2
This might fix (#58) getting uploads from the linux version of the
BambuStudio network plugin. Issue observer is connection resets with
larger uploads (somewhere >80k).
2026-02-08 23:52:30 +01:00
Bharat Parsiya 8b24193709 Fix: Use TZ from .env instead of hardcoded value
The timezone collected during docker-install.sh was being saved
to .env but docker-compose.yml had a hardcoded TZ=Europe/Berlin.

Changed to TZ=${TZ:-Europe/Berlin} to use .env value with fallback.
2026-02-09 00:43:52 +05:30
maziggy f094c16012 Updated install scripts and related docs 2026-02-08 18:24:51 +01:00
maziggy a7932368eb Updated install scripts and related docs 2026-02-08 18:24:28 +01:00
maziggy 75c049b05c Updated install scripts and related docs 2026-02-08 18:21:19 +01:00
maziggy af46fe6fa6 Updated install scripts and related docs 2026-02-08 18:20:52 +01:00
Thomas Rambach a45edc3fae Merge pull request #12 from cadtoolbox/copilot/add-advanced-authentication-toggle
Add advanced authentication with email-based login and SMTP notifications
2026-02-08 11:18:28 -05:00
Thomas Rambach 6f8b1db495 Merge pull request #13 from cadtoolbox/copilot/fix-type-errors-email-settings
Fix TypeScript errors, import shadowing, and Docker build
2026-02-08 11:15:07 -05:00
copilot-swe-agent[bot]andcadtoolbox 5425f5cc64 Fix Docker build by reverting package-lock.json changes
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 16:02:56 +00:00
copilot-swe-agent[bot]andcadtoolbox 7735e8ab09 Fix import shadowing in email_service.py
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 15:57:49 +00:00
copilot-swe-agent[bot]andcadtoolbox 84b5585e94 Plan: Fix import shadowing in email_service.py
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 15:57:19 +00:00
copilot-swe-agent[bot]andcadtoolbox b2ef293e2d Fix TypeScript compilation errors in EmailSettings and LoginPage
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 15:43:26 +00:00
copilot-swe-agent[bot] f78514e14c Initial plan 2026-02-08 15:41:32 +00:00
copilot-swe-agent[bot]andcadtoolbox 1a6a53d92e Address code review feedback - fix hooks and random usage
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 15:34:40 +00:00
copilot-swe-agent[bot]andcadtoolbox 5462249345 Add Email settings tab to SettingsPage with SMTP configuration
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 15:31:09 +00:00
copilot-swe-agent[bot]andcadtoolbox 726401810c Add email field and reset password to UsersPage
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 15:28:19 +00:00
copilot-swe-agent[bot]andcadtoolbox 6bdd5730de Add frontend support for forgot password and email login
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 15:25:48 +00:00
copilot-swe-agent[bot]andcadtoolbox 1058f3fd5c Add backend support for advanced authentication
Co-authored-by: cadtoolbox <12723486+cadtoolbox@users.noreply.github.com>
2026-02-08 15:23:38 +00:00
copilot-swe-agent[bot] 453565d9f8 Initial plan 2026-02-08 15:18:11 +00:00
Thomas Rambach 9e6f46a2ad Revert commit 1d0fe70499c625da4928bd89f2af1fcb07e302ca 2026-02-08 10:04:40 -05:00
maziggy 3f7d2bf619 Fix virtual printer FTP transfer failure with connection reset (#58)
Large 3MF uploads intermittently failed with [Errno 104] Connection
reset by peer while the 16-byte verify_job always succeeded. The
_handle_data_connection callback returned immediately, letting the
asyncio task complete while cmd_STOR was still reading from the data
connection. The passive port listener also stayed open during transfers.

- Keep _handle_data_connection alive via _transfer_done event so the
  asyncio task holds strong references throughout the transfer
- Close passive port listener after accepting the data connection
- Reject duplicate data connections with a warning log
- Add drain timeout (5s) to MQTT status pushes to prevent blocking
  when the slicer is busy with FTP upload
- Improve error logging with bytes received and exception type
2026-02-08 14:37:50 +01:00
maziggy 2e0415dd9c Updated test_all.sh 2026-02-08 13:38:48 +01:00
maziggy c950c19168 Updated README 2026-02-08 12:54:06 +01:00
maziggy 14ae442af7 Updated README 2026-02-08 12:53:46 +01:00
maziggy d73da5e0ef Auto-detect subnet for printer discovery
The Add Printer dialog previously required users to manually enter their
network subnet for scanning (defaulting to 192.168.1.0/24). Now the
backend detects available network interfaces and returns their subnets
via the /discovery/info endpoint. The frontend auto-selects the first
detected subnet and shows a dropdown when multiple subnets are available,
falling back to a text input if none are detected.
2026-02-08 12:17:20 +01:00
maziggy 1e15595f45 Updated update_website_wiki.sh 2026-02-08 09:51:31 +01:00
maziggy d02a9d8e36 Updated test_backend.sh
- Skip FTP tests by default
- Added option --full to include FTP tests
2026-02-08 09:36:17 +01:00
maziggy 7e5f494304 Complete Japanese locale overhaul: restructure and translate all keys
Restructured ja.ts from a divergent format (different nesting, 12
structural conflicts, 48 namespaces) to match EN/DE structure exactly
(41 namespaces, 0 conflicts). Translated all 2,083 EN keys into
Japanese — previously 1,366 keys were missing and silently falling
back to English via i18next fallbackLng.
2026-02-08 09:29:48 +01:00
maziggy 8503cbc5bf Updated CONTRIBUTING.md 2026-02-08 09:02:22 +01:00
maziggy 0d068b5ac6 Updated CONTRIBUTING.md 2026-02-08 09:01:55 +01:00
maziggy 9cbd66593e Show Spoolman fill level for AMS Lite and external spools (#293)
AMS Lite units (A1 series) have no weight sensor and always report 0%
fill level. When a spool is linked to Spoolman with weight data, use
Spoolman's remaining weight as a fallback. External spools also show
fill level from Spoolman data instead of always showing unknown.

Backend: Enrich GET /spoolman/spools/linked response with
remaining_weight and filament_weight alongside spool ID.

Frontend: Add getSpoolmanFillLevel() helper. Update regular AMS, HT
AMS, and external spool fill computations to use Spoolman fallback
when AMS reports 0%. Show "(Spoolman)" indicator in hover card when
fill data comes from Spoolman.
2026-02-08 08:47:18 +01:00
maziggy e073e494c7 Fix H2D Pro wrong nozzle routing causing extrusion motor overload (#245)
H2D Pro firmware interprets use_ams as a nozzle index when sent as
integer (1 = deputy nozzle) instead of boolean. Bambu Studio sends
use_ams: true (boolean) while using integers for calibration fields.
Bambuddy was converting all boolean fields to integers for H2D series,
routing filament to the deputy nozzle instead of main, causing
extrusion motor overload at ~75% print completion.

Keep use_ams as boolean for all printers, matching Bambu Studio format.
2026-02-08 08:18:52 +01:00
maziggy d888b8e902 Updated CHANGELOG 2026-02-08 07:59:59 +01:00
MartinNYHC 00d60d4bb8 Merge pull request #295 from bambuman/bug/spoolman-creates-dublicate-spools
bug/spoolman-creates-dublicate-spools
2026-02-08 07:55:07 +01:00
maziggy 91ff1386c4 Added two steps to the docker-test job in ci.yml 2026-02-08 07:54:01 +01:00
maziggy cf19ac8d39 Added two steps to the docker-test job in ci.yml 2026-02-08 07:53:32 +01:00
MartinNYHC 6ad02d1c59 Merge pull request #294 from bambuman/feature/home-assistant-env-vars
[Feature]: Configure home assistant via environment variables
2026-02-08 07:45:07 +01:00
bambuman c04df8ceb9 Add retry logic and connection resilience to Spoolman sync
Implements retry mechanism to handle intermittent network errors when
fetching spools cache for AMS sync operations.

Changes:
- Add retry logic to get_spools() with 3 attempts and 500ms delay
- Configure httpx client with connection pool limits to prevent stale
  connection reuse (max_keepalive_connections=5, keepalive_expiry=30s)
- Recreate client on connection errors (ReadError, RemoteProtocolError)
- Abort sync operations if cache fetch fails after all retries
- Update on_ams_change, sync_single_printer, and sync_all_printers to
  handle cache fetch failures gracefully

This addresses ReadError(ClosedResourceError()) failures that occurred
intermittently when Spoolman closed idle connections or connection
pooling reused stale connections.

Testing:
- Added 4 new unit tests for retry behavior
- All 1018 tests passing
2026-02-07 23:11:27 +02:00
bambuman deab81287f Optimize AMS Spoolman sync performance with spool caching
- Add cached_spools parameter to find_spool_by_tag, find_spools_by_location_prefix, sync_ams_tray, and clear_location_for_removed_spools
- Fetch spools once before loops in on_ams_change, sync_single_printer, and sync_all_printers endpoints
- Cache newly created spools during sync to avoid duplicate API calls
- Add 5 unit tests for caching functionality (all passing)
- Reduce redundant API calls when syncing multiple AMS trays
- Improve sync performance for users with large spool databases
- Maintain backward compatibility with optional cached_spools parameters
2026-02-07 22:29:52 +02:00
MartinNYHC 2cff40f2f1 Merge branch '0.1.9b' into feature/home-assistant-env-vars 2026-02-07 19:55:11 +01:00
bambuman 07d9db43cb Localize Home Assistant environment variable UI text
- Add translation keys for environment-managed labels
- Replace hardcoded English text with i18n function calls
- Add translations for English, German, and Japanese
- Keys: environmentManagedLabel, autoEnabledViaEnv, urlFromEnvReadOnly, tokenFromEnvReadOnly

Addresses PR feedback on #283
2026-02-07 20:25:48 +02:00
bambuman eda1f5a9e7 Home Assistant: add environment variable configuration support
- Add HA_URL and HA_TOKEN environment variables for automatic HA
  integration configuration in HA add-on deployments
- Environment variables always override database settings with
  non-negotiable precedence; database values preserved for fallback
- Auto-enable integration when both env vars are set; partial config
  (one env var) uses database enable state without auto-enabling
- Add centralized get_homeassistant_settings() function following
  Spoolman pattern; replace direct database queries across codebase
- Add ha_url_from_env, ha_token_from_env, ha_env_managed fields to
  AppSettings schema to inform frontend about configuration source
- UI shows read-only fields with lock icons and "(Environment Managed)"
  labels when env-controlled; toggle shows auto-enable badge
- Add comprehensive test coverage: 9 integration + 8 unit tests

Closes #283
2026-02-07 19:01:04 +02:00