Action Aperture 🔍
Action Aperture is a terminal-based UI (TUI) for inspecting and analyzing GitHub Actions logs. View test results, warnings, coverage reports, and raw logs in an intuitive, keyboard-driven interface.
Features
- 📊 Intelligent Log Parsing: Automatically detects and parses different log formats
- 🧪 Pytest Support: Built-in parser for pytest logs with slowest tests, warnings, and coverage
- 🚀 Fast Navigation: Keyboard shortcuts for quick browsing through workflows, runs, and jobs
- 📋 Copy to Clipboard: Easily copy log sections for sharing or further analysis
- 🔌 Extensible: Plugin-based architecture for adding support for more log types
- 💻 GitHub CLI Integration: Uses
ghCLI for seamless GitHub Actions access
Installation
Using uv (recommended)
uv tool install action-aperture
Or skip install entirely with:
uvx --from action-aperture actap
From source
gh repo clone williambdean/action-aperture
cd action-aperture
uv tool install .
Prerequisites
- Python 3.10+
- GitHub CLI (
gh) installed and authenticated
Usage
Basic Usage
Launch the TUI in the current repository:
actap
Specify a repository:
actap owner/repo
Advanced Options
Open a specific workflow run:
actap --run-id 123456789
actap --run-url https://github.com/owner/repo/actions/runs/123456789
Pre-select a specific job:
actap --run-id 123456789 --job-id 987654321
Environment Variables
Set a default repository with the APERTURE_REPO environment variable:
export APERTURE_REPO=owner/repo
actap
Keyboard Shortcuts
Navigation
j/kor↑/↓: Navigate jobs←/→: Switch between log sectionst/T: Cycle through sections forward/backwardu/d: Page up/down in logsEnter: Refresh current job
Views
F: Toggle fullscreen detail viewc: Copy current log section to clipboard
General
r: Refresh jobs listEsc: Go back / Exitq: Quit application
Supported Log Parsers
Pytest (Built-in)
Automatically detects pytest test logs and extracts:
- Slowest Tests: Duration analysis for optimization
- Warnings: Summary of all warnings
- Coverage: Test coverage reports
- Raw Logs: Full unprocessed output
Future Parsers
Action Aperture is designed to support multiple log formats. Planned additions include:
- ESLint/Prettier logs
- TypeScript compiler output
- Ruff/mypy linting results
- Release logs
- Custom workflow logs
Contributing
We welcome contributions! To add a new log parser:
- Create a new parser class in
src/aperture/parsers/ - Inherit from
LogParserbase class - Implement detection and parsing logic
- Register in
src/aperture/parsers/__init__.py
See src/aperture/parsers/pytest.py for a complete example.
Development
Setup
gh repo fork williambdean/action-aperture
cd action-aperture
uv sync
Running from source
uv run python -m aperture.tui
Linting
uvx ruff check .
uvx ruff format .
License
MIT License - see LICENSE file for details.
Credits
Built with Textual by Will McGugan.
Metadata
Release files for action-aperture 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| action_aperture-0.2.0.tar.gz | 45.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| action_aperture-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.1 kB
Release files / action_aperture-0.2.0.tar.gz
| Download URL | action_aperture-0.2.0.tar.gz |
|---|---|
| Size | 45.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
634151821a9e968bcc18102f1963a119ab5c3a60bcb344300582ffda9b42792c
|
|
BLAKE2b-256 checksum How to use checksums |
b2a6cab2070beb4a92a9fe5336e49169c5d9691ad8029937a5ee5386cd0b6aa9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / action_aperture-0.2.0-py3-none-any.whl
| Download URL | action_aperture-0.2.0-py3-none-any.whl |
|---|---|
| Size | 19.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c97b1234dcb70de69cc8c3d25c46c75bf46460d831b3ccacb0198c562a67ecfe
|
|
BLAKE2b-256 checksum How to use checksums |
b0a0f036737cd660a26ebe455152d6b8ab43c54a29f3e587b7100006c7312a09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|