All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- unhandled exception when logging access for non-existent member
- re-sync device if exempt_signin changes
- signals to auto sync access changes to devices in realtime
- device pages not showing bump/manage buttons on mobile
- fixed bugs in devices modal when using next/previous buttons
- weird spacing in the memberbucks UI
- bug with device auth
- bug with swipe denied due to device lockout not logging correctly
- all print calls now use the logging framework properly
- removed interlock sync button because it doesn't do anything for interlocks
- membership and payment plan names show useful info in django admin interface
- #259 adding duplicate payment plan fails
- credit card component width issues on small screens
- Fixed inconsistent translations/plurals and billing tab UI improvement
- fixed billing dates appearing incorrectly
- made member states more consistent in the UI
- bug in member list filter dropdown
- homepage cards showing inconsistent heights
- memberbucks products and a vending machine API to track product purchases and profits
- post to discord for vending machine purchases
- memberbucks devices to the devices page
- Vikunja teams sync via oauth / oidc claims
- Vikunja integration for the report issues form
- Discord integration for the report issues form
- a bunch of native MM metrics for things like membership count, memberbucks in circulation, etc.
- lots of prometheus metrics have been added
- all db models
- celery tasks
- all django views
- all native MM metrics (see above)
- warning comment about PRs that target main directly
- per app level logging configuration (check env var definitions in settings.py)
- tracking of total purchases to memberbucks devices
- make offline devices more obvious and disable buttons that require them to be online
- shows if a device currently has a maintenance lockout on the permissions page
- admin permissions page shows warning if a member's access is inactive or device is locked out
- API to dynamically update all constance settings using REST API
- docs about using the local Stripe CLI for testing webhooks
- Added support for assigning a plan manually and allowing a member to resume it
- membership plan info to member admin page
- ignore large (> $1k) transactions when calculating memberbucks metrics (to prevent outliers/test transactions)
- documentation improvements (thanks @ergodone)
- increased docker image python version to 3.12
- increased docker image Node version to 22
- updated Stripe node module version
- refactored memberbucks APIs (including new WS commands to support vending machine products)
- increased the length of some description fields in models for new vending machine API
- Make report_online_status default to False for auto provisioned devices
- refactored the two redundant member tier views
- refactored payment plans api
- improved member access permissions UI
- improved manage member admin page UI
- old API_SECRET_KEY constance config
- old redundant mdns code
- old and unsupported terraform related files
- old and unsupported MMDB_SECRET env var
- SpaceAPI return type for sensor values fixed (thanks @rechner)
- SpaceAPI return type for version number (thanks @rechner)
- New OIDC scope called
membershipinfo
and extra claims - New GitHub Actions for checks and docker build on every PR
- Cleaned up some old code/models
- Tidied up redundant staff/admin attributes
- Menulink translation bug
- SMS logging
- Send SMS notification to member feature
- Some of the Django log_types options to be more brief/consistent
- Some of the GHA workflows to be more consistent
- The main readme to be more up to date/accurate
- #232 email sending bug (thanks @snoopen)
- Email template rendering bug with footer (thanks @snoopen)
- Some unused Django constance settings
- Logged in route guard from webcams page so it's properly public
- All old interlock code from the http api days
- Moodle support / integration for onboarding induction as part of signup flow
- Proper api key support for various api endpoints with djangorestframework-api-key
- Auto commission new
AccessControlledDevice
s - Manual device sync, reboot, bump buttons
- Support for websocket interlocks
- Support for vending machine debits via websocket
- Dynamic SpaceAPI endpoint based on new models (thanks @proffalken)
- More detailed email logging
- More detailed access system logging
- Device level loggins for connections, disconnections and authentications etc.
- Member is cancelling email notifications / logging
- Support for Google Analytics GA4 tags / google tag manager
- First subscribed date
- Auto refresh on devices page
- Overhauled / refactored email system to be more reliable/reusable
- Member signing back up copy makes more sense
- Disconnect websockets if any packet received before auth packet
- Refactored swipe stats to use Django ORM rather than raw queries
- Optimised some queries to make some pages load faster
- All tab-based UIs to be more consistent
- Update MM users
- Some duplicated/strange translation strings
- Spaceapi constance fields updated to use floats for location lat/lng (thanks @proffalken)
- Card last 4 digits not showing on manage member screen
- Edge case that allowed some people to complete signup without subscription
- Order of logs displayed on admin pages to start with most recent
- A bug when members last seen is empty
- Member created date not visible in Django admin
- Various display bugs in manage member screen
- Some admin pages not showing useful names for entities
- Stripe webhook returning error if user has access to an interlock without a serial number
- Canvas not syncing due to another API change
- Fixed 404 in docs (thanks @plex3r)
- allow dev tools in prod builds of electron
- refactored user logging and email system
- electron build failing
- electron build to handle SameSite attribute on session cookie
- raw sql queries and replaced with Django ORM
- automatic loading of fixtures on first run
- db migrations that refer to now non-existent app
- oauth2 / openid connect (provider) support for SSO
- automatic door/interlock syncing on access changes
- access system status endpoint
- list of links as option for homepage cards
- added dedicated web socket sync/reboot commands
- option to enable discord swipe only on certain doors/interlocks
- automatically sync all rfid card changes to devices
- maintenance lockouts to devices
- flag to opt out accounts from email export
- check for invalid webcam/homepage cards config
- copy to clipboard feature for email export
- types for member objects
- support for postgres database backend
- changed all environment variables to start with MM_
- refactored web socket code
- refactored frontend code and moved to src-frontend folder
- moved to vite and added polyfills etc.
- login page to add background gradient and logo
- migrated lots of frontend code to typescript
- MM logo
- screenshots in docs folder
- updated dockerfile to node 18
- improved robustness of postmark integration
- increased size limit of some title/description fields
- caprover deployment example
- some API routes to be more consistent layout
- Dockerfile NGINX proxy_pass setup to work behind a second reverse proxy
- error messages for successful actions
- discord swipe log url
- manage member subscription data display
- reset access permissions for each member when “all_members” option is toggled off/on
- hide device from members feature
- homepage/welcome email cards and webcam examples
- missing translation strings
- minor bugs in manage member page
- GitHub actions
- dayjs imports
- registration requiring vehicle registration plate (should be optional)
- signals running in raw mode (ie when data importing)
- some frontend URLs in API requests (405 method not allowed errors)
- Door bump API for unlocking doors from a 3rd party system
- better webcam cache busting logic and documentation to configure webcams
- option to collect vehicle registration "rego" plates on a member's profile
- Don't initialise twilio if not enabled (thanks @rechner)
- Enable/disable Canvas induction via constance option
- Support memberbucks without Stripe enabled
- Support for a site wide currency format via the SITE_LOCALE_CURRENCY option
- NZD, USD, and EUR currency locale formats
- Allow signup to succeed if access card requirement is true (commit #cb32009ef08ce21704231f577d61e50250f46463)
- Twilio integration for sending SMS alerts to members
- Version to config endpoint for easier debugging
- Basic celery setup (and container start script)
- Prometheus endpoint
- Locale detection and support for GBP currency
- Split constance config into separate module
- Specified member's email as reply-to in issue card
- Bumped deps by github security bot
- Bug with database fixtures preventing fixtures from loading
- All Xero support
- Legacy http API for door controllers
- Member Types (for use with Xero)
- Sentry (temporarily)
- Unnecessary environment variables
- Websocket API for access control devices (ping/pong, authorise, sync tags, log access, update device ip)
- Django pwned passwords
- Loading spinner while app / login page is loading
- Empty state to access permissions page
- Empty state to admin members list
- Some missing translation strings that were hardcoded in the app
- Redis support for Django channels
- Log failed door swipes to the database too
- User event, door and interlock logs to manage member screen
- Upgraded to Vue 3, Qusar 2, all frontend dependencies updated
- Bumped backend dependencies
- Messaging around membership plan / payment plans to make it more clear
- References to "donate" to "make payment" as an exchange of money for goods/services is not a donation
- Tidied up manage member UI and made it cleaner
- Export mailing list translation to make it clearer
- Logging so it's actually useful now that we've moved to daphne
- Redirect on loging sometimes getting stuck
- Some forms not saving after modification
- Bug where member tier/plan translation string was not showing properly sometimes
- made manage member/tier page always go back one level
- History router mode broke in some cases
- Missing short name getter causing warnings logged
- Redirect to original URL if user is not logged in (after login)
- Some UI bugs in the billing workflow
- Minor UI bug with side menu border / scrolling
- Double filter dropdown showing on mobile manage members page
- UI issues with tiers list
- Loading states for door unlock/reboot buttons
- Typo in first joined date on digital ID
- Door checkin via websocket overriding door object in database
- Sendgrid integration for email sending
- Postmark integration for email sending
- Mailchimp integration
- Made site sign in/users on site feature optional
- Made Dockerfile more development friendly (at expensive of slightly larger images)
- Inconsistent login bug on some browsers and iOS
- Not quite mobile friendly sign up page
- CSS and layout of membership plan/pricing pages
- Feature flag system
- Most optional features to feature flags
- Option for collecting access card instead of inputting it
- A site banner feature
- Generate Xero invoices on stripe invoice payments
- Xero configuration options to database config
- Canvas randomly failing to sync user induction progress (canvas have started including a random null user for some reason)
- Canvas api failure logic
- Sentry error logging
- Bug with canvas email being case sensitive
- Stripe invoice payment logic improvement
- Password reset bug
- Logout bug on mobile devices
- Sentry sdk old version causing issues
- Behaviour around Stripe subscription signups when they fail the first time
- Javascript floating point conversion error when making payment plan with decimal value
- Subscription status is not displayed correctly in member list
- Excessively wide credit card form during signup
- Groups feature
- Access device HTTP endpoints. In a future release the current HTTP endpoints for access control devices will be removed and replaced with the new websocket protocol.
- Enable stripe billing menu visibility race condition
- Sentry / stripe token race condition
- Removed excess console logging
- Django admin static css was excluded from docker image
- Handled incomplete subscription with error message
- Various minor bug fixes
- Unhandled error breaks admin UI when member subscription doesn't exist
- Date display issue on proxy form
- Replaced momentjs with dayjs
- Caprover example template
- Basic read the docs website
- Build docker image GitHub action
- Can't override existing card during signup
- Occasional constance settings reset to default value
- Member billing and subscription info on admin page
- Support for sentry error logging
- Upgraded base docker image to Alpine 3.14
- Fixed checking induction requirements being skipped during signup
- Added max width to credit card component
- Prevent clicking next during signup if saved card doesn’t exist
- Fixed various missing/wrong translations
- Added send grid not configured error to payment card component
- Added stripe not configured error to member bucks and manage billing components
- Fixed add payment plan not closing/resetting correctly
- Updated python dependencies
- Fixed Django warning by specifying explicit ID field in models
- More work on usage statistics
- new signups not receiving induction email
- site sign in info box accent colour
- fixed i18n display issue on plan confirmation page
- improved reliability of stripe subscription creation with some new retry logic
- Various minor bug fixes to the strip subscription flow
- basic usage stats on each door/interlock
- more documentation on how to run linting checks manually
- configuration files for eslint github action and lint-staged/husky
- configuration and documentation for setting up MM on AWS with terraform/copilot
- moved from font awesome to material design icons
- combined doors/interlocks into devices page
- updated some python dependencies
- Plan/Tier card interval string error
- some users can't login (SPA build mode trying to use JWTs)
- fixed short login sessions on iOS (jwt refresh logic)
- self site sign out feature (members can sign out from site using the portal)
- new warning and info banners throughout the site for inactive or account only profiles
- broken reset password functionality
- member tools link disappearing
- make member button bug with account only profiles
- manage member page doesn't refresh after changes
- auto login after email verification
- broken signup flow caused by renaming noobs to needs inductions
- fixed several bugs related to above
- ios version update script
- android capacitor build mode
- made capacitor build mode check if logged in before hiding splashscreen
- sending members to stripe flow if stripe flow is not enabled
- themeing on capacitor build mode
- better documentation for kiosk building
- fixed linting on some files
- refactored all remaining (except for door/interlock controller endpoints) endpoints to use DRF in preparation for mobile app support
- Changed capacitor scheme and changed iOS build target to 13.0
- fixed typo on doors/interlocks page
- fixed some plurarls in django admin
- 𝔗𝔥𝔢𝔪𝔢𝔦𝔫𝔤 𝔰𝔲𝔭𝔭𝔬𝔯𝔱 🎨 (thanks @snoopen)
- stripe billing payments
- .dockerignore bug
- added note about nvm/ubuntu dependency
- documentation regarding font awesome icons
- free font awesome icon usage bugs
- out of date packge-lock.json
- minor dependency updates
- removed sentry configuration
- configurable dashboard stats card image.
- updated default/example dashboard cards and icons.
- made Dockerfile build more reliably and published armv7 image.
- This CHANGELOG.md file!
- Google Analytics support (just specify your tracking id in the constance settings).
- Reboot and/or unlock buttons now appear on doors and interlocks.
- Implemented manage door and interlock pages.
- Screenshots of v2 to repo and added to readme.
- Initial typescript support.
- Added Alpha version of iOS app.
- Ground work (backend models, UI and endpoints) for Stripe billing.
- Python linter to GitHub actions.
- Configurable (via constance) site logo URL and sendgrid API key.
- Configurable (via constance) default member type for signups.
- [BREAKING] reset database migrations - existing databases may need to be manually migrated across.
- Updated dockerfile to optimise for final image size. It went from ~2gb down to ~800mb.
- Split out manage member, doors and interlock components to separate page with dedicated route for easier navigation.
- Numerous UI tweaks for improvement to UI and formatting consistency.
- Upgraded to Quasar v2.
- Updated project dependencies.
- Update credit card component has been moved to a separate "Billing" page in anticipation of Stripe billing.
- Set cache header to 0 for index.html to assist with cache busting on frontend updates
- Xero integration has been deprecated and will be removed in a future release once Stripe billing is stable.
- Typos in README.md.
- Electron-packager and other dependency conflicts.
- First run detection and fixture loading.
- Added a handful of missing translation definitions.
- Corner/border formatting with credit card component.
- membermatters#90
- membermatters#91
- membermatters#92
- membermatters#93
- membermatters#101
- For these versions, please see the git commit history for changes.
- for new features.
- for changes in existing functionality.
- for soon-to-be removed features.
- for now removed features.
- for any bug fixes.
- in case of vulnerabilities.