- Still working your way through that first ☕️, and can't remember where you left off yesterday? (It's even worse on a Monday, trying to remember where Friday took you.)
- Backlogs are both Planning and Tracking tools. When work isn't explicitly planned, we can DRY up the tracking by using the commit itself to fill in a lot of the blanks.
yday provides a semantic analysis of your recent git activity across all repositories, with smart time windows and multiple views to answer the question: "What have I been working on?"
Anyone who works in multiple repos and juggles multiple projects.
yday analyzes git commits across your workspace and provides semantic summaries of recent development work. It:
- gathers commits across multiple repos (e.g. everything in a
~/workspacefolder) - summarizes meaningful chunks of work across commits
- offers multiple contextual views of your work (e.g. Alaistair timeline, Monday morning shows Friday's work (not Sunday's nothing)
- TK retroactively adds unplanned work to your backlog based on commits without tickets ("shadow work")
npm install -g ydaygit clone https://github.com/discoveryworks/yday.git && cd yday
npm install # Install dependencies
node bin/yday --helpRunning yday on a Monday might return
## Git Repository Activity in `~/workspace` (yesterday, Friday July 05)...
| Repo | Commits | Summary |
|---------------------|---------|-----------------------------------|
| my-app | 4 | Building authentication system |
| my-app-ios | 2 | Integrate authentication system |
| api-service | 1 | Fixing database connection issue |
| docs-site | 3 | Updating deployment guide |
See https://alastairjohnston.com/projects-the-alastair-method/ for more on the Alastair Method.
yday --alastair
| MTWRFSs | Project | Commits |
| ------- | ----------- |---------|
| ··3·1·· | my-app | 4 |
| ··2···· | my-app-ios | 2 |
| ···1··· | api-service | 1 |
| ·1·2··· | docs-site | 3 |yday -a --symbols
| MTWRFSs | Project | Commits |
| ------- | ----------- |---------|
| ··/·x·· | my-app | 4 |
| ··/···· | my-app-ios | 2 |
| ···/··· | api-service | 1 |
| ·/·/··· | docs-site | 3 |By default, yday scans ~/workspace for git repositories. Set a different path:
yday --parent ~/codeData gets pretty hinky here; be careful to protect features with unit tests.
npm test # Unit tests (Jest)
npm run test:bdd # BDD/Integration tests (Cucumber)
npm run test:all # All tests
# Individual tests
npm test -- tests/unit/timeline-date-parsing.test.js
npm run test:bdd -- features/user_workflows.featureFollow these steps to release a new version:
# Ensure tests pass
npm test
# Review git status and commit any pending changes
git status
git add .
git commit -m "feat: your changes here"# Update CHANGELOG.md with new features, fixes, and breaking changes
# Follow the existing format and semantic versioning guidelines
# Test the changes work as expected
./bin/yday -a --verbose# Bump version following semantic versioning
npm run version:patch # for bug fixes (0.2.1 → 0.2.2)
npm run version:minor # for new features (0.2.2 → 0.3.0)
npm run version:major # for breaking changes (0.2.2 → 1.0.0)git push # Push commits
git push --tags # Push version tagnpm publish # Publish to npm registry
npm view yday # Verify successful publication# Create release with changelog notes
gh release create v0.2.2 --title "v0.2.2: Feature Description" --notes "Release notes here"
# Or create manually at: https://github.com/discoveryworks/yday/releases# Test fresh installation
npm install -g yday@latest
yday --version # Should show new version
yday -a # Test functionalityShort for "yesterday" - the tool started as a quick way to check recent work. The name feels right even for yday --today because it's fundamentally about retrospective analysis of development work.