CQC Client: Version Changes


Changes For Version 2.11

Support for protocol version 4 and RIVA Command messages.

Larger canvas size, and support for high resolution mode on the iPad. Also, the rendering code should be more memory-efficient, lessening the chance of application crashes.


Changes For Version 1.6

Multitasking and Reconnection

The application now uses Apple's multitasking and backgrounding features to attempt to keep the connection alive for up to ten minutes of sleep. If you put the device to sleep while CQC Client is in the foreground, it is generally able to stay connected. If the device goes to sleep while CQC Client is in the background, or for longer than ten minutes, the connection will usually be lost.

Additionally, the application attempts to detect the errors that commonly result from a lost connection, and will reconnect automatically. Because of limitations in the RIVA protocol, reconnecting currently puts the user back to the main screen of the template.

Environment Variables

The new environment variable functionality of the RIVA interface is now supported. You will need a version of the CQC server which supports RIVA protocol version 3 or higher.

Images

The maximum size for an image to be eligible for permanent caching on the device is now 24K on the iPad, and 12K on the iPhone (CQC repository images are always cached permanently; only media art and web image widgets are subject to the size limit).

The application now plays faster and looser with the RIVA StartDraw and EndDraw messages, so as to increase the chance that the screen can be partially drawn before all images have been fetched. See the description of the new Optimization setting for more details.

The image cache is now visible in the application. The main window, with the connection list, has a tab bar at the bottom. The "bookmarks" tab shows the connections, as always. The "downloads" tab shows you the current contents of the cache.

Canvas Size

The maximum canvas size is no longer rectangular. Assuming you are using a newer version of the CQC software which supports the template messages, the app restricts your canvas to a maximum number of pixels. You can use any rectangular shape: a square canvas, a long thin one, or whatever, as long as the total pixel count is not exceeded. There is still the problem that the iPhone 4, since it has four times as many pixels as the earlier iPhones, is limited to a smaller canvas size. The reason for this limitation is that the app seems to run out of memory when the canvas gets too large, and that is a function of the number of pixels.

The pixel count limit is 1,228,800 pixels, which should be large enough for two pages on an iPhone 4. On iPod Touches running a version of the OS earlier than 4.2, the limit is a quarter of that, which should still be large enough for two pages on such devices.

Progress Bars

Progress bars are now supported. You will need a version of the CQC server which supports RIVA protocol version 2 or higher.

Special Text Effects

Gradient fill, reflected and gradient text is now supported. There may be some alignment issues. If you see a case where the client's rendering of special text is significantly different from the Interface Viewer's, let me know.

Sounds

The library of available sounds has been expanded.


Changes For Version 1.5

Bug fixes, and the RIVA v1 backward compatibility mode.


Changes For Version 1.3

WiFi Autoconnect Setting

You can now specify two separate autoconnect accounts, one to use when connected via WiFi and one when connected other ways. This is a crude way of automatically selecting a low-bandwidth template when using a slow cellular connection, and a high-bandwidth template at home.

Bug Fixes

Various relatively serious stability problems have been fixed, so the screen should not go black on you so often.


Changes For Version 1.2

iPad Compatibility

The app now runs on the iPad as well as the iPhone and iPod Touch. It's a universal app, so the same version runs on all devices.

Context Menu Availability

In older versions, disabling gestures rendered the four-finger context menu unavailable. In the new version, the menu is always available even if other gestures are turned off.

Default Background Color

You can now set the default background color of the window. Use the RGB sliders to choose a color that harmonizes with your template.

Settings Screen Layout

On the iPhone and iPod Touch, the settings screen now has two pages; switch between the pages using the buttons at the top of the screen.

Single- and Multi-Finger Swipes

When scrolling is turned off and gestures are turned on, the app now detects single-finger swipes and sends them as hot keys.

I have changed the hot keys sent for swipes. This will require changes to your templates; sorry about that. Single-finger swipes (when enabled) send the hot keys previously used by multi-finger swipes: NavUp, NavDown, NavLeft and NavRight. Multi-finger swipes now send PageUp, PageDn for up and down, and Previous and Next for left and right.

Persistent Caching

The RIVA protocol defines two image caches: one for repository images and one for media images. The client currently holds up to 128 images in each cache. All repository images are saved to disk, as are media images less than 10K on the iPhone, and less than 20K on the iPad. This allows the images to persist across invocations of the application.

A change was made to the CQC server software in the last month which causes it to send out persistent image serial numbers. If you are running older CQC software, serial numbers reset to 1 when the server is restarted. This could cause the iPhone not to pick up changes to images, and continue use an old copy. If this happens, and you don't want to upgrade your server software, you can use the context menu (available by touching the screen with four or more fingers while connected to the server) to clear the image cache, causing the app to reload the latest version of any image it needs.

The image caches treat each host/port combination separately, so an image with the same name received from two different servers will be cached independently. The cache limit of 128 repository and 128 media images applies across all servers, so if you connect to multiple servers, images from one server may push older images from another server out of the cache. In the future, I may increase the size of the caches (along with some mechanism to avoid filling up the device's storage), but it hasn't been necessary yet.

Transports Font

By kind permission of the folks at GuiFX, the Guifx v2 Transports font has been bundled with has been bundled with the application, so you can use the font in your templates. It is only available when running on a device using iPhone OS 3.2 or later. At the moment, that's only the iPad, but Apple will eventually upgrade the iPhone and iPod Touch as well.


Changes For Version 1.1

Word Wrapping

There was a bug in how the client handled embedded newlines in the text string, which I have fixed. There were also questions about how I should handle justification in the presence of leading and trailing whitespace. I experimented with the CQC template designer to figure out the "right" way to handle the various cases, and attempted to mimic it.

I also fixed a bug that sometimes resulted in multiple lines of text even when the no-wrap flag was set.

Rendering Problem

A problem with how I was implementing the RIVA EndDraw command was causing parts of the screen to be redrawn incorrectly (most frequently, the background image would be drawn with the foreground text missing). I have changed my logic to adhere to the protocol correctly.

Stroke Color Bug

I fixed a bug that caused rectangles to be stroked in the wrong color.

Idle Time

A slider on the settings screen now controls how long the iPhone will wait before going to sleep. Setting the slider all the way to the left sets the default iPhone behavior, which seems to be to dim the screen after 45 seconds, and go to sleep after a minute. Moving the slider to the right adds up to 60 minutes of additional delay before dimming and sleeping kick in.

Activity Indicator

There is now an activity indicator in the upper left to show when screen updates are being received from the server, so it doesn't look to the user like the interface is simply hanging.

Autorotation Lock

You can now set whether the template should always use portrait mode, always use landscape mode, or autorotate as it does now.

The client also sends hot key messages to the server when the device is rotated, which can be used to trigger the loading of alternate templates. This can be enabled or disabled independently of autorotation.

Scrolling Control

You can now set whether the template should be scrolled or not, and whether scrolling should be free or paged (shifting in increments of a page each time).

Context Menu

Touching four (or more) fingers to the screen brings up a menu which lets you do two things:

Maximum Template Size

I suspect that some user-reported application instability is due to using very large templates on the iPhone, so I am going to restrict the size of the template to 1024 by 1024. You can use larger templates, but the client will only display the upper left corner.

Gestures

The application can recognize pinches, two-finger swipes and two-finger rotations, shakes and orientation changes, and sends appropriate hotkey messages to the server. This can be enabled and disabled via the settings menu. Note that, if you disable gestures, the four-finger context menu will also be disabled. It shouldn't be that way, and I hope to change that behavior in a future release.

Auto-Reconnect

The application automatically attempts to reconnect if the connection is lost. At the moment, the user will be booted back to the start of the template when this happens, because of limitations in the RIVA protocol.

Smarter Image Loading

Under certain circumstances, the client will now continue to draw the screen while fetching an image, as long as no other drawing would overlap an image. That way, templates that show a list of cover art images, for instance, can be completely drawn, with the cover images popping up later as they are loaded. Again, this only works if nothing else needs to be drawn on top of them.