Pre-1.0 Changelog#
This changelog covers pre-1.0 releases of Kegbot. For the latest releases, see Changelog.
Upgrading from a pre-1.0 release#
Use the following procedures to upgrade from a pre-1.0 version of Kegbot Server:
## Step 1: Only for installs older than 0.9.32
(kb) $ pip install kegbot==0.9.33
(kb) $ kegbot upgrade
## Step 2: For *all* pre-1.0 installs
(kb) $ pip install kegbot==0.9.35
(kb) $ kegbot upgrade
(kb) $ pip install -U kegbot
(kb) $ kegbot upgrade
See Upgrading for general instructions.
Pre-1.0 Releases#
Version 1.0.0a6 (2014-06-24)#
Fixed redirect URL when accessing an admin page.
Version 1.0.0a5 (2014-06-23)#
Edits to profile images are allowed.
Bugfix: API tap create/delete.
Version 1.0.0a4 (2014-06-13)#
Twitter: Bugfix involving guest checkins.
Foursquare: Dropped venue validation.
Version 1.0.0a3 (2014-06-06)#
Updated upgrade script.
Bugfix: Error when reassigning drinks without a username.
Version 1.0.0a2 (2014-06-04)#
Updated notification templates.
Version 1.0.0a1 (2014-06-04)#
Rebased migrations, equivalent to v0.9.35.
Version 0.9.35 (2014-06-04)#
Security: Update to Django 1.6.5.
Dropped support for default user.
Users can set a display name separate from their username.
Guest display name can be altered on user detail page.
Version 0.9.34 (2014-05-30)#
Internal schema changes.
Fixed an error on the backups page.
Version 0.9.33 (2014-05-28)#
Photos can be deleted (on the Drink page) by the owner or a staff member.
Keg images in the web UI are clickable.
Webhooks now post full event data (same as
/api/events
).Bugfix: Fixed validation of new user registration.
Bugfix: Fixed an issue that could lead to empty statistics.
Version 0.9.32 (2014-05-20)#
Bugfix: Errors caused in staff-only registration mode.
Version 0.9.31 (2014-05-19)#
New “registration mode” setting allows inviting users to closed systems.
Bugfix: #274 (extra slash in external URLs).
Bugfix: Error when beverage vintage was set.
Version 0.9.30 (2014-05-14)#
Optional settings are now documented.
It is no longer necessary to configure the site’s hostname.
The “allowed hosts” setting is no longer stored in the database (see Settings.)
Version 0.9.29 (2014-05-07)#
API: Support for adding and removing taps.
New command-line tool
kegbot rename_user
allows admins to rename users (#271).Bugfix: #270 (linking devices failed in restricted privacy mode).
Version 0.9.28 (2014-05-05)#
kegbot version
now correctly reports the installed version.API: Added
version/
endpointBugfix: #268 (NFC token assigment).
Bugfix: #269 (error during upgrade).
Version 0.9.27 (2014-05-01)#
Bugfix: #263 (workers not exiting).
Version 0.9.26 (2014-05-01)#
Note
Supervisor configuration has changed. Please update your configuration file to match the example supervisor config.
Beverage images are now served as PNGs, preserving transparency.
Updated supervisor configuration.
Bugfix: #262 (user sessions page).
Bugfix: #264 (task failures leading to missing stats).
Bugfix: #265 (errors logging in through tablet when site is private).
Kegadmin “Logs” tab will now show more logs, not just errors.
Foursquare/Untappd bugfixes.
Internal: PEP8 cleanup, more unittests.
Version 0.9.25 (2014-04-24)#
Experimental new commands:
kegbot backup
andkegbot restore
.Bugfix: #262 (user sessions page).
Addressed an issue which could lead to incomplete statistics being shown.
Version 0.9.24 (2014-04-20)#
Updated
kegbot run_workers
to work without extra environment flags when running under supervisor.Bugfix: #255 (problems activating newly-registered users).
Internal cleanups.
Version 0.9.23 (2014-04-17)#
Note
Supervisor configuration has changed. Please update your configuration file to match the example supervisor config.
Redis is now a required dependency; memcached is no longer required.
Statistics are computed in a background task (#214).
Untappd: Foursquare venue is attached to checkins when available (#178).
Foursquare: Photos are attached to checkins when available (#143).
Improved support for unicode characters (#225).
New commands: kegbot run_all and kegbot run_workers.
SQLite is no longer recommended for new installs.
Added worker status dashboard.
Version 0.9.22 (2014-04-07)#
Security: Fix issue #243.
API: Support meter and toggle assignment.
Version 0.9.21 (2014-04-04)#
Supervisor commands have changed; please update your configuration.
Twitter: Fix issue #232 (image upload failure).
Twitter: Fix issue #231 (guest tweet setting not respected).
API: Fix issue #233 (drink list error on empty system).
Bugfix: #234 (email misconfiguration causing server errors).
Version 0.9.20 (2014-03-27)#
Security: Fix issue #230.
Version 0.9.19 (2014-03-26)#
Twitter plugin: A new setting gives control over whether pictures are attached to tweets.
API: Taps can be looked up by ID instead of meter name.
Bugfix: Fixed an issue that caused registrations to fail when e-mail was not properly configured.
Untappd: Checkins are attempted for all pours.
Bugfix: Password reset e-mails.
Version 0.9.18 (2014-03-17)#
These order in taps are listed can be changed.
Bugfix: Fixed an issue that broke kegbot upgrade on systems which already had a user named “guest”
Version 0.9.17 (2014-03-08)#
Many improvements to the admin interface.
The Django database admin is now disabled by default; set KEGBOT_ENABLE_ADMIN = True in local_settings to re-enable.
Registration via the API sends an activation e-mail and does not require a password to be set.
A new site setting, “Check for updates”, can be used to disable the dashboard update check.
Kegs can be created and managed without tapping them.
Pre-defined keg sizes are now stored as the keg’s “shell type”; a keg’s initial volume can be different from that type’s default.
Internal: Controllers and flow meters are now first-class objects.
Internal: Migrated to Django custom user model.
Internal: Better support for non-beer beverage types.
Internal: Anonymous pours are now assigned to the virtual user “guest”.
Bug fix: Issues with migrating on MySQL with v0.9.16.
Bug fix: Password reset.
Bug fix: Plugin account linking.
Updated command for launching Celery in kegbot-supervisor.conf.
Version 0.9.16 (2014-01-13)#
E-mail notification support (see docs).
Bugfixes in Twitter and Untappd plugins.
Updated to Django 1.6.1.
Version 0.9.15 (2013-12-17)#
Webhooks now get single events (backwards-incompatible change).
Updated Celery integration.
Bug fix: #154 (Twitter keg events not firing).
Version 0.9.14 (2013-12-16)#
Pour images will be loaded lazily in the browser.
Webhook support moved to plugin.
Version 0.9.13 (2013-09-09)#
Deleting the last drink in a session will delete the session.
Bug fixes: #146, #147, #150.
Version 0.9.12 (2013-08-01)#
Site timezone can be changed in the admin panel.
Site hostname should be specified in the admin panel.
Plugins: Twitter, Foursquare, and Untappd support have been moved into a new plugin model. These features must be re-activated through the Kegadmin and Account web interfaces; previous configuration will not be migrated.
The default SF800 calibration factor has been changed to
0.185185185185
. You may need to adjust your taps manually.
Version 0.9.11 (2013-07-01)#
Home page and session page redesigned to show more photos.
Drinks can now be cancelled, modified, and re-assigned in the web interface.
Multiple web hook URLs may be given.
New admin interfaces for authentication tokens and beer types.
Statistics are regenerated more quickly.
New generational caching mechanism; many API responses benefit.
Improved automatic support for django-debug-toolbar.
Keg full and served volume is now persistently maintained (rather than dervied from drink logs)
Version 0.9.10 (2013-05-27)#
Fixed issue #127 (bug assigning a token)
Fixed issue #128 (bug while ending a keg)
Version 0.9.9 (2013-05-14)#
Note
Android app versions earlier than 1.0.0 beta 39 are not compatible with this release.
Security: Fixed issue #124 (some API endpoints remained exposed despite members-only privacy mode)
Drinks can now be canceled in the kegadmin dashboard.
kegbot-admin.py
has been renamedkegbot
. It’s cleaner.Virgin systems no longer show the “sessions” tab, since there aren’t any.
Fixed issue #122 (staff-only privacy mode causing an error).
Fixed issue #120 (error during setup wizard).
Version 0.9.8 (2013-04-06)#
Python 2.7 and Django 1.5 are now required.
Sessions are now exposed in the top navbar, and are listed by year, month, and day.
Miscellaneous visual improvements.
Untappd API v4 is supported (thanks pmppk).
Many enhancements to the admin dashboard.
API support for starting and ending kegs.
Note
If you are upgrading from an older version of Kegbot, run the following
command after kb_upgrade
:
$ kegbot-admin.py kb_migrate_times
Version 0.9.7 (2013-01-10)#
Note
This update requires a schema migration. See Upgrading.
New tool:
setup-kegbot.py
, to assist with first-time setup.New web-based setup wizard, for finishing first-time setup.
Version 0.9.6 (2012-12-30)#
Fixed a bug breaking Twitter checkins.
Version 0.9.5 (2012-12-30)#
A new admin tab shows recent server error logs.
Pillow is now used instead of PIL.
Version 0.9.4 (2012-11-20)#
Fixed bug 86 (“brewer matching query does not exist”)
Gunicorn is now included as a dependency.
Scripts and instructions for using with Gunicorn, Nginx, and supervisord.
Version 0.9.3 (2012-11-02)#
Uploaded images are converted to JPEG instead of PNG.
Account registration links are more prominent.
Site settings allow you to enable/disable web registration and e-mail confirmation.
Version 0.9.2 (2012-07-05)#
Security
A regression first introduced in v0.9.0 caused the API’s api_key check to fail on some requests. It has been fixed.
General
The standalone Kegbot Core has been removed and now lives in its own repository: https://github.com/Kegbot/kegbot-pycore
Version 0.9.1 (2012-07-04)#
General
Kegboard-specific code has been moved to the Kegboard git repository; it is installed automatically as a dependency: https://github.com/Kegbot/kegboard
Some other code has moved to a new package, also automatically installed as a dependency: https://github.com/Kegbot/kegbot-pyutils
Kegweb
Site-wide privacy can now be set in the admin console (public, members only, closed).
A default drinker can be specified for automatic authentication (instead of crediting the guest account); useful for single user systems.
The guest account name and image can be adjusted.
Fixed a bug which caused the tap form to be cleared after editing.
Several aesthetic improvements.
Version 0.9.0 (2012-06-21)#
Upgrade Notes
Note: Due to changes in the Kegbot core, you must run the following commands after updating:
$ kegbot-admin.py migrate
$ kegbot-admin.py kb_regen_stats
Note: The file common_settings.py
has been renamed to
local_settings.py
. The old name is still supported, but will produce a
warning. Please move it.
Note: If you are updating from git, please remove the “bootstrap” entry from
.git/config
, and rm -rf pykeg/web/static/bootstrap
prior to running
git pull
.
Core/General
Made several modules optional: Celery, Tornado, Sentry, and django-debug-toolbar.
API and database column name changes.
Kegweb
Improvements to AJAX auto-refresh.
Kegweb’s JavaScript is now written in CoffeScript.
Some visual changes.
Version 0.8.5 (2012-05-13)#
Upgrade Notes
Twitter and Facebook support has been changed. Any existing Twitter/Facebook connections will be lost.
Important: Please run the following commands to delete the old Twitter/Facebook support prior to upgrading:
$ kegbot-admin.py migrate contrib.twitter zero
Note: Due to changes in the Kegbot core, you must run the following commands after updating:
$ kegbot-admin.py migrate
Note: To post tweets, you must run the celery daemon:
$ kegbot-admin.py celeryd --loglevel=INFO
Core/General
Django 1.4 support.
Foursquare, Twitter and Untappd support.
Kegboard has moved to a new repository: https://github.com/Kegbot/kegboard
Session timeout is now configurable on the Kegadmin page.
Improvements to error logging.
Kegweb
Various aesthetic improvements.
You can now link a Google Analytics account.
Taps can be created and deleted using Kegadmin.
Version 0.8.4 (2011-12-30)#
Core/General
Several improvements to stats handling.
kegbot_core
local backend is officially deprecated.Web hook support: post event details to an arbitrary URL after a pour.
Kegweb
Major improvements to the Kegweb look-and-feel.
Added Bootstrap and rewrote kegweb css in lesscss.
Units can now be displayed in metric.
Kegadmin improvements: tap settings are editable, add taps.
Version 0.8.3 (2011-08-09)#
Core/General
Fix a temperature recording bug that appeared in v0.8.2.
Version 0.8.2 (2011-08-05)#
Note: Due to changes in the Kegbot core, you must run the following commands after updating:
$ kegbot-admin.py migrate
$ kegbot-admin.py createcachetable cache
Core/General
Pictures can be attached to drinks.
Better support for ID-12 RFID tokens.
API
Added an endpoint for session statis.
Fixed ABV return value.
Return more detail on the kegs list endpoint.
Kegweb
Added support for displaying measurements in metric units.
Updated to use django staticfiles module.
Kegboard
Added support for magstrip readers.
Version 0.8.1 (2011-06-13)#
Note: If you installed version 0.8.0 and find your api_key unusable, you need to regenerate it. Log in and click the “regenerate api key” button on your account page.
API
Fixed incorrect API key generation affecting some users.
Kegboard
Updated to firmware version 9, expanding support for
set_output
and adding support for ID-12 RFID readers.
Kegweb
Added “regenerate API key” button.
Version 0.8.0 (2011-06-12)#
Note: Due to changes in the Kegbot core, you must run the following commands after updating:
$ kegbot-admin.py migrate
$ kegbot-admin.py kb_regen_events
Core/General
Support for per-tap relay control (solenoid valve control for authenticated users.)
kegbot_core.py
now uses the RESTful web API backend interface by default.Kegbot daemons now perform automatic log rotation, every night at midnight.
When executed with
--verbose
, daemons now show less spam.The drink “endtime” column has been removed (not user-visible).
Flag names have changed;
--api_url
and--api_key
now control the base API url and the API access key for any program which uses the Kegbot Web API.The “soundserver” application has been improved and once again works. Yay.
Each keg record now has a “spilled” volume counter. This can be used to store the total amount of wasted or lost beverage which is not associated with a drink record.
When running
kegbot-admin
,PYTHONPATH
now has higher precedence than/etc/kegbot
and~/.kegbot
. This makes it possible to provide an alternate location forcommon_settings.py
. (If the preceding was nonsense to you, you are normal..)Django 1.3 is now supported.
Kegweb
The account page for a logged-in admin now displays the API key for that user.
Various CSS changes and aesthetic tweaks.
System events are shown on the Kegweb main page.
Automatic AJAX refresh of drinks (and now events) on the main page has been improved.
Session detail pages show individual pours from that session.
Session detail pages show the total number of authenticated drinkers. (Guest/anonymous pours do not contribute to this count.)
Fixed a bug where previous keg was not being marked offline after a keg change.
The values in the pints-per-session histogram are now less ambiguous.
The background image is now included in version control, and could be replaced locally.
Beer type images rendering has been cleaned up.
API
API keys are now calculated differently. As a result, previously-used API keys are invalid. To determine your API key, visit
/account/
while logged in as an admin user.System events are now exposed in the web api.
Sessions are now exposed in the web api.
Date/time fields reported in the web api are now always expressed in UTC, regardless of the system/Django time zone.
Version 0.7.8 (2010-12-01)#
Note: Due to changes in the Kegbot core, you must run the following commands after updating:
$ kegbot-admin.py migrate
$ kegbot-admin.py kb_regen_stats
Note: If you have installed using ./setup.py develop
, you will need to
issue that command again; new versions of some dependencies are required.
Core/General
Added SystemStats table.
Now requires the
pytz
module; usepip install pytz
to install.System, keg, session, and drinker statistics are now recalculated quickly after every pour.
Kegweb
Added slightly more info to the “all-time stats” page.
Used cached stats on the “all-time stats” page, making it more responsive.
Fixed the AJAX auto-update of the drink list on the homepage.
Fixed a crash in the LCD daemon, encountered when an active tap did not have a temperature sensor assigned to it.
Fixed a crash on the keg admin page.
Fixed a regression introduced in v0.7.6 that caused kegweb to crash when a chart could not be displayed; the chart is once again replaced with a descriptive error message.
Fixed “known drinkers” statistic on the keg detail page.
Set time zone UTC offset in ISO8601-formatted timestamps. This fixes an issue where drinks appear to be poured in the future when the local timezone is behind the server timezone.
Version 0.7.7 (2010-11-28)#
Note: This is a quick patch release to v0.7.6. See changelog for v0.7.6 for major changes.
Core/General
Fixes a bug discovered with stats generation in v0.7.6.
Version 0.7.6 (2010-11-28)#
Note: An update to the kegboard firmware is included in this version. Reflashing your kegboard is recommended.
Note: It is recommended that you rebuild all session and statistical data after updating to this version:
$ kegbot-admin.py kb_regen_sessions
$ kegbot-admin.py kb_regen_stats
$ kegbot-admin.py kb_regen_events
Core/General
Improved token handling, resolving multiple bugs related to token timeouts and multi-tap authentication.
Added SessionStats table. Statistics are now continuously computed for drinking sessions, to go along with per-user and per-keg stats.
Removed protobuf dependency.
rfid_daemon: added
--toggle_output
option, to enable the external output whenever an ID is present.LCD daemon improvements.
Kegweb
Sessions can now be assigned a title, and have descriptive permalinks.
Sessions are now prominently featured on Kegweb pages. Various improvements to session display.
Replaced Google image charts with javascript/SVG Highcharts package.
Various bugfixes to the web API.
Added an example WSGI configuration file.
Kegboard
Improved stability in kegboard_daemon when malformed or unknown messages are received.
Added the “auth token” type to the serial protocol.
Fixed reporting for negative temperatures.
Fixed kegboard reader/daemon to not crash when
EAGAIN
is received from the OS.Update Makefiles.
Version 0.7.5 (2010-09-11)#
Note: Due to changes to the third-party socialregistration
dependency,
existing users will need to issue the following command after updating:
$ kegbot-admin.py migrate --fake socialregistration 0001
$ kegbot-admin.py migrate
Note: If you have installed using ./setup.py develop
, you will need to
issue that command again; new versions of some dependencies are required.
Core / General
Fixed a race condition which could cause the kegbot core to crash due to an erroneous watchdog error.
Fixed a crash in
kegbot_admin.py kb_regen_stats
that would occur when computing stats for a keg with no recorded drinks. (The workaround was to go have a beer..)Fixed issue #50 (do not record drinks below minimum volume threshold.)
Kegweb
Updated to use
django-socialregistration
version 0.4.2, and the officialfacebook-python-sdk
package. Removed mirror of pyfacebook.The number of recent pours shown on the main page is now configurable. See
KEGWEB_LAST_DRINK_COUNT
incommon_settings.py.example
Version 0.7.4 (2010-09-08)#
Core / General
Backend: extensive under-the-hood changes to support multiple sites in a single backend instance. This isn’t yet used by anything.
Fixed issue with pykeg.core migration 0031.
Improvements to session record keeping.
Added new SystemEvent table.
Kegweb
Improved keg detail page, with better-looking sessions.
Version 0.7.3 (2010-09-01)#
Note: Existing users upgrading from a previous kegbot version will need to issue the migrate command to update their database schema. Also, statistics and sessions need to be regenerated:
$ kegbot_admin.py migrate
$ kegbot_admin.py kb_regen_sessions
$ kegbot_admin.py kb_regen_stats
Core / General
Fixed issue authentication tokens for consecutive pours not being reported correctly.
Improved stats reporting; fixed drinker breakdown graph on keg detail page.
Added a notes field for Keg records.
Internal cleanups to the backend APIs.
Schema change: Started record auth token details used for each pour.
Schema change: Guest pours are now represented by a
null
user (rather than a specific guest account) in the database.
Kegweb
Fixed issue causing kegweb to break when used without proper Facebook credentials.
Improvements to the currently undocumented kegweb API.
Kegboard
Update KegShield schematics to include Arduino and Arduino Mega shield designs.
Version 0.7.2 (2010-06-29)#
Core / General
Django v1.2 is now required.
Added new dependency on
django_nose
for running unittests;make test
works once again to run unittestsImproved LCD UI; now shows tap status, last pour information.
Fixed SoundServer, which had stopped working some time ago.
Miscellaneous packaging fixes, which should make installation with
pip
work a bit better.
Kegweb
Fix for bug #48: Facebook connect login broken.
Fixed/update CSRF detection on forms for Django 1.2.
Bugfixes for the Kegweb REST (‘krest’) API.
Moved Twitter add-on out of the core and into a new daemon,
kegbot_twitter
, similar to Facebook appfb_publisher
.
Version 0.7.1 (2010-06-04)#
Core / General
Added missing dependencies to setup.py.
Removed a few locally-mirrored dependencies.
Added protobuf source mirror to setup.py.
Kegweb
Reorganized account settings views.
Add password reset forms.
Version 0.7.0 (2010-05-23)#
Initial numbered release! (Changes are since hg revision 500:525e06329039).
Core / General
Vastly improved authentication device support.
New network protocol for Kegbot status and control (kegnet).
Temperatures are once again recorded. Temperature sensors can be associated with a specific keg tap.
Support for Phidgets RFID reader.
Flowmeter resolution is now set on a tap-by-tap basis (in KegTap table).
Twitter: added config option to suppress tweets for unknown users.
Started using django-south for schema migrations.
Sound playback on flow events: added the sound_server application.
Added kegbot_master program, to control and monitor full suite of kegbot daemons.
Improved support for CrystalFontz LCD devices; new support for Matrix-Orbital serial LCD displays.
Added Facebook publisher add-on.
Packaging improvements; setup.py install works.
Kegboard
Bumped firmware version to v5.
Fixed packet CRCs.
Added support for OneWire presence detect/authentication device.
Improved DS1820 temperature sensing.
Improved responsiveness of OneWire presence detect.
Shrunk size of firmware significantly.
Added experimental support for serial LCDs.
Added schematic files for Kegboard Arduino shield.
Kegweb
Design refresh; new HTML/CSS and many more graphs and stats.
Added keg administration tab.
Added experimental support for Facebook connect.
Fixed broken relative time display.
Fixed bug on submitting new user registration.
Docs
Improved documentation.
Added changelog :)