The Omni Group
These forums are now read-only. Please visit our new forums to participate in discussion. A new account will be required to post in the new forums. For more info on the switch, see this post. Thank you!

Go Back   The Omni Group Forums > OmniFocus > OmniFocus 1 for Mac
FAQ Members List Calendar Search Today's Posts Mark Forums Read

New Version of OmniFocus Web Interface [Old Thread] Thread Tools Search this Thread Display Modes
With the recent announcement that the MobileSafari interface is being quasi-dropped from OmniFocus, I decided to roll up my sleeves and fix some of the nagging bugs and interface nitpicks that have bothered me about the app. Please bear in mind that I am not a Ruby developer; I hacked away through trial and error. The changes I made may not be the most elegant, but they seem to work.

Here are the changes I've made:

Updated to latest version of iUI

The iPhone app look-and-feel is based upon Joe Hewitt's iUI framework. I've updated iui.js to the latest and greatest. The slidey animation appears to be a lot smoother for it.

I also went through iui.css and changed all box-sizing references to -webkit-box-sizing. This fixes the funky behavior of the "add task" mode, where the input box sizes too wide and breaks the viewport constrictions.

Tweaked styling of sub-contexts

I rely heavily on nested contexts. For example, under my "Errands" context, I have sub-contexts for "East Village," "Soho," "Midtown," etc. This relationship breaks down in the MobileSafari interface, where everything is flattened.

I played around with a number of different ways to visually represent the hierarchy (indenting, prefixing with the parent context) and settled on a simple but effective solution: sub-contexts are given a lighter font weight. It sounds like such a minor adjustment, but for me it makes all the difference in the world. (This won't help people who maintain more than two levels of structure, but then again, it won't hurt them either.)

Because of this style change, I removed the rule that restricts contexts to those who have one or more actionable tasks assigned. Empty contexts are now displayed to provide a frame of reference for sub-contexts.

Also: parent contexts now reflect an accurate task count, rather than including the tasks of their children.

Task completion progress indicator

As visual feedback that a click was registered, a spinning progress indicator now displays when a task checkbox is clicked.

Other minor tweaks

I added a few more minor tweaks here and there. The page title is properly vertically centered in the title bar. I changed "+" to "Add," to provide a bigger target for my fat thumb. Really minor stuff.

Installation Instructions
  1. Back up ~/Library/Application Support/OmniFocus/Web Interface/
  2. Uncompress "Web" to ~/Library/Application Support/OmniFocus/
  3. Open ~/Library/Application Support/OmniFocus/Web Interface/config/Settings.plist and replace the placeholders with your user name, password, and hard drive name.
  4. Open Activity Monitor, change "Show" to "All Processes," select the "ruby" process, and click "Quit Process" in the toolbar.

That's it.

Going forward?

I have a million ideas for improvements to the MobileSafari app. For the time being, I'm going to sit quietly over here and wait to see what Omni decides to officially do with the feature.

If it does find its way back into the official version, Omni is welcome to incorporate my changes. I recognize that port forwarding and dyndns are likely beyond the skillz of the novice user, but I still think it's worth including. (Applications like Lighthouse dramatically simplify the process, btw.)

If Omni decides to open source the project, I'd love to play a role. Again, big disclaimer: I am not a Ruby programmer. But I can feel my way around well enough to not trip over the heavy machinery while tweaking Javascript and CSS.

Last edited by dansays; 2007-10-17 at 09:02 AM..
Great work Dan, I will have to get this going when i get back home.
A word of caution: In the most recent builds, Omni seems to have completely removed the web app from OmniFocus, including the hidden preference pane they said they were going to leave in.

As such, step four--killing the "ruby" process in the activity monitor--no longer works. In fact, it really messes things up.

As I said repeatedly, I am not a Ruby developer. I'm sure there's a really easy shell command that will restart mongrel, or webrick, or whatever server Omni is (was) using to serve up the web app. If anyone knows how to do this, please let me know. Otherwise, the safest way to register the changes is just to reboot.

At some point, I'm going to pick up a Rails book and get my bearings. Omni has been quiet thus far regarding speculation on a native iPhone OmniFocus companion app, and if they do go down that road, we're likely looking at mid-2008 before we have a beta. Syncing is hard. I can't live that long without reliable mobile access to my system.

Thankfully, I'm having lots of fun tinkering with this, and I have a roadmap in my head for a hybrid web app that I'm dying to explore. It involves a background process that periodically syncs a read-only iUI-based interface to Safari bookmarks as a Data URL. This will both make the interface really fast, and accessible when connectivity is not available.

When the interface is loaded on the iPhone, an ajax call is attempted back to OmniFocus on the desktop. If it can establish a connection, it pulls down any changes since the last sync, updates tasks, and exposes additional functionality (adding tasks, marking tasks as complete, etc). If it can't, it times out, and the user can just use the read-only interface.

This approach solves a number of problems: speed, offline access and the need to have an always-on desktop connection, and most interestingly, it eliminates the need to configure dyndns, since every time the data url is synced, the current IP address can be updated.
Great work!

I apologize for taking out the preference pane. I didn't realize Michaela had told people how to turn it back on, only that Ken had mentioned how to turn off the launchd setting. My main reason for removing it is that I wanted to remove the extra (significant) space from the download and wanted to remove the whole thing in one commit so it could be rolled back easily if necessary.

I don't think we object to packaging the source and making it available for people to muck with, but we haven't had time to package it up with at least minimal instructions on how to get it running.
CTO, The Omni Group
Can we PLEASE have some "side-build" with the Web Interface still in the package? (Please, please, please???)

Also, in the interim, can you please let us know which build was the last one with the Web Interface, and make sure that build stays available.

Thanks a million-

Originally Posted by dansays View Post
I have a roadmap in my head for a hybrid web app that I'm dying to explore. It involves a background process that periodically syncs a read-only iUI-based interface to Safari bookmarks as a Data URL. This will both make the interface really fast, and accessible when connectivity is not available.
Please take this as a very LARGE vote in favor of this idea; the biggest issue I have is not having access to even a HINT of what my action items are when mobile with iPhone available and no Mac available. Even if the data is not ultra-current, ANYTHING pre-loaded on my iPhone would be huge.


I'm new to OmniFocus, and would really like to get this Web Interface feature working, for the obvious reasons (ability to see my task list away from the computer being the main one -- even if it's over the pokey Edge network).

Unfortunately, I do not have an OmniFocus/Web Interface folder. I have to assume it's safe to replace the one that's there, but then I'm not sure what to do about the (non-existent) ruby process. I _am_ a ruby developer, so maybe someone could explain to me how this thing used to work, and I can replicate it?

Hmm, scratch that, having unpacked the source it's obvious that this is just a standard Rails app, configured to run WEBrick. If anyone is trying to start it up, unpack what dansays posted and you'll be able to start it easily enough from a shell by running ~/Library/Application Support/OmniFocus/Web Interface/script/server

I'm going to look through the source so I can understand how this interfaces with OmniFocus itself, will let folks know more as I work it out.

Aha, it's using AppScript, very cool...
Great, thanks for the info, and please do keep us posted!

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Similar Threads
Thread Thread Starter Forum Replies Last Post
OmniFocus web interface amelchi OmniFocus 1 for Mac 3 2012-07-08 07:35 PM
Does OmniFocus show when something was completed? [A: Yes - see thread!] keypix OmniFocus 1 for Mac 3 2010-10-28 01:10 PM
OmniFocus for iPad interface feedback bnz OmniFocus for iPad 105 2010-07-12 01:49 AM
OmniFocus and Mac User Interface Conventions jashan OmniFocus 1 for Mac 9 2010-06-06 01:15 PM
OmniFocus Web Interface still running. How can I disable it? aaffleck OmniFocus 1 for Mac 7 2008-01-25 04:42 PM

All times are GMT -8. The time now is 10:10 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, vBulletin Solutions, Inc.