Commit Graph

32 Commits

Author SHA1 Message Date
297091cb0e feat: Add Settings and Subjects screens with theme reveal functionality
- Implemented SettingsScreen for user preferences including theme selection, reminders, and notifications.
- Created SubjectsScreen to display subjects with upcoming lessons and associated details.
- Introduced ThemeReveal for a smooth transition between light and dark themes.
- Added support for managing notes and tasks related to subjects.
- Enhanced UI components for better user experience and accessibility.
2026-10-24 02:47:37 +03:00
416527fb33 feat: Update parser to handle lesson type after teacher's name and add corresponding tests 2026-10-23 22:14:00 +03:00
b9c1f63301 feat: Add skeleton loading UI components for various screens
- Implemented `Skeleton.kt` for loading placeholders in the app, including lesson cards, schedule, overview, and subjects.
- Introduced `Undo.kt` to manage undo actions with a snackbar interface.
- Created `WeekWidget.kt` for a widget displaying the week's schedule, including dynamic updates based on the current timetable.
- Added various splash animations in the `animator` directory for a smooth launch experience.
- Designed drawable resources for the widget and splash screen, including icons for city and room moves.
- Defined XML resources for widget configuration and photo paths.
2026-10-23 21:56:07 +03:00
a3df53713f feat: add travel and room alerts, live lesson notifications, and launcher shortcuts
- Implemented travel alerts for notifying about classes in another town the evening before.
- Added room alerts for notifying about room changes on the morning of the class.
- Introduced live lesson notifications to provide ongoing updates during classes.
- Created launcher shortcuts for quick access to today's schedule, weekly overview, search functionality, and adding new tasks.
- Updated settings to manage new notification preferences and integrated them into the user interface.
- Enhanced notification channels for better organization and user experience.
2026-10-23 01:38:06 +03:00
02e6404731 feat: enhance lesson plan handling with new parser and color-coded room assignments 2026-10-23 00:33:13 +03:00
c0487e4c2a feat: enhance user-agent identification and implement backoff strategy for university source requests
- Added PSU_CONTACT environment variable to docker-compose for owner contact in User-Agent.
- Updated source.js to include user-agent construction with service version and contact information.
- Implemented exponential backoff strategy for failed requests to the university, with retry logic based on HTTP response status.
- Modified status.js to display backoff information in the status response.
- Adjusted watch.js to reduce request frequency during university downtime.
- Enhanced test coverage with new backoff.test.js to validate backoff behavior and user-agent format.
2026-10-22 01:17:54 +03:00
10c85e3bb9 feat: read "Занятия в Полоцке" as a day's town, show it in all clients
- Parser 14 (server/places.js): "Занятия в Полоцке/Новополоцке/г. Новополоцк" over a day's first row is no longer a lesson but a note of the day for its column (`places`); lessons of that day get `place`. A lesson below the note in the same cell keeps its own subject.
- A town on its own line ("Новополоцк", "г.Новополоцк") or after a room ("246(Новополоцк)") becomes the lesson's `place` and leaves the subject and room. "История Полоцка" is not a town.
- API 14: `place` on lessons and `places` on days of /api/timetable, `place` in the directory. The day notes are shared by the server and the PWA (shared/places.js); the same note in every subgroup reads as the whole group's.
- Android, PWA and iOS: a "Занятия в Полоцке" card above the day's lessons (day pages, calendar, overview, week view, desk stand), "Полоцк" under the date in the week grid, "249Ж · Полоцк" on lesson cards, a "Город" row in details, the town in widgets, tile, reminders and change lists.
- Snapshot lines show the town and the day notes; tests for notes, towns in cells and the API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 01:26:54 +03:00
3d08d0cb70 feat: enhance group management and error handling in the app
- Added `forgetRecent` function in `Settings` to remove groups no longer recognized by the server from the quick-switch list.
- Updated `Status` data class in `MainViewModel` to include a `code` property for better error categorization and introduced `needsGroup` logic to determine if a group needs to be reselected.
- Modified `HomeScreen` and `ScheduleScreen` to display a "Выбрать группу" action in the banner when a group is not found, improving user experience during errors.
- Refactored `Banner` composable to support dynamic actions, allowing for more contextual responses to user errors.
2026-10-21 00:51:14 +03:00
67bb2ea6fb feat(parser): update group parsing to handle special cases and improve regex patterns
feat(parser): enhance details extraction for lessons, including handling of subgroups and room moves

feat(timetable): integrate room and teacher retrieval based on week context

test(parser): add tests for group parsing with special characters and room move scenarios

test(formats): implement tests for various lesson formats and their expected outputs

feat(rooms): introduce room management functions for handling moves and week-based plans
2026-10-21 00:34:06 +03:00
3ae7b38fca feat: implement dashboard with authentication and event logging
- Added dashboard functionality at /status with Basic Auth using DASHBOARD_PASSWORD.
- Created server-side event logging to track catalog and university status.
- Implemented traffic metrics tracking and display on the dashboard.
- Enhanced API tests to cover new dashboard features and authentication.
- Introduced CSS and JS for dashboard styling and functionality.
- Added tests for dashboard access control and data retrieval.
2026-10-21 00:04:33 +03:00
de72d003b8 feat: Add request logging and traffic metrics for API performance monitoring 2026-10-20 23:31:08 +03:00
e28d65310d feat: Implement Telegram alerts for catalog updates and failures 2026-10-20 23:14:32 +03:00
a95784df93 fix: Update contact email for privacy policy page 2026-10-20 02:27:15 +03:00
7becdb0902 feat: Add privacy policy page and associated styles for user data transparency 2026-10-20 02:25:36 +03:00
b9a8f91e1f feat: Replace vector launcher icon with mipmap resources for improved performance and compatibility 2026-10-20 02:25:19 +03:00
3055cbaf3c feat: Implement support for foldable devices with enhanced UI layout
- Added handling for foldable devices in MainActivity, including hinge detection and layout adjustments.
- Introduced new UI components for managing two-pane layouts on tablets and foldables.
- Updated CalendarScreen, HomeScreen, PlansScreen, and SearchScreen to utilize the new foldable layout logic.
- Created Fold.kt and Tabletop.kt to manage fold-related UI behavior and display.
- Enhanced animations for menu visibility on foldable devices.
- Updated Motion.kt to include new motion duration constants.
- Added dependency for androidx.window to support foldable features.
2026-10-20 01:12:28 +03:00
9b5062f0ed feat: add change alerts for schedule updates with notifications 2026-10-20 00:29:42 +03:00
f8984e72d9 feat: implement changes tracking for university documents
- Added a new data structure `ScheduleChanges` to represent changes when a university document is republished.
- Implemented methods to read and write changes to a local JSON file.
- Enhanced the `Repository` class to detect changes between the current and fresh timetable versions.
- Updated the `MainViewModel` to expose changes to the UI and handle marking changes as seen.
- Created UI components for displaying changes in both Home and Settings screens.
- Added support for changes in iOS views, including a new `ChangesCard` and `ChangesSheet`.
- Implemented logic to compare timetable versions and identify added, removed, and changed lessons.
2026-10-19 23:57:10 +03:00
68f9b95090 feat: Update API versioning and parser handling for improved schedule updates and error management 2026-10-19 23:29:35 +03:00
85c5baa3e5 feat: Implement rate limiting, request timeouts, and security headers for improved server protection 2026-10-19 23:15:05 +03:00
7206bf9c4a feat: Update Dockerfile and server configuration for improved health checks and error handling 2026-10-19 23:04:54 +03:00
e38c388462 Add course schedules for ISF and ITZS programs for 2026 and 2024 sessions
- Created new snapshot files for ISF credits and daily schedules for the 26-АРХ and 26-ПГС programs.
- Added summer 2026 and winter 2024 exam schedules for the 23-ИТзс program, detailing lectures, labs, and consultations.
2026-10-19 22:55:28 +03:00
15851b26cd feat: Enhance session handling in timetable and UI
- Introduced session types (exams, credits, consultations, coursework defenses) with distinct icons and colors for better visibility in the UI.
- Updated PlansScreen, ScheduleScreen, and WeekGrid to display session information appropriately.
- Modified CalendarView and PlansView to include session indicators in the calendar and plans.
- Enhanced LessonCard and CompactLesson to show session details and adjust styling based on session presence.
- Added new SessionMark component for consistent session representation across Android and iOS.
- Updated server logic to handle session entries from external documents, ensuring accurate timetable representation.
- Improved date parsing to accommodate session-related dates in various formats.
- Added tests to verify session handling and date parsing functionality.
2026-10-19 20:49:13 +03:00
db9a3f8243 feat: Enhance group selection logic to exclude duplicates for main schedules and past documents 2026-10-19 19:53:03 +03:00
5f7bffd6e4 Refactor code structure for improved readability and maintainability 2026-10-19 19:36:19 +03:00
170a44c377 Add date and time handling, models, schedule management, storage, and widget support
- Introduced `Dates.swift` for handling date and time in the university's timezone.
- Created `Models.swift` to define data structures for timetable, lessons, and directory search results.
- Implemented `Schedule.swift` for managing lesson slots and timetable functionalities.
- Developed `Storage.swift` for user settings and data persistence.
- Added `Widgets.swift` to create widgets displaying lessons and upcoming classes.
2026-10-18 20:26:12 +03:00
6b68cec34a feat: Implement caching and rate limiting for API requests 2026-10-18 17:20:29 +03:00
3dc6cc4e9e feat: Implement week grid layout for timetable display
- Added WeekGrid composable to visualize weekly timetable with lessons.
- Introduced LessonBlock for individual lesson representation.
- Created theme file for consistent color schemes across the app.
- Developed NextLessonWidget and TodayWidget for home screen integration.
- Implemented Upcoming data class to manage upcoming lessons.
- Added WidgetStyle for dynamic theming in widgets.
- Created SyncWorker for periodic timetable updates and widget refresh.
2026-10-18 16:55:12 +03:00
d900e038b6 feat: add Next Lesson widget and enhance existing widgets
- Implemented a new Next Lesson widget to display the upcoming lesson details on the home screen.
- Updated Today widget to dynamically adjust the number of lessons displayed based on available space.
- Enhanced the Settings screen to allow users to manage hidden lessons more effectively.
- Introduced harmonized color palettes for better visual consistency across themes.
- Updated the timetable API to support a new range parameter for semester-based queries.
- Added tests to ensure the new semester range functionality works as expected.
- Refactored widget styling for improved appearance on devices with different Android versions.
2026-10-18 00:39:32 +03:00
29df0aa61f feat: add tasks and notes management for lessons
- Introduced a new feature for managing tasks and notes associated with lessons.
- Added a `NotesStore` class to handle local storage of notes in JSON format.
- Implemented UI components for displaying, adding, editing, and deleting notes.
- Enhanced the `HomeScreen`, `ScheduleScreen`, and `SubjectsScreen` to integrate notes functionality.
- Updated the API to handle versioning and added error handling for outdated endpoints.
- Improved the overall user experience with visual indicators for tasks and notes in the schedule.
2026-10-17 13:35:49 +03:00
e1a787c1dd made android client 2026-10-17 04:01:58 +03:00
19ee41411b initial commit 2026-10-16 22:08:45 +03:00