• v0.8.0 820ea49c3a

    v0.8.0 Stable

    Fletcher released this 2026-01-23 16:46:37 +00:00 | 38 commits to main since this release

    Added

    • API endpoints for external applications: Added new API endpoints for external applications to access limited profile data. 🖥️
    • Contact notes system: Committee members can now add notes to contacts.
    • Timeline view: View a user's interactions with the organisation, includes support for external applications and global events
    • Open Graph, Twitter Card, and schema.org support: Added Open Graph meta tags and Twitter Card tags to base.html using blocks that can be extended in child templates. All templates now include appropriate Open Graph metadata with page-specific titles and descriptions. Schema.org event data is injected into event detail pages. 🖥️
    • Forgejo notifications: Forgejo notifications are now filtered through the portal for additional formatting and context.
    • Personalised event calendar feed (ICS): Users can now subscribe to a personalised ICS calendar feed that includes events they've bookmarked, important events, and events they've RSVP'd to.
    • robots.txt file: Added robots.txt file allowing all web crawlers to access the site. 🖥️
    • XML sitemap: Added /sitemap.xml endpoint that generates a sitemap including all public pages and published events with no visibility restrictions. (Helps search engines discover and index content.) 🖥️
    • Profile pictures in bucket statistics: Added small profile pictures for contributors in the "Hours by Bucket" card on committee token page.
    • Slack interface for events: Replicates the functionality of RSVPBot and allows people to RSVP to events from Slack. Also includes auto posting.
    • Event option day pass requirement: Event RSVP options can now be marked as requiring a day pass. Options with this requirement display a "Day Pass required" badge in the RSVP list with a tooltip explaining the requirement. Slack event messages show "(req Day Pass)" next to the price for options that require a day pass.
    • Celery worker increase: Added more task workers for scheduled tasks 🖥️
    • Membership status change logging: Changes to membership status or type are now logged to a debug Slack channel

    Changed

    • Time debt calculation on committee tokens page: Time debt owed is now offset by total volunteering hours. If a user has 2.5h of volunteering and 3h of time debt, the displayed value is 0.5h (net debt).
    • Weekly/monthly granularity for some token stats: Added toggles to switch between monthly and weekly views for "Your Hours by Category Over Time" and "Per Month" charts.
    • Adjust total hours button for volunteer token submission: Added button next to unallocated hours line that updates the total submitted hours to match the current bucket distribution. If using a date range submission, automatically converts to hours-based submission.
    • Event visibility groups: Events can now be limited to specific groups. (Still shown to all with access to management interface)
    • Duration toggle for events: Added a toggle to switch between specifying end date/time and duration (hours and minutes) when creating or editing events.
    • Event short description field: Added short_description field to events for use in Open Graph meta tags and social media previews.
    • Past events ordering: Past events in the management interface now sort oldest first
    • Events page pagination and lazy loading: The /events page now uses pagination and lazy loading to improve initial page load times. (Events are loaded based on the viewport of the user and should theoretically be infinite)
    • Event detail pages are now public: Individual event pages are public (unless restricted to a group)
    • Recurring events display series on detail pages: Users can now see the frequency of an event and where they are in the time series
    • Recurring events tab in management: /events/manage now includes a recurring tab that lists one row per series, shows the first date, and lets managers edit the entire series.
    • Portal toggle improvements: Navbar stays open on mobile when switching portals
    • Notification system revamped: Includes drafts, templates, mail merge fields, markdown support, popup-specific text, history of sent notifications, and email support
    • Token entry deletion permissions: Management committee members can now delete approved token entries from /admin/tokens (previously only admins could delete entries).
    • Image endpoint scaling updated: The images endpoint can now scale images from 8-512px

    Fixed

    • Orphaned PENDING tasks after container restart: Added automatic detection and cleanup of PENDING tasks that are no longer in broker queues (e.g., after docker compose down). These tasks are now automatically marked as FAILURE with an appropriate error message. A manual cleanup endpoint /admin/celery/cleanup-orphaned is also available. 🖥️
    • Circular import error in Celery: Fixed circular import between util.slack and providers.volunteer_tokens that prevented Celery from loading. 🖥️
    • Events management page filtering: Fixed past events and cancelled events not filtering correctly on /events/manage. Cancelled events now appear in all tabs correctly, and past events are properly excluded from upcoming tabs.
    • Cancelled events tab performance: Fixed cancelled events tab taking a long time to load and showing non-cancelled events. 🖥️
    • Yearly recurring events: Fixed yearly events incorrectly using the current day as the start date.
    • Request logging: Fixed page requests not appearing in logs due to an empty string in the excluded endpoints filter that was filtering out all log messages. 🖥️
    • Document availability: Fixed documents that have already been signed by a user being marked as available.
    • Profile settings fixed when app mode notifications are enabled: Disabled values in forms are now correctly handled
    • Time debt calculations: Some areas where volunteering time debt were displayed did not account for hours contributed
    • Member status syncing: Portal users with multiple TidyHQ accounts linked would have their membership status flip randomly between the status of the linked accounts. Membership status is now defined with ANY logic
    • Pledge invoice generation: Generating an invoice for a pledge no longer boots the user out of the parent modal