Blog updates

Sunday, 19 August 2012

CMarks Update 19.08.2012

Well, I'm still here, so I guess I'm okay to keep developing this app.

As such, some updates:
  1. Finally managed to get Themes to work 3.x and above devices. Some changes Google made with 3.x caused some issues that I hadn't managed to work around previously. With a smidge of extra effort, I've found enough workarounds to re-enable Themes for all devices now.
  2. Fixed a bug that had been annoying me - if you set the home folder to a folder that was empty, the app would give you the initial "no bookmarks were found" message. This might also have been triggered if the first folder the app opened to was empty as well.
  3. Fixed a bug with the 2.x sync to a Chrome folder if the user had more than 20 bookmarks to send to Google. Since Google only accepts data in batches of 20, there might be entries in a second batch that refer back to entries in the first batch. But the temporary ids sent with the first batch are only temporary and if they are used on the second batch, Google doesn't like it. I found a cunning way around it.
  4. Fixed another couple of bugs with the 2.x sync to a Chrome folder that were coming out with some freaky scenarios.
  5. Fixed another crash with ICS users when they first installed the app. According to android bug 35466, it looks like on ICS there is a tender spot when rendering text that has styling applied to sections of it and that section wraps around the edge of the screen. It's affecting a large number of apps out there, but it's part of the core, so we have to live with it. I've put in a fudge that should gracefully downgrade any styling that ICS dislikes.
What's next on the horizon..?

Well, Dolphin have their Garage API and I've finally managed to get a key to access it. We'll see what can be done - though it's a limited doorway between apps, so it might be a bit clunky and there's nothing I can do about that.

Also thinking about adding password syncing into the app. But there are lots of issues with a potential implementation - if anyone would like to help me thrash out some ideas of how this affects the end user, please contact me by email!

Laters.

Friday, 10 August 2012

Cmarks!

So, some big changes to the app today.

Google changed their Play Store Policies recently. One of the changes was that apps must not impersonate other apps or system apps and that users should be not jump to the wrong conclusion and assume an app is officially supported by someone else by virtue of it's name, icon or content. Well, that's what I understand from the policy documents - to someone who isn't a lawyer, they might as well say: "look, just don't do this sort of thing or something that might be a bit like that".

So, vagueness aside, Google sent me a warning saying that my app violates someone's intellectual rights. Not too hard to guess that it's Google.

I'm assuming therefore that the icon and the name as for too "Chrome"y for Google's liking and things need to change.

So "CMarks" is here now. The logo was actually one of the runner-up logos when we had the online vote that found the previous chrome-y logo.

Unfortunately, Bug G doesn't provide any communication, so I can't be sure that the logo and name were the *only* things Big G doesn't like. For all I know, they might not like the idea of something other than their approved software syncing or touching their chromesync service.

So if the app disappears in the next week, it'll be because Big G has suspended the app and my developer account. In which case, it's been a fun ride and thanks for the fish!

Otherwise, if the app is still on the Play Store this time next week, we're probably good to stay! Whcih is good, as I've tons of stuff to add to it!

Sunday, 5 August 2012

ChromeMarks update - 2012.08.05

Time for another update!

Firstly, I completed missed the fact that in the middle of June, ChromeMarks Lite reached 500,000 downloads. That's a phenomenal number and I never dreamed of getting so many downloads for a single app! Especially since that app has only been out there for less than two years. Thank you to everyone who's downloaded the app - still many more new features yet to come!

 The usual release notes are below:
  1. The FolderPicker has been completely revamped. The previous version was a custom built widget. It used a webview, so jquery and a lot of crunching via javascript to generate the content. Unfortunately that expects some quite tight coupling between the webview and my code. Looks like ICS devices seem to have some issues with this and a few users are reporting a blank white screen. The folder picker used to look like this:

    The new version now looks like this:

    The new widget no longer uses a WebView or any of the clunky javascript. Although it's still a custom built widget, it's using more of the "standard" components. Ok, it may not have as much colour to it, but it should be more compatible with all devices. It should also open quicker since it doesn't need the WebView overheads. Another bonus with the rewrite is that the folders are now shown in the same order as they are displayed in the rest of the app - so if you order by Chrome order, last modified or alphabetical - they should show the same in the FolderPicker.
  2. A short while ago, Google made some changes to the way they tag bookmarks in the chromesync service.This meant the tags I'd been using for the 2.x "copy stock bookmarks into a chrome folder" function had changed fundamentally. Previously, they'd been unique and this meant I could sync nicely between both browsers as I had a unique tag. However Google changed the value of the tag to become more of a transaction timestamp which meant that many bookmarks would now have the same tag. This really broke ChromeMarks when syncing as it kept getting the same tag back when it wasn't expecting it. Or actually, ChromeMarks didn't complain, but Google did when the changes were sent to them. And Big G's response - "Error 500".
    So some changes to ChromeMarks to change the tags being used. Unfortunately the bookmarks in the stock browser still have the non-unique tags on them which means that the next sync has to make some tough choices. You might find the first sync will generate some duplicates either in the Stock Browser and/or in the special folder in Chrome. This will be a one-off event as part of the first sync after this upgrade. After that, you can safely delete any duplicates - though obviously delete them from the Stock Browser OR from Chrome but NOT from both at the same time!
    I have already raised a Chrome bug about this. But since Google has made this change on their server and millions of people must already have the changed tags in their desktop already, it's highly unlikely that Google would ever revert it.
  3. Some of the usual bug fixes. The new auto-backup function used a piece of code that unfortunately didn't exist in the Android core on the 2.1 and some 2.2 devices. I've simply copied the code into my app and that should fix it.
That's about it for now.

First thing I've got on the list is some well overdue upgrades - sdk, compatibility library, admob, viewtitlepager. Unfortunately whenever I start making these upgrades, problems always take a while to fix...

Saturday, 14 July 2012

ChromeMarks 2012.07.14

A new update to ChromeMarks today.

Firstly - apologies for the delay since the last update. The normal day job, the usual PC problems and no internet for a month all contributed to it. But I've been tinkering away as normal and the updates are coming!

The juicy details:

  1. A bug fix for Jelly Bean users of the Full app. Turns out that Google made undocumented changes to the SSL implementation with Jelly Bean which was causing a crash when verifying the digital signature sent back by Google. There are other apps on the Market that are experiencing similar issues with the SSL classes. Once I've got this release out, I'll file an Android bug report as it's clearly a regression from Big G.
  2. A New feature for the Full App. You can now choose to backup your Chrome bookmarks before and/or after each sync. The backups are stored on your SD card and you can specify the maximum amount of backup files to keep at any one time. If you accidentally delete some bookmarks from Chrome, you can roll back and import one of the backups into Chrome to resurrect them.
  3. For the Full app, a bit better compatibility with some apps that "share" more than just a url (i.e. Flipboard).
  4. The Folder picker seems to have some issues on 4.0.x devices. There are no problems on 2.x, 3.x or 4.1 - just 4.0.x. Which makes me think this must be another Google regression they fixed for JB. However, as soon as I simply recompiled the app, the folder picker started working on my personal 4.0.3 device. wtf? Anyway, I'm gonna rewrite it soon to a simpler type of widget which hopefully won't have the same issues as a WebView with embedded javascript. But Android doesn't have any existing widget that does this kind of functionality, so it'll be completely bespoke.
  5. For the Full app, there were some issues with the Local syncing function - for most errors, it simply stopped syncing and didn't report a problem. I've made it start to return error messages now so if you get errors where you didn't previously, then it wasn't working properly anyway! A couple of fixes along the way - some new validation from Google was causing problems if you were a 2.x user using the "copy bookmarks to a new folder in chrome" function. And some improvements to the 3.x and 4.x integration.
  6. The long press context menu was a bit lopp-sided. If you long pressed on a bookmark and then changed folder and then long clicked on a folder, you'd get the same list of options you got for a bookmark (and vice versa). Fixed that.
  7. The "Mobile bookmarks" or "Synced bookmarks" folder now appears at the root level. Note, if you already have data in the app then you'll need to reset or uninstall/reinstall for the change to take effect.
  8. And many, many, many more bugs fixed along the way..!

So what's next..?

Well, I'd like to investigate getting synced tabs to appear in the app. And a way to "hide" the search engines folder. And allegedly, Dolphin now have an sdk that allows other apps to integrate with it - so maybe a play there.

Saturday, 17 March 2012

ChromeMarks - update 20112.03.17

Time for another update..!
  1. Some more changes made by Google on the chromesync servers which are starting to affect a few users:
    • Some new error messages were being returned which users have started receiving. Since ChromeMarks isn't aware of these messages, the app isn't showing anything back to users so you don't know there was a problem. One of the new messages tells users "your bookmarks have been upgraded on Google's servers - you need to reset the app and re-download them again". Fixed. But don't know what they "upgraded" in the first place - I suspect it's more fixes for crbug.com/114912 ..?
    • A subtle change to the way some timestamps were being returned from Google. They seem to now be changing when they previously weren't. Since they never changed before, ChromeMarks didn't know to spot that change and be aware of it. This may have meant (e.g.) a sync returned no new bookmarks since the timestamp ChromeMarks sent was old. Fixed.
  2. A revamp of the Search facility. Some new errors appeared when Big G released android 4.0.3 as they clearly changed something in the Stock Search Widget that didn't call ChromeMarks the same as all previous versions of Android. The rewritten code is smaller, quicker, simpler and strangely more compatible. Hey ho!
  3. For users of the Full app, if you have synced Chrome Search Engines, you can now search using them using the search from the app or the Stock Search Widget. So, if you have a Search Engine for Wikipedia and the keyword for it is "wiki" then you can search for "wiki android" and the app will suggest "Search Wikipedia for: android". If you click on the suggestion, you'll go straight to Wikipedia's search results for the word "android". Of course, depending on your Android search settings, you could possibly just use "wi android" and that might be enough text to find and suggest searching Wikipedia.
  4. A fix for HTC devices using the integrate local bookmarks function. Looks like HTC want to be different to every other Android device and they choose to sort bookmarks in the Browser differently. Thanks to some log files and screenshots from Steve, a fix to try and sort them the same as everyone else.
  5. There was a recent change to Chrome (#94992) to remove static initialisers (which should make Chrome startup quicker). This had the lucky effect that the protocols used for syncing became slightly simpler and quicker at runtime. I've rolled this into the app. This now gives the opportunity for a much larger change to the protocols which makes them considerably "lighter" in cpu, memory and speed. I hope to trial this soon as it might make a sync operation run much quicker - but I might have to wait for Chrome 19 to be stable first..?
  6. Tweaked the Gestures code to try and be more density independant. I had got some reports that higher dpi devices were harder to use gestures so this should make gestures work the same on all devices. But I can't easily test it as the emulator is tricker to test gestures well - let me know if this is better/worse..?
That's it for now!

On a side note, I've moved my main computer over to a linux build as I've had enough of Windows and I never really gelled with Windows 7 (don't get me started on the horrible changes they forced on us with the ListView component..). I'm currently using Kubuntu - I started with Ubuntu but found it a bit too lite for me - Unity was one of the first things to go. Seems to be working okay with a sprinkling of challenges along the way. Android building seems to be okay, but almost twice as fast as Win7 used to be on the exact same hardware. wtf..?

Laters.

    Sunday, 26 February 2012

    Chromemarks Updated - 2012.02.26

    Time for another quick update. As usual, the highlights in more detail:
    1. Fixed a bug where the app would state "the folder is not found" if you were creating or moving a bookmark in an empty folder. Was due to a mild logic bug and has been that way for about three months. With the help of some log files from Jordan and Denis, I've found and fixed the bug.
    2. Fixed a bug whereby a large number of encrypted bookmarks could not be decrypted. This was another "1mb Android limit" bug. So it only happened with a large amount of data - in the reporting case it was on the 2248th bookmark which was one too far. Have corrected this to process the data in several smaller chunks instead of one big chunk. Also made the app save any decrypted bookmarks as it goes through them so even if it fails again, at least something should be decrypted and saved. Thanks to Bjorn for the log files and for testing a beta release.
    3. Some routine maintenance - have updated the chrome protocols to the same as the currently stable Chrome - we're now at version 30.
    4. As spotted by another user - when creating a new bookmark, the name field was being pre-filled with a "New Bookmark" value. This would need to be deleted before you could insert/type the new name, which was a bit annoying. It's always been like that since the create bookmark screen arrived! Have removed the default text and now the box just shows a hint.
    5. Found the reason why some users with Honeycomb devices were seeing no integrated bookmarks. Turns out if you enable the native bookmark sync in Honeycomb, it adds some flags to the Browser database. It then uses those flags afterwards to determine what data to show. Unfortunately that filter means it will only ever show data synced by the native method - and not my app. Android won't let my app clear this data, so I've added in a message and popup suggesting the user clicks on the "clear data" option in the Browser application settings. Thanks to Kenneth for helping.
    And an honourable mention - Google have again made some changes and this time they are affecting Chrome users directly. See http://crbug.com/114912 for more details. They changed something on their server which affects the data being stored on Google's servers and it's returning empty folders, renamed bookmarks and/or duplicate bookmarks. Google are working on a fix from the server side which will probably restore data from a previous backup. Don't know how they will identify all the affected users, or what they will do if you've created bookmarks since...

    TTFN.

    Tuesday, 21 February 2012

    Chromemarks Updated - 2012.02.22

    A small update to the Full app only:

    1. Since a user may use the local bookmarks function and then disable it at a later date, after each sync the app would do a mini tidy-up. If local bookmarks were disabled, it would ensure there were no klingons and remove them just in case. But this was causing some errors for users who had uninstalled the stock browser, or frozen it. Fixed this with a bit of protection to see if the browser was actually there before trying to tidy-up or integrate. Sorry.
    2. A fix to the local bookmarks settings screen. Noticed a few automated errors. Looks like some people had multiple local browsers on their device and certain scenarios made the app think the selected one was number "-1" in the list. This obviously crashed each and every time. Fixed.
    3. A bug reported from a user with decrypting bookmarks - if you have over 2000 bookmarks then the initial decrypt may hit the android 1mb data limit and fail. Annoying the app wasn't even reporting an error back to the user. I've added an error message for now and will fix the underlying issue shortly.
    And a whinge back to that annoying person who raised a 1 star comment on the Market about the Search Engines:
    I will NEVER insert my own agenda of bookmarks or data into the app on YOUR device. 100% of the bookmarks, folders and search engines you see come from YOUR Chrome browser. If there is something in there that you don't like the look of, well - I'll be blatantly honest - YOU either bookmarked or visited the website.
    Its.
    That.
    Simple.

    Enough said.