Package production dependencies per architecture for online and offline upgrades.
Validate dependencies and isolated backend startup before readiness, repair once
when permitted, and preserve service/data through failed preparation or rollback.
Publish release bundles with master images and expose an opt-in develop build
sharing the development index across Alpine and Debian images.
Translate UI, scheduler, validation, preload and maintenance messages dynamically, and propagate locale changes between workers. Harden update checks, downloads and terminal states, verify Debian pnpm, and ignore generated test artifacts.
* perf: load HTTP dependencies only in the HTTP worker
* docs: record 30-minute idle resource comparison
* perf: isolate database initialization from the cluster primary
* docs: record isolated database startup resource comparison
* perf: avoid an extra shell child in Docker health probes
* perf: load notification dependencies only when needed
* perf: retain queue cleanup after notification loading comparison
* fix: stop page polling after unmount and avoid duplicate fetches
* perf: share WebSocket session polling across connections
* docs: measure real WebSocket container CPU and memory
* perf: reuse JWT validation within each WebSocket session check
* perf: bound login IP lookup allocations with an address cache
* refactor: limit resource optimization PR to three core changes
* docs: benchmark the three core optimizations against develop
* chore: remove documentation and benchmark artifacts from PR
* Initial plan
* Fix race condition causing scheduled tasks not to run
Added synchronization to ensure gRPC worker is ready before HTTP worker starts. This prevents the race condition where autosave_crontab() tries to register cron jobs before the gRPC server is ready to accept them.
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Add timeout protection for gRPC worker initialization
Added 30-second timeout to prevent system hang if gRPC worker fails to start. This provides better error handling and prevents indefinite waiting.
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Refactor worker ready logic and improve restart handling
- Extracted waitForWorkerReady() method for better code reusability
- Improved worker restart logic to wait for gRPC worker readiness
- This addresses code review feedback for better maintainability
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Improve logging accuracy for worker restarts
- Fixed log messages to accurately reflect worker state
- Added proper logging after gRPC worker is confirmed ready
- Improved HTTP worker restart logging with PID
- Addresses code review feedback for better clarity
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Revert unnecessary pnpm-lock.yaml changes
The pnpm-lock.yaml was unintentionally updated when installing dependencies for testing. No package dependencies were actually changed - only existing code was modified in back/app.ts. Reverting to original state.
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Re-register cron jobs when gRPC worker restarts
When the gRPC worker restarts, the scheduled tasks need to be re-added to the new gRPC server instance. This fix:
1. Tracks the HTTP worker reference in the master process
2. Sends a 'reregister-crons' message to the HTTP worker after gRPC restarts
3. HTTP worker calls autosave_crontab() to re-register all cron jobs with the new gRPC server
This ensures scheduled tasks continue to work after a gRPC worker restart.
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>