Changelog

Article Image

2025-11-10


• [style(event): tighten detail gap and widen artwork max width] (4002582)
• [style(event): square artwork and ease mobile padding] (da21772)
• [style(event): boost event image width and info padding] (18fcd03)
• [style(event): refine image ratio and footer spacing] (4344f88)
• [style(event): tune layout padding and aspect ratio] (b13a2c0)
• [fix(event): tighten layout spacing and clean image markup] (5b8ae3e)
• [style(event): clamp event image max width to 35%] (275301c)
• [fix(css): align notification hover state] (372a484)
• [fix(event): open location accordion before organizer] (2e49306)
• [feat: add responsive font-size variables and adjust body line-height] (81f5ed9)
• [feat: update event text styles to use responsive font-size variables] (839a80d)
• [fix(event): relax description truncation] (f348c95)
• [style(css): adjust event artwork layout] (87a185a)
• [style(css): tweak event image sizing] (1cc80dc)
• [style(css): align follower block sizes] (6537bdc)

2025-11-09


• [style(event): tune event image width and centering on small screens] (b779ff4)
• [style(css): adjust styles-regular event layout spacing] (bd87098)

2025-11-08


• [feat(event): add blurred artwork background and accordion polish] (029a9b9)
• [fix(event): escape artwork url for css var] (235e5af)
• [fix(event): harden json-ld encoding] (f9626ab)
• [style(event): align accordion content offset] (24befd3)
• [style(event): tighten accordion content spacing] (f3c2d94)

2025-11-05


• [feat: Add dark-mode styling to auth flow] (0bc8957)

2025-11-04


• [fix: Adjust org event card spacing for readability] (b5a9eb8)

2025-11-03


• [fix(css): smooth browse event spacing] (21556e3)

2025-11-01


• [style(css): smooth event card hover transitions] (a45e8e1)
• [style: use CSS variable for search bar font size] (983a3fc)
• [style(theme): align dark background color to 0C0D0E] (c721eae)

2025-10-31


• [fix(organizations): reuse featured scrollbar initializer] (2c90e69)
• [fix(browse-all): clamp featured scrollbar thumb] (07d2975)
• [style(css): support clickable browse cards] (c8cbfb9)
• [feat(js): delegate tap target handler] (bac3a52)
• [fix(profile): add tap target for saved events] (2ae0ea0)
• [fix(collection): widen event card tap target] (685d114)
• [fix(browse): expand event card tap targets] (0bf5898)
• [style(css): use translucent black for event card hover shadow] (fd86b84)
• [style(css): reduce event card hover shadow blur and opacity] (2cb6b87)
• [style(css): adjust browse shadow tokens] (fb4d88b)
• [style(css): refine browse card spacing] (4897808)
• [fix: adjust padding for dropdown header and profile event layout] (227b6cd)
• [style(css): retune event card palette] (f33bef2)
• [style(css): align event card hover tokens] (6762e19)
• [feat(js): activate full org event tap target] (1597ca2)
• [fix(organizations): expand featured card tap target] (acdc724)
• [fix(home): expand event card tap target] (59c91df)
• [style(css): align end card hover states] (1fa67b5)
• [fix(organizations): wrap browse all block] (8f6a371)
• [fix(home): make end cards clickable] (bb9ffe8)
• [style(css): increase event image max width to 43%] (09a9e9c)
• [feat(header): update share image and apple meta tags] (61f5c61)
• [fix(css): use variables for card hover] (481d71f)

2025-10-30


• [feat(css): add hover transitions for event cards] (7839c3c)
• [style: reduce profile section padding-bottom to 30px] (4dae91a)
• [refactor: align profile bookmark cards with browse blocks] (f9168ef)
• [style: adjust event link hover spacing and font size] (3f6f623)
• [style: reduce desktop row gap spacing to 15px] (675847c)
• [style: clamp mobile titles to 14 characters] (790d7f6)
• [style: refine browse block heading typography] (6f92e61)
• [style: iterate on browse block heading spacing] (938e0bd)
• [style: sync styles-regular.css with heading tweaks] (bf3779a)
• [style: refresh editorial typography] (5070d41)
• [refactor: streamline event image block and accordion defaults] (163be46)
• [style: fix event block custom property reference] (2c8e397)
• [style: update event block typography scale] (ab41439)
• [style: adjust event card outline alpha] (b7daee4)
• [fix: disable mobile tap zoom on header interactions] (bb3cb26)
• [style: refresh accordion spacing and typography] (f219438)
• [fix(css): tighten accordion spacing] (86132d0)
• [fix(event): balance accordion spacing] (9e35a97)
• [style: increase header and article heading font sizes] (8119868)
• [style: adjust mobile nav sizing and line height tokens] (b5b1873)
• [style: bump mobile nav size and line height] (e31ca6c)
• [style: align editorial CTA radius and typography] (8d90d53)
• [style: raise org event CTA typography to 35px] (ebee37e)
• [style: widen org event block on small screens] (0ac6779)
• [style: define event card outline token for dark theme] (736acde)
• [style: soften event card outline and shadows] (1daa176)
• [style: add event card background variable and hover fill] (b4b0518)

2025-10-29


• [feat: Introduce get_blurb_excerpt for blurb previews] (550e140)
• [fix: Adjust block end sizing] (2df99e7)
• [chore(home): tag home script as javascript] (d32f881)
• [fix(home): wrap browse all events block] (95b7a3c)
• [fix(profile_edit_profile): update theme color meta] (6660e1b)

2025-10-28


• [feat: Add event card styling variables and apply to event blocks] (5ab9085)
• [feat(event-cards): align featured layouts and truncation] (0d03764)
• [style(browse): apply event card grid tokens] (2fd2044)
• [style(css): adjust browse event spacing] (e193820)
• [feat(profile): truncate bookmark event titles] (3473ee2)
• [remove: margin on horiztonal scrollbars are universal] (9c15a50)
• [style(css): add shadow to org event cards] (00c13e6)
• [style(css): tweak event card spacing] (cd68cdc)
• [style(variables): adjust event card shadows] (6deee9b)
• [style: Update event card outline color for light theme] (e29d0b5)
• [style: Refine spacing and padding for layout consistency] (9ad2001)

2025-10-27


• [fix(notifications): stabilize mobile dropdown viewport] (b2546e7)
• [fix(scroll): allow inner scrolling for mobile dropdown] (bc48700)
• [fix(notifications): add bottom padding to mobile list] (0216e04)
• [fix(notifications): auto adjust mobile list padding] (a754eb7)
• [fix(notifications): ensure last item clears sticky footer via spacer] (c1ad20a)
• [fix(notifications): pad mobile list by footer + last item height] (3e645c3)
• [style: Adjust padding in notifications dropdown header] (bbba99e)
• [formatting] (98c5bfa)
• [fix(tracking): ignore user id 1 in interaction logs] (c2fe09e)
• [style(variables): add top nav font size token] (763868e)
• [style(styles-regular): consume top nav font token] (deb28ba)
• [style(variables): add mobile nav menu size token] (05764ed)
• [style(styles-regular): adjust mobile notifications icon sizing] (fbf8c92)
• [style(header): align mobile notifications icon width] (35588b5)
• [style(styles-regular): tweak notifications dropdown padding] (bc90fb9)

2025-10-26


• [feat(mobile): add notification overlay] (298388a)
• [docs(readme): alphabetize Documentation links] (86efc2d)
• [docs(agents): note alphabetical README Documentation index] (0913381)
• [docs(agents): add agents guide] (694b84c)
• [docs(readme): link docs and agents in index] (2fb52ee)
• [chore(gitignore): stop ignoring AGENTS.md] (704c3bc)
• [docs(readme): add Documentation section and link to docs + AGENTS.md] (ab222ab)
• [docs(docs): add build search suggestion cache guide] (76abc60)

2025-10-23


• [feat(header): add desktop notifications dropdown] (b121184)
• [feat(header): mark notifications read after viewing dropdown] (e7e2ead)
• [docs: simplify readme instructions] (62aa6d7)

2025-10-22


• [feat(llms): add featured events summary] (d78b774)

2025-10-21


• [style(home): change heading to 'Featured' on homepage] (9fbfb2a)
• [style(organizations): change heading to 'Featured' in organizations.php] (ad22208)

2025-10-20


• [fix(tracking): Harden user-agent normalization to printable ASCII] (0820e2d)
• [chore(db): Set utf8mb4 charset on MySQL connection] (ff18c8a)
• [style: Brighten event image glow] (88cf4ba)
• [style: Normalize header typography imports] (cfb0b5c)
• [style: Drop unused cormorant font classes] (5f3f59e)
• [fix: Emit organizer slugs in sitemap] (570f3eb)
• [fix: Accept organizer slug paths in rewrite] (bab3b73)
• [fix: Append organizer slug to canonical URL] (5a79f72)
• [style(css): refine browse-all typography] (43e2bff)
• [fix(collection): repair conditional region link] (2f95962)
• [fix(browse): dedupe tag scripts] (a61d743)
• [style(css): tweak header typography and avatars] (765bedd)
• [fix(browse): remove featured carousel from browse all view] (89fa4b0)
• [fix(browse): remove featured prefix from city header] (8ac1626)

2025-10-19


• [style: remove tap highlight on event accordion headers] (6fbe36d)
• [style: Reduce following block image size for better visual balance] (82b77db)
• [style: Increase bottom padding for expanded accordion headers] (5c652c9)
• [style: Adjust layout widths and spacing for improved alignment] (c501638)

2025-10-16


• [fix(tracking): safely encode metadata to prevent JSON breakage] (b298c37)
• [style: remove comments from variables.css] (32dcc26)

2025-10-13


• [fix: update dark palette color tokens] (5e0523c)
• [style: align section heading weight token] (25b3a81)
• [fix: align editor theme meta color] (4a0d627)
• [fix: sync theme-color meta to #0f0f0f] (2ed619e)
• [fix: set dark theme meta to #0f0f0f] (ce9f9c4)
• [fix: Align profile following layout styles] (d0637d2)
• [fix: Sync profile following buttons with event style] (11933e8)
• [style: Align user account typography tokens] (33c3ad1)
• [style: Increase collection and location header sizes] (b99f75a)

2025-10-10


• [style: Soften dark event image glow] (1eeb2f3)
• [fix: Normalize event category labels for consistent capitalization] (741e1c7)
• [style: Reformat home hero template spacing] (10e37ff)
• [fix: Align editorial gaps with design tokens] (9eadb36)
• [fix: Remove extra space before event location] (b78f2c8)
• [style: Align dark mode tag fade with background] (09ba2b6)
• [fix: Adjust featured event location spacing] (c274700)
• [style: refine event info typography] (0fffbbc)
• [fix: restore responsive gap token syntax] (aa56be7)
• [fix: brighten event hero glow] (bcf9172)
• [fix: align event blocks with spacing tokens] (2aade2d)
• [style: Use shared spacing variable] (89f455c)
• [style: Alphabetize CSS variables] (113692a)
• [style: Tweak following block padding] (6eb54fe)
• [style: Adjust following block spacing] (065773c)
• [feat: Add event tag overflow shadow] (097104c)
• [style: Polish event layout and button states] (9efd85f)
• [style: Update theme spacing and hover variables] (3ec90e6)
• [style(css): Refine event page styles and accordion spacing] (7aaea3e)
• [style(variables): Soften event image glow and remove border] (6fbf88b)
• [feat(event): Link event location and move map into accordion] (da54558)
• [style(location): Tidy location page markup and map container] (b49ee8f)
• [fix(js): Delay desktop header autohide until after 100px scroll] (09d2fef)
• [style: Add glow effects and update profile outline colors for themes] (73e5523)
• [style: Add responsive glow and adjust spacing in event styles] (1a66925)
• [style: Adjust event image layout proportions and remove border] (edf4be4)
• [style: Adjust font weights and line heights for consistency] (6305c7f)
• [feat: Clarify organizer follow state and update button classes] (43746ae)
• [style: Polish organizer follow block spacing and alignment] (3ca4d15)
• [style(css): incorporate latest local tweaks to accordion] (2792f21)
• [style(event): set read-more expanded padding-top to 0] (075e19a)
• [feat(css): add accordion styles and refine spacing] (5a36970)
• [feat(event): add collapsible Price/Organizer/Location accordion] (bddd86e)

2025-10-07


• [feat(event): enhance organizer section] (4d805e3)
• [chore(event): disable map display] (145542e)
• [style(event): update follow module styling] (df131bf)
• [style(event): tighten follow layout spacing] (4e0dfc6)
• [style(event): set image border to solid gray] (fd45359)
• [style(event): adjust mobile follow block padding] (e088851)
• [fix(event): increase mobile follow spacing] (e14625e)
• [fix(event): reorder metadata panels] (8493cee)

2025-10-06


• [refactor(useraccount): consolidate processors into service classes] (88bd236)
• [style(css): adjust padding for visibility] (8a334ac)
• [docs: move modernization notes to top-level notes folder] (dd4171a)

2025-10-05


• [feat(router): centralize CSRF/rate limiting and add auth logs] (94823f7)
• [refactor(login): only rate-limit when not routed] (63a9e14)
• [refactor(registration): only rate-limit when not routed] (dc395e1)
• [refactor(forgot): only rate-limit when not routed] (f101177)
• [refactor(reset): only rate-limit when not routed] (a004093)
• [feat: Add shared bootstrap for useraccount pages] (fcae7bb)
• [feat: Add CSRF helper for token generation/validation] (defed92)
• [feat: Add cookie helper with standardized attributes] (f51ca8b)
• [feat: Add lightweight router for useraccount actions] (8abc81b)
• [feat: Add thin AuthService delegating to processors] (c454288)
• [feat: Add PasswordResetService delegating to processors] (d4733e2)
• [docs: Document useraccount modernization progress and plan] (e1727ee)
• [chore: Add CLI script to purge expired user tokens] (fcd9449)
• [feat: Add CSRF and route login form via router] (038fe2a)
• [feat: Add CSRF and route registration form via router] (99cdd43)
• [feat: Add CSRF and route forgot form via router] (485aca4)
• [feat: Add CSRF and route reset form via router] (fe4a3cd)
• [fix: Add CSRF and standardize cookies in login processor] (6fa6b5b)
• [fix: Add CSRF and standardize cookies in registration processor] (93b860c)
• [fix: Add CSRF and wrap forgot processor for router] (72948ef)
• [fix: Add CSRF and standardize cookies in reset processor] (efb2be1)
• [fix: Standardize cookie clearing and guard logout processor] (7efeef4)
• [fix(collections): Fix Web Share metadata] (13250b5)

2025-10-02


• [style(browse): increase browse grid gaps to 8px] (dca50b9)
• [fix(rate_limit): reject malformed client IP headers] (2b8d1f6)
• [fix(useraccount): hide forgot password error output] (45883db)
• [fix(useraccount): strip password reset debug traces] (d4733e2)
• [style(theme): Raise event image border opacity for contrast] (86bbf56)
• [style: Remove redundant search placeholder color] (5ba9979)
• [style: Update search placeholder variable tint] (abde9f1)

2025-09-30


• [fix(events): Prepare event meta payload for head rendering] (9c610ae)
• [fix(events): Move event meta rendering into head template] (9431dff)
• [fix(events): Render event meta tags directly in head template] (2a656ca)
• [fix(article): Title-case authors for schema] (e28b01f)
• [fix(theme): Inherit CTA button color from theme variables] (78b5bbd)
• [fix(theme): Reuse Ode blue palette across variables] (920f070)
• [fix(profile): Align unread badge with theme color] (94c8244)
• [fix(bookmarks): Match unsaved hover border to theme] (322a282)
• [fix(browse): Use theme blue for event card borders] (947e372)
• [fix(meta): Prepare shared payloads for organizer, organizations, editorial, collection] (4df914a)
• [fix(meta): Centralize meta tag rendering helper] (f6de3bd)
• [fix(article): Align template with cached meta payload] (809eb7f)
• [fix(meta): Skip legacy descriptions when payload exists] (f3ebbe6)

2025-09-29


• [fix(header): Use ode blue token on notification badges] (5eaf97c)
• [fix(notifications): Match unread dot fill with theme color] (94c8244)
• [style(theme): Refresh ode blue variable swatch] (e456930)
• [fix(useraccount): Load variables stylesheet on standalone views] (efdd8ae)
• [fix(collections): Show full date range for collection headers] (920b534)
• [fix(organizer): Trim website labels and show Instagram handles] (d419823)

2025-09-28


• [style(categories): Reduce category gallery grid gaps to 5px] (33d4834)
• [fix(events): Split city/state location conditional for valid markup] (16f636f)
• [fix(events): Tighten event grid spacing for cleaner card layout] (126bbac)

2025-09-27


• [fix(events): Render timestamp labels as Day, Mon DD @ h:mma] (2a656ca)

2025-09-25


• [feat(events): Serve deterministic placeholder gradients on browse pages] (21c91a5)
• [chore(storage): Remove unused Cloudflare R2 uploader helper] (31aa640)
• [style(header): Reformat header.php and tidy inline comments] (e2d22d6)

2025-09-24


• [style(css): Use ode blue token consistently across UI accents] (1a7a4d5)
• [style(event): Balance desktop event columns] (ad0172d)
• [fix(event): Restore mobile artwork width on phones] (39b3311)

2025-09-22


• [feat(theme): add fade transition when toggling site theme] (43efe49)
• [style(theme): speed up fade transition to 120ms] (07374d8)

2025-09-21


• [fix(collections): raise initial batch to 20 items] (fd32929)
• [fix(collections): page load_more endpoint at 20] (ac78160)
• [fix(collections): title pages with metadata name] (13250b5)
• [style(collections): expand grid to five desktop columns] (ad0172d)
• [refactor(collections): consolidate query helpers] (2628d33)
• [chore(git): ignore php refactor playbook] (9f52c20)
• [refactor(profile): modularize notifications feed helpers] (f5367a7)

2025-09-18


• [fix(browse): Serve 20-event batches across browse views] (d4d907d)
• [style(css): Trim whitespace and reindent regular stylesheet] (b2218b2)
• [style(theme): Refresh variables palette definitions] (53b7e26)
• [style(region): Reformat IP lookup helper] (03f74ad)
• [docs(db): Expand mysql connection comments] (f16e4c0)
• [style(contact): Normalize contact template indentation] (53b7e26)
• [chore(git): add ignore entry] (b5369ff)

2025-09-15


• [style(css): Adjust description padding for cleaner spacing] (f01ac55)
• [style(css): Tighten event imagery spacing] (49bf020)
• [style(css): Tighten event block spacing] (788566f)

2025-09-13


• [fix(header): make desktop search area fully clickable] (9c84b46)
• [fix(nav): remove JS width lock causing uneven spacing] (b419d9e)
• [style(collections): tighten .collection-grid gaps to 10px] (920b534)
• [fix: keep desktop header single-line and prevent tablet overlap] (32f4a5d)
• [fix: make search expand while logo/nav/auth remain fixed] (79cf70c)
• [chore: Merge bugfix PR #60] (5a778f3)
• [feat: Add calendar and location icons to event header] (d140119)
• [feat: Style event date/location rows with SVG icons] (7238e70)
• [style(theme): add --pfp-outline token for profile pictures] (46c641c)
• [style(profile,editorial): use pfp outline var; minor cleanup] (0fec160)
• [fix: Add fallback background for profile images] (2c0a146)
• [fix: Define --pfp-bg variable for profile images] (de9b13c)
• [fix(editorial): keep two featured cards side-by-side on non-mobile widths] (e67e865)

2025-09-10


• [style(css): Increase border radii across images and blocks] (a78747d)
• [style(css): Raise event image border radius to 40px] (4e8aa8c)
• [chore: Merge bugfix PR #59] (5a778f3)

2025-09-09


• [fix(css): Add desktop header top border for macOS Tahoe] (07b1740)

2025-09-08


• [style: Shorten Explore headings in organizations.php] (f43120c)
• [fix(css): Adjust mobile hero spacing on small screens] (c6497c1)
• [fix(css): Reduce global side padding to 15px] (86c8fcf)
• [fix(search): Title-case region labels in suggestions cache] (e68f6e8)
• [feat(search): Close desktop search on Escape] (9c84b46)

2025-09-06


• [style(search): Refine search suggestion hover styles across breakpoints] (508ad9d)

2025-09-05


• [feat(search): Lock desktop header during search; add scoped blur backdrop] (681fde5)
• [feat(search): Add desktop search backdrop and link fade styles] (e4320d6)
• [style(search): Tune glass/blur variables for stronger effect] (6be17af)
• [refactor(search): Reset desktop search popover and remove overlays] (75ff3dc)
• [refactor(search): Remove desktop-specific blur/dim rules] (01a035c)
• [style(search): Tweak translucency tokens for future tuning] (27cd62d)
• [feat(search): Make desktop header fully opaque while open] (9c84b46)
• [fix(search): Restore page scroll after closing mobile modal] (b3806cd)
• [style(search): Make mobile search fully opaque when active] (accbcd5)
• [fix(search): Improve iOS scroll responsiveness in overlay] (b3806cd)
• [fix(search): Allow momentum scroll; block pull on short lists] (a2f6c8d)
• [fix(search): Stabilize mobile overlay and block overscroll] (46448bb)
• [fix(search): Add global scroll lock and rubber-band guard] (e76e10b)
• [fix(search): Adjust popover padding and mobile close button] (686e7b9)
• [style(search): Increase mobile suggestion font sizes and spacing] (701a725)
• [fix: Tweak mobile search close button position] (a1f029f)
• [style(header): Use circular close-btn for mobile search popover] (2bc779c)
• [style(search): Align and size mobile search close button] (e0578f2)
• [feat(search): Preserve text as placeholder when closing on mobile] (0d9c3cd)
• [fix(search): Make mobile suggestions panel fill viewport height] (0873f80)
• [fix(search): Limit popover sizing logic to mobile only] (64f9df4)
• [style(search): Tweak mobile suggestions spacing and close button] (f540592)
• [style(search): Remove stray blank line in suggestions block] (016445e)

2025-09-04


• [chore(search): Remove generic search suggestion] (a8af99e)
• [fix: Adjust dark theme meta color to #0e0e0f] (6c53497)
• [fix: Align dark theme meta color in profile edit] (e83cd9b)
• [style(search): Refine suggestion section chip styling in popover] (11bdf89)
• [style(search): Tighten mobile suggestion typography] (167cc0e)
• [style: Remove right margin from category buttons] (3eac0f5)
• [style(search): Reduce section label size; remove mobile override] (3d80258)
• [fix(search): Correct text colors in search-all popover row] (685a52a)
• [docs: Shorten 'Internal Systems Operations' to 'Internal Ops'] (345972c)
• [fix: Disable browser autocomplete on search fields] (f0852f0)
• [feat: Refine search suggestions and event card widths] (6af116d)
• [fix: Align search results popover with search bar] (f9af22a)
• [style: Update desktop search placeholder copy] (0839ba3)
• [fix(search): Expose region context for JS] (8d09d43)
• [fix(search): Build category/tag URLs from context] (2f16426)
• [style: Adjust grid gaps and empty-state spacing] (aca02e2)
• [fix: Remove grid wrapper around empty state in browse-all] (dcb9b0b)
• [fix: Simplify empty-state markup in region browse] (05baaf1)
• [fix(search): Encode spaces as %20 on submit] (ad97f1b)
• [style: Tone down empty-state text color] (94d1935)
• [style(search): Simplify 'Search for' suggestion text] (5e3f119)
• [style(search): Title-case category and tag suggestions] (ffc5615)
• [chore: Ignore handover summary file in Git] (f526617)
• [chore: update robots.txt] (09cc737)
• [chore: Restrict build_suggestions_cache to server] (e03a5f6)
• [chore: Allow 127.0.0.1 in suggestions cache guard] (439853d)
• [chore: Enforce CLI-only for build_suggestions_cache] (b5460bf)
• [chore: Deny web access to /scripts/] (d862e28)
• [fix: Improve search suggestions hover contrast] (9ee4240)
• [feat: Add --search-text-hover variable for both themes] (7a80d43)
• [feat(search): Include articles in search suggestions] (cc58001)
• [feat(search): Include collections in search suggestions] (6d33903)
• [feat(search): Add shorthand date/time to event results] (408fd08)
• [fix(search): Sanitize suggestion titles; include event date in cache] (d3255ef)
• [style(search): Format event suggestion dates consistently] (e3b87a1)
• [feat(search): Add caching for search suggestions] (20fdc90)
• [chore(search): Add cache builder script] (3063ff1)
• [chore(search): Log suggestion cache source] (9a4c4ef)
• [style(search): Tweak suggestion event date typography] (4613344)
• [style(search): Use search hover color for event date] (bd90758)
• [fix: Mobile menu overlay scroll lock] (9dca4ee)
• [feat(search): Add mobile search close button] (04a43a1)
• [style(search): Overlay mobile search close button] (247ac2c)
• [style(search): Expand mobile search suggestions to full width] (7f03431)
• [style(search): Add bullet separator to event suggestion dates] (8f6414f)
• [style(search): Style event search suggestions] (b8d22e2)
• [fix(search): Mobile search results viewport] (b3a9819)

2025-09-03


• [fix: Tweak mobile org event card width and text sizes] (e6a1d60)
• [style: Reduce .custom-scrollbar top margin from 25px to 5px] (fe5bb31)
• [style: Add .browse-custom-scrollbar for browse pages] (bf615da)
• [style: Use .browse-custom-scrollbar in browse-all template] (e526028)
• [style: Use .browse-custom-scrollbar in browse template] (78fb040)

2025-08-31


• [fix: use 1:1 image ratios; shrink org event cards] (ca9ff9e)

2025-08-29


• [style: switch event images to 1:1 aspect ratio] (8d3b405)

2025-08-27


• [style: refine search bar width and event subtext color] (69be3bb)
• [style: refine search placeholders for desktop/mobile] (b597ecf)
• Desktop placeholder highlights time phrase; mobile uses shorter city-focused hint.
• [feat(search): support irregular plural mappings] (0d9c3cd)
• Irregulars handled (examples): men↔man, women↔woman, children↔child, media↔medium, indices↔index, matrices↔matrix.
• [feat(search): improve UX placeholder and plural handling] (0d9c3cd)
• Placeholder: desktop + mobile show an example query “Symphony next month in San Francisco” to guide natural-language usage.
• Plurals: category/tag mapping now handles y↔ies and common es rules so “Symphonies in San Francisco” resolves to the “Symphony” taxonomy.
• [refactor: deprecate natural_search route with redirects] (062f56c)
• [style: tweak dark theme colors to #0e0e0f] (6c53497)
• [style: update theme-color meta for dark mode] (85ace0d)
• [feat: replace search with natural-language search] (062f56c)
• Natural search: runtime taxonomy maps (categories + tags) built from DB; supports aliases (theatre/theater, hip hop variants, film/movie/cinema), and maps query tokens to actual tag names.
• Query parsing: region phrases ("in boston"), relative time ("today", "tomorrow", "this/next week/weekend/month"), and month names with optional year (e.g., "sep 2025").
• Ranking: full‑text relevance cutoff when text terms present; tag matches can satisfy topic even with low text relevance; category‑only queries bypass the full‑text gate.
• Pagination: consistent with v1 using LIMIT/OFFSET; preserves filter param; datetime formatted as “Thu, Sep 18 · 7:30PM”.
• [chore: archive legacy search as search_v1] (5e2d3ef)
• [refactor: remove natural_search after migration] (e281b4e)
• [feat: add IT & Systems contact to contact page] (e754b2a)

2025-08-26


• [docs: update contact page legal section] (a724f3a)

2025-08-25


• [feat: add Editor-in-Chief contact; fix Paige mailto] (bf0c0fd)

2025-08-24


• [fix: correct search pagination count] (2b5f5f6)
• [fix: filter out low relevance search results] (e38045c)
• [style: Adjust org event h2 margins for better spacing] (490bd98)
• [style: tighten event header line-height and org h2 spacing] (2007533)
• [docs: clarify 'style.css' refers to css/styles-regular.css] (a107d1d)

2025-08-20


• [fix: Enable share button on collection page] (9123c50)
• [feat: Show full collection description without read-more] (98937ff)
• [fix: Show full collection description on mobile] (39dea33)

2025-08-19


• [fix: Improve tooltip text readability with balanced wrap] (94ca88b)

2025-08-18


• [fix: Delegate bookmark handlers to avoid double-binding on collections] (9123c50)
• [refactor: Remove page-local bookmark JS in collection view] (c2f396d)
• [fix: Define isLoggedIn in collection JS to fix load-more] (51ba6b6)
• [style: Adjust load-more margins and button styling] (8884ab7)
• [fix: Use global chronological order for initial collection events] (319cbd0)
• [fix: Paginate collection fetch by startdatetime for stable order] (2bfec83)

2025-08-12


• [style: Set .collection-grid padding-bottom to 0 for tighter spacing] (4563b7b)
• [style: Increase settings button top margin for spacing] (a5ca08a)
• [style: Reduce blog header padding for tighter spacing] (07fc0f1)

2025-08-11


• [feat: add endpoint to load more collection events] (cc2fd35)
• [feat: implement incremental loading for collection page] (fdf7fea)
• [style: align collection load-more styles with theme variables] (9cf7ed9)
• [feat: add rewrite for collection load-more route] (f241f96)
• [Update readme.md] (7300203)
• [feat: Support follow/bookmark callbacks after registration] (a297947)
• [fix: Exclude hidden regions from registration dropdown] (2223a7e)
• [feat: Handle follow/bookmark login callbacks with sanitization] (da331c2)
• [style: Remove underline from footer links in reset email] (b594bc9)
• [feat: Redesign password reset email with branded HTML template] (e43e7ae)
• [feat: Capture follow/bookmark clicks and set callback cookies] (ba1f746)
• [feat: Add modal helpers and follow/bookmark callback cookies] (0ae06f1)

2025-10-03


• [feat(collection): add ItemList schema and standardize links] (78763be)
• [fix(organizer): remove inline canonical; trailing-slash links] (431d66e)
• [fix(meta): align canonical URLs and set collection og:type] (898a304)
• [feat(event): add attendanceMode, prefer ticket offers URL, lazy image] (3e8454f)
• [fix(home): use trailing-slash event and organizer links] (4d805e3)
• [chore(scripts): add SEO check script] (57d8eae)
• [style(css): use placeholder var; tweak translucent bg] (abde9f1)
Join the Club
Follow the organizations you care about, track and bookmark events as they're announced—discover your next enriching experience on Ode.