Skip to content

Update 2026 events calendar#587

Open
mtuteja-git wants to merge 4 commits into
valkey-io:mainfrom
mtuteja-git:update-2026-events
Open

Update 2026 events calendar#587
mtuteja-git wants to merge 4 commits into
valkey-io:mainfrom
mtuteja-git:update-2026-events

Conversation

@mtuteja-git

Copy link
Copy Markdown
Contributor

Description

  • Add 2026 events to the Valkey events calendar
  • Add Meetup / Hackathon event type
  • Support multi-day events across calendar dates
  • Add ValkeyConf 2026 and updated event links

Issues Resolved

Check List

  • Commits are signed per the DCO using --signoff
Screenshot 2026-06-24 at 10 52 04 PM Screenshot 2026-06-24 at 10 52 13 PM Screenshot 2026-06-24 at 10 52 22 PM Screenshot 2026-06-24 at 10 52 28 PM Screenshot 2026-06-24 at 10 52 37 PM

By submitting this pull request, I confirm that my contribution is made under the terms of the BSD-3-Clause License.

Signed-off-by: Manvika Tuteja <manvikatuteja16@gmail.com>
@mtuteja-git
mtuteja-git requested review from a team, madolson and stockholmux as code owners June 25, 2026 06:39
@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Changes

The event catalog adds and updates 2026 event metadata, including event types and date ranges. The calendar now renders multi-day events, escaped metadata, and date-range cards. Meetup / Hackathon entries receive dedicated legend, label, and badge styling.

2026 event catalog

Layer / File(s) Summary
2026 event catalog
content/events/*2026.md
Adds new event pages and updates existing front matter with dates, end dates, locations, URLs, and event classifications.

Calendar rendering

Layer / File(s) Summary
Calendar rendering
templates/events.html
Reads optional end dates, expands events across overlapping months and days, formats date ranges, escapes rendered metadata, and updates event categorization and active-month matching.
Meetup / Hackathon styles
sass/_valkey.scss
Adds meetup-hackathon colors for legend dots, event labels, and badges, and truncates long labels with ellipses.

Possibly related PRs

Suggested reviewers: madolson, rlunar, stockholmux


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR updates the events calendar with 2026 Valkey and community events. The main changes are:

  • New 2026 event entries across conferences, meetups, and hackathons.
  • A new Meetup / Hackathon event type.
  • Multi-day event support in the calendar view.
  • Updated first-party ValkeyConf and Contributor Summit event links.

Confidence Score: 5/5

Safe to merge.

The changes are limited to event content and calendar rendering updates, with no outstanding code-centered issues identified.

T-Rex T-Rex Logs

What T-Rex did

  • T-Rex ran the requested verification for contract validation.
  • T-Rex's local artifact references were not uploaded.

T-Rex Ran code and verified through T-Rex

Reviews (3): Last reviewed commit: "Add Valkey Contributor Summit 2026 event" | Re-trigger Greptile

Comment thread templates/events.html Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
tests/events-2026.test.mjs (1)

129-149: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add one regression for the January→February boundary.

Lines 129-149 only check for helper names and literal snippets, so the laracon-india-2026.md cross-month case would still pass while the February bucketing is wrong. Given the current string-based approach, add one assertion that the current-month split uses covered months rather than only e.date.substring(0, 7).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/events-2026.test.mjs` around lines 129 - 149, Add a regression
assertion in the events template test to cover the January→February multi-day
case, since the current string-snippet checks around eventsTemplate and
eventsStyles can miss bad month bucketing. Update the test in
tests/events-2026.test.mjs to verify that the month-splitting logic used by the
events card/calendar path (the same covered-month behavior referenced by
eventMonthKeys/data-months) handles a cross-month event like
laracon-india-2026.md, rather than relying on e.date.substring(0, 7) alone.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@templates/events.html`:
- Around line 214-217: The “this month” split in the events template still uses
e.date.substring(0, 7), which mis-buckets events that span into the visible
month. Update the logic in the events filtering block to base membership on
covered months using eventEndDate(e) and the current month, so month-spanning
items like the laracon-india-2026 event are included when they appear on the
rendered calendar. Keep the existing thisMonthUpcoming and upcoming sorting
behavior, but change the month check to reflect the event’s covered date range
rather than only its start date.

---

Nitpick comments:
In `@tests/events-2026.test.mjs`:
- Around line 129-149: Add a regression assertion in the events template test to
cover the January→February multi-day case, since the current string-snippet
checks around eventsTemplate and eventsStyles can miss bad month bucketing.
Update the test in tests/events-2026.test.mjs to verify that the month-splitting
logic used by the events card/calendar path (the same covered-month behavior
referenced by eventMonthKeys/data-months) handles a cross-month event like
laracon-india-2026.md, rather than relying on e.date.substring(0, 7) alone.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e4f766e6-e074-4161-8aa2-121f77e1c83d

📥 Commits

Reviewing files that changed from the base of the PR and between 282a117 and 8047d24.

📒 Files selected for processing (33)
  • content/events/all-things-open-2026.md
  • content/events/bay-area-opensearch-valkey-meetup-2026.md
  • content/events/bengaluru-valkey-meetup-2026.md
  • content/events/build-beyond-limits-hyderabad-2026.md
  • content/events/cache-cafe-2026.md
  • content/events/chennai-valkey-meetup-2026.md
  • content/events/delhi-valkey-meetup-2026.md
  • content/events/hack-ncstate-2026.md
  • content/events/kcd-beijing-2026.md
  • content/events/kcd-guadalajara-2026.md
  • content/events/kcd-kuala-lumpur-2026.md
  • content/events/kcd-lima-2026.md
  • content/events/kcd-new-york-2026.md
  • content/events/laracon-india-2026.md
  • content/events/laracon-us-2026.md
  • content/events/mqsummit-2026.md
  • content/events/nerdearla-ar-2026.md
  • content/events/nerdearla-mx-2026.md
  • content/events/ossummit-europe-2026.md
  • content/events/ossummit-india-2026.md
  • content/events/ossummit-korea-2026.md
  • content/events/ossummit-na-2026.md
  • content/events/pybeach-2026.md
  • content/events/pycon-cameroon-2026.md
  • content/events/scale-2026.md
  • content/events/seattle-meetup-april-2026.md
  • content/events/tdc-sao-paulo-2026.md
  • content/events/valkey-react-hyderabad-2026.md
  • content/events/valkey-seattle-systems-meetup-2026.md
  • content/events/valkeyconf-2026.md
  • sass/_valkey.scss
  • templates/events.html
  • tests/events-2026.test.mjs

Comment thread templates/events.html Outdated
@pnbrown

pnbrown commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Is there anything we can do about the clipping at the bottom of the list under the calendar?
Screenshot 2026-06-25 at 14 54 52

@pnbrown

pnbrown commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

It feels like the footer takes over too early. The page should be longer? The scroll area is too small

@mtuteja-git

Copy link
Copy Markdown
Contributor Author

@pnbrown it is not clipping, it is cos of the screenshot.

Regarding the scroll area, it is proportionate to the calendar - do you have a recommendation for the proportions?

Screenshot 2026-06-25 at 12 02 08 AM

@pnbrown

pnbrown commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Responsive to fit the month?

@mtuteja-git

Copy link
Copy Markdown
Contributor Author

yes.

@rlunar rlunar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with this PR overall; there are some edits suggested by CodeRabbit and Greptile that need to be addressed.

What do we consider a Valkey event? for example we also did CNCF Mexico City Meetup on June 9th, does that count?

Should we have a naming convention? for example KCD's are prefixed properly, but MeetUps are not; should we make ALL events to follow a taxonomy?

Signed-off-by: Manvika Tuteja <manvikatuteja16@gmail.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@templates/events.html`:
- Around line 188-189: The event label and card rendering in the
templates/events.html snippet still interpolates unsafe values directly, so
update the HTML-building logic around the event label and location link to use
sanitized values for e.url, e.type, and e.locationUrl, similar to how safeTitle
is handled. Locate the code that builds labels and event cards, then escape or
validate those fields before concatenating them into href, class, and other
attributes so no raw event data is rendered into the DOM.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 7f436a08-3df9-42e7-a17d-8befeef088ee

📥 Commits

Reviewing files that changed from the base of the PR and between 8047d24 and e7c0a83.

📒 Files selected for processing (2)
  • templates/events.html
  • tests/events-2026.test.mjs
🚧 Files skipped from review as they are similar to previous changes (1)
  • tests/events-2026.test.mjs

Comment thread templates/events.html Outdated
@mtuteja-git

mtuteja-git commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

I agree with this PR overall; there are some edits suggested by CodeRabbit and Greptile that need to be addressed.

What do we consider a Valkey event? for example we also did CNCF Mexico City Meetup on June 9th, does that count?

Should we have a naming convention? for example KCD's are prefixed properly, but MeetUps are not; should we make ALL events to follow a taxonomy?

Addressed the changes suggested by CodeRabbit and Greptile.

A CNCF Mexico City Meetup is not a 1P event or a meetup/hackathon if it was not a Valkey meetup but if we had presence there it can qualify as a 3P event (third party)

I like that idea, so far it was been Valkey Meetup *City with an additional line for SEO/relevance, which I am not super against.

@mtuteja-git
mtuteja-git requested a review from rlunar June 25, 2026 22:42
@mtuteja-git

Copy link
Copy Markdown
Contributor Author

@valkey-io/content-creators can you please review so we can add events to the website

@crystalphamLF

Copy link
Copy Markdown
Contributor

Sorry @mtuteja-git - it wont let me squash and merge.

@stockholmux stockholmux left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mtuteja-git No problems with the events content (yay!), but there is some Javascript here that I would question. I've been looking at it for a while and there is places where you format the date, then later pull that formatting apart and reformat it.

The end result is probably not an issue but date objects tend to have corner cases that don't show up until later and/or are interpreted by slightly differently across browsers and locales. We can probably shift most of this up to Zola and know it's repeatable forever.

Comment thread templates/events.html Outdated
return keys;
}

function formatDateRange(startKey, endKey) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function is odd. It assume Month/Day/Year which is only really common in the USA.

You can use .toLocaleDateString() to auto format to whatever the browser is operating in.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the manual date formatting and am using .toLocaleDateString() for the displayed date labels - please review and let me know if this is what you were expecting.

Comment thread tests/events-2026.test.mjs Outdated
@@ -0,0 +1,161 @@
import assert from "node:assert/strict";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I generally applaud the use of tests we haven't agreed to this testing framework nor have we described how to do tests anywhere. I think we should drop this bit.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, I don't think we should add tests for things where the real test is verifying the external functionality.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, dropped.

Comment thread tests/events-2026.test.mjs Outdated

const repoRoot = process.cwd();

const expectedEvents = [

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also think this will break when we add events :)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, removed this test file.

Comment thread templates/events.html Outdated
evts.forEach(function(e) {
eventDateKeys(e).forEach(function(dayKey) {
if (dayKey.substring(0, 7) !== key) return;
var d = Number(dayKey.substring(8, 10));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're doing a ton of processing of dates in this script. I worry that it might be a little fragile and it's kind of unnecessary considering you can just use Zola to pre-generate all this as part of events for loop.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the 'eventDateKeys' / 'eventMonthKeys' / 'formatDateRange' helper layer and simplified the calendar logic to use ISO date range checks. The displayed dates now use 'toLocaleDateString()' - please review when you can and let me know if that looks correct to you.

Signed-off-by: Manvika Tuteja <manvikatuteja16@gmail.com>
Signed-off-by: Manvika Tuteja <manvikatuteja16@gmail.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
templates/events.html (1)

44-44: 🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Normalize end_date before feeding it into the calendar logic
page.extra.end_date should be forced to YYYY-MM-DD before it reaches the rangesOverlap checks. The current string comparisons rely on zero-padded dates, so a malformed value will break month filtering and event ordering.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@templates/events.html` at line 44, Normalize page.extra.end_date to a
zero-padded YYYY-MM-DD value before assigning endDate for the calendar logic,
while retaining page.date formatted as YYYY-MM-DD when no end_date is provided.
Ensure the value consumed by rangesOverlap and event ordering is consistently
normalized.
🧹 Nitpick comments (1)
templates/events.html (1)

59-66: 🔒 Security & Privacy | 🔵 Trivial | 💤 Low value

Hand-rolled HTML escaping flagged by static analysis.

The manual escapeHtml implementation is functionally correct (escapes & first, avoiding double-escaping), but consider a vetted encoder for defense-in-depth per the linter hint.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@templates/events.html` around lines 59 - 66, Replace the hand-rolled escaping
in escapeHtml with the project’s vetted HTML-encoding utility identified by the
static-analysis guidance, preserving string coercion and escaping of all
relevant HTML characters. Remove the manual replacement chain while keeping
callers’ existing escapeHtml behavior unchanged.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@templates/events.html`:
- Around line 98-101: Update dateRangeLabel to compact ranges when startKey and
endKey share the same month and year: render the month once, show both day
numbers separated by a hyphen, and append the year once. Preserve the existing
single-date output and verbose formatting for ranges spanning different months
or years.

---

Outside diff comments:
In `@templates/events.html`:
- Line 44: Normalize page.extra.end_date to a zero-padded YYYY-MM-DD value
before assigning endDate for the calendar logic, while retaining page.date
formatted as YYYY-MM-DD when no end_date is provided. Ensure the value consumed
by rangesOverlap and event ordering is consistently normalized.

---

Nitpick comments:
In `@templates/events.html`:
- Around line 59-66: Replace the hand-rolled escaping in escapeHtml with the
project’s vetted HTML-encoding utility identified by the static-analysis
guidance, preserving string coercion and escaping of all relevant HTML
characters. Remove the manual replacement chain while keeping callers’ existing
escapeHtml behavior unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 371038ee-2a4e-4363-a29d-0ce60c8c47d4

📥 Commits

Reviewing files that changed from the base of the PR and between e7c0a83 and 8b5b0e1.

📒 Files selected for processing (2)
  • content/events/valkey-contributor-summit-2026.md
  • templates/events.html

Comment thread templates/events.html
Comment on lines +98 to +101
function dateRangeLabel(startKey, endKey) {
if (startKey === endKey) return displayDate(startKey);
return displayDate(startKey) + ' - ' + displayDate(endKey);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

dateRangeLabel doesn't produce the compact format shown in the PR's own screenshots.

This always renders "<Month> <D>, <Year> - <Month> <D>, <Year>" (e.g. "August 11, 2026 - August 12, 2026"), but the PR description's calendar/card screenshots show a compact same-month format ("August 11-12, 2026", "September 22-26, 2026", "July 28-29, 2026"). As written, every multi-day event card will render the verbose form instead of matching the intended design.

🛠️ Proposed fix for same-month/year ranges
 function dateRangeLabel(startKey, endKey) {
   if (startKey === endKey) return displayDate(startKey);
-  return displayDate(startKey) + ' - ' + displayDate(endKey);
+  var start = localDateFromKey(startKey);
+  var end = localDateFromKey(endKey);
+  if (start.getFullYear() === end.getFullYear() && start.getMonth() === end.getMonth()) {
+    return start.toLocaleDateString(undefined, { month: 'long' }) + ' ' + start.getDate() +
+      '-' + end.getDate() + ', ' + end.getFullYear();
+  }
+  return displayDate(startKey) + ' - ' + displayDate(endKey);
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
function dateRangeLabel(startKey, endKey) {
if (startKey === endKey) return displayDate(startKey);
return displayDate(startKey) + ' - ' + displayDate(endKey);
}
function dateRangeLabel(startKey, endKey) {
if (startKey === endKey) return displayDate(startKey);
var start = localDateFromKey(startKey);
var end = localDateFromKey(endKey);
if (start.getFullYear() === end.getFullYear() && start.getMonth() === end.getMonth()) {
return start.toLocaleDateString(undefined, { month: 'long' }) + ' ' + start.getDate() +
'-' + end.getDate() + ', ' + end.getFullYear();
}
return displayDate(startKey) + ' - ' + displayDate(endKey);
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@templates/events.html` around lines 98 - 101, Update dateRangeLabel to
compact ranges when startKey and endKey share the same month and year: render
the month once, show both day numbers separated by a hyphen, and append the year
once. Preserve the existing single-date output and verbose formatting for ranges
spanning different months or years.

@stockholmux stockholmux left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Locale and date stuff is still super weird. parseDateKey was removed and then the same code was added as localDateFromKey - I'm not entirely sure any of it is needed.

Comment thread templates/events.html
var monthKey = dayKey.substring(0, 7);
if (keys.indexOf(monthKey) === -1) keys.push(monthKey);
function displayDate(dateKey) {
return localDateFromKey(dateKey).toLocaleDateString(undefined, {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this part is incorrect.

localDateFromKey function is dubious as it's just create a date object in a really weird way. I think just new Date(dateKey) would accomplish the same thing. Then the toLocaleDateString is always create numeric-long-numeric which may not be locale specific at all.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Also, see code rabbit later.. it's saying partially the same thing).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants