Skip to content

Conversation

@gjovanovicst
Copy link
Owner

Pull Request

Description

Prepare the 1.7.0 release by updating all version references, refreshing the primary action button labels (“Start Work”, “End Work”, “Take a Break”, “Resume Work”) along with related prompts/logging, updating the About dialog to the new version and year, and introducing a reusable scripts/bump_version.py helper for future version bumps.

Related Issues

Closes #N/A

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Code refactoring
  • Performance improvement
  • Test addition or update

Changes Made

  • Updated application metadata, documentation, and templates to version 1.7.0
  • Renamed the main window control buttons to match the new workflow terminology
  • Aligned confirmation dialogs, warnings, logging, and the About dialog with the new wording/year
  • Added scripts/bump_version.py to automate future version updates (supports --dry-run, --current, --skip-roadmap)

Testing Performed

Describe the testing you've done:

  • Manual testing
  • Unit tests added/updated
  • Integration tests added/updated
  • All existing tests pass

Test Results

python main.py
Application launched successfully; exit code 0

Screenshots (if applicable)

N/A

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published
  • I have updated the CHANGELOG.md file

Additional Notes

The new bump script streamlines future releases; run python scripts/bump_version.py <new_version> with the available flags as needed.

Breaking Changes

None.

* Introduce datetime compatibility utilities for Python 3.6 support.
* Replace instances of datetime.fromisoformat with the new compatibility function across the codebase.
* Ensure consistent date handling in various modules including action history, data aggregation, and validation.
* Updated version references across all relevant files
* Enhanced bug report template with new version
* Adjusted changelog, README, and project overview for version 1.7.0
* Updated startup scripts and technical specifications
* Added utility script for version bumping
* Changed button text from "Start Day" to "Start Work"
* Changed button text from "End Day" to "End Work"
Copilot AI review requested due to automatic review settings October 22, 2025 00:23
@gjovanovicst gjovanovicst merged commit 15ba3dd into main Oct 22, 2025
1 of 16 checks passed
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR updates the Worklog Manager application to version 1.7.0, introducing Python 3.6 compatibility by adding a datetime compatibility layer and refreshing UI terminology from "Start Day/End Day/Stop/Continue" to "Start Work/End Work/Take a Break/Resume Work". A new version bump script automates future version updates across all project files.

Key Changes

  • Added utils/datetime_compat.py to provide fromisoformat() support for Python 3.6
  • Replaced all datetime.fromisoformat() calls with the compatibility wrapper
  • Updated button labels and confirmation dialogs to use new workflow terminology
  • Introduced scripts/bump_version.py to automate version bumps across documentation and code

Reviewed Changes

Copilot reviewed 26 out of 27 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
utils/datetime_compat.py New compatibility module for Python 3.6 datetime parsing
utils/validators.py Updated to use datetime compatibility wrapper
utils/init.py Import compatibility shim for early loading
main.py Version bump and compatibility import
gui/main_window.py Button label updates and version bump
gui/settings_dialog.py Added ttk.Spinbox compatibility for older Python versions
gui/system_tray.py Updated About dialog version and year
gui/components/break_tracker.py Replaced emoji with ASCII symbols for compatibility
data/database.py Updated to use datetime compatibility wrapper
core/*.py Updated to use datetime compatibility wrapper
exporters/csv_exporter.py Updated to use datetime compatibility wrapper
scripts/bump_version.py New utility script for version management
start_worklog.* Version bump to 1.7.0
docs/*.md Version bump to 1.7.0
ROADMAP.md Updated version sections
README.md Version badge update
CHANGELOG.md Version header update

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment on lines +85 to +95
if index == 4:
year, month, day, hour, minute, second, microsecond, tz = groups
return datetime(
int(year),
int(month),
int(day),
int(hour),
int(minute),
int(second),
int(microsecond.ljust(6, '0')[:6]),
)
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The same datetime construction logic is duplicated across multiple pattern handlers (indices 0, 2, 4, 6). Consider extracting this into a helper function to reduce code duplication.

Copilot uses AI. Check for mistakes.
Comment on lines +53 to +67
if index == 0:
year, month, day, hour, minute, second, microsecond, tz = groups
return datetime(
int(year),
int(month),
int(day),
int(hour),
int(minute),
int(second),
int(microsecond.ljust(6, '0')[:6]),
)

if index == 1:
year, month, day, hour, minute, second, tz = groups
return datetime(int(year), int(month), int(day), int(hour), int(minute), int(second))
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The timezone information extracted in groups for indices 0, 1, 4, 5 is captured but never used. Either parse and apply the timezone offset or remove it from the regex capture groups to clarify that timezone support is not implemented.

Copilot uses AI. Check for mistakes.

def bump_minor(version: str) -> str:
major, minor, patch = version.split(".")
return f"{int(major)}.{int(minor) + 1}.{int(patch)}"
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The function increments the minor version but does not reset the patch version to 0, which violates semantic versioning conventions. It should return f\"{int(major)}.{int(minor) + 1}.0\".

Suggested change
return f"{int(major)}.{int(minor) + 1}.{int(patch)}"
return f"{int(major)}.{int(minor) + 1}.0"

Copilot uses AI. Check for mistakes.
sys.path.insert(0, project_root)

# Import datetime compatibility for Python 3.6 support (must be imported early)
from utils.datetime_compat import datetime_fromisoformat, fromisoformat_compat # noqa: F401
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fromisoformat_compat import is unused in this file. Since the comment states this is imported early for compatibility reasons and utils/__init__.py already imports datetime_compat, remove the unused fromisoformat_compat import.

Suggested change
from utils.datetime_compat import datetime_fromisoformat, fromisoformat_compat # noqa: F401
from utils.datetime_compat import datetime_fromisoformat

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants