juno-code 1.0.50 → 1.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -276,10 +276,22 @@ check_all_for_updates() {
276
276
  log_info "Performing periodic version check..."
277
277
 
278
278
  for package in "${REQUIRED_PACKAGES[@]}"; do
279
- check_and_upgrade_package "$package" "true"
280
- local result=$?
279
+ local result=0
280
+
281
+ # check_and_upgrade_package can return 2 when an update is available.
282
+ # With `set -e`, calling it directly would abort the script before we
283
+ # can process that status. Wrap it in an if/else so we can capture and
284
+ # handle non-zero return codes intentionally.
285
+ if check_and_upgrade_package "$package" "true"; then
286
+ result=0
287
+ else
288
+ result=$?
289
+ fi
290
+
281
291
  if [ $result -eq 2 ]; then
282
292
  packages_needing_upgrade+=("$package")
293
+ elif [ $result -ne 0 ]; then
294
+ log_warning "Skipping upgrade decision for $package due to check error"
283
295
  fi
284
296
  done
285
297
 
@@ -330,6 +342,24 @@ is_in_virtualenv() {
330
342
  return 1 # Not inside venv
331
343
  }
332
344
 
345
+ # Function to activate project-local .venv_juno when available.
346
+ # Why: install/check commands often run from non-activated shells, while packages
347
+ # are installed into .venv_juno. Activating it early keeps package detection and
348
+ # periodic update checks aligned with the real install target.
349
+ activate_project_venv_if_available() {
350
+ if is_in_virtualenv; then
351
+ return 0
352
+ fi
353
+
354
+ local venv_path=".venv_juno"
355
+ if [ -f "$venv_path/bin/activate" ]; then
356
+ log_info "Detected project virtual environment at $venv_path; activating for dependency checks"
357
+ # shellcheck disable=SC1091
358
+ source "$venv_path/bin/activate"
359
+ log_success "Activated $venv_path"
360
+ fi
361
+ }
362
+
333
363
  # Function to find the best Python version (3.10-3.13, preferably 3.13)
334
364
  find_best_python() {
335
365
  # Try to find Python in order of preference: 3.13, 3.12, 3.11, 3.10
@@ -648,6 +678,9 @@ main() {
648
678
  log_info "=== Python Requirements Installation ==="
649
679
  echo ""
650
680
 
681
+ # Align all checks with project-local installation target when available.
682
+ activate_project_venv_if_available
683
+
651
684
  # Handle --check-updates: just check and report, don't install
652
685
  if [ "$check_updates_only" = true ]; then
653
686
  log_info "Checking for updates..."
@@ -194,6 +194,17 @@ cd "$PROJECT_ROOT"
194
194
  # not from wherever the calling agent happens to be. Respects existing override.
195
195
  export JUNO_TASK_ROOT="${JUNO_TASK_ROOT:-$PROJECT_ROOT}"
196
196
 
197
+ # Prefer local kanban source when available.
198
+ # - Monorepo root: $PROJECT_ROOT/juno_kanban/src
199
+ # - juno_kanban root: $PROJECT_ROOT/src
200
+ # This keeps wrapper behavior aligned with working-tree changes without requiring
201
+ # immediate reinstall from PyPI between local iterations.
202
+ if [[ -d "$PROJECT_ROOT/src/kanban" ]]; then
203
+ export PYTHONPATH="$PROJECT_ROOT/src${PYTHONPATH:+:$PYTHONPATH}"
204
+ elif [[ -d "$PROJECT_ROOT/juno_kanban/src/kanban" ]]; then
205
+ export PYTHONPATH="$PROJECT_ROOT/juno_kanban/src${PYTHONPATH:+:$PYTHONPATH}"
206
+ fi
207
+
197
208
  # Arrays to store normalized arguments (declared at script level for proper handling)
198
209
  declare -a NORMALIZED_GLOBAL_FLAGS=()
199
210
  declare -a NORMALIZED_COMMAND_ARGS=()