Sunday, September 4, 2011

DropboxDiff Chrome Extension


2014-01-05 update (version 1.0.2.13) - Inline diff implemented.
2014-01-04 update (version 1.0.2.12) - Account for "sjid" parameter in any position.  Distinguish Diff button better.
2013-06-23 update (version 1.0.2.11) - Switch from background page to event page.
2013-01-05 update (version 1.0.2.10) - Fixed to support 64-bit linux.  Added a Test button to the options page.
...


I've written DropboxDiff, a Chrome extension which allows you to compare different versions of text files you have on Dropbox.  It basically triggers a diff tool you have installed on your local machine already, which you must configure.
  1. On the Dropbox website, browse to the "Previous versions" page of any text file.
  2. A "Diff" column has been added where you can select which two versions to compare.
  3. Click the "Diff" button.
    1. If a diff tool is not yet configured, the options page opens where you can specify one. If you don't have one installed already, I recommend kdiff3. The setting is accessible from Tools > Extensions > DropboxDiff > Options.
    2. Otherwise, your diff tool should open.
This should run on Windows, Mac, and Linux.  Please let me know if any issues come up.

30 comments:

Robbie said...

Cool tool dude. Would be cool to see it as a firefox extension :p

Vic said...

@Robbie - will make a note of it; thanks for the comment.

will said...

Really nice work on the DropboxDiff Chrome Extension - it's so cool and a real time saver. I can't tell you how many times I've been downloading files from the dropbox website into a temporary folder, then running diffmerge on them. (btw this works great with diffmerge too). So thanks for an excellent extension!

Anonymous said...

I LOVE YOU!

Anonymous said...

It's broken on the new site... :(

Vic said...

@Anonymous - I was afraid of that. I'm still waiting for my Dropbox account to be upgraded; I'm still seeing the old version. I'll get a fix out as soon as I can.

Unknown said...

Hey Vic, awesome little tool. Eagerly awaiting the fix for the new site...

THANK YOU !!!

Anonymous said...

@Vic - try replacing the www.dropbox.com with www2.dropbox.com I know that since the upgrade this is the url i'm redirected to.

Vic said...

@Anonymous, yes I tried that but it still redirects.

I contacted Dropbox Support, and this is what they told me:

"We are currently rolling out the new redesign of the Dropbox gradually and don't offer the ability to upgrade user accounts to the new version. We should be upgrading most accounts in the very near future."

If you want to help me out, could you send me the HTML source of one of your "previous versions" pages with DropboxDiff turned off? Then I'd know how to fix it.

Vic said...

Well it looks like my account finally updated to the latest version of the website. But the weird thing is, DropboxDiff still seems to work for me.

Let me know if you are still seeing issues or not. If so, please email me the source of one of your "Previous versions" pages and I'll take a look.

Anonymous said...

Sounds awesome — but do you have any plans for a Safari version?

Vic said...

Re: Safari, no immediate plans, but I will look into it at some point. There is a chance it will be a better platform than Firefox, if its sandboxing is similar to Chrome's.

Anonymous said...

The Chinese characters become Garbled when I use dropboxdiff. but when I use kdiff3 along with the same files downloaded from dropbox, it works.

please email me if you know the reason. Thank you in advance.

meicale@163.com

Unknown said...
This comment has been removed by the author.
Nathan @Questor said...

Does this work on the lastest site?

because I'm getting an error

"Uncaught TypeError: Cannot read property 'cellIndex' of undefined chrome-extension://aefdkgcdokdiaoppobphjogcilaaakka/content.js:143
(anonymous function) chrome-extension://aefdkgcdokdiaoppobphjogcilaaakka/content.js:143
(anonymous function) chrome-extension://aefdkgcdokdiaoppobphjogcilaaakka/content.js:189
"

I can provide the full HTML of the page if you wish?

Vic said...

@Nathan - thanks for the heads up. Version 1.0.2.5 should fix this. Please let me know if it doesn't work for you.

Victor Shih said...

@Nathan, whoops, forget 1.0.2.5. Version 1.0.2.6 should work on Windows.

Nathan @Questor said...

It's working brilliantly, thank you soo much.

--
Nathan

Jon said...

have you considered integrating it with an in-browser diff tool like this? https://github.com/austincheney/Pretty-Diff

Victor Shih said...

@Jon, yes, it's in the queue. So far I was considering https://github.com/cemerick/jsdifflib but I'll take a look at Pretty-Diff too; thanks for the input.

Sven said...

Victor, great tool, I've used it for a few weeks now and it's been very helpful. I've now got windows 8 however and "This application is not supported on this computer. Installation has been disabled" at the chrome web store.
Search reveals something about using Tincr and it no longer available from win8?

Anyway, just a heads up.

Victor Shih said...

@Sven, thanks! Yes, it appears this type of extension is not allowed in Windows 8, but supposedly you can work around it by running Chrome in compatibility mode for Windows 7. Something like: right-click the Chrome shortcut > Properties > Compatibility > "Run this program in compatibility mode for:". Reference is here (which you probably already saw).

An in-browser diff tool is on my list of things to do, but I haven't been able to get around to it...

bruha said...

Test run from extension options page is ok. But got error when press Diff button on Dropbox site: http://clip2net.com/s/5AYaTi

Victor Shih said...

@bruha, I'll look into it when I get the chance, probably this weekend.

Victor Shih said...

@bruha, I do get that error once in a while; it seems that the event page gets deactivated after a period of inactivity. But if I try clicking Diff a second time, it usually works.

I assume you are on the latest version of Chrome; what OS are you on? I tested on the latest version of Chrome on Windows 7, Mac 10.6, and Ubuntu 12.04.1.

bruha said...

I tried today and it works just fine. Maybe quistion was in browser restart. My OS is Win7x64 and Chrome 29.0.1547.57 m

Victor Shih said...

Glad to hear, and thanks for the follow-up!

Rüdiger Plantiko said...

Victor,

thank you - a great and useful tool!

The more I am unhappy that it ceases to work after my latest system, Chrome and dropbox update (this morning) in ubuntu 12.04.

The "Diff" button disappeared completely.

I am not 100% sure whether the following console error is the cause of the problem, but it looks like a good hit:

The JavaScript content.js breaks at line 121

var sjid = REV_RE.exec(content)[2]

Here, REV_RE is the expression

/&(amp;)?sjid=([0-9]+)"/

to be applied to the HTML of the cells of the current line, containing the hyperlink to the version with the href

href="https://dl-web.dropbox.com/get/swepar/test_calc_reduce.c?sjid=157&_subject_uid=65286108&w=AABCNp-d5SB_Y3N9q_Y5J6mK463HIdPOdTayfbCHx25Jdw"

As you see, this doesn't match, since the sjid now is the first query parameter, but the regex asks for a preceding &.

Suggestion: Simplify REV_RE to

REV_RE = /sjid=([0-9]+)/

(and grab the first submatch then, of course:

var sjid = REV_RE.exec(content)[1]
)

I have no idea why the order of the arguments in the version URL changed. But clearly it is allowed to change the order of query parameters in any way.

Regards,
Rüdiger

Victor Shih said...

@Rüdiger, thanks for the detailed bug report! I just published version 1.0.2.12 which should address this issue; please let me know if it doesn't.

Rüdiger Plantiko said...

Victor, thanks for the quick update. Yes, it works again for me! (You were more "cautious" with the RegExp than I suggested... OK, it's your code after all :-) ). Regards, Rüdiger