Skip to main content

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.

Preview

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 gh CLI 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

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/k or /: Navigate jobs
  • /: Switch between log sections
  • t/T: Cycle through sections forward/backward
  • u/d: Page up/down in logs
  • Enter: Refresh current job

Views

  • F: Toggle fullscreen detail view
  • c: Copy current log section to clipboard

General

  • r: Refresh jobs list
  • Esc: Go back / Exit
  • q: 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:

  1. Create a new parser class in src/aperture/parsers/
  2. Inherit from LogParser base class
  3. Implement detection and parsing logic
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

action_aperture-0.2.0.tar.gz (45.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

action_aperture-0.2.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file action_aperture-0.2.0.tar.gz.

File metadata

  • Download URL: action_aperture-0.2.0.tar.gz
  • Upload date:
  • Size: 45.4 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for action_aperture-0.2.0.tar.gz
Algorithm Hash digest
SHA256 634151821a9e968bcc18102f1963a119ab5c3a60bcb344300582ffda9b42792c
MD5 2de8b921d5d75da9e94fc95695f5e657
BLAKE2b-256 b2a6cab2070beb4a92a9fe5336e49169c5d9691ad8029937a5ee5386cd0b6aa9

See more details on using hashes here.

File details

Details for the file action_aperture-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: action_aperture-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for action_aperture-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c97b1234dcb70de69cc8c3d25c46c75bf46460d831b3ccacb0198c562a67ecfe
MD5 6059a09306f19da4ab0577c92aa2550f
BLAKE2b-256 b0a0f036737cd660a26ebe455152d6b8ab43c54a29f3e587b7100006c7312a09

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page