head	1.10;
access;
symbols
	pkgsrc-2026Q3:1.9.0.4
	pkgsrc-2026Q3-base:1.9
	pkgsrc-2026Q2:1.9.0.2
	pkgsrc-2026Q2-base:1.9
	pkgsrc-2026Q1:1.8.0.2
	pkgsrc-2026Q1-base:1.8
	pkgsrc-2025Q4:1.6.0.2
	pkgsrc-2025Q4-base:1.6;
locks; strict;
comment	@# @;


1.10
date	2026.09.28.13.09.33;	author pin;	state Exp;
branches;
next	1.9;
commitid	GfbEFb3jsjuZdoXG;

1.9
date	2026.04.09.17.12.52;	author pin;	state Exp;
branches;
next	1.8;
commitid	4UsAOoHmVpse6jBG;

1.8
date	2026.03.04.14.57.18;	author pin;	state Exp;
branches;
next	1.7;
commitid	nSDUMBsCW42ovFwG;

1.7
date	2025.12.30.12.05.24;	author pin;	state Exp;
branches;
next	1.6;
commitid	RN83Pxndmy00CqoG;

1.6
date	2025.12.12.08.07.49;	author pin;	state Exp;
branches;
next	1.5;
commitid	XEMwNEa8oAopS5mG;

1.5
date	2025.12.11.04.29.15;	author pin;	state Exp;
branches;
next	1.4;
commitid	ei3BL2X9dFuqHWlG;

1.4
date	2025.11.16.16.57.10;	author pin;	state Exp;
branches;
next	1.3;
commitid	NMmz2XNMB7rPDNiG;

1.3
date	2025.11.10.12.29.03;	author pin;	state Exp;
branches;
next	1.2;
commitid	bkDOzqHN5xFNl0iG;

1.2
date	2025.11.10.09.33.27;	author pin;	state Exp;
branches;
next	1.1;
commitid	Ha7ulK63lKOynZhG;

1.1
date	2025.10.31.09.35.09;	author pin;	state Exp;
branches;
next	;
commitid	1WKF7rQu3Ja0IHgG;


desc
@@


1.10
log
@devel/carwash: update to 0.4.1

[0.4.1] - 2026-09-27
Fixed

    Cleaning many deep directories at once failed with "Too many open files" under macOS's default limit of 256. carwash now raises its open-file limit at startup, and any removal that still runs out of file handles is retried on its own after the others.
    Leftovers of an interrupted clean were held back as "recently used"; they are now ready to clean like any other artifact you already chose to delete.

[0.4.0] - 2026-09-25

A rewrite. carwash is no longer a Rust project manager: it reclaims disk space across projects in any of 40 ecosystems, and checks dependencies and runs tasks along the way. Nothing from 0.3 carries over, including the configuration file.
Added

    Engine crate carwash-core, independent of the UI: parallel discovery driven by declarative ecosystem rules, content detection (CACHEDIR.TAG, virtualenvs, conda, CMake and Meson build trees, orphaned Cargo targets), workspace and enclosing-project awareness.
    Sizes from allocated blocks with hard links counted once, and a separate "reclaimable" figure for data that deleting the artifact would actually free.
    Safety policy from git: tracked content is protected; generic names such as build or vendor need git or content confirmation; recently modified artifacts are held back.
    Validated deletion: re-checked just before removal, renamed to a staging name, then removed in parallel. Optional trash mode. Interrupted cleans are found and finished by the next scan.
    CLI: scan, clean, tasks, run, outdated, caches, ecosystems, history, completions; --json on every listing.
    TUI with four tabs: Reclaim (tree, fuzzy and facet filter, review before cleaning), Tasks (jobs in pseudo-terminals), Updates (outdated and vulnerable dependencies for Rust, JavaScript, Python and Go, updated through each ecosystem's own tool) and Caches (per-user caches outside projects).
    Task discovery from package.json, deno.json, justfiles, Makefiles, Taskfiles, mise, Poe/PDM, Composer and Cargo aliases, plus standard commands per ecosystem.
    32 global caches (package stores, toolchains, Xcode and simulator data, IDE caches) with the tool's own prune command where one exists. Sizes are remembered between runs, so the Caches tab opens instantly; a cache is measured again when the top of its tree changes, after a week otherwise, or on request.
    p scans another folder without restarting, with directory completion.
    A footer that separates the current tab's keys from those that work in any tab. Hovering a key or tab explains it (for d, exactly what will be deleted or run); clicking runs it.
    Help per tab that sizes itself to the terminal.
    User-extensible rules in ecosystems.toml and caches.toml.
    Themes: gestalt (default), latte, nord, dracula, and a 16-color fallback.
    A configuration file left by 0.3 is ignored with a warning instead of stopping every command.

Changed

    Configuration moved to ~/.config/carwash/config.toml with a new schema.
    Minimum supported Rust version is 1.88.
@
text
@# $NetBSD: Makefile,v 1.9 2026/04/09 17:12:52 pin Exp $

DISTNAME=	carwash-0.4.1
CATEGORIES=	devel
MASTER_SITES=	${MASTER_SITE_GITHUB:=epistates/}
GITHUB_TAG=	v${PKGVERSION_NOREV}

MAINTAINER=	pkgsrc-users@@NetBSD.org
HOMEPAGE=	https://github.com/epistates/carwash/
COMMENT=	TUI for managing multiple Rust projects with ease
LICENSE=	mit

.include "cargo-depends.mk"

RUST_REQ=	1.88.0
USE_TOOLS+=	pkg-config gmake perl

MAKE_ENV+=	OPENSSL_DIR=${BUILDLINK_PREFIX.openssl:Q}
RUSTFLAGS+=	-C link-arg=${COMPILER_RPATH_FLAG}${BUILDLINK_PREFIX.openssl}/lib

.include "../../lang/rust/cargo.mk"
.include "../../security/openssl/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
@


1.9
log
@devel/carwash: update to 0.3.5

[0.3.5] - 2026-03-03
Added

    Modernized project to Rust Edition 2024 and Rust 1.93.1 toolchain.
    Added shlex crate for POSIX-compliant cargo command argument parsing.
    Implemented persistent scroll state for output tabs within AppState.

Changed

    Unified configuration system: Merged AppSettings (JSON) into a single TOML-based Config.
    Optimized tree flattening logic: Resolved O ( N 2 ) memory duplication by avoiding recursive child cloning.
    Refactored UI logic to use modern Let Chains (stabilized in Rust 1.83.0).
    Updated core dependencies to latest versions:
        tokio v1.50.0
        ratatui v0.30.0
        crossterm v0.29.0
        toml v1.0.3
        tui-tree-widget v0.24.0

Fixed

    Fixed bug where output tab scroll position was lost on every frame redraw.
    Fixed fragmented configuration save/load paths.
    Improved error handling in main event loop for generic backend errors.
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.8 2026/03/04 14:57:18 pin Exp $
d3 1
a3 1
DISTNAME=	carwash-0.3.5
d5 2
a6 4
#MASTER_SITES=	${MASTER_SITE_GITHUB:=epistates/}
#GITHUB_TAG=	v${PKGVERSION_NOREV}
MASTER_SITES=	https://static.crates.io/crates/carwash/
EXTRACT_SUFX=	.crate
d15 1
a15 1
RUST_REQ=	1.93.0
@


1.8
log
@devel/carwash: Add note on MSRV
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.7 2025/12/30 12:05:24 pin Exp $
d3 1
a3 2
DISTNAME=	carwash-0.3.4
# v0.3.5 requires Rust >= 1.93
d17 1
a17 1
RUST_REQ=	1.85.0
@


1.7
log
@devel/carwash: reset maintainer
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.6 2025/12/12 08:07:49 pin Exp $
d4 1
@


1.6
log
@devel/carwash: update to 0.3.4

[0.3.4] - 2025-12-11
Bug Fixes

Output Pane Focus Trap

    Fixed being unable to exit the Output pane once focused
    Tab now consistently cycles focus between panes (Projects → Dependencies → Output)
    Shift+Tab cycles focus backwards
    Output tabs now switch with h/l or Left/Right arrow keys (vim-style)
    Added j/k and Up/Down for scrolling output content
    Esc also leaves Output pane focus

UI/UX Improvements

Consistent Keybindings

    Tab/Shift+Tab: Always cycle pane focus, never trapped
    h/l or ←/→: Switch output tabs (when Output focused), collapse/expand workspaces (when Projects focused)
    j/k or ↑/↓: Scroll output content (when Output focused), navigate projects (when Projects focused)
    Ctrl+[ / Ctrl+]: Switch output tabs from any pane (unchanged)

Updated Help Screen

    Clarified keybinding descriptions for new behavior
    Removed confusing dual-purpose Tab descriptions
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.5 2025/12/11 04:29:15 pin Exp $
d10 1
a10 1
MAINTAINER=	pin@@NetBSD.org
@


1.5
log
@devel/carwash: update to 0.3.3

[0.3.3] - 2025-12-09
Performance Improvements

Eliminated Double-Checking on Update Wizard

    Opening the update wizard with 'u' now shows cached results instantly
    Previously, all dependencies were re-checked one by one even when cache was fresh
    Now skips the entire check when all dependencies are within cache TTL
    Individual dependency updates only send UI notifications for deps that actually needed checking

New Features

Pre-release Version Detection

    Added semver parsing to distinguish stable versions from beta/rc/alpha releases
    has_stable_update() method ignores pre-release versions when checking for updates
    Prevents suggesting downgrades from stable to pre-release versions

Major Version Update Indicators

    Dependencies pane shows "(requires Cargo.toml change)" for major version updates
    Update wizard shows "(major)" tag next to dependencies that need manual Cargo.toml edits
    Helps users understand why cargo update alone won't update certain dependencies

Improved Status Bar

    Background activity indicators now shown alongside normal status info:
        ⟳ Scanning - when initial project scan is running
        ⟳ Checking - when update check is in progress
        N queued - when background update tasks are pending
    Previously, checking status completely replaced all other status information
    Mode, focus, selection count, and help hints now always visible

Bug Fixes

Ambiguous Package Updates

    Fixed "ambiguous package specification" error when multiple versions of a dependency exist
    Update command now uses package@@version format (e.g., ahash@@0.8.11) for precise targeting

Dependency Reload Timing

    Fixed dependencies not refreshing in UI after running cargo update
    Added pending_reload_project tracking to defer reload until command completes
    Dependencies now correctly reload from Cargo.lock after update finishes

Unnecessary Project Rescanning

    Fixed all adjacent projects being rescanned after updating a single project
    FinishCommand action now only routes to async handler when reload is needed

Dependencies

    Added semver = "1.0" for semantic version parsing

Code Quality

    91 tests passing
    Clippy clean with no warnings
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.4 2025/11/16 16:57:10 pin Exp $
d3 1
a3 1
DISTNAME=	carwash-0.3.3
d5 4
a8 2
MASTER_SITES=	${MASTER_SITE_GITHUB:=epistates/}
GITHUB_TAG=	v${PKGVERSION_NOREV}
@


1.4
log
@devel/carwash: update to 0.3.2

[0.3.2] - 2025-11-14
New Features

Disk Space Analysis

    See target/ directory sizes for all your projects at a glance
    Color-coded indicators help identify space-hungry projects:
        Red (>1GB): Time to clean!
        Yellow (>100MB): Worth reviewing
        Gray (<100MB): Reasonable size
        Very dim (0B): Already clean
    Sizes update automatically in the background
    After running cargo clean, sizes recalculate instantly so you see the freed space immediately

Smarter Workspace Handling

    crates/ directories are now transparent - workspace members appear directly under the workspace root
    No need to manually expand crates/ folders anymore
    Cleaner view: turbovault/crates/turbovault-core becomes turbovault/turbovault-core
    Workspaces with both [workspace] and [package] sections now display correctly with all members visible

Better Navigation

    Focus indicator in status bar shows which pane is active (Projects, Dependencies, or Output)
    Tab key cycles between panes intelligently
    Ctrl+[ and Ctrl+] switch between output tabs from anywhere
    Output pane shows tab counter (e.g., "Output (2/5)")
    Help screen now scrolls properly with arrow keys, j/k, PgUp/PgDn, and Home

Bug Fixes

    Fixed issue where pressing 'u' to check for updates would check the wrong project
    Fixed dependencies pane not showing when a project was selected
    Fixed workspace members not appearing in the tree view
    Fixed workspaces appearing as single projects instead of showing all members
    Fixed cargo clean race conditions when running on multiple workspace members simultaneously
        Now runs sequentially within each workspace to prevent errors
        Each project still gets its own output tab for full visibility
        Standalone projects continue to run in parallel for speed
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.3 2025/11/10 12:29:03 pin Exp $
d3 1
a3 1
DISTNAME=	carwash-0.3.2
@


1.3
log
@devel/carwash: update to 0.3.1

[0.3.1] - 2025-11-10
🌳 Hierarchical Tree Navigation

New Tree-Based UI System

    Introduced tree data structure with lazy loading support for large project hierarchies
    New interactive tree view component for project navigation
    Integrated hierarchical tree navigation throughout the application
    Added tree state management with selection tracking

New Components

    TreeView component for collapsible/expandable navigation
    ProgressBar component for visual feedback on operations
    Filter component for fuzzy search and filtering
    Modal component for dialogs and overlays
    Separated UI concerns into modular components

Code Organization

    Extracted UI rendering into dedicated src/ui/ module structure
    Added src/ui/layout.rs for layout composition
    Added src/ui/modal.rs for modal dialogs
    Added src/ui/styles.rs for centralized styling
    Added src/ui/theme.rs for theme management
    Created src/config/ module for configuration management
    Added src/config/keybinding_config.rs for keyboard shortcuts
    Added src/config/theme_config.rs for theme configuration

Architecture Improvements

    Restructured app state to support tree navigation
    Enhanced Project struct with additional metadata
    Improved event handling with new action types
    Better separation of concerns between components and state
    More modular and testable code structure

Development Tools

    Added justfile with convenient development recipes for common tasks
    Makes development workflow faster and more consistent

Bug Fixes

    Fixed event stream polling to prevent UI freeze with timeout
    Improved terminal responsiveness during intensive operations
    Better handling of rapid state changes

Code Quality

    Applied Clippy recommendations and fixed linting warnings
    Code formatting improvements throughout
    All 34+ tests passing
    Clippy clean with no warnings

Dependencies

    Updated to Cargo.toml compatibility
    Maintained all security patches
    No breaking changes to public API

🔄 Breaking Changes

None. Fully backward compatible with 0.3.0.
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.2 2025/11/10 09:33:27 pin Exp $
d3 1
a3 1
DISTNAME=	carwash-0.3.1
@


1.2
log
@devel/carwash: update to 0.3.0

🏗️ Major Refactoring Release

Code Quality Improvements

Extracted helper functions throughout codebase for better modularity
UI component rendering extracted into focused functions
Reduced cognitive complexity in main rendering loops
Improved testability with smaller, single-responsibility functions
Dependency Pane Refactoring

Extracted create_dependency_list_item() for dependency rendering
Extracted get_title() for status-aware title generation
Replaced imperative loops with functional iterators
Significantly improved readability of dependency display logic
Project List Refactoring

Extracted create_workspace_header() for workspace row rendering
Extracted create_project_list_item() for project row rendering
Reduced main draw loop from 200+ to ~30 lines
Better separation between data and presentation
State Management Improvements

Refactored AppState to use derived Clone trait
Implemented Default trait for cleaner initialization
Optimized get_visible_projects() with iterator chains
Better handling of workspace visibility logic
Handler Function Improvements

Extracted toggle_workspace_selection() for workspace selection
Extracted toggle_single_project_selection() for project selection
Extracted queue_background_updates_on_enable() for settings updates
Extracted update_project_dependencies() and update_wizard_dependencies()
Simplified handle_save_settings() with cleaner error handling
Terminal & Error Handling

Extracted setup_terminal() for initialization
Extracted restore_terminal() for cleanup
Extracted reset_checking_status() to deduplicate status reset
Better error propagation with anyhow context
Cleaner early returns with anyhow::bail!()
Async Task Improvements

Extracted check_single_dependency() for individual checks
Extracted spawn_and_stream_command() for command execution
Better async task organization and separation
Improved error handling in command spawning
Dependencies

Updated clap: 4.5.50 → 4.5.51
Updated chrono: unspecified → 0.4.42
Updated directories: 5.0 → 6.0.0
Updated serde_json: unspecified → 1.0.145
Updated thiserror: 1.0.69 → 2.0.17
Cleaned up unused transitive dependencies

Improved code organization and maintainability
Zero behavior changes - purely structural improvements
All 34 tests passing
Clippy clean with no warnings
🔄 Breaking Changes

None. Fully backward compatible.
@
text
@d1 1
a1 1
# $NetBSD: Makefile,v 1.1 2025/10/31 09:35:09 pin Exp $
d3 1
a3 1
DISTNAME=	carwash-0.3.0
@


1.1
log
@devel/carwash: import package

Terminal User Interface for managing multiple Rust projects with ease.
CarWash provides an intuitive interface for running cargo commands across
multiple projects simultaneously, managing dependencies, and monitoring build
outputs.

Core Features
 - Multi-Project Management: Automatically discover and manage all Rust projects
   in a directory tree
 - Parallel Command Execution: Run cargo commands across multiple projects
   simultaneously
 - Interactive Command Palette: Fuzzy search through cargo commands with
   vim-style navigation
 - Real-time Output Monitoring: Watch command output with colored synta
   highlighting
 - Dependency Management: Check for outdated dependencies and update them
   interactively
 - Workspace Support: Intelligently handles Cargo workspaces and member projects
@
text
@d1 1
a1 1
# $NetBSD$
d3 1
a3 1
DISTNAME=	carwash-0.2.2
d8 1
a8 1
MAINTAINER=	pkgsrc-users@@NetBSD.org
@

