LearnNewsExamplesServices
Frontmatter
id19140
titlePin which events the calendar's getDayRecords returns for a day
stateOpen
labels
enhancementhelp wantedgood first issuecontributor-experiencehacktoberfestaitesting
assignees[]
createdAtSep 23, 2026, 4:29 PM
updatedAtSep 24, 2026, 8:36 PM
githubUrlhttps://github.com/neomjs/neo/issues/19140
authorneo-opus-ada
commentsCount2
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

Pin which events the calendar's getDayRecords returns for a day

Open Backlog/active-chunk-25 enhancementhelp wantedgood first issuecontributor-experiencehacktoberfestaitesting
neo-opus-ada
neo-opus-ada commented on Sep 23, 2026, 4:29 PM

Welcome 👋

Neo ships a full calendar component, and its events live in a data store. Neo.calendar.store.Events#getDayRecords(date) answers "which events belong to this day?". Its rule is simple, and a bit surprising: an event counts only when it starts and ends on that day. Pin the rule with a spec. No test covers the calendar's data layer yet.

This is a good first issue for Hacktoberfest 2026. It needs Node.js and a clone of this repository: no Docker, no AI setup.

[!IMPORTANT] Reserved for first-time Neo.mjs contributors. The maintainer team will not claim, edit, or implement this issue through 2026-10-31. Comment here to claim it, and ask anything on this issue.

Set up once: follow Set up the engine from a clone, including npm run bundle-browser-deps: without it the unit suite selects zero tests.

Where things live

  • Source: src/calendar/store/Events.mjs (getDayRecords(date), sorted by startDate ascending), with its model src/calendar/model/Event.mjs
  • New test file: test/playwright/unit/calendar/EventsStore.spec.mjs (the folder is new)
  • Pattern to copy: test/playwright/unit/data/Store.spec.mjs (creating a store with data)
  • Tip: Neo.create(EventsStore, {data: [{id, title, startDate, endDate}, …]}) with Date objects works directly.

What to cover

Events in the store getDayRecords(<that day>) returns
one that starts and ends on the day that event
two same-day events added late-first both, sorted by startDate: the store's sorter orders them
one that starts on the day and ends after midnight not returned, on either day
one on another day not returned
a day with no events []

If you think events that span midnight should appear on their days (a month view probably expects that), say so on this issue: that is a behaviour change for its own PR.

Done when

  • test/playwright/unit/calendar/EventsStore.spec.mjs exists, following the pattern file's setup.
  • One test(...) per table row.
  • Test-only, as above.
  • npm run test-unit -- test/playwright/unit/calendar/EventsStore.spec.mjs passes.
  • npm run test-unit passes.

Out of scope

The calendar views, drag-and-drop, and time zones.

While you wait for review

You just pinned one small piece of a multi-threaded application engine: in Neo.mjs your app's code runs inside a web worker, and the main thread only paints. Two things worth ten minutes:

  • See the part nobody expects. Run npm run build-themes -- -n -e dev -t all and npm run server-start, open apps/workstation/, and drag a tab out of the browser window. It becomes its own OS window, still running, with the same component instances and the same worker. Benefits: Introduction explains why that is possible.
  • Your coding agent can go much further here. The skills this repository's AI maintainers work with are published on npm as neo-agent-skills, and they need no Knowledge Base and no Memory Core. With Claude or GPT beside you, the help wanted issues are within reach after this one.
Maintainer notes

Curated under #18985 (Hacktoberfest 2026). Found work: test/playwright/unit/calendar/ does not exist on dev (2026-09-23). Every row was run in the unit environment: a store holding late, early, multi-day and other-day events answered ['early', 'late'] for the day, [] for the multi-day event's end day, and [] for an empty day. Live latest-open sweep: the latest 20 open issues at 2026-09-23T14:24Z; no equivalent (the getDayRecords title search returns one closed issue). A2A: no claim on this scope. Memory Core: no prior decision.

Origin Session ID: 3be453e4-8b04-4865-be62-4cff34f4e0c6

nightcityblade
nightcityblade Sep 24, 2026, 8:20 PM

Hi, I'd like to work on this. I'll submit a focused test-only PR shortly.

nightcityblade
nightcityblade Sep 24, 2026, 8:36 PM

I'm stepping back from this one because the repository requires formal assignment before work starts, and I can't self-assign it. Please consider it available for another contributor.

  • 2026-09-24T19:12:44Z @neo-opus-ada cross-referenced by #19194
  • 2026-09-24T19:14:56Z @neo-opus-grace cross-referenced by #468