import subprocess import os import sys # Define the issues to create based on ROADMAP.md missing/partially done items. ISSUES = [ ("PDF: Preview PDF before final save", "Show a preview or summary dialog before the PDF is fully committed to disk."), ("PDF: Compare generated PDFs against known-good samples", "Add visual or byte-comparison tests to ensure PDF rendering doesn't drift."), ("PDF: Validate week/date placement", "Add validation that the week date ranges are accurately placed inside the generated PDF fields."), ("PDF: Validate total hours calculation", "Add backend validation to verify that total hours printed in the PDF are mathematically correct."), ("PDF: Warn if total hours are not 40", "Add total-hours validation and user-facing warnings when generating timesheets that do not sum to exactly 40 hours."), ("PDF: Support PTO, sick, holiday, and blank days", "Timesheet grid assumes default hours and lacks distinct categories. Add support for PTO, sick, holiday, and blank days."), ("PDF: Open generated PDF after creation", "Provide an option or automatic behavior to open the PDF in the default viewer immediately after generating."), ("Email: Preview email before draft creation", "Display the email body and recipients before launching Outlook."), ("Email: Saved manager recipient", "Allow saving the manager's email address in settings so it populates automatically."), ("Email: Saved email templates", "Add Outlook email template body customization in Settings."), ("GUI: One-click generate this week's timesheet", "Add a quick-action button to generate the current week's timesheet with a single click."), ("GUI: Duplicate previous week", "Add functionality to clone the hours and projects from the previous week's timesheet."), ("GUI: Better success screen", "Improve the UI feedback shown after a successful generation."), ("GUI: Dark-mode friendly UI", "Ensure the UI colors and styling are properly adapted for macOS dark mode."), ("Data: Add ~/.timesheet/history.json configuration", "History tracking is currently using `.state/history.json`. Move this to a user-local `~/.timesheet/history.json` path."), ("Data: Track generated PDF metadata", "Track generated PDF path, week range, total hours, created_at, and email mode in the history JSON."), ("DevOps: Local / Gitea Validation Pipeline", "Lacks git pre-commit hooks and Gitea/Woodpecker pipeline configurations for running tests and pyright."), ("Dev: Split large GUI files into smaller controllers", "Further decomposition of large GUI panels and controllers into smaller, more maintainable modules."), ("Dev: Add tests for manage.sh", "Add test coverage for the command-line menu tool `manage.sh`."), ("Dev: Add app versioning", "Implement dynamic/git tagging and formal app versioning (currently only basic versioning exists)."), ("Dev: Add About dialog", "Add an About dialog in the GUI with version and author info."), ("Dev: Add release notes", "Create a process for generating and displaying release notes on updates."), ("Dev: Improve project structure", "Clean up helper scripts and organize the project root structure better.") ] SCRIPT_PATH = "./scripts/create-issue.sh" def main(): if not os.path.exists(SCRIPT_PATH): print(f"Error: Could not find {SCRIPT_PATH}. Run this from the repository root.") sys.exit(1) success_count = 0 for title, body in ISSUES: print(f"Creating issue: {title}") result = subprocess.run([SCRIPT_PATH, title, body], capture_output=True, text=True) if result.returncode == 0: print(result.stdout.strip()) success_count += 1 else: print(f"FAILED to create issue: {title}") print(result.stderr.strip()) print(f"\nFinished! Created {success_count} out of {len(ISSUES)} issues.") if __name__ == "__main__": main()