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 folds local Git and filesystem timestamp activity onto one representative Monday-to-Sunday week. It makes work patterns visible at a glance 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
  • -t/--time chooses the period.
  • -p/--profile chooses a named event set.
  • -e/--events replaces the profile with exact event selectors.

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.0a8.tar.gz (314.1 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.0a8-py3-none-any.whl (253.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: wuf-0.1.0a8.tar.gz
  • Upload date:
  • Size: 314.1 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.0a8.tar.gz
Algorithm Hash digest
SHA256 b936c809985fdad63e32c90361921d970e6f39806ced48b13ed363a121e621ed
MD5 94d9741f445789588441301968fa604f
BLAKE2b-256 f9a8ace3e9d8f11c27e6c245a63e49ea8cef0f657efabb093cec016348b53d80

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuf-0.1.0a8.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.0a8-py3-none-any.whl.

File metadata

  • Download URL: wuf-0.1.0a8-py3-none-any.whl
  • Upload date:
  • Size: 253.4 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.0a8-py3-none-any.whl
Algorithm Hash digest
SHA256 1cf9de715c475ddb0c62bd64dbbf2e0e499d5691a459b0bd24196f0f93559cd9
MD5 1ce15f88632450b6c2437a45a5cb0f88
BLAKE2b-256 6f5df2d37814f19aeb85536d47f1982ecd5e2a47703bbf6a89f46ce2f4449388

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuf-0.1.0a8-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.0a8 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