aethersdr / aethersdr/AetherSDR

Net Reminder Scheduler — post-merge follow-ups (#3684)

Open
#3,689 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement good first issue GUI maintainer-review rfc
Dominant language
C++
Stars
221
Forks
117
Avg merge
2d 7h
Merged PRs (30d)
299

Description

Non-blocking follow-ups from the review of #3684 (Net Reminder Scheduler, merged as 99824da4; RFC #3687). The feature shipped clean — these are hardening/polish items, none urgent. All are small and good newcomer tasks.

Tests (should-fix)

The recurrence edge cases are implemented correctly (verified empirically during review) but not covered by tests — easy regressions to introduce later. Add cases to tests/net_recurrence_test.cpp:

  • Spring-forward gap — a local time that doesn't exist on a DST transition night (e.g. 02:30 America/Chicago 2026-03-08 → should resolve to 03:30, not skip/crash).
  • 5th-weekday-absentFREQ=MONTHLY;BYDAY=5MO in a month with only 4 Mondays → advances to the next qualifying month.
  • Empty-BYDAY weekly — weekly rule with no weekday set (with and without an anchor date).
Polish (nits)
  • Timezone combo rebuilt per openNetSchedulerDialog populates the full IANA list (~350 entries) every time the Add/Edit sheet opens (QTimeZone::availableTimeZoneIds()). Build it once / cache it.
  • Emoji-glyph fallback — the banner 📻 (NetReminderBanner.cpp) and (NetSchedulerDialog.cpp) may render as tofu on minimal Linux installs without an emoji/symbol font; consider an icon or ASCII fallback.
  • Planner silent give-upNetSchedulePlanner::nextReminderAcross caps occurrence advancement at 64 (NetSchedulePlanner.cpp), so an absurdly long reminder lead silently yields no reminder. Document the bound or handle explicitly.
  • Unused signalNetReminderBanner::dismissed(netId) is emitted but never connected; remove it, or wire it (e.g. for a future snooze/dismiss-tracking feature).
Feature follow-ups (from the PR's own "not in this PR" list, for tracking)
  • Seed nets from RepeaterBook / hamnets.org directories
  • Live "net is on now" via the NetLogger feed
  • .ics export
  • Banner snooze

🤖 Generated with Claude Code

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with tests/net_recurrence_test.cpp for the three recurrence cases, or inspect NetSchedulerDialog.cpp, NetReminderBanner.cpp, and NetSchedulePlanner.cpp for the listed polish items. Choose one bounded checkbox, verify the relevant existing behavior, and finish with focused tests or a clearly documented and reviewed change.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
desktop, testing
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.