You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TUI shortcuts on non-Latin keyboards: Pressing Q, J, K, Y, N on a non-Latin keyboard layout (e.g. Russian ЙЦУКЕН) now correctly triggers quit, scroll, and confirm/cancel shortcuts. A QWERTY normalization layer translates physical key characters before matching, while text-input screens (contributor filter, branch name input) remain unaffected.
Changed
Git Tools branch list hint: Added an instructional hint above the branch list on the confirmation screen: "Review the branches below, then press y/Enter to delete or n/Esc to cancel."
Install repolyze 0.1.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/maximgorbatyuk/repolyze/releases/download/v0.1.6/repolyze-installer.sh | sh
Windows support: Build target x86_64-pc-windows-msvc with MSI installer and PowerShell install script. Release workflow now produces Windows .zip, .msi, and .ps1 artifacts alongside macOS and Linux builds.
Windows CI job: Build and test on windows-latest runner on every push/PR.
Website SEO: Added robots.txt, sitemap.xml, llms.txt, and CNAME for custom domain.
Fixed
TUI duplicate key events on Windows: Added KeyEventKind::Press filter to prevent crossterm from firing handlers twice (Press + Release) on Windows.
Database path resolution on Windows: Replaced HOME env var (Unix-only) with the home crate for cross-platform home directory lookup.
Install repolyze 0.1.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/maximgorbatyuk/repolyze/releases/download/v0.1.5/repolyze-installer.sh | sh
Git Tools menu: New top-level TUI screen with two branch-cleanup tools — "Remove merged branches" (deletes local+remote branches already merged into a chosen base branch) and "Remove stale branches" (deletes branches with no activity for N days). Includes repo picker for multi-repo workspaces, branch listing with local/remote indicators, confirmation before deletion, and progress screen with per-branch success/failure status. Protected branches (main, master, dev, develop, production, etc.) are never deleted.
User effort deep-dive: New analyze user-effort --email <email> CLI subcommand and "User effort" TUI view. Shows per-contributor metrics: first/last commit dates, most/least active weekday with commits-per-day, average commits/files/lines per day and per commit, and top 3 file extensions by touch count. TUI includes a filterable contributor picker with type-to-search.
File extension tracking: ContributorStats now records a file_extensions map (BTreeMap<String, u64>) counting files touched per extension. Populated during Git log parsing and merged across repositories.
Contributor picker screen: TUI UserSelect screen lets users search/filter contributors by email or name, then select one for the user effort view. Supports keyboard navigation and scroll clamping.
Changed
Renamed UsersContribution → Contribution: CLI view enum, model type, analytics builder, table renderer, and all constants renamed from UsersContribution/users_contribution to Contribution/contribution for brevity. CLI subcommand is now analyze contribution.
Schema version bumped to 3: Invalidates cached snapshots from v0.1.3 to pick up the new file_extensions field.
Analysis elapsed time stored: AppState now tracks analysis_elapsed for use in TUI report headers.
Website redesign: docs/index.html refactored with external style.css, new OG image (og.svg), and updated layout.
Infrastructure
repolyze-git::branches module: list_merged_branches, list_stale_branches, delete_branches functions with protected-branch guard and origin-only remote support
BranchInfo and DeleteResult types for branch listing and deletion reporting
GitToolsState and GitToolsMode in TUI app state with menu/input/progress screen management
UserEffortData model type with Display impl
get_contributor_emails() builder in analytics for populating the contributor picker
render_user_effort_table() in report crate using key-value plain table format
MergedContributor extended with name, file_extensions, first_commit, last_commit fields for cross-repo merging
Install repolyze 0.1.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/maximgorbatyuk/repolyze/releases/download/v0.1.4/repolyze-installer.sh | sh
Activity heatmap: GitHub-style contribution grid showing daily commit activity over the past 52 weeks. Available as a standalone TUI view, included in the Full report, and rendered in Markdown output using Unicode block characters (·░▒▓█). Color-coded legend shows concrete commit-count ranges computed from the data.
Repository comparison report: New "Compare repositories" view (5th TUI menu item, shown only for multi-repo workspaces). Renders three tables: top 3 most active repos by commits/day, top 3 least active, and per-weekday top 3 rankings. Included in Full report as section #4 when analyzing multiple repos.
commits_by_date tracking: New BTreeMap<String, u32> field on ContributorActivityStats counting commits per calendar date. Drives the heatmap grid and is serialized into the SQLite cache payload.
date_util module (repolyze-core): Date arithmetic without chrono — parse_ymd, day_of_week (Sakamoto), add_days (Julian Day Number), format_ymd, month_abbrev, today_ymd, to_jdn.
Dynamic loading spinner: TUI analysis runs on a background thread with animated braille spinner (⠁⠉⠙⠸⠰⠴⠦⠇). Event loop uses non-blocking poll(100ms) instead of blocking read_event(), keeping the UI responsive during analysis.
Scrollable report view: Analyze screen supports j/k/arrow key scrolling. Paragraph renders without wrapping for exact line-count height, fixing clipped content on long reports.
Workspace probe on Analyze menu: Shows current folder path and mode (single repository / multi-repository with repo count) before the view selection menu.
Report headers with folder and mode: Analysis header now includes Folder: and Mode: lines between Projects: and Elapsed:.
Section headers and descriptions: Each report section (Users contribution, Activity, Heatmap, Compare) includes a title and one-line description. Full report uses numbered headers (#1, #2, #3, #4).
Heatmap period display: Shows YYYY-MM-DD .. YYYY-MM-DD range above the heatmap grid in both TUI and Markdown.
Changed
Activity table column abbreviations: Headers shortened from Avg commits/day (best day) to C/D (best), etc. Legend block explains each abbreviation. Reduces table width from ~120 to ~65 chars.
"Most active week day" removed from Users contribution table: Column dropped from model, renderer, store record, and all tests. The data remains available in the Activity table.
Menu renamed: "All (full report)" renamed to "Full report".
Schema version bumped to 2: Invalidates cached snapshots from v0.1.2, forcing re-analysis to populate commits_by_date.
Compare repositories table format: Uses project-standard render_plain_table with dash separators and right-aligned numbers instead of ad-hoc indented lists.
Fixed
TUI wrapping caused clipped heatmap rows: Removed Paragraph::wrap() from Analyze screen. Fixed-width content (tables, heatmap) now clips at terminal edge instead of wrapping into garbled multi-line rows.
Scroll clamping was byte-based: Previous height estimation counted UTF-8 bytes instead of display columns, causing scroll to stop before the bottom of the report.
Store open failure path: compute_analysis returns a proper error message instead of encoding error state as a failure_count hack.
Infrastructure
HeatmapData type with legend_labels() method for computing commit-count ranges from max_count
RepoComparisonRow type and build_repo_comparison() builder in repolyze-core::analytics
render_repo_comparison_table() and render_heatmap_section() in repolyze-report
WorkspaceInfo struct and ProbeWorkspace action in TUI app state
AnalysisCompletion struct for background thread communication via mpsc::channel
Constants HEATMAP_MAX_WEEKS, DAYS_IN_WEEK replace magic numbers in grid dimensions
to_jdn deduplicated from analytics into date_util as single public function
Install repolyze 0.1.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/maximgorbatyuk/repolyze/releases/download/v0.1.3/repolyze-installer.sh | sh