From 3038349f2f45e7cc0602e39910efc0363f120434 Mon Sep 17 00:00:00 2001 From: Javier Feliz Date: Thu, 11 Sep 2025 21:06:23 -0400 Subject: [PATCH] Add release management make targets and changelog --- CHANGELOG.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 31 +++++++++++++++++++++++++- 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..098cd3c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,63 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.0.2] - 2025-01-16 + +### Added +- **Framework Detection System**: Automatic detection of project types (Laravel, Rails, NextJS, Vue, Svelte, Django, Flask, Go Fiber, Ansible) +- **Project Icons**: Visual framework/language icons for project entries using devicons +- **Intelligent Project Type Detection**: Uses both framework detection and language analysis (tokei) with fallback logic +- **Icon Asset Management**: Bundled devicon SVG assets with proper XDG data directory support +- **Caching System**: 24-hour TTL caching for project type detection to improve performance +- **Development Cache Control**: `WAYCAST_NO_CACHE` environment variable to disable caching during development +- **Macro-based Framework Registration**: Clean, declarative system for adding new framework detectors +- **Asset Installation**: Makefile targets for icon management and XDG directory installation +- **Release Management**: Automated release workflow with version bumping across all crates + +### Enhanced +- **Project Plugin**: Now shows framework/language-specific icons instead of generic VSCode icon +- **Icon Resolution**: Smart path resolution with XDG directory precedence and development fallback +- **Nix Package**: Added icon installation to flake.nix build process + +### Technical +- **Framework Detection Macro**: Compile-time static framework detection system with zero runtime overhead +- **JSON Path Checking**: Built-in support for detecting frameworks via package.json dependencies +- **File Pattern Matching**: Flexible file existence and directory structure checking +- **Custom Validation**: Support for complex framework detection logic via closures + +## [0.0.1] - 2025-01-15 + +### Added +- **Core Application**: GTK4-based application launcher for Wayland compositors +- **Plugin System**: Modular plugin architecture with priority-based ordering +- **Desktop Application Plugin**: Scan and launch .desktop applications from XDG directories +- **File Search Plugin**: Fast file system search with configurable directories and exclusions +- **Project Search Plugin**: Code project discovery with configurable search paths +- **Configuration System**: TOML-based configuration with environment variable support +- **Caching Framework**: Persistent disk cache with TTL support using redb +- **Wayland Integration**: Layer shell support for floating launcher interface +- **Search Interface**: Type-to-filter functionality with instant results +- **Nix Support**: Complete Nix flake with development shell and package definition +- **Home Manager Module**: NixOS home-manager integration for declarative configuration + +### Technical +- **Multi-crate Architecture**: Organized codebase with core, plugins, config, and UI separation +- **Async Plugin Loading**: Background indexing with non-blocking UI +- **XDG Compliance**: Proper XDG Base Directory specification support +- **GTK4 + Relm4**: Modern reactive UI framework with factory patterns for list rendering +- **Icon Handling**: GIO-based icon resolution with themed and file icon support +- **Error Handling**: Comprehensive error types with proper propagation +- **Memory Efficiency**: Static compilation patterns and lazy initialization +- **Development Tooling**: Comprehensive Makefile with build, test, and quality targets + +### Infrastructure +- **Build System**: Cargo workspace with proper dependency management +- **Development Environment**: Nix development shell with all required dependencies +- **Code Quality**: Clippy linting, rustfmt formatting, and automated git hooks +- **Documentation**: Inline documentation and architectural guidance in CLAUDE.md \ No newline at end of file diff --git a/Makefile b/Makefile index ea54975..c4129a0 100644 --- a/Makefile +++ b/Makefile @@ -174,4 +174,33 @@ install-icons: ## Install icons to XDG data directory ICON_DIR="$$XDG_DATA_HOME/waycast/icons" && \ mkdir -p "$$ICON_DIR" && \ cp -r ./assets/icons/* "$$ICON_DIR/" && \ - echo "Icons installed to $$ICON_DIR" \ No newline at end of file + echo "Icons installed to $$ICON_DIR" + +# Release Management +bump-version: + @if [ -z "$(VERSION)" ]; then \ + echo "Error: VERSION is required. Usage: make release VERSION=0.0.2"; \ + exit 1; \ + fi + @echo "Bumping WayCast version to v$(VERSION)..." + @sed -i 's/version = "[^"]*"/version = "$(VERSION)"/' Cargo.toml + @sed -i 's/version = "[^"]*"/version = "$(VERSION)"/' waycast-core/Cargo.toml + @sed -i 's/version = "[^"]*"/version = "$(VERSION)"/' waycast-gtk/Cargo.toml + @sed -i 's/version = "[^"]*"/version = "$(VERSION)"/' waycast-plugins/Cargo.toml + @sed -i 's/version = "[^"]*"/version = "$(VERSION)"/' waycast-config/Cargo.toml + @sed -i 's/version = "[^"]*"/version = "$(VERSION)"/' waycast-macros/Cargo.toml + @sed -i 's/version = "[^"]*"/version = "$(VERSION)"/' flake.nix + @cargo check --workspace --quiet + +tag-version: + @if [ -z "$(VERSION)" ]; then \ + echo "Error: VERSION is required. Usage: make release VERSION=0.0.2"; \ + exit 1; \ + fi + @git add -A + @git commit -m "Bump version to $(VERSION)" + @git tag v$(VERSION) + @git push origin main + @git push origin v$(VERSION) + @echo "✅ Release v$(VERSION) created!" + @echo "🔗 Go to your Gitea instance to add release notes" \ No newline at end of file