|
| 1 | +--- |
| 2 | +created: 2026-01-29T02:24 |
| 3 | +title: Add homebrew tap promotion section to monthly reports |
| 4 | +area: reports |
| 5 | +files: |
| 6 | + - scripts/generate-report.mjs |
| 7 | + - scripts/lib/markdown-generator.mjs |
| 8 | + - reports/ |
| 9 | +--- |
| 10 | + |
| 11 | +## Problem |
| 12 | + |
| 13 | +Monthly reports should include a section showing packages that have been promoted from the experimental-tap to the production-tap during the reporting period. This helps users discover newly production-ready packages. |
| 14 | + |
| 15 | +The section should: |
| 16 | + |
| 17 | +- Appear in monthly reports (not in command-line documentation) |
| 18 | +- List packages promoted during the month with descriptions |
| 19 | +- Include a link to http://github.com/ublue-os/homebrew-tap |
| 20 | +- Use specific wording: "Use `ujust bbrew` to browse and install these packages. Follow [the tap instructions] if you want to do it by hand." |
| 21 | + |
| 22 | +## Solution |
| 23 | + |
| 24 | +1. **Research promotions workflow:** |
| 25 | + - Identify how packages move from experimental-tap to homebrew-tap |
| 26 | + - Determine what commit messages/patterns indicate a promotion |
| 27 | + - Example: commit `bd381cf` (Jan 12, 2026) promoted antigravity-linux |
| 28 | + |
| 29 | +2. **Add data fetching to report generator:** |
| 30 | + - Query both experimental-tap and homebrew-tap repositories |
| 31 | + - Compare commits between taps to detect promotions |
| 32 | + - Filter commits by date range (report month) |
| 33 | + - Extract package names and descriptions from formulas/casks |
| 34 | + |
| 35 | +3. **Add markdown generation:** |
| 36 | + - Create new section in `scripts/lib/markdown-generator.mjs` |
| 37 | + - Format: "## Homebrew Tap Promotions" section |
| 38 | + - List promoted packages with bullet points |
| 39 | + - Include package descriptions from formula/cask files |
| 40 | + - Add footer with usage instructions and tap link |
| 41 | + |
| 42 | +4. **Integration:** |
| 43 | + - Wire up in `scripts/generate-report.mjs` |
| 44 | + - Position section after "Contributors" but before footer |
| 45 | + - Handle case where no promotions occurred (skip section or show "None this month") |
| 46 | + |
| 47 | +## Implementation Notes |
| 48 | + |
| 49 | +**Promotion Detection Strategy:** |
| 50 | + |
| 51 | +Option 1: GitHub API commits comparison |
| 52 | + |
| 53 | +- Fetch commits from both repos in date range |
| 54 | +- Look for new files added to homebrew-tap/Formula or homebrew-tap/Casks |
| 55 | +- Cross-reference with experimental-tap to confirm they existed there first |
| 56 | + |
| 57 | +Option 2: Commit message parsing |
| 58 | + |
| 59 | +- Look for specific commit patterns like "feat: promote X to main tap" |
| 60 | +- Simpler but less reliable if commit messages aren't consistent |
| 61 | + |
| 62 | +**Package Description Extraction:** |
| 63 | + |
| 64 | +- Parse Ruby formula files to extract `desc` field |
| 65 | +- Example: `desc "Antigravity application for Linux"` |
| 66 | +- Cache descriptions to avoid repeated parsing |
| 67 | + |
| 68 | +**Known Promotions (for testing):** |
| 69 | + |
| 70 | +- antigravity-linux (Jan 12, 2026 - commit bd381cf) |
| 71 | +- goose-linux (frequent updates, check if promotion or just updates) |
| 72 | +- linux-mcp-server (Jan 26, 2026 - commit 90a8c88) |
| 73 | + |
| 74 | +## Success Criteria |
| 75 | + |
| 76 | +- [ ] Report generator detects promotions from experimental to production tap |
| 77 | +- [ ] Promotions section appears in monthly reports when promotions occurred |
| 78 | +- [ ] Package descriptions accurately extracted from formula files |
| 79 | +- [ ] Section omitted or shows "None this month" when no promotions |
| 80 | +- [ ] Usage instructions and tap link included |
| 81 | +- [ ] Test with January 2026 report (known promotions: antigravity, linux-mcp-server) |
0 commit comments