Two weeks and 112 commits later, I am tagging FreezeMessenger Beta 2. This release ensures that Postgres is fully supported, and that all advertised cache methods (Memcached, Redis, and so-on) work as intended. From the release notes:
This is the second beta of FreezeMessenger; most core functionality is present and tested, only minor features will be added, and no breaking API changes should occur at this point. However, database schema changes may still occur; until Release Candidate 1, be prepared to have to reinstall between betas.
Note that, for this release, SQL Server support is still considered experimental. All other advertised functionality should work as expected.
In addition, while PHP 5.5-7.0 support is planned (and has been prepared for), it is not currently a priority. If you would like to use FreezeMessenger with PHP 5.5-7.0, please post an issue, and a PHP 5.5-7.0 version of this beta will be tested and released.
The following functionality is still somewhat rough in this beta:
1.) Unread message functionality, while improved from Beta 1, is still inconsistent.
2.) Flood detection may be overzealous.
3.) Cache invalidation needs improvement in some key areas.
4.) Users are not properly notified when they have been silenced, or when other permission-revoking events have occured.
5.) Room creation/editing
More automated testing will be added in the next release, and the documentation should be further improved. Finally, manual testing begins with this Beta; if you are interested in being a beta tester, please post an issue.
Notable changes in this release
- Added JSDocs and PHPDocs to many methods.
- Indexes have been reconsidered on all tables. They should, on the whole, be more performant and scalable. ca996ae
- Anonymous users now correctly display their IDs when posting, and their IDs persist across session refreshes.
- Installation: It is now possible to specify the forum database connection settings at installation time. 6e47095
- WebPro: Improvements in autocomplete handling. a41a2e3
- WebPro: Properly declare UTF-8 filetype. 8513926
- WebPro: Fixes to typing indicators, the favicon flash functionality, and event stream failure detection. fd1103f c84022b 6f807fa 3ebf66b
- WebPro: WebKit notifications are improved, with more information displayed. 5cc5a75
- WebPro/Room: Fix message retrieval bug when switching rooms. 2933642
- WebPro/Files: Fixed the “next” button not greying when no results are retrieved.
- WebPro/Files: Added user selection for administrators. f7e8ec3 (Note that while the files API exposes more limited user selection capabilities for non-administrators, it is generally not intended to be used in a generalised frontend.)
- WebPro/Files: Added roomnames to upload files. Added usernames if the user is an admin. 7200e05
- WebPro/Files: Added rounding to byte displays. d5a17b5
- WebPro/Kicks: Added ability for users to view which rooms they have been kicked in. 9f71497
- WebPro/Kicks: Added user/room selection for administrators. 450cd51
- WebPro/Rooms: The last message time will now display. 5e888d2
- Login/Microsoft: Microsoft logins no longer break when relogging in, and avatars are correctly obtained using this method. 596c428
- API/Files: Added userId, roomId to output.
- API/Rooms: Added last message time sort; will use as default. 5e888d2
- Backend: The default message length limit has been raised to 5,000; by default, the database schema supports a maximum length of at least 10,000. f1e34f8
- Backend/Private Rooms: Fixed a bug where two identical private rooms were treated as separate private rooms. 45e2635
- Backend/Private Rooms: Fixed statuses outside of streams. 16e10d5
- Backend/Event Streams: Database event streams are now datelined; only the last 15 seconds of events will be returned, and messages will be deleted by dateline instead of ID. 77979fe (The implication of this is that a user can take 15 seconds to reconnect to a message stream without losing information in most situations, and that especially busy streams — say, your hypothetical Twitch Plays Pokémon — will automatically scale much better.)
23a. As a consequence of this change, unread message notifications won’t stick around (long) after they are dismissed. A better solution may still be desirable.
- Backend/Event Streams: Message chunking is now supported with database event streams. As memory tables are used by default, the new per-row allocation of 100 characters (instead of 1,000) means that far more stream events can be stored in memory at once. 77979fe
- A replication connection is now… slightly less broken than before, as it now uses the same transformation data the main connection does. (The functionality is still essentially unimplemented, or at the very least entirely untested.)
- Database: The Database code has been moved to its own Git module, and has had more proper namespacing. https://github.com/FreezeWarp/freeze-db-abstraction
- Database: There is now an experimental PDO driver PostgreSQL. The previous PDO driver for MySQL has been fixed (it was completely broken).
- Database: PostgreSQL is now fully working (all automated tests are passing), and SQL Server should be working for core functionality. In addition to more foundational issues, a bug preventing Postgres from storing image thumbnails has been fixed, as has one preventing the room list from sorting favourited rooms.
- Database: The storage types of indexes can now be specified, and are in dbSchema.xml, install, and the schema updater.
- Database: Indexes can now be commented.
- Cache: Unit tests have been added for all cache methods, and Memcached should now be working. Additionally, the increment function with Redis is fixed, meaning that flood detection should be working with Redis caching now. https://github.com/FreezeWarp/freeze-messenger/blob/master/tests/CacheTest.php