codeths / codeths/ethsbell-rewrite

iCal parser can't read event names past a colon

Open
#116 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Rust
Stars
6
Forks
2
PR merge metrics
No merged PRs in 30d

Description

As the title suggests, the iCal parser currently only seems to return the part of an event title that comes before a colon, if there's a colon in the title.

For example, consider the following iCal event taken from the ETHS calendar:
```ical
BEGIN:VEVENT
DTSTAMP:20251109T193139Z
UID:1ae483b3-4808-5d26-9a4f-ab1bc90bf665
DTSTART;TZID=America/Chicago:20260409T080000
DTEND;TZID=America/Chicago:20260409T133000
DESCRIPTION:State preACT - Freshman only. \n\n\nNO SCHOOL for Sophomores\,
Juniors &\; Seniors
LOCATION:ETHS
SUMMARY:State Pre-ACT exam for grade 9: No school for grades 10\, 11 & 12
END:VEVENT
```

Under the current behavior, the parsed title for this event would be "State Pre-ACT exam for grade 9", which notably leaves out the latter half of the title, which includes "No school".

As of writing, you can confirm this by going a GET request to [https://ethsbell.app/api/v1/schedule](https://ethsbell.app/api/v1/schedule), searching for `2026-04-09` in the response, and noticing that the event title is incomplete.

Image

> [!NOTE]
> If you're fixing this and checking the `/api/v1/schedule` response for the event I mentioned, and you fix the bug, the response won't actually show the full title. It would actually just return something like `{"ScheduleOverride": "no_school"}` for that day.

### Impact
The practical impact of this bug is that automatic detection of certain types of days won't catch these events properly like it typically does. In other words, ETHSBell won't know that there's no school, so someone would need to manually edit the schedule override calendar in order to correct the mistake.

### Summary
Overall, not a huge deal, but a bug is a bug.

Contributor guide

Open the contributing guide

Research direction

Start by tracing the iCal parser used by the /api/v1/schedule endpoint and reproduce the example SUMMARY containing a colon. The fix is done when the parsed event retains the complete title and automatic no-school detection handles this event; verify the schedule response or relevant parser behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.