Commit graph

55 commits

Author SHA1 Message Date
10ccd6fce0 feat: add CalendarEventBuilder with shared event/transport logic 2026-04-10 22:46:20 +02:00
839abe6cf4 refactor: GoogleCalendarService implements ICalendarService, uses CalendarEventBuilder (stub)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 22:44:32 +02:00
8c765e4d49 refactor: temporarily rename old IGoogleCalendarService to IOldGoogleCalendarService to avoid naming conflict with new marker interface
This temporary change is necessary because the new ICalendarService interfaces
(IGoogleCalendarService, INextcloudCalendarService) now exist as marker interfaces.
The old interface will be fully removed in Task 4 when GoogleCalendarService is
refactored to implement the new ICalendarService contract.
2026-04-10 22:41:01 +02:00
bf77dff5ef feat: add ICalendarService interface and marker interfaces 2026-04-10 22:40:58 +02:00
b72e9b073c feat: add CalendarInfo shared DTO, retire GoogleCalendar
Creates the new CalendarInfo shared DTO to replace GoogleCalendar with a more
generic name suitable for both Google Calendar and Nextcloud CalDAV integration.
Updates client-side references to use CalendarInfo instead of GoogleCalendar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 22:37:16 +02:00
a36530b976 chore: upgrade all projects to net10.0 2026-04-10 22:34:52 +02:00
5a34965667 chore: add .worktrees to .gitignore 2026-04-10 22:33:04 +02:00
31464fe0f7 Add Nextcloud calendar sync implementation plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 22:31:41 +02:00
43395235e2 Add design spec for Nextcloud CalDAV calendar sync
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 17:24:22 +02:00
Copilot
71717cccc1
Fix timezone offset calculation to respect DST for target dates (#59)
* Initial plan

* Fix timezone offset calculation and add tests

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
2025-10-04 16:22:29 +02:00
Copilot
252e588375
Refactor export API calls to pass only month/year instead of full data (#56)
* Initial plan

* Implement cleaner API calls for export methods

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* 4 icons per row

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-10-04 15:27:13 +02:00
Claudio Schaad
f2b0051183
New shifts (#57)
* Add new icons for shifts

* add to project
2025-10-04 15:05:37 +02:00
Copilot
335fe9821b
Improve loading speed with parallel transport calls and non-blocking UI (#52)
* Initial plan

* Implement parallel transport loading and non-blocking UI improvements

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
2025-10-04 14:37:10 +02:00
Claudio Schaad
fddca4e833
Begin pdf with the right position (#54) 2025-09-27 12:20:39 +02:00
Claudio Schaad
6f73aca3f6
Fix month selection (#53)
* Clear old shifts when switching

* Start with monday
2025-09-27 11:34:21 +02:00
Claudio Schaad
a341a5fec0
Fix google calendar time zone (#50) 2025-09-06 21:47:47 +02:00
Claudio Schaad
28429d78d0
Fix finding best connection (#49)
* Log and fix connection

* Update Services/TransportConnectionCalculator.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update Services/TransportConnectionCalculator.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update Services/TransportConnectionCalculator.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* better logging

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-06 21:14:44 +02:00
Copilot
5103aecacf
Add Google Calendar integration with direct sync functionality and rate limiting protection (#45)
* Initial plan

* Implement Google Calendar integration with sync button and calendar selection

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Add Google Calendar sync documentation and finalize implementation

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix build errors

* Fix Google Calendar rate limiting issues with retry logic and delays

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* optimize

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-09-06 16:47:48 +02:00
Copilot
3ed54f51ad
Fix emoji rendering in PDF (#48) 2025-09-06 14:39:29 +02:00
Claudio Schaad
a1f9f1313e
Fix find best connection with using of local date time offset (#46)
* Add logger
* Change strings to date time offset
* Fix logic for best connection
* Fix parsing shift times
* set time zone
2025-09-03 22:17:53 +02:00
3c01b33070 Fix tests 2025-08-30 10:21:26 +02:00
5a5902fefa Add logging for transport connection logic 2025-08-30 09:29:51 +02:00
f09f57c3dd UI changes 2025-08-30 09:06:17 +02:00
Claudio Schaad
8471138c06
Update copilot-instructions.md 2025-08-30 08:37:23 +02:00
Copilot
7e556b852c
Add comprehensive README.md with application overview, features, setup instructions, and screenshots (#43)
* Initial plan

* Add comprehensive README.md with features, configuration, and setup instructions

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Add shift calendar screenshot after login screen in README

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Update README.md

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <clayschaad@users.noreply.github.com>
2025-08-30 08:32:23 +02:00
034b1e3edd UI optimization 2025-08-29 20:58:58 +02:00
Copilot
1493c459bd
Implement responsive mobile/desktop UI layout for shift scheduler (#38)
* Initial plan

* Implement responsive mobile/desktop UI layout

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Clean up demo files and finalize mobile UI implementation

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix desktop calendar week grouping to properly start weeks on Monday and end on Sunday

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Remove button for shift delete

* Fix desktop week grouping to start weeks on Monday instead of grouping consecutive days

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* UI improvements

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-08-29 20:41:25 +02:00
a9c5937ce4 Cleanup selection of month/year 2025-08-28 20:15:07 +02:00
Copilot
7f8b2c4b8c
Enhance shift handling: Move storage to file system and add month selection (#36)
* Initial plan

* Initial setup: Downgrade .NET version to 8.0 for compatibility

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Implement enhanced shift handling with file system storage and month selection

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Move component styles from global app.css to Index.razor.css for proper component isolation

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
2025-08-28 19:47:12 +02:00
Copilot
497379f62b
Save shifts and transport configurations in external files for Docker persistence (#31)
* Initial plan

* Implement external configuration file persistence for Docker containers

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Add Docker documentation and finalize external config implementation

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Delete the files

* Adapt gitignore

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-08-28 18:57:15 +02:00
Copilot
1f7df973c1
Fix invalid ICS and PDF export returning validation errors as file content (#33)
* Initial plan

* Fix client-side export error handling and identify validation root cause

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Complete fix for invalid ICS and PDF export issue

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
2025-08-28 18:48:00 +02:00
Copilot
e8db13191e
Add Google OAuth authentication with configurable authorized emails (#29)
* Initial plan

* Add Google authentication with authorized email configuration

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Complete Google authentication implementation with documentation

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix CORS error by removing [Authorize] from auth user endpoint

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Add authorization attribute to ConfigurationController for security

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix JavaScript error in login button by correcting window.location.href usage

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix Google OAuth redirect URI configuration to resolve authentication error

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix OAuth state validation error by specifying authentication scheme in callback

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix OAuth state validation error by improving authentication configuration

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix authentication setup documentation with correct redirect URI

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix navigation buttons overlapping with authentication header

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Remove unused unsing

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-08-27 21:18:50 +02:00
Claudio Schaad
d5b123bbd9
Expand coding standards and guidelines section 2025-08-27 15:00:36 +02:00
Copilot
7d8e40b9cf
Add Configuration UI for Transport and Shift Settings with Import/Export (#27)
* Initial plan

* Complete configuration UI implementation with working dialog, API endpoints, and file import/export

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Refactor to inject IConfigurationService directly instead of using factory singletons

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Remove redundant ShiftService and use IConfigurationService directly

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
2025-08-26 17:17:09 +02:00
Copilot
73abfac988
Implement caching for transport connection results with IMemoryCache (#26)
* Initial plan

* Implement caching for transport connection results with IMemoryCache

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Change cache duration from minutes to days

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Implement CachedTransportService design with interface separation

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Implement persistent file-based cache to survive application restarts

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Revert persistent file-based cache implementation, restore IMemoryCache usage

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Code cleanup

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-08-25 21:15:13 +02:00
Copilot
68e2fa4927
Optimize Transport Connection Selection with Enhanced Timing Logic (#24)
* Initial plan

* Implement enhanced transport connection optimization logic

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Add configuration for new transport optimization parameters and complete implementation

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Address PR feedback: remove comments, old logic, and unnecessary tests

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix looking for connection

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: clayschaad <c.schaad@pog.ch>
2025-08-23 20:16:04 +02:00
Claudio Schaad
f5387e7b41
Cleanup transport service (#22) 2025-08-23 19:16:40 +02:00
Copilot
991dd5f623
Add comprehensive unit tests for TransportService with xUnit and Shouldly, plus CI/CD automation (#21)
* Initial plan

* Add comprehensive TransportService unit tests with xUnit and Shouldly

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Add comprehensive edge case tests for TransportService

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Add GitHub Actions CI workflow for automated testing

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
2025-08-23 15:37:08 +02:00
Copilot
a25d8f1cc2
Add PNG icon support for shift types (#18)
* Initial plan

* Add PNG icon support for shifts with sample coffee cup icon

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Add more icons

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-08-21 23:09:45 +02:00
d26b3319b9 UI Improvements 2025-08-21 20:44:56 +02:00
Copilot
2530e729ce
Implement transport time improvements: departure station display and break time logic (#17)
* Initial plan

* Implement transport time improvements: departure station display and break time logic

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Enhance code

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-08-21 20:04:53 +02:00
Copilot
45fa364368
UI improvements: Add month to title, remove sidebar, move buttons to top navigation, show shift times (#14)
* Initial plan

* Complete UI improvements: add month to title, remove sidebar, move buttons to top, show shift times, add loading spinner

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Move action buttons to top navigation level as requested

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Some ui changes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-08-21 17:38:07 +02:00
Copilot
b41d8d6b36
Fix PDF export filename: Add .pdf extension to downloaded files (#13)
* Initial plan

* Fix PDF export filename: use JavaScript download with proper .pdf extension

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Remove test PDF file from repository

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Add year and month

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-08-21 16:41:14 +02:00
Copilot
2dc437ac9c
Add real-time SBB transport integration with enhanced UI feedback and improved timing logic (#2)
* Initial plan

* Initial project setup - update to .NET 8.0 for compatibility

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Complete SBB transport integration implementation

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Revert to .NET 9 and separate transport info into ShiftTransport class

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Make safety buffer minutes configurable via appsettings

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Migrade pdf export service

* Update gitignore

* Implement new approach: real-time transport data per shift selection with ShiftWithTransport view model

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Refactor export methods to directly use ShiftWithTransport instead of converting to separate parameters

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Move ShiftWithTransport class to its own file

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Code cleanup

* Fix transport timing logic to respect safety buffer and find best available connections

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: clayschaad <c.schaad@pog.ch>
Co-authored-by: Claudio Schaad <clayschaad@users.noreply.github.com>
2025-08-19 22:08:59 +02:00
Copilot
e275cbd240
Add reset button with proper styling and improve export button appearance (#8)
* Initial plan

* Initial plan for reset button implementation

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Implement reset button with styling and export button improvements

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Remove code comments and clean up .deb file

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
2025-08-19 06:34:29 +02:00
Claudio Schaad
ac6f471511
Update copilot-instructions.md
fix formatting
2025-08-19 06:28:00 +02:00
Claudio Schaad
6267c01fc8
Update copilot-instructions.md
common instructions
2025-08-19 06:27:21 +02:00
Copilot
76a1531729
Implement localStorage persistence for shift selections (#6)
* Initial plan

* Fix .NET framework version compatibility from 9.0 to 8.0

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Implement localStorage persistence for shift selections

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Restore .NET 9.0 version and update Index.razor.cs per feedback

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Fix compilation error by making EditMonth and EditYear instance variables

Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>

* Minor changes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
Co-authored-by: Claudio Schaad <c.schaad@pog.ch>
2025-08-18 19:40:52 +02:00
Claudio Schaad
0aebab3d38
Add comprehensive GitHub Copilot instructions for ShiftScheduler development
Add comprehensive GitHub Copilot instructions for ShiftScheduler development
2025-08-18 17:52:18 +02:00
78678033f9 Enhance PDF 2025-08-18 17:35:31 +02:00