subscribe by email
or follow @checkvist_news

Checkvist story

Helping people easily create, share, and collaborate on task lists and outlines.

Jan 19, 2010 4:20pm

Server update: task actions and other improvements

After the release of due dates we’ve got a lot of positive feedback, thanks a lot!

But some people pointed to a problem we are very anxious about - interface clutter. As long as we add new functionality, we also add new interface elements. More functionality - more interface elements. More interface elements - harder to keep the interface clean.

Last week we made several server updates, trying to address this problem:

  • Task actions.
    Instead of having multiple controls to invoke task related actions we decided to group them under one Actions menu, which can be invoked on a selected task with a simple shortcut aa. The menu is also available from the toolbar.
  • Concise sidebar
    Sidebar help have grown too big. To solve this, we decided to introduce concise sidebar mode. Now sidebar includes only very basic shortcuts (including new powerful aa). You can see more shortcuts by clicking the “more shortcuts” link at the bottom. Besides, you can completely hide the whole sidebar by clicking the cross in the top right corner.
  • Colored tasks under the Due tab
    When tasks are marked with color and have a due date, we keep their color under the Due tab.
  • Go to a hyperlink with the keyboard
    If a task text has a hyperlink, you can use shortcut gg to navigate to this link. Especially helpful after the “extract checklist” command.
  • Bugfixes
    Various bugfixes, including incorrect positioning of subtasks, and better URL recognizing in task contents.

Thanks a lot to people who contributed the ideas included into this server update: English Atkins, Martin Brook, Ricardo Salta, Ted Penner.

More comments and suggestions are really welcome :)

Jan 13, 2010 8:26pm

Due dates and ASAP tasks

There are roughly two kinds of people: those who love to set a due date and those who hate seeing “overdue” list by the end of the day. We belong to the second group. Plan approximately, do as much as you can, don’t regret what’s beyond your capabilities.
But still, it is handy to have a shortlist of high priority tasks which should be completed as soon as possible. This prompted the solution: due dates for those who know the exact date, ASAP tasks for those who don’t.

dd is a new simple keyboard shortcut for setting (or clearing) a due date for a task. Press dd and select a date in the dialog window:
td and tm shortcuts will save you time - they set due date for today and tomorrow.
cd will clear due date, just two key presses, no dialog windows needed.

as shortcut will set the ASAP due (due with no definite date).
Run through your lists and put on your plate all you need to do in the first place - tomorrow if not today. Then open the Due tab on the index page, and see all ASAP tasks grouped on a single page. ASAP tasks are also included into the daily due notifications email.

But dialog window and keyboard shortcuts are not the only options. If a task ends with today, tomorrow, asap or 19 Jan, 2010 (see all supported date formats), Checkvist will automatically transform the word into due date:

Don’t want this? End a task with the dot to keep Checkvist smart syntax at bay.

PRO users can subscribe to daily notification email which will include all overdue, due today, tomorrow and ASAP tasks. Select a checklist you want to watch on your Profile -> Notifications tab or click the email icon on the right side of the toolbar on any checklist page.


And now - let’s go planning! As always, we’d love to hear your thoughts, ideas, and - who knows! - bug reports.

Dec 14, 2009 2:10pm

The more and better, the better!

It’s good when a new great tool appears in your field. The better are tools, the higher expectations, the less half baked “app spam” you get while searching for a true helper in your work.

Besides, arrival of a new great tool stimulates the interest for the whole field. Your new “competitor” outsmarted you in visual design? Has more features? Found a better solution for a common problem? Well, now it’s your turn, give the users something better. And better. With each release.

Just keep on swimming, so everybody benefits.

We always loved Todoist and OmniOutliner for minimalism and smart features, Thinklinkr for smooth sleek visual design, and recently we had a great time playing with the newcomer, TeuxDeux.

And my, aren’t we glad to be listed beside it :)

Oct 7, 2009 10:04pm

New bookmarklet: Gmail and issue tracker integration

Seems, it’s time to update your bookmarklets!

The new bookmarklet is integrated with Gmail - click the “2Checkvist” link in the browser toolbar to create a Checkvist task associated with a specific email.

Same with the issue tracker integration - click the bookmarklet while browsing your issues to create a quick to-do list for yourself, your team, specific release, etc. So far Checkvist “understands” Atlassian Jira and JetBrains YouTrack issue link formats.

But of course you can use bookmarklet to save references to any web page as well and conveniently create a list of tasks while browsing the web.

Other enhancements include:
  • No pop-up window (no problems with browser pop-up paranoia)
  • ESC to close the bookmarklet window
  • Ctrl+Enter instead of clicking the Add button.
Here’s a short demo.

Drag and drop the new bookmarklet to the browser toolbar: 2Checkvist or update it later from your profile page.

Sep 28, 2009 12:48pm

Embed checklist to your web page

After releasing the iGoogle gadget for Checkvist it was rather natural to give users an easy way to embed lists to their web pages. Just like in an example below:

This checklist is marked as public, so anyone can view it even without having Checkvist account.

Now, when checklist author marks it as public from the share dialog, there is a code snippet which allows to embed this checklist to any HTML page (see screenshot below).

You can copy/paste code fragment from the text field and insert it into a web page. If needed, you can tweak width and height parameters.

Sep 25, 2009 2:01pm

Add Checkvist to your iGoogle homepage

Here’s a little something for your convenience: an iGoogle gadget. Add it to your personalized Google homepage and work with your list using the same keyboard shortcuts:

  • Select a list you want by pressing ll
  • Hide/show completed tasks by pressing hc
  • Navigate the list, add new tasks, subtasks, complete or invalidate, use color - all fast, not taking your hands from keyboard.

    Click the button to install it now: Add to Google

    Sep 14, 2009 4:00pm

    OpenAPI usage examples (Javascript, Ruby)

    We’ve got a number of requests to provide some examples of accessing Checkvist via OpenAPI. When I started preparing one, I found some inconsistencies in the OpenAPI docs and in the implementation. These issues have been fixed and now I’d like to give you some code examples.

    In the examples, I’ll demonstrate usage of the JSON format for the returning data. Checkvist API also supports XML format, for details, please see the documentation.

    Javascript

    The Javascript example illustrates how to obtain checklist tasks data and embed the list into your web page.

    The list will be organized into a hierarchy with simple UL tags. Completed tasks in the list will be striked, invalidated tasks are marked with italics. The parent UL tag will have CSS class checkvist_list to enable styling according to your needs.

    Here is a sample of the generated HTML code:

    <ul class="checkvist_list">
      <li>This is an item</li>
      <li>This is another item
          <ul>
            <li>This is a subitem</li>
            <li><strike>This is a completed subitem</strike></li>
            <li><em>This is invalidated subitem</em></li>
          </ul>
      </li>
    </ul>
    

    To embed the checklist, follow these steps:

    Step 1. Add Javascript library for accessing Checkvist

    In the HEAD section of your web page, add the following line:

    <script type="text/javascript" 
    src="http://checkvist.com/javascript/checkvist_api.js"></script>
    This sample library contains the code which accesses the Checkvist via OpenAPI and builds HTML for embedding into web page. You can download it and customize for your needs, if you want.

    Step 2. Prepare target location for the embedded checklist

    Add the following markup on your page at the place where you want to see the checklist:

    <div id="checklist_container"></div>

    Step 3. Determine the ID of the checklist you want to embed

    This is an easy part. If your checklist has URL like http://checkvist.com/checklists/3318-checkvist-test-plan, than required checklist ID is 3318.

    Step 4. Get your OpenAPI key

    Visit your CheckVist profile page and click “View/update remote OpenAPI key” link. Copy the key from the text field.

    Step 5. Add code which actually loads the checklist

    Add the following block in the HEAD section of your Web page:

    
    <script type="text/javascript">
      function load_checklist_callback(data) {
        document.getElementById('checklist_container').innerHTML =
             checkvist.create_tasks_html(data);
      }
      function load_checklist() {
        // Remove the next line if your checklist is public
        checkvist.login('Your E-Mail', 'Your OpenID KEY');
        checkvist.get_tasks(<Checklist ID>, 'load_checklist_callback');
      }
      
      var checkvist_interval = setInterval(function() {
        if (document.getElementById('checklist_container')) {
          clearInterval(checkvist_interval);
          load_checklist();
        }
      }, 20);
    </script>
    

    In this code, you need to specify your login to CheckVist - e-mail address, OpenAPI key, and checklist ID to show.

    If your checklist is public, there is no need to authenticate, so checkvist.login call can be omitted.

    Actually, instead of calling setInterval function, you can invoke method load_checklist in your usual place of Javascript initialization code for your web page.

    That’s it. When the page is loaded, the element checklist_container will be filled with checklist tasks. You can take a look at the checkvist_api.js and use it as a base for solving more complex tasks.

    Ruby

    As long as Checkvist OpenAPI is HTTP-based, you can use a standard Net::HTTP module to create requests, and JSON gem to parse responses.

    Here is a sample class for accessing Checkvist from Ruby:

    require 'net/http'
    require 'uri'
    require 'rubygems'
    require 'json'
    
    class SampleCheckvistApi 
    
      def initialize email = nil, api_key = nil, site = "http://checkvist.com"
        @email = email
        @api_key = api_key
        @url = URI.parse(site)
      end
    
      # Obtain a list of checklists
      def checklists()
        json_call Net::HTTP::Get.new("/checklists.json")
      end
    
      # Obtain a list of tasks for given checklist
      def tasks(checklist_id)
        json_call Net::HTTP::Get.new("/checklists/#{checklist_id}/tasks.json")
      end
    
      # create a task in given checklist
      def create_task(checklist_id, content, parent_task_id = nil, position = nil)
        json_call Net::HTTP::Post.new("/checklists/#{checklist_id}/tasks.json"), 
          { "task[parent_id]" => parent_task_id, 
            "task[position]" => position, 
            "task[content]" => content }
      end
      
      # update a task attribute. For task attributes, you can use "content", "parent_id", "position"
      def update_task_attribute(checklist_id, task_id, attr_name, attr_value)
        json_call Net::HTTP::Put.new("/checklists/#{checklist_id}/tasks/#{task_id}.json"), {"task[#{attr_name}]" => attr_value}
      end
      
      def json_call request, parameters = nil
        request.basic_auth @email, @api_key if @email
        request.set_form_data(parameters) if parameters
        
        res = Net::HTTP.start(@url.host, @url.port) { |http|
          http.request(request)
        }
        
        case res
        when Net::HTTPSuccess
          JSON.parse(res.body)
        else
          res.error!
        end
      end
    
    end
    
    And here is a sample of how to use SampleCheckvistApi class:
    
      # Specify authentication data:
      api = SampleCheckvistApi.new('email', 'OpenAPI key')
    
      # For each public non-archived checklist
      api.checklists.each do |checklist|
        # Obtain its tasks:
        tasks = api.tasks(checklist['id'])
        # Tasks are sorted by parent_id, position 
      end
    
    
      # Create a task in the first checklist
      # Get ID of the first checklist:
      first_checklist_id = api.checklists[0]["id"]
    
      # Create the task at the end of the checklist:
      new_task = api.create_task(checklist_id, "new task from api")
    
      # Change task content to 'new text'
      api.update_task_attribute(new_task['checklist_id'], 
          new_task['id'], "content", "new text")
      # Change the parent of the task:
      api.update_task_attribute(new_task['checklist_id'], 
          new_task['id'], "parent_id", tasks[0]['id'])
    
    

    If you’re interested in using Checkvist API, or you’re going to use it, please let us know :). You may also want to subscribe to the checkvist-api newsgroup.

    Good luck!
    KIR

    Sep 11, 2009 4:02pm

    Bugfix server update

    Hello,

    For the last days we didn’t do a lot of new development, but bugs cannot wait, so here is a short summary of what was fixed for the last time:

    • Fixed Remember Me support. Now users who checked “Remember Me” mark will be redirected from home page to their checklists page (as it was before introducing the paid plan)
    • There were some bugs when recognizing URL in checklist text. If you notice incorrect URL recognizing, please let us know.
    • OpenAPI fix: when tasks were returned in JSON format, the data was OK for Javascript interpretation, but didn’t confirm to JSON standard.
    • No notifications were sent about deleted notes
    • Copy/Paste/Move now copy notes for tasks as well
    • MySQL database were updated to avoid some locking problems
    • OpenAPI documentation was corrected in several places

    And thanks all of view for your feedback, we really appreciate it!

    Aug 30, 2009 9:59pm

    Extract checklist and UI customization

    This week we introduce a couple of features and a handful of bugfixes:

    • Extract checklist - when a checklist gets too long, you can easily break it into several ones. Just select the top task of the node you want to extract, and press xx (new shortcut for xtract feature). The top task becomes the new checklist title, and the original list contains a link to the new one. See reference for details.
    • UI Customization available to our Pro users - The first addition to the Pro plan allows changing the logo and colors of the Checkvist’s interface. Those who are sure of their web design skills can use custom CSS to customize Checkvists face into anything they fancy. See reference for details.
    • (bug fixed) Changed behaviour of a parent task upon completion in the “Hide completed mode (see the discussion of this issue)
    • (bug fixed) Corrected URL linking (thanks, Ricardo!)
    • (bug fixed) Saving credentials upon login (the “Remember me” option) (thanks, Oleg!)

    And - as usual - thank you so much for your feedback and so many ideas!

    Aug 19, 2009 3:31pm

    It's settled: Checkvist Pro

    We’ve been almost silent for quite a while. And there is a reason behind that.

    For more than a year, Checkvist was completely free. We have a lot of happy users, a lot of great feedback. It is a real joy to work on the tool.

    We got some requests from people who would like to donate to our service to say thank you - and these were indeed pleasant requests. On the other hand, monthly hosting bills led us to a thought that Checkvist should probably pay for itself, or at least cover some expenses.

    So we spent some time and introduced Checkvist Pro plan. As we promised before, all previous features, already available to Checkvist users, remained free.

    Checkvist Pro plan is subscription-based, and it costs $15 for 6 months. Its benefits are valuable mostly for those who collaborate using Checkvist:

    • Daily digest of the changes. You can either subscribe on changes in specific checklists, or subscribe for all available checklists.
    • Private read-only sharing. This feature is useful in a case when you want to show results of your work to someone, but disallow modifications from your reviewer (writeable sharing is still available for free).
    • Full HTTPS support. You can use HTTPS protocol to work with your lists, which makes your communications secure. For all (including non-Pro) accounts, HTTPS can still be used to register in the system and update user profile.

    There is also a couple of new things available to free accounts as well:

    • You can specify a custom message when sending a notification about changes
    • You can choose recipients of the notification, and also send a copy to yourself
    • Notification e-mail message was reworked and is available in HTML format

    Under the hood, we’ve also made several time-consuming changes, in particular, migration to Ruby on Rails 2.3.3 and MySQL InnoDB engine.

    And now, after the release, we can provide more frequent updates.

    Stay tuned and thanks for being with us :)

    Page 1 of 4