- Fixed bug in the browser check middleware (was not able to handle headless browsers)
- Final release for SocketStream launch today!
- Greatly improved SSL support. Now fully documented in README
- A secondary HTTP server is now run by default in HTTPS mode to auto-redirect incorrect HTTP requests to the domain specified in the cert
- HTTP API can now be configured to only run in HTTPS using SS.config.api.https_only
- Changes to configuration file. Done now to prevent major changes here later on
- Updated Jade NPM to latest version. NOTE! Params for HTML tags must now be in "height=21" rather than "height: 21" format
- Updated /app/views/app.jade with new syntax
- Refactored HTTP middleware to...
- Allow support for your own high-speed custom HTTP middleware. See README for details/examples
- Updated README with pre-launch details
- VIM backup files (ending with ~) are now ignored (thanks kryton)
- Updated all NPM dependencies (apart from Jade) to latest versions and tested compatibility
- Updated Socket.IO client to 0.6.3
- Added favicon.ico :)
- Refactored HTTP serving to support 'middleware' and allow custom HTTP handling in future
- Added 'Strict Mode' which checks browser for native websocket support. See Incompatible Browsers section in README
- New projects now include a /static directory. This will be used for maintenance pages and other things in the future
- Changed the way new projects are created. A basic /config/app.json file is now included by default
- Added FAQ section to README
- Now works fine if installed as an NPM package as well as 'sudo npm link'
- Minor bug fixes
- Calls to SS.server actions from the browser will automatically output to the browser's console if no callback function is provided (makes testing/debugging SS.server actions much easier!)
- Heartbeats from the client are now sent and processed more efficiently
- The HTML output now lists links to CSS files before JavaScript files, as recommended by the Chrome Audit tool
- Updated the README
- Major update with an IMPORTANT API CHANGE!
- Client files are now namespaced in exactly the same way as Shared files. Existing apps will not break, but look at the README to see the new best practice
- Added very basic rate limiting. This is turned off by default whilst we try it out in the real world, but can be switched on with SS.config.limiter.enabled = true. See new Security section in README
- Improved initial creation of client libs
- A fair bit of internal refactoring
- Added Security and Scaling sections to README
- Errors in client-side .jade files are now caught in development (once new Jade released is pushed to npm)
- Now prevents you from starting a project with an outdated version of SocketStream (can be overridden)
- Fixed bug preventing /favicon.ico from being served
- Major enhancement: Errors in client-side .coffee and .stylus files no longer kill the server
- A new SocketStream error page is sent instead, showing the backtrace on screen, as well as in the console
- .js files are now fully supported in /app/shared, along with .coffee. Mix and match as you wish
- Fixed bug concerning dropping clients without active sessions
- Added Known Issues section to README
- .js files are now fully supported in /app/client, along with .coffee. Mix and match as you wish
- If a lib file fails to compile it will be automatically regenerated next time - no more empty files
- Refactored code to pre-parse incoming URLs to reduce duplicate parsing later down the line
- Improved API errors
- Lots of other refactoring and minor improvements
- .coffee files can now be placed in /lib/client and will be transparently compiled
- Fixed bug which appears when too many clients disconnect at once
- Fixed bug when attempting to pack assets with no /app/shared directory present
- Included client disconnect/reconnect example actions in generated new project code
- Upgraded jQuery to 1.6.1
- Other minor changes
- Multiple Redis databases are now supported by setting SS.config.redis.db_index. Defaults to 0, the Redis default. Documented in README
- Sessions now extend Event Emitter in order to fire custom server-side code when the websocket connection is lost. Documented in README
- Improved the way errors are thrown
- IMPORTANT API CHANGE: @session.loggedIn() is now @session.user.loggedIn() , @session.logout() is now @session.user.logout()
- Major refactor of sessions and pubsub system to improve readability and allow support for...
- New feature: Private Channels. Publish events to unlimited channels across servers using SS.publish.channel(). See new 'More Pub/Sub' section of README
- SS.server code now be nested up to 1000 levels in one file
- Client now displays a warning if it receives an unregistered event
- Server now warns if attempting to call a reserved action name (currently only 'session' and 'user')
- Tidied up some logging
- Moved noisy 'Updating list of Users Online' messages to new SS.config.log.level of 4
- Converted all internal code to use SS instead of $SS
- Updated README to make it easier to see what the project's about
- Updated NPM packages
- Changed client code to prevent re-calling app.init when the connection comes back up
- Huge improvements to the way Shared code works. Classes are no longer required but are still supported. Added new section to README
- Shared code can now be executed directly from the client via SS.shared (exactly the same syntax as the server :-)
- Added 'Users Online' feature and API to make it easy to create real-time chat/social apps. Documented in README
- Added 'The Road to 0.1.0' in the README
- Removed ability to configure global client-side variable name for now - it's not 100% stable. $SS and SS both work but SS is now recommended.
- Now compatible with NPM 0.X and 1.0 (thanks Paul)
- Major change to the client-side API: The 'remote' global method is deprecated in favour of 'SS.server' followed by the server-side function you wish to invoke.
- Advantages are: 1) A 100% consistent experience between server and client 2) Automatic auto-completion of the server-side API in the browser command line. Woo!
- The window.remote global function will stay around for a while whilst existing apps are converted but will be removed before 0.1.0
- Also: Speeded up initial client/server protocol by combining multiple system messages into one
- Changed the way the app is initialized - no longer requires JavaScript code to be injected into the HTML
- Experimenting with Tim Caswell's client-side module loader. More on this soon
- $SS is now aliased as SS by default in both the server and client, meaning you no longer need the dollar symbol when calling the API
- However, if the SS variable conflicts with something in your project, you may easily change it in the config: $SS.config.ss_var and $SS.config.client.ss_var
- All docs have been updated accordingly. Remember this is just an alias - existing code will not break
- Introducing the SocketStream logo
- Improved new project startup page
- Improved reconnection to server
- Hostname now shown on boilerplate upon server startup
- Bug fixes
- New $SS.config.hostname option allows server to be bound to a particular hostname
- Bug fix
- Improved Redis error checking
- Upgraded jQuery to 1.5.2
- Refactored app generator
- Improved client re-connection code
- /public/images folder now created by app generator
- Added $SS.config.redis.key_prefix variable which defaults to 'ss'
- Updated Socket.IO, Jade and Stylus
- Started work on publish to group and users online (wip)
- Added 'silent message' option to 'remote' command to prevent logging
- Added a section about Logging to the README
- Fixed server-side logging bug
- $SS.env can now be called within the client
- Fixed bug when re-generating client-side files
- Updated and tested npm dependencies
- Better client-side logging: method and params now shown together on same line
- Fixed bug on macs where .DS_Store file would be loaded in Developer mode
- General code tidying
- Added support for a new config file, /config/app.json, which loads first regardless of environment. The environment config file is then loaded and merged if present.
- Major refactoring of client/server protocol to allow new message types and handlers to be registered in the future. Many more comments added
- More refactoring and docs
- More work on Realtime Models. Disabled by default as highly experimental. Can be enabled with $SS.config.rtm = true
- New feature: Refactored model loading code to support nested models in the same way as $SS.server
- New feature: The HTTP API now supports authenticated requests over Basic Auth (over HTTPS when available). See README for details.
- Change: To bind to multiple events client-side use $SS.event.on(event_name, function). This conforms to EventEmitter and SocketIO
- Improvement: A severed connection will now automatically attempt to reconnect, even if no requests are pending
- New feature: Nested client files are now supported. The folder name they are placed in has no effect on the object namespace for now but is likely to in future
- Major Change: The app.coffee client file is no longer a CoffeeScript class (it doesn't need to be) so it should now begin 'window.app ='
- Improved User Authentication section in docs
- Updated README with details on how to use modular authentication within your app
- Made Object.extend recursive
- Refactored session code to support forthcoming authenticated HTTP API
- Bumped Jade release
- Fixed bug loading multiple files within a nested directory and improved name spacing conflict resolution
- Added more boiler plate headers
- Major change: /app/server files should now begin 'exports.actions =' with the all publicly exposed actions listed as before
- All private methods should now be listed outside of the exports.actions and be in the format 'method = () ->'.
- New feature: /app/server code now supports nested functions
- Major change: Files in /app/server are now recursively pre-loaded into $SS.server and instantiated upon startup. This allows for:
- New feature: Invoke any method within /app/server using the console or within other server-side files. E.g. $SS.server.app.square(25, console.log)
- New feature: Shared files within /app/shared are pre-loaded an accessible the same way using $SS.shared
- Improvement: Updated banner to reflect pre-loaded files
- Change: NODE_ENV is now SS_ENV
- Added info about Environment-based Configuration in README
- Ongoing work towards Realtime Models and REST support
- Bug fix: Sort order of client files
- Improvement: Startup banner now makes it apparent if you're running in HTTPS
- Ongoing experimental work on Realtime Models
- Improvement: Replaced Object.extend method
- Improvement: Internal refactoring and ground work on Realtime Models
- Improvement: Much better server/client application error reporting and highlighting
- Improvement: Extending objects in a much better way which won't break mongoose and other libs that iterate over an object
- Improvement: Redis config debugging
- Improvement: Incoming events now logged in the terminal even if they originate remotely
- Bug fix: Bumped uglify-js npm version. Should now install correctly
- New feature: Added $SS.config.client.remote_prefix option to make it easy to maintain separate versions of your server api (e.g. 'v1')
- Improvement: More errors now appear red
- Improvement: SocketStream will fail to start up if JSON app config file is incorrect
- New feature: Experimental HTTPS support. Switched off by default as currently unstable. Updated README with info.
- Improvement: Massively refactored server and asset manager. Now much cleaner and starts up faster
- Improvement: Standardized server and console startup
- Improvement: New version of Socket.IO
- Improvement: Tagged recent releases in Github
- Improvement: Massively refactored boot up procedure to make sure we never load anything unless we need it
- Improvement: The correct (tested) version of every npm module we need is now loaded automatically by parsing package.json
- Improvement: SocketStream now will now automatically update your client libs if required when upgrading to a new version
- Improvement: Full stack trace now sent to the client (in development mode only) when a server error is encountered
- Improvement: Re-written the Client in CoffeeScript. Many improvements and additional error handling and fault tolerance
- Improvement: We now get $SS.version from package.json
- Improvement: Checks you're in a valid SocketStream project directory before starting up
- Improvement: Better console experience
- Improvement: Reworked and added new sections to README
- Change: $SS.config.log_level is now $SS.config.log.level across server and client
- New feature: Client-side error reporting when you send incorrect requests
- Improvement: Much more API and Websocket request hardening. Server now far more stable against malformed requests
- Improvement: Refactored logger
- New feature: Override the default Redis config with $SS.config.redis, and separate pub/sub details if you wish
- New feature: Startup time displayed on boot
- Improvement: API hardening. Still much more to do here
- Improvement: Refactoring of cli, redis, boot up procedure
- New feature: Start your apps with 'socketstream start'
- New feature: 'socketstream console'. Try typing $SS.publish.broadcast('my_channel','my message') Much more to come here!
- Improvement: Improved error checking within API. WIP
- Improvement: Recognition of a root URL
- Change: Create new apps is now 'socketstream new '
- New feature: Initial work towards API. remote('app.square', 5) can now also be called by /api/app/square.json?5 (or .html to view on screen). Passed params will be sent as objects. Full error handling and API browsing coming soon.
- New feature: Configure the client using the 'client' params in your local /config/environments/<NODE_ENV>.json files. E.g. {"client": {"log_level":3}}
- Improvement: Refactored incoming request code
- New feature: Share code between client and server by placing it in /app/shared
- New feature: jQuery templating. Just add the jQuery tmpl plugin to your /lib/client files then create folders and files within /app/views
- New feature: Easily override default config with app config files in /config/environments/<NODE_ENV>.json
- Improvement: /app/vendor directory now optional
- Improvement: Client-side debugging is now set using the same $SS.config.log_level variable as server-side for consistency
- Improvement: Refactored to use fewer global variables, more modular, more comments
- Added this file
- Initial release