Skip to content

Releases: satodu/bamboo-end-store

1.2.0

Choose a tag to compare

@satodu satodu released this 06 Jul 23:47

Release Notes — Bamboo End Store

v-next · 2026-07-06


Architecture — SOLID Refactoring & Adapter Pattern

The entire package management subsystem was redesigned following Clean Code and SOLID principles.

New: PackageManagerInterface contract

All package managers now implement a strict, interchangeable interface. Adding support for a new format (Snap, Nix, etc.) requires only a new class — no existing code changes.

New: Dedicated Manager Adapters

Class Responsibility
PacmanManager Official Arch/EndeavourOS repository queries and operations
AurManager AUR helper (paru/yay) queries and interactive installs
FlatpakManager Flathub remote queries and Appstream API parsing

New: PackageManagerFactory

A single factory resolves the correct manager based on package source flags, keeping PackageService as a thin coordinator with zero manager-specific logic.


Settings — Singleton Service

New: SettingsService

User configuration is now loaded once and shared via a singleton registered in the service container. Eliminates duplicate file reads and provides a consistent get() / all() interface across the entire application.


State Machine — Real-Time Operation Awareness

New: UserState Enum

Defines four application states: IDLE, INSTALLING, UNINSTALLING, UPDATING.

New: UserStateMachine (Singleton)

Coordinates state transitions with guard rules, persists state via Laravel Cache for cross-process communication, and exposes the current state and active package name to the UI.

UI Behaviour Changes:

  • All package card action buttons across the entire store are disabled during any active operation
  • The active package's button shows a live status label: Installing... / Uninstalling... with a spinner
  • State is always reset to IDLE in finalizeOperation() — even if a terminal window is killed mid-install

Bug Fix — Background Process Watchdog (Critical)

Problem: After opening an external terminal for installation or uninstallation, the package card button never updated to reflect the new installed state. Subsequent install/uninstall actions were also locked permanently.

Root Causes:

  1. Dummy PIDs — processes used fake PIDs (9999, 1). The poll loop checking /proc/{pid} immediately found nothing and cleared local state, but the UserStateMachine was never reset, locking the UI permanently.
  2. Stale search cache — the Livewire component reloaded packages from a 5-minute cached search result that still showed the old installation status.

Fix:

  • All background commands now use native POSIX shell detachment (& echo $!) to capture the real system PID without relying on Symfony Process — which kills its child process on __destruct when the PHP request lifecycle ends.
  • finalizeOperation() now explicitly resets the UserStateMachine to IDLE as a failsafe.
  • finalizeOperation() now invalidates the active search query cache keys (pkg_search_...) to force a fresh status check immediately.

i18n — Full Console Message Translation

All user-visible messages emitted by external terminal windows (install, uninstall, system update) are now fully translatable. PHP resolves the active locale via __() before building the shell command string and passes the result safely via escapeshellarg().

11 new translation keys added across all 4 supported languages (EN · PT · ES · RU):

Key EN PT
console_auth_failed Authentication cancelled or failed. Autenticação cancelada ou falhou.
console_install_failed Installation failed or was cancelled. Instalação cancelada ou falhou.
console_initiating_removal Initiating removal of {name}... Iniciando remoção de {name}...
console_starting_eos_update Starting EndeavourOS System Update... Iniciando atualização do EndeavourOS...
console_updating_aur Updating AUR packages via {helper}... Atualizando pacotes AUR via {helper}...
console_starting_update Starting System Update via {helper}... Iniciando atualização do sistema via {helper}...
console_updating_flatpak Updating Flatpak applications... Atualizando aplicativos Flatpak...
console_removing_orphans Removing orphan packages... Removendo pacotes órfãos...
console_no_orphans No orphan packages to remove. Nenhum pacote órfão para remover.
console_closing_terminal Closing terminal in {delay} seconds... Fechando terminal em {delay} segundos...
console_press_enter Press Enter to close... Pressione Enter para fechar...

Code Quality

  • All Portuguese strings hardcoded in app/ PHP source files were removed — user-facing strings use __(), internal code comments are English only.
  • PHPDoc comments across PackageService, PackageManagers, and Console Commands translated to English.
  • PackageFinishedCommand CLI description updated to English.

Tests

  • 9 PHPUnit tests · 38 assertions — all passing
  • PackageManagerTest — adapter resolution, search delegation, install command correctness
  • UserStateMachineTest — state transition rules and guard enforcement

1.1.7

Choose a tag to compare

@satodu satodu released this 06 Jul 22:28

Release Notes - Version 1.1.7

What's New:

  • Package Source Visibility: Added clear badges (Official, AUR, Flatpak) next to the package version in the details sheet, and added a detailed "Source / Repository" metadata row showing the exact repository origin (e.g. Flathub, AUR, core, extra, etc.).
  • Secure AUR PKGBUILD Audits: Removed the automated --skipreview and --noedit command-line bypasses. When installing AUR packages, the terminal window will now correctly prompt you to inspect and review PKGBUILD changes before compilation starts.
  • Terminal Auto-Close Customization:
    • Added new configuration keys to toggle auto-close behavior and set custom durations (5s, 10s, 15s, or 30s) in the Settings page.
    • Implemented a silent "Auto-close" checkbox inside the integrated console drawer that updates settings instantly without intrusive notifications.
    • System terminal operations (like standard package updates or command installations) now respect these settings: displaying a clear countdown when auto-close is enabled, or prompting "Press Enter to close..." to let you inspect outputs when disabled.
  • Localization & Boot Fixes:
    • Resolved a Laravel 11 pathing issue where settings.json was saved inside storage/app/private/ but searched in storage/app/. The correct path is now dynamically resolved on boot, ensuring the notification tray menu loads in the user's preferred language on startup.
    • Added Artisan CLI search paths so background operations and finish notifications also respect the user's active locale.
    • Translated all setup logs and terminal suffixes, and completed translation files (en.json, pt.json, es.json, ru.json) for the new settings interface.

1.1.6

Choose a tag to compare

@satodu satodu released this 06 Jul 19:06

Full Changelog: 1.1.5...1.1.6

1.1.5

Choose a tag to compare

@satodu satodu released this 06 Jul 18:23

Full Changelog: 1.1.4...1.1.5

1.1.4

Choose a tag to compare

@satodu satodu released this 06 Jul 16:00
new prints