Terminal UI for inspecting GitHub Actions logs
Project description
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
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file action_aperture-0.1.0.tar.gz.
File metadata
- Download URL: action_aperture-0.1.0.tar.gz
- Upload date:
- Size: 44.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c88e4ce74f3a4bb1cdfe63c3b1c83ead3af5d323699621d6c99d491adeee417
|
|
| MD5 |
b3e2f3b9521bd873e56c014370735f70
|
|
| BLAKE2b-256 |
3afee3e2e8fd6f5a538970f46169ac9746db640e4edff19656b399b08bba7ec2
|
File details
Details for the file action_aperture-0.1.0-py3-none-any.whl.
File metadata
- Download URL: action_aperture-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f57e049909d4969a660dc8f6abd47d819469351eba69e2a1050c582ead2a12d1
|
|
| MD5 |
c1ffa1862ac2c3d0d67e4f23603594c7
|
|
| BLAKE2b-256 |
1719b0cf29a6d1b0c674bb931a9d0eae5923c020fe96fd821619f59f0f847d62
|