Commit graph

45 commits

Author SHA1 Message Date
Vito Castellano
f703f5de3b
feat(ui): add help screen with keyboard shortcuts overlay
Add a help modal accessible via '?' key that displays all keyboard shortcuts organized by category (Navigation, Filters, Actions, Brewfile). Reduce legend bar clutter by hiding less common actions and showing only essential shortcuts. Add HideFromLegend flag to IOAction struct for flexible legend management.
2025-12-28 19:35:48 +01:00
Vito Castellano
b7d959d9f2
feat(legend): add HideFromLegend flag to reduce legend size
Hide Back and Quit actions from legend bar as they are intuitive keys. This prepares for a more compact legend with a dedicated help screen.
2025-12-28 16:19:39 +01:00
Vito Castellano
c933f00d00
feat(brewfile): add tap support with auto-installation and caching (#43)
Some checks are pending
Quality / golangci-lint (push) Waiting to run
Quality / Build (push) Waiting to run
Quality / Build-1 (push) Waiting to run
Security / Go Vulnerability Check (push) Waiting to run
Security / Security Scanner (push) Waiting to run
Add support for parsing and installing taps from Brewfile entries. Taps are automatically installed at startup before updating Homebrew data. Tap package information is cached for faster subsequent startups. Also fixes thread safety issues with UI notifications in background goroutines and improves error handling for brew command execution.
2025-12-28 12:45:21 +01:00
Arjun Pathak
453e8bfc8f
fix: update filter counter in case a filter returns nothing (#42)
Some checks are pending
Quality / golangci-lint (push) Waiting to run
Quality / Build (push) Waiting to run
Quality / Build-1 (push) Waiting to run
Security / Go Vulnerability Check (push) Waiting to run
Security / Security Scanner (push) Waiting to run
Co-authored-by: Arjun Pathak <arjun.pathak@nielsen.com>
2025-12-27 23:20:36 +01:00
Vito Castellano
e6af61716d
feat: add comprehensive caching for instant startup (#40)
Some checks failed
Quality / golangci-lint (push) Has been cancelled
Quality / Build (push) Has been cancelled
Quality / Build-1 (push) Has been cancelled
Security / Go Vulnerability Check (push) Has been cancelled
Security / Security Scanner (push) Has been cancelled
- Cache all Homebrew data (installed packages, remote formulae/casks, analytics)
- Reduce startup time from 1-2s to ~50-100ms with populated cache
- Add cache validation to prevent corrupted data usage
- Make boot process resilient to cache corruption and network failures
- Background update ensures data freshness after startup

Cache files stored in ~/Library/Caches/bbrew/ following XDG standards:
- installed.json, installed-casks.json (local packages)
- formula.json, cask.json (remote packages)
- analytics.json, cask-analytics.json (download stats)

The app now starts instantly using cached data, then updates in background
without blocking the UI. Falls back gracefully if cache is corrupted or
network is unavailable.
2025-11-25 00:45:48 +01:00
Vito Castellano
6d10e0beab
feat: improve UI color scheme for better readability across terminal themes
Some checks are pending
Quality / golangci-lint (push) Waiting to run
Quality / Build (push) Waiting to run
Quality / Build-1 (push) Waiting to run
Security / Go Vulnerability Check (push) Waiting to run
Security / Security Scanner (push) Waiting to run
Updates the UI theme system and improves visual consistency and accessibility across different terminal themes. The main changes include refactoring how colors are handled, updating component styles for better visibility, and ensuring that global styles adapt to the user's terminal settings.
2025-11-23 19:09:32 +01:00
Vito Castellano
aeee3b93b1
feat: add Brewfile mode for curated package collections (#37)
* feat: add Brewfile mode for curated package collections

This commit introduces Brewfile mode, allowing users to launch bbrew with
a curated list of packages using the -f flag. When a Brewfile is provided,
the application displays only those packages, enabling themed collections
like IDE choosers or developer tool sets.

The implementation includes a Brewfile parser for brew and cask entries,
automatic filtering of the package catalog, and a refactored API with the
IsBrewfileMode() method for cleaner code. Critical bugs were fixed including
a synchronization issue between the displayed table and the filtered packages
array that caused incorrect package selection.

This feature is designed for Project Bluefin integration, providing curated
package experiences where users can browse predefined collections. Includes
example Brewfiles and comprehensive documentation.

* feat: add Install All functionality for Brewfile mode

Add ctrl+a keybinding to install all packages from a Brewfile at once,
available exclusively in Brewfile mode.

* feat: add Remove All for Brewfile mode

Add ctrl+r keybinding to batch remove all installed packages from
Brewfile with real-time progress counter. Validates packages are
installed before proceeding and skips non-installed packages.
Available only in Brewfile mode
2025-11-23 18:54:56 +01:00
Vito Castellano
6c80585431
chore: release version 2.0.0 - Cask support and XDG compliance (#30)
* feat: add leaves filter to show explicitly installed packages (#25)

Add new filter [L] to display only "leaf" packages - those installed
explicitly by the user and not as dependencies of other packages.

* refactor: Migrate to Podman with OCI Containerfile and enhanced Makefile (#26)

* refactor: migrate from Docker to Podman with OCI Containerfile

Replace Docker with Podman for better security and OCI compliance.
Switch from Dockerfile to standard Containerfile format.

* chore: upgrade Go from 1.24 to 1.25

Update Go version to 1.25 to support latest goreleaser v2 and benefit from improved performance and language features.

* refactor: migrate to Podman and enhance Makefile

Replace Docker with Podman and upgrade Makefile with help system and new developer-friendly targets.

* chore: upgrade to Go 1.25 and golangci-lint v2.5.0

Update Go to 1.25 and golangci-lint to v2.5.0 for better tooling support.

* feat: add security scanning with govulncheck and gosec (#27)

Add comprehensive security scanning to the project with vulnerability checks and static analysis tools.

* feat: Add complete Casks support with unified UI (#28)

* feat(cask): add backend support for Homebrew casks

Implement complete backend infrastructure for managing Homebrew casks alongside formulae, preparing for unified UI.

* feat(cask): add complete Homebrew casks support with unified UI

Implement full backend and UI support for managing Homebrew casks alongside formulae in a unified interface.

* fix(cask): parse cask analytics correctly

Fix cask analytics not being displayed (showing 0 for all casks).

* feat(cask): add complete Homebrew casks support with unified UI

Implement full backend and UI support for managing Homebrew casks alongside formulae in a unified interface.

* fix: create copy to avoid implicit memory aliasing

* feat: implement XDG Base Directory Specification with github.com/adrg/xdg (#29)

Implement XDG Base Directory Specification using the github.com/adrg/xdg package for robust cross-platform support.
2025-10-13 21:26:18 +02:00
Vito
5546ad1b33
feat: general improvement and removed command service (#20)
* improved quality code and add general logic fix

* feat: removed command service
2025-06-26 15:43:26 +02:00
Vito
f514bc3a30
feat: io service refactoring (#18)
Some checks are pending
Quality / golangci-lint (push) Waiting to run
Quality / Build (push) Waiting to run
* refactored io legend and handler

* implmented dedicated IOService

* refactored and fixed io service

* fixed quality issues

* fix general and copilot issues
2025-06-25 17:26:35 +02:00
Tarun Nahak
672d3982fd
feat(14): move formatting logic to Details ui component (#15)
Some checks failed
Quality / golangci-lint (push) Has been cancelled
Quality / Build (push) Has been cancelled
* refactored move formatting logic to Details ui component

* refactored the setContent for details formatting and remove setFormula

* refactor: clean up LocalPath handling and improve details formatting
2025-06-09 22:28:54 +02:00
Vito
a3b6b81a2c
feat(12): cache formulajson (#13)
Some checks are pending
Quality / golangci-lint (push) Waiting to run
Quality / Build (push) Waiting to run
* moved update homebrew command

* refactored brew service to support formulae cache file

* fix copilot suggestion
2025-06-07 15:29:12 +02:00
Vito
14e2048105
feat: Improvements to package filtering and locally installed packages (#11)
Some checks failed
Quality / golangci-lint (push) Has been cancelled
Quality / Build (push) Has been cancelled
* feat: improve locally installed filter

* feat: improved filtering outdated packages

* fix: added installed filters also in the main view
2025-06-05 00:22:29 +02:00
kypkk
b9c0ab75a9
feat: filter outdated package (#9)
* feat: filter by update available package

* fix: variable name to Outdated packages and fix some io conditions
2025-03-16 00:23:35 +01:00
Brian Wigginton
e92e6533b8
feat: download counts and default search sort by download count (#7) 2025-03-03 22:49:30 +01:00
Vito Castellano
8fd52bcae5
comment fix 2025-03-01 16:44:27 +01:00
Vito Castellano
c9ea63bb0c
feat: handle revisioned version 2025-03-01 16:42:31 +01:00
Vito Castellano
446650b6a2
feat: enhanced details view 2025-03-01 16:00:31 +01:00
Vito Castellano
289df487fa
feat: add some ui improvment 2025-03-01 12:52:29 +01:00
Vito Castellano
78f00ee75d
fix install invocation 2025-02-25 00:05:51 +01:00
Vito Castellano
75a7716b91
feat: improved std output handlers 2025-02-24 23:44:43 +01:00
Vito
7d2c082ea5
feat: new UI layout management (#6)
* created new components

* enhanced new layout

* improved theme
2025-02-24 22:53:09 +01:00
Vito Castellano
74884eaabf
feat: implement asynchronous version check with context support 2025-02-23 01:32:35 +01:00
Vito Castellano
6bbb264334
add notification view 2025-02-16 00:59:17 +01:00
Vito Castellano
fc8f5db5fd
added update all packages command 2025-02-12 23:58:53 +01:00
Vito Castellano
8c0937601a
enhance layout expansion 2025-02-12 01:05:47 +01:00
Vito Castellano
806f9f735f
changed import module name 2025-02-12 00:39:12 +01:00
Vito Castellano
190dce6b48
update module name 2025-02-12 00:33:13 +01:00
Vito Castellano
c1dbd3db07
update module name 2025-02-12 00:29:07 +01:00
Vito Castellano
4c1449a3a7
setup golangci linter 2025-02-12 00:00:53 +01:00
Vito Castellano
0b9e997cc0
add error handling for command service updates 2025-02-10 23:50:33 +01:00
Vito Castellano
387f699eea
cs refactor 2025-02-10 17:46:27 +01:00
Vito Castellano
3a92b4ab8e
moved to new file io handler 2025-02-09 19:44:49 +01:00
Vito Castellano
1d2b519a36
added layout service to improve code readability 2025-02-08 00:42:01 +01:00
Vito Castellano
a5be6bde46
updated outdated lists 2025-02-07 16:49:59 +01:00
Vito Castellano
dd036f91dc
add check remote update 2025-02-07 16:26:37 +01:00
Vito Castellano
cc482e388b
update homebrew integration 2025-02-04 00:31:58 +01:00
Vito Castellano
0c4d572e0b
add escape key from search input 2025-02-03 17:39:00 +01:00
Vito Castellano
0a0b151cd8
enhanced details view output 2025-02-03 17:30:49 +01:00
Vito Castellano
2a84ebec9f
update fill table details 2025-02-03 17:18:45 +01:00
Vito Castellano
41e82dc20a
update view details 2025-02-03 17:17:52 +01:00
Vito Castellano
5ba04023cb
fixed version releaser 2025-01-28 23:49:20 +01:00
Vito Castellano
433de9b833
added releaser env support 2025-01-28 23:32:09 +01:00
Vito Castellano
73a3a7bf64
avoid handling events when the input hasFoucus 2025-01-25 18:23:29 +01:00
Vito Castellano
d3576ce763
bold brew 2025-01-25 17:54:09 +01:00