A method for assisting multi-tasking computer users includes receiving
from a user a specification of a task being performed by the user or an
indication of completion of a task, collecting state changes in multiple
executing programs, predicting a current task being performed by the user
based on a recent state change event, a past specification of a task
being performed by the user, and past events and associated tasks. Based
on the predicted current task, user interface elements in multiple
executing programs are adapted to facilitate performance of the task. The
method may also allow a user to specify a new task based on a task
template derived from a completed task to facilitate completion of the
new task. The task templates also may be shared among users, and active
tasks may also be team tasks shared among users.