Plugin: Cockpit

Cockpit is a single Joplin panel that gathers every to-do, every note, and the checkboxes inside them into one view, grouped by due date. I wrote it to replace the notes and notebooks sidebars: instead of two lists that tell you where things are stored, one panel that tells you what is due and when.

I kept losing work that was spread across notebooks — a to-do in one place, a checklist buried inside a note somewhere else. Cockpit puts all of it in front of you at once, so the panel is your plan and your whole archive at the same time. You switch it between an Overdue / Today / This Week rundown, a flat date list, a month calendar, or a week planner, depending on how you want to look at the day.

A few specifics:

  • Save a set-up as a profile — its view, filters, search, and what counts as done — then switch profiles to switch the whole view.
  • Narrow the list by notebook or by full Joplin search, with autocomplete for tag:, notebook:, and title:.
  • Reschedule by dragging a to-do onto a day or a group, or open the alarm picker for an exact date and time.
  • Recolour the panel to match Joplin or a built-in theme.

It runs on Android as well as desktop; there the pickers and the profile editor are drawn as touch-native overlays.

Install: in Joplin open Settings (Configuration on Android) → Plugins, search for Cockpit, and Install. It is the same on desktop and Android. To install by hand instead, grab the .jpl from the GitHub releases page and use Install from file.

Source, releases and issues: GitHub - pmslava/joplin-plugin-cockpit: Cockpit: a tasks-and-notes command center panel for Joplin - drag & drop due dates, calendar picker, progress rings, filters, view profiles · GitHub

Cockpit started as a fork of Agenda by BeatLink and TheScriptingGuy; the profile system and overview notes trace back to their work. The idea of pulling all your scattered work into one live view came from alondmnt's Inline Tag Navigator, though Cockpit builds it on Joplin's core to-do dates rather than inline tag syntax.

It is early, so if something is off or missing on your setup — desktop or Android — say so here and I will take a look.

A few words on where this came from.

Long-time Joplin user here. I have loved Joplin since day one — encryption, open source, a choice of sync targets, every platform. And thanks to the AI era, I can finally give a little of that love back.

All these years, a few things kept bothering me:

  1. Notebooks and notes are two separate sidebars, and together they eat a lot of space. There is no way to collapse the notebook list down to the one line that matters — the notebook you are working in — even though I usually work in one notebook at a time.
  2. Joplin has to-dos and notes, but to see the to-dos as an agenda you need a separate plugin (my thanks to the Agenda authors credited above) — which then duplicates what the notes panel already shows.
  3. There is a tag list, but when I want to search across several tags, nothing suggests which tags I actually have.
  4. There was no way to set up view profiles for the to-do/note list — save them and switch between them quickly.

Cockpit is my attempt to fix all four at once: one panel that is the plan and the archive at the same time, as described above.

And to be honest about how it was built: this plugin is AI-written, under my direction. I know how contentious AI code is, I genuinely respect the work of real engineers, and I feel slightly awkward publishing this. But it seemed wrong to pass up the chance to build something new and convenient just because of how the tool feels. I hope I got it right — and that Cockpit becomes a daily driver for someone besides me. If you find things done wrong, I will take the criticism constructively and fix what needs fixing.

Everyone interested is welcome to test it and use it. Write your thoughts and comments — I will read them all with interest.

Good job!
Can I group task in day by tags?

You can filter notes by tags. To do this, enter tag:yourtag in the Search field. The field will also suggest which tags you have. Otherwise, it works like Joplin search.

Looks interesting!

FYI, there are some css issue when using joplin's light theme:

Thanks! I'll fix it soon.
UPD: It is fixed in version 1.7.6. Already live. Thanks for testing!

Cockpit 1.8.0 >> 1.9.2 - what changed since 1.7.8

The main news is speed. Ticking a to-do is instant and no longer flickers, profile switching paints immediately, new notes and notebooks show up right away, and background refresh work was cut to a fraction. Along the way this fixed todo_completed being written as a boolean instead of a timestamp.

Search

  • If nothing matches your current profile, the panel shows Results outside current filters so you can still jump to the note.
  • New Excluded notebooks setting: excluded content is skipped by the search engine itself, not just hidden. An explicit name search still finds it, under its own labelled section.
  • Search applies reliably on Enter.

Scheduling

  • Alarm picker reworked: Today / Tomorrow / Weekends / Next Monday plus accumulating +hour / +day / +week / +month buttons.
  • Multi-select alarms can shift each to-do from its own date and time, or set one value for all — your choice.
  • Desktop: drag to-dos into the gap between two rows to schedule them in between; dropping several spreads them evenly. A Day start time setting controls the default hour.

Fixes

  • Clicking anywhere on a row opens it.
  • Text selection from the editor keeps extending across the panel.
  • Standalone to-do circles are visible in every theme.

Works on desktop and Android. Feedback welcome.

@joss Happy to announce that today or tomorrow you will have the multi selection after typing tag: in the search field.

Cockpit 2.0.0

The headline: pick several tags at once in search - the Evernote-style multi-selection.

Type tag: and the suggestion list opens as before, but now Ctrl+click entries (desktop) or press and hold (Android) to mark several, then press Enter (or the apply button) to insert them all: tag:work tag:urgent tag:home in three taps instead of three rounds of typing. Works for notebook: and title: too. The list is taller and scrollable, with its own filter box. Everything else in your search box stays untouched.

Search fixes

  • Clearing the search box instantly shows all notes - no Enter needed.
  • Android: searches now apply the moment you commit them. (The keyboard closing at that moment is the search taking effect)
  • The cursor returns to the search box after committing, so you can keep editing.

Interface

  • New New note / New to-do icons; the buttons shorten their labels instead of wrapping when the panel is narrow.
  • The row highlight follows the note open in the editor, however you opened it.
  • With several rows selected, Escape collapses the selection to the last row you clicked.

Recent releases also brought bulk actions on multi-selected rows (Delete / Move / Tags / Duplicate, with counts in the labels), a filterable notebook picker, an optional toolbar button, and drag-and-drop scheduling between rows.

Update via Settings › Plugins once the registry refreshes (usually within a day).

I successfully updated to version 2. Great update overall! :clap:

Regarding the multi-tag selection feature, I'm having a slight snag on Windows. Although Ctrl+Click works fine everywhere else on my desktop, it doesn't seem to allow for simultaneous tag selection when using the plugin interface itself. Update! It turned out the fix was simple: I manually added the .jpl *file, but I had to confirm an update afterward. Everything is working great now. Thanks.

A cumulative update post v2.0.0 > v2.5.0:


Cockpit 2.5.0

Drag to reschedule on Android

Hold a to-do for half a second and its menu opens as before. Keep holding and move it up or down, and the row lifts instead. Drop it between two to-dos to land between their times, or onto a heading, a calendar day or a week-planner column to move it to that date. The list scrolls when you drag near its edge. A sideways move is left to Joplin, so the side-menu swipe still works.

Scheduling

  • Next Week, Next Month, Next Year. When the rest of a period is already covered by the groups above it, the next period takes its place: on a Saturday you see Next Week instead of This Week, late in the month Next Month, in December Next Year. They turn back into This Week, This Month and This Year on Monday, on the 1st and on January 1st.
  • Dropping a to-do onto This Week, This Month, This Year or any Next group now makes it due on the first day of that group rather than the last, so a plan lands as early as possible instead of on a Sunday evening. The time of day is kept.
  • Desktop: dragging near the top or bottom edge of the list scrolls it, faster the closer you get, so a distant heading is reachable in one drag.
  • Fixed: a to-do due on December 31st landed under Future instead of This Year, and one due on the last day of a month under This Year instead of This Month. Thanks to Marxsal for the report.

Works with Whereabouts

If you run my Whereabouts plugin (0.3.0 or later), its notebook chip now drives Cockpit: a left click points the panel at that notebook, a double click reveals the note in the panel, switching to its notebook and flashing the row, or showing it in a read-only "Revealed" section when your current profile would hide it. Other plugin authors get the same two commands, cockpit.filterByNotebook(folderId) and cockpit.revealNote(noteId).

Note title bar (desktop, two new settings, off by default)

  • Hide the due date next to the bell and show it on hover, for a less crowded title row.
  • Open Cockpit's date picker instead of Joplin's when the alarm bell is clicked: quick buttons, calendar, Clear. Markdown editor only; the Set alarm menu item keeps Joplin's picker.

Both take effect after a restart.

Multi-select and notes (2.1)

  • Ctrl/Shift selection includes regular notes, mixed sets too. Delete, Move, Tags, Duplicate and Switch type act on the whole selection; scheduling applies to the to-dos in it.
  • Switching an item between note and to-do moves its row immediately, and it is never shown twice.
  • The suggestion list's filter box and your typed search survive background refreshes and Android reloads.

Fixes

  • "Copy Markdown link" and "Copy note ID" copy again; a failed copy shows a toast instead of a dialog that blocks the app.
  • Trashing a ticked to-do no longer leaves a stale tick behind.

Update via Settings › Plugins once the registry refreshes (usually within a day).

Cockpit 2.6.0

Profiles sync between devices. Opt-in: in Settings › Plugins › Cockpit, type Joplin Cockpit Plugin Settings into the new Settings note field. Cockpit keeps your profiles, panel CSS, theme colors, day start time and excluded notebooks in that one note, carried by your normal sync. On another device, sync first, then type the same title. Empty field, nothing changes.

The notebook picker takes typing. New note / New to-do on "All notebooks", "Move to notebook" and "Move notebook under…" now open a themed list with a filter box: type part of a path, arrows walk it, Enter picks. Same filter on Android.

Also fixed: an excluded notebook could still become the panel's filter, so New to-do created there without asking.

Have tied to install, but on first run my system hung for a couple of minutes, and aborted!

Is that expected behaviour on a large note corpus, and/or a first run thing?

Many thanks!

Edit: Can not delete this and it has practically frozen my system.

@plutoBase thank you for reporting this, and I'm sorry. It's a real bug: on a large collection Cockpit's default view reads every note, and Joplin freezes. I've answered in detail in your help topic, including how to switch off any plugin when Joplin hangs (Help → Toggle safe mode). I'll post here when the fix is out.

Cockpit 2.6.3: large collections no longer freeze Joplin

On a collection of many thousands of notes, the first run could hang Joplin for minutes (thanks @plutoBase for the report). Cockpit read every note through Joplin's search, which redoes the whole search for every 100 results.

  • The Notes section now reads Joplin's plain note list and shows the 1,000 most recently updated notes, with "show more" at the end.
  • Search still covers every note; to-dos are never capped.
  • Measured on 20,000 notes: the panel appears in about 8 seconds, where 2.6.2 had not finished after three minutes.

Details: Release v2.6.3 · pmslava/joplin-plugin-cockpit · GitHub

Update via Settings › Plugins once the registry refreshes (usually within a day).

Cockpit 2.7.0 and 2.7.1: the panel now keeps its own copy of your notes

Two releases since 2.6.3, and neither adds a feature :slightly_smiling_face:
They change how the panel gets its data, which is what the large-collection report in this thread was really about. Below is what was done, what was measured.

Problem: Cockpit used to ask Joplin's search for everything it drew, on every refresh. Joplin's search answers each page of 100 results by running the whole search again, so paging through a big collection costs about N²/100 row loads, all in Joplin's main window. 2.6.3 moved the Notes section onto the plain listing and capped it at 1,000 rows, which stopped the freeze. But the panel still re-read Joplin every minute, and an edit showed up only after Joplin's search index caught up with it, about ten seconds later.

Done in 2.7.0: Cockpit keeps a local mirror of every note's metadata: title, type, due date, completion, notebook, timestamps. It is built once in the background after the panel appears, and from then on it is kept exact by Joplin's change feed (GET /events), which reports every note created, updated or deleted. Before writing any code I read the feed in Joplin's source and probed it live from a plugin, because everything rests on it: it reports notes only, keeps one row per note, and never refuses a stale cursor. Those three facts shaped the design.

With the mirror in place:

  • every view that needs no search syntax, the notebook filter included, is drawn from the mirror with no data call at all;
  • an idle minute costs one small poll of the feed and no redraw;
  • edits, type switches and synced changes appear at once, with no index lag;
  • the panel's own actions (tick, create, move, trash, drag) show from the mirror directly.

Typed searches and profiles with their own search criteria still use Joplin's search, which is the only thing that understands them. The mirror runs on mobile too.

Done in 2.7.1: It closes what the measurements still showed:

  • every group of to-dos is capped at 1,000 drawn rows with a "show more" button, like the Notes group, under a budget of about 2,000 rows per view. Drawing tens of thousands of rows was the last way a large collection could hang Joplin;
  • the first paint on a very large collection no longer pages a slow search ten times, and the mirror is built notebook by notebook, which Joplin sorts far more cheaply than the whole table at once;
  • on desktop the mirror is saved between restarts and read back at launch, after checks that it still belongs to this Joplin profile and client, to this Cockpit and Joplin version, that it is less than 60 days old and that its count agrees with Joplin. Anything else and it is rebuilt.

Measured on a synthetic collection of 20,000 notes and 1,000 to-dos, with a real Joplin driven by Playwright and a 100 ms heartbeat in the main window:

2.6.2 2.6.3 2.7.0 2.7.1
cold start
2.7.1
warm start
First paint after
the UI is up
never (> 3 min) 8.5 s 8.5 s 2.6 s 2.5 s
Main-window lag
over 150 s
62 s in 80 s 1.8 s 1.3 to 1.7 s 1.8 s 1.4 s
Stalls over 1 s 27 0 0 0 0
Note reads per
idle minute
every note,
through the search
a to-do search
plus listing pages
none none none

On 20,000 notes with 10,000 to-dos, which 2.7.0 would have drawn in full, 2.7.1 draws at most about 3,000 rows (2,000 to-dos shared among the groups, and 1,000 notes), and paints in 6.7 s on a cold start and 2.9 s on a warm one, with no stall over a second. The mirror costs 10 to 14 MB of memory for 21,000 records, and its saved file is about 5 MB.

On an ordinary collection none of this is visible except that profile and notebook switches no longer wait for a search, and that what you edit or sync shows up at once.

Overall - it is much faster now: So fast, so it should be unnoticeable on any hardware and collection combination I can imagine. If you run a large collection and the panel still feels slow, a note count and a to-do count in a reply is all I need to look into it. Thank everyone and hope you like this change.

Just wanted to let you know i haven't yet tried to install your updated cockpit version, but this is a reflection of nothing other than I have a lot on my plate rn, and need to focus on some work. All my available development time budget for at least the next few weeks will be taken up by adding local GPU resources, but in the meantime thanks again for your development efforts -- I'll be back!

No worries :slightly_smiling_face:
Thank you!

@pmslava
Hi!

Cockpit is a great plugin – it effectively meets my needs for managing tasks. Thank you for sharing and your efforts! I have a suggestion for an additional feature that you might consider:

  1. Add an option to “not open the task note after creation”.
    • When creating a task, the note does not open automatically, which helps maintain focus on the current note and reduces the effort required to switch between them.
    • The title can be edited directly; in addition to focusing on it during the first creation, editing is also available via the right-click context menu.

This idea is based on my personal needs for task management, and it may not be applicable to everyone. The existing plugins may already meet other requirements well, but I still hope that developers will consider adding this feature. Of course, developing new features involves various considerations. Even if there is no plan to do so, there’s no need to worry – the current features are sufficient.

Best regards!

I believe it should be a separate plugin. Because it is a feature that can be needed independently of a Cockpit. People who do not use Cockpit can be in a focusing mode as well, as you described it. Cockpit might call it, for example, to fast editing, but not more. I will think about it and come with a solution.