Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

WUF Unifies Footprints

PyPI Latest Release Pepy Total Downloads GitHub License

Wuf shows local Git and filesystem timestamp activity as a representative Monday-to-Sunday week or an exact chronological timeline. It makes work patterns visible and marks events outside your intended working hours without pretending that timestamps are hours worked.

Wuf terminal output

Wuf is local, terminal-only, and currently alpha.

Install

pip install wuf
wuf --help

For an isolated installation, use uv tool install wuf or pipx install wuf. Standalone archives are available from GitHub Releases.

Wuf is the new name of Workfold. The transitional workfold package and command continue to invoke Wuf, but new installations and configuration should use wuf.

Start with your current week

Run Wuf inside a Git repository:

wuf

The default view uses commit author timestamps from local branches, the current ISO week, your operating system's timezone, and working hours of Monday-Friday 08:00-16:30.

Common variations are deliberately composable:

wuf ~/code/project -t 2w3d
wuf -t 2026-W31
wuf -p fs
wuf -p both -t 2w
wuf -p portable -t all
wuf -e git:tag:tagger fs:file:modified
wuf --view timeline -t 2w
  • -t/--time chooses the period.
  • -p/--profile chooses a named event set.
  • -e/--events replaces the profile with exact event selectors.
  • --view timeline shows exact chronological events instead of folding them.

Profiles include git, fs, both, portable, and full. They change only which timestamp kinds are selected—not the time period, Git reachability, or filesystem ignore policy.

Set your schedule

wuf --hours 'Mo-Thu 08:00-16:30; Fr 08:00-14:00'
wuf --hours 'Mo-Fr 08:00-12:00,13:00-16:30'
wuf --hours all

Use --timezone Europe/Berlin or another IANA zone when local time is not the desired reference.

Save your defaults

Add a wuf.toml to a project, or use [tool.wuf] in pyproject.toml:

timezone = "Europe/Berlin"
hours = "Mo-Thu 08:00-16:30; Fr 08:00-14:00"
profile = "portable"
grid = "vertical"
hide-empty-days = ["weekend"]

Personal defaults may live in the platform configuration directory. Inspect the effective values and where each came from with:

wuf --show-config

What the chart means

Each marker is a discrete timestamp observation, not a work session. Git history can be rewritten, reflogs can expire, and filesystem metadata is a mutable snapshot. Wuf reports incomplete or unsupported collection rather than silently inventing evidence.

Collection stays local: Wuf does not contact GitHub, GitLab, or another remote service.

Documentation

Run wuf --help for the complete option and event-selector reference for your installed version.

Download files

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

Source Distribution

wuf-0.1.0a9.tar.gz (324.8 kB view details)

Uploaded Source

Built Distribution

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

wuf-0.1.0a9-py3-none-any.whl (262.6 kB view details)

Uploaded Python 3

File details

Details for the file wuf-0.1.0a9.tar.gz.

File metadata

  • Download URL: wuf-0.1.0a9.tar.gz
  • Upload date:
  • Size: 324.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wuf-0.1.0a9.tar.gz
Algorithm Hash digest
SHA256 194b7821372b8f8e87a5996ae1b17769548a5476b65335a550519f72e4a97996
MD5 9c006364cc5f83d0156751096db43ae3
BLAKE2b-256 693e0a2b6bba1e3e76c136f00f8bbcc519ff57dbeb17af4ff969188e17d0032a

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuf-0.1.0a9.tar.gz:

Publisher: release.yml on janthmueller/wuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuf-0.1.0a9-py3-none-any.whl.

File metadata

  • Download URL: wuf-0.1.0a9-py3-none-any.whl
  • Upload date:
  • Size: 262.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wuf-0.1.0a9-py3-none-any.whl
Algorithm Hash digest
SHA256 cd9b68b249397c83eb7acd1d54940f42b9feaaf6157d357322f84675743b46cc
MD5 b511a8ca362246a282d54495dcd51971
BLAKE2b-256 06ef2d39b97facfcb81da6afc59cee0fcf4820943f049eb6cf2fb48155c8130b

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuf-0.1.0a9-py3-none-any.whl:

Publisher: release.yml on janthmueller/wuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0a9 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page