MojoPad

Tasks

A full task manager, living inside your wiki. Click the ☑ Tasks button in the toolbar and MojoPad becomes the to-do app you already know how to use: an Inbox for quick capture, a Today view with an overdue section and one-click Reschedule, priorities, due dates with times and durations, repeating tasks, projects, and a board and calendar for planning. Underneath, every task is an ordinary checklist line on a page — which means your tasks survive in plain Markdown, travel with your document, and can live right next to the thinking that produced them.

Use it the way you'd use a standalone task app:

  • Empty your head — press the Add task button, type "call the plumber tomorrow 9am", and it's captured, dated, and out of your mind.
  • Run your morning from Today — overdue items sit at the top with a Reschedule button that sweeps them to today; the Journal greets you with the same list.
  • Plan a project — file tasks onto its page, drag cards across the board, and watch the goal it serves count down.

How the sidebar thinks: Goals, Projects, Areas, Tags

Open any task app and you'll find projects. MojoPad starts one rung higher, from a simple observation about the work itself: everything you do is either a single task, a task that's part of a project, or a task in service of a goal. The sidebar is that sentence, standing up — and it reads top to bottom like one:

  • Goalswhy. The outcomes you're steering toward. A goal is a page like any other, elevated to the top shelf, and tasks can be filed on it directly — "draft the five-year outline" doesn't need a project wrapper.
  • Projectswhat. Finite efforts with an end. Any page you file tasks onto becomes one.
  • Areaswhere in life. The dimensions that never finish: Home, Work, Health, Personal, Finance, Lifestyle (edit the list to taste). A project ends; an area is tended.
  • Tagshow it's sliced. Cross-cutting threads that ignore the hierarchy: #errands, #waiting, #calls. They're called tags because your wiki already speaks tags — one idea should have one name.

Link a project to a goal (right-click it) and it tucks in underneath; the goal's count rolls up every open task below it. One glance at the sidebar answers the question that matters: is anything actually moving toward what I care about?

Two deliberate absences. There's no shelf for reference material — a folder of reading never asks anything of you, and in a wiki, reference lives where it always did: in your pages, linked and searchable. And there's no archive — the Done view already holds your history, struck through on the very page where each task was finished. Nothing needs to be moved to be remembered.

And every task belongs somewhere in your life — that's what areas are for. Capture into the Inbox when you don't want to decide yet; the ladder is there when you do.

Creating, coloring, hiding, deleting

Hover a section header (GOALS, PROJECTS, AREAS, TAGS) and a small appears — it opens the create dialog. A section that's still empty shows a dashed + Create… row instead, as the standing invitation; the moment the first entry exists, the row retires and the header's + takes over. Either door opens the same small dialog: a name, a color (eight ready swatches plus a full color wheel — or none for the quiet default), a Show in sidebar switch, and a live preview of the row you'll get. The color tints that entry's mark everywhere — projects wear a folder, goals a target, areas a dot, tags a # — so a glance at the sidebar tells you where you are. For a new project or goal, typing an existing page's name elevates that page; a new name creates one.

Right-click any row for Color & appearance… (recolor or tuck it out of the sidebar — hidden entries keep working in pickers and filters) and Delete…. Deleting an area or tag also sweeps it off every task carrying it — the confirmation counts them first, and the tasks themselves stay. Rename area… and Rename tag… are there too; see below. Deleting a goal sets its linked projects loose; deleting a project takes the page off the shelf — the page and its checklists always stay in your wiki. Hidden something and want it back? Right-click the section header (GOALS, PROJECTS, AREAS, TAGS) and choose it from the list.

Tasks that haven't been given an area gather under Unassigned — a one-click sweep list for filing them into their place in life.

Renaming an area or a tag

Called it Job and wish you'd called it Work? Right-click the row ▸ Rename area… — or, on the Board grouped by area, double-click the lane heading. Every task carrying the old name comes with it, along with its color, whether it's hidden, and any saved view that filters to it. MojoPad tells you how many tasks followed.

An area or a tag is its name, which is what makes this a real change rather than a relabelling — and two things follow. Renaming onto a name that already exists is refused, because that would quietly merge two areas into one and there is no undoing it; if merging is what you want, move the tasks across yourself. And if any of your pages are locked, MojoPad says so rather than claiming it caught everything: it cannot read a locked page, so tasks inside one keep the old name until you unlock it and rename again.

Capturing tasks

From the Tasks surface: the + Add task row (bottom of the list, or the button at the top of the sidebar) opens the composer. Type naturally — "call the plumber tomorrow 9am" sets the date and time, "p1""p4" or the ⚑ chip sets priority, #errands attaches a tag. The chips below the field (Date, Priority, Area, Tags) fine-tune anything, and the selector at bottom-left chooses where the task lives: the picker lists your goals (◎) and projects (⌂) — each wearing its color — with Tasks (inbox) on top as the "nowhere yet" choice. Type any page name, or a new name to create a project on the spot. A task can serve a goal directly — no project wrapper needed for "draft the five-year outline". Return adds and keeps the composer open for the next one.

From anywhere on your Mac: press the Bucket shortcut (⇧⌘7), start with task: and write naturally — task: renew passport friday — and it lands in your Tasks inbox, parsed and dated, without MojoPad ever taking focus. Everything else you jot in the Bucket still goes to your Bucket page; the prefix is the switch.

From your pages: checklists you write in notes stay page content — they are not tasks until you say so. The sidebar's ⇢ Import tasks from pages… lists every plain checkbox line in the wiki; tick the ones that are really tasks and they move to your inbox.

Keeping a task on the page it belongs to

Some tasks only make sense where they are written. A step in a recipe, a thing to check before a trip, a follow-up sitting under the meeting note that caused it — move those to a task list and you have separated them from the thing that explains them.

You do not have to move them. On your pages, in the sidebar, is every tick-box in the whole wiki, gathered under the page holding it, and every one still lives exactly where you wrote it. Tick one here and the line on the page is ticked; open the page and it is as you left it. Nothing is imported, nothing moves.

It arrives grouped by page, because the page is the context. If you prefer another grouping while you are in there, change it — and MojoPad hands your usual grouping back when you leave, so a view you live in is not quietly rearranged behind you.

The other way round — if you want a page's task to show up in Today and Upcoming alongside everything else, without moving it — give the line anything the task views understand and it joins them while staying put:

- [ ] Ring the surveyor @due(tomorrow)
- [ ] Ring the surveyor @area(House)
- [ ] Ring the surveyor !high

A date, an area, a tag, a priority, @every(...) or @remind(...) — any one is enough. Lines on a page you have marked as a project or a goal count without any of that. Import tasks from pages… exists only for lines carrying none of it, because without a marker there is nothing to tell a real task from an ordinary tick-box in a packing list.

Working the views

Today is the morning view: an Overdue section with a one-click Reschedule that sweeps everything to today, then the day's list. Upcoming groups by day. Inbox is the unfiled queue — every task you haven't yet filed onto a project or goal, dated or not; file one and it leaves the Inbox that moment, and a task's home chip reads ⌂ Inbox until you do. Recurring shows everything on a repeat. Done is the archive — nothing is ever moved to get there. The Journal opens each day with a Due today card (complete tasks right from it; turn it off in Settings if you prefer a quieter page).

Found an arrangement you love — say, the board grouped by area, filtered to this week? + Save current view pins it by name in the sidebar's VIEWS section. One click restores the whole arrangement; right-click deletes it.

Editing a task

Click a task to open its detail window: rename the title in place, add sub-tasks (they become nested checklist lines under the task) — they sit under a Sub-tasks heading that shows how many are done (2/5) and folds away behind a chevron when you want the task's other details front and center — and keep a running comment log — each note is stamped with the moment you wrote it, and lives in the page right under the task, visible wherever the page is read. Web addresses and app links in a comment are clickable, so "waiting on https://…" is one click to check. Tasks carrying comments show a 💬 count in every list. The rail on the right edits Project / Goal, Date, Priority, Area, Tags, and Reminder. In a list, the colored chips edit in place, and right-click any task for the full menu — including Delete task, which names any sub-tasks and comments it would take with it before you commit. (Done is history; Delete is for the task that should never have existed.)

Tasks that already exist can nest, too. You wrote "get panel estimate" and "call the electrician" as separate tasks, then realized one belongs inside the other: drag one row onto the other — the target lights up as a container, and the dropped task becomes its sub-task. (In a manually-sorted project, a row's top edge still means reorder above; its body means nest inside.) Or right-click and choose ⤷ Make sub-task of… — a type-to-filter picker lists every open task (the ones on the same page first, each showing its home), and picking one tucks the task underneath it as its last sub-task. The whole block travels: the task's own sub-tasks and comments ride along, and a parent on a different page works — the task moves to that page and nests there in one stroke. The inverse lives in the same menu on any sub-task: ⇱ Promote to full task lifts it out one level, landing it right after its old parent.

And the lists honor what you built. A page holds an outline, so the views draw one: sub-tasks sit indented under their parent, glued to it in page order no matter how the list is sorted, as deep as you nest them. When a sub-task earns its own place in a view but its parent doesn't — "get teeth cleaned" is due today, "find a dentist" isn't due at all — it appears as a full row wearing a quiet ⤷ breadcrumb back to its parent; click the breadcrumb to open the parent's detail. The rule underneath: a sub-task with a date is a first-class citizen of Today and the calendar — it never hides just because its parent didn't make the cut.

A task carrying five or six sub-tasks can own more of the list than you want to look at, so the tree folds. A parent task carries a small disclosure chevron in the left gutter (it whispers until you hover; a folded one always shows). Click and the sub-tasks tuck away; the parent's title gains a small done-count badge2/5 — so a folded task always confesses how much is behind it. If anything behind the fold is due today or overdue, the badge turns red: a fold can hide rows, never a deadline. Click to open it back up. Folds are remembered per task, so the lists stay the shape you left them.

✦ Break it down — tasks that arrive prepared

You wrote "get an estimate to replace the electrical panel" and walked away. That task needs five smaller tasks before it moves — and the details that matter (the deadline, the budget) are sitting in your own notes. Right-click the task and choose ✦ Break it down (it's also in the detail window, next to Add sub-task). Your local AI reads the task, its comments, and the pages in your wiki that touch the same subject, then proposes the concrete next steps — each one a checkbox, all on by default. Untick the ones that aren't right, press Add, and the keepers land as real sub-tasks: nested checklist lines under the task, on its page, yours to edit like anything else you wrote.

If the task is sitting unfiled in the Inbox, the proposal may end with one more row: File under the project or goal it clearly serves — chosen only from shelves you already have, never invented. Accept it and the task moves there first, sub-tasks following. Everything runs on your Mac: the task, your notes, and the model never leave it. (If nothing happens, the AI isn't running — the window will say so; MojoPad's AI features need a local model, set up in Settings ▸ AI.)

And a small pleasure you'll meet the same day: finishing feels finished. Checking a task off pops the circle with a ring and the row settles away — and completing the last open task in Today, the Inbox, or a project earns a quiet beat across the screen: Today, cleared.

Dates, times, durations, reminders, repeats

The date picker is the one your hands know: quick rows (Today, Tomorrow, Next week, Next weekend), a type-anything field, and a month calendar. ◷ Time opens the time panel — pick from fifteen-minute increments or type one, and give the task a duration ("30 min", "1 hour") that shows on the task and sizes its block in the Day view.

Reminders are real notifications. Give a task a reminder time and macOS notifies you at that moment — the app can even be closed; clicking the notification opens your tasks. The reminder panel speaks two modes: Before task (at the time of the task, or 10 minutes, 30 minutes, an hour, or a day before — these follow the task when it reschedules) and Date & time, a natural-language moment of your own. A bare time like "08:30" means that time on the task's due day.

Getting the alert on your phone

Those notifications arrive on the Mac MojoPad is running on, which is no use when the thing you must not forget is a phone call and you are out. Turn on Settings ▶ Dates & Time ▶ Put dated tasks in Reminders and your reminders become rows in Apple's Reminders app, in a list called MojoPad. iCloud carries that list to your iPhone and iPad, and Apple rings it there. No account of ours, nothing on anybody's server, no second app to keep in step by hand.

A due date on its own is not enough — the task needs a reminder. That is the 🔔 on the task, or @remind(...) typed on the line, and it is the part that means tell me. A date says when something is due; plenty of tasks have one and want no interruption at all. So dating ten tasks and finding an empty list on your phone is not a fault: give one of them a reminder and it appears within a few seconds.

A tick counts wherever you make it. Finish or undate a task here and its reminder goes. Finish it in Reminders — on the phone in your hand, which is where you were when it went off — and the task is finished in your wiki, the next time you come back to MojoPad. It checks when you return to it, when your Mac wakes, and every few minutes while it is open, so the tick is usually home before you have looked. A repeating task ticked on your phone does what it does here: it reschedules rather than striking out. MojoPad says what it picked up.

A tick waits for the wiki it belongs to. Reminders keep working for a document you have closed, so you can be handed a tick for a wiki that is not open. It stays where it is until that wiki is, and is applied when you open it — nothing is quietly dropped for having arrived at an inconvenient moment.

Only finishing travels that way. Un-ticking a reminder in Apple's app does not re-open the task, and nothing outside MojoPad's own list is read to find out. That is deliberate rather than half-built: ticking something already done is one keystroke to undo, while un-ticking real work would destroy the record of it and put the reminder back on your phone, where it would return for ever. If you want a finished task open again, open it here.

Nothing outside the MojoPad list is ever read or touched — reminders you keep elsewhere are none of its business, and anything you add to that list by hand is left alone. If you change your mind, delete the list and it is all gone in one gesture.

macOS will ask permission the first time, and it is a different question from the calendar one — that only ever reads, this one writes, and those deserve separate answers. A wiki with a password is never sent. Its reminders would arrive on your phone saying nothing useful, on a device you did not choose to involve; the reason you locked it is the reason not to.

Repeats come in two families. Every week counts from the due date — right for deadlines; miss a few and completing catches you up to the next real slot. Every 3 days after done counts from the moment you finish — right for habits like watering plants, where the clock restarts when you act. Completing a repeating task never strikes it out; it reschedules and tells you when it went.

List, Board, Calendar

Three buttons at the top right — List, Board, Calendar — switch between the three ways of looking at the same tasks, and your choice is remembered per document. Beside them, Arrange holds grouping, sorting, filters and whether finished tasks show; a dot on it means you have changed something there. List offers grouping (by date, priority, tag, area, page) and sorting — including Manual, where dragging rows in a project view rearranges the page's actual lines. Board turns the Group key into lanes; drag a card across lanes to re-file it (its area, priority, tag, date, or page changes for real), and every lane has its own + Add task. Group by Status for a working board — out of the box To do · Doing · Parked · Done: drag into Done to complete, out of it to reopen — and a repeating task dropped into Done rolls to its next date rather than being struck out, exactly as ticking its circle would — and mark a card ◐ Doing or ⏸ Parked from its right-click menu.

Your own stages, and a pipeline per project

A book goes Drafting → With editor → Out. A house move goes Booked → Packed → Done. Neither is Doing, and one universal set of stages becomes a ceiling the moment you are running both at once — which is why the Status board's lanes are now yours to name, and why each project can have a different set.

On a Status board, a + Add stage column sits at the end, just before Done. Name it and the lane is there to drag cards into. Double-click a stage heading to rename it and every task in that stage comes along; MojoPad says how many followed. Right-click a lane ▶ Remove tells you how many tasks are in it before it does anything, and sends them back to To do rather than losing them — they are still tasks, still on the pages they were always on.

Open one project's board and the stages you add belong to that project. Boards that span everything — Today, an area, a tag — keep your default set, so naming a book's stages does not impose them on the shopping. That is the whole point: the pipeline lives with the work it describes.

To do and Done are not stages. To do means no stage yet and Done is the tick, so neither can be renamed or removed — and Done is always the last lane, because finished work belongs at the end however many stages you put before it. Stage names sit behind a document password like areas and tags do, since a stage can be a phrase as private as awaiting biopsy results.

Lanes you name yourself, for areas and tags too. Group by Area or Tag and the lanes are your own words rather than MojoPad's. A + Add area column — + Add tag when you are grouped by tag — sits at the end of the board, and double-clicking a lane heading renames it, taking every task in it along with its color, its visibility and any saved view that filters to it (see Renaming an area or a tag, above). Use these for where in life the work sits; use stages, above, for how far along it is. Calendar shows Month, Week, and Day — drag tasks between days to reschedule, double-click a day to add, and keep the Unscheduled panel beside you for planning. The Day view is an hour grid: tasks with times appear as blocks sized by their duration — set times and durations and it becomes your day plan.

Planning tomorrow in two minutes: open Calendar ▸ Day, keep the Unscheduled panel beside you, and drag tasks onto the hours. Give each a duration from the time panel ("30 min", "1 hour") and the blocks size themselves — when the column is full, your day is honestly full, which is the whole point. Anything still sitting in Unscheduled at the end is tomorrow's honest backlog, not today's quiet guilt.

Where tasks live (and why that's the point)

Every task is a checklist line on a page. The inbox is a page. A project is a page you've filed tasks onto. A goal is a page on a higher shelf. Pages born on the task surface — the Tasks inbox, and projects or goals you create there — file themselves into a Task Board folder in the sidebar, so they never clutter Unfiled. (Pages you elevate to projects stay wherever you keep them, and anything can be dragged out of Task Board without losing its role.) That means your tasks survive as plain text in your own document — exportable, searchable, linkable — and a task can sit inside the very note that explains it. Right-click a project to link it to a goal (it nests underneath, and the goal's count rolls up everything it serves), to unlink it, to recolor it, or to delete it from the shelf — the page and its checklists stay exactly as they were.

The plain-text vocabulary

Because a task is a text line, everything the task manager knows about it is written after the text, in small tokens. You never have to type them — every picker and chip writes them for you — but they're yours to read, edit, or type by hand, and they survive every export, sync, and backup, because they're just words on your page:

  • @due(2026-07-21 09:00) — the due date, with a time when one is set
  • @every(3 days) — a repeat counted from the due date; add after done@every(3 days after done) — to count from the moment you finish, for habits
  • @remind(30 min before), @remind(at task time), or a concrete @remind(2026-07-21 08:00) — the reminder
  • @for(45 min) — the duration that sizes the task's block in the Day view
  • @area(Home) — the area of life
  • #errands — a tag (as many as you like)
  • !critical / !high / !medium / !low — the priority (p1p4 work as quick-add shorthand)
  • @status(doing) / @status(parked) — the Status board's lane. Any stage you have named works here too, spelled the way you named it: @status(With editor) puts the task in that lane

Delete a token and that fact is simply gone; move the line to another page and everything travels with it. In the task views the tokens dress up as the chips you click — on the page, they're honest text. This is the quiet guarantee under the whole feature: your tasks are readable by anything that can read text, decades from now included.