mktask
A work task prioritizer built on mkio (config-driven microservice backend) and mkui (config-driven Web Components workspace with dockable panes).
Tasks live in a local SQLite database and show up in a live-updating blotter you can sort, filter, and arrange however you like. Each task carries an importance and an urgency (1–5); the blotter derives a score from them so the most pressing work floats to the top.
A task can be split into child tasks, and a child can be split again, to any depth. The blotter nests children under their parent, each level sorted by score, with carets to fold a subtree away. Completing a task completes everything split from it; reopening a child reopens its ancestors; deleting a task deletes its whole subtree.
Every task gets a Task ID like TKMA00000042: TK, two letters from
the username the server runs as (--user), and a sequence number that
starts at 00000001, never repeats, and grows past eight digits rather than
wrapping (TKMA100000000 follows TKMA99999999).
A task carries references: the things to refer back to while working on
it. A reference is a URL (including mailto: and mail-client links), a
pasted text snippet (an email, a chat exchange), a file (a screenshot, a
PDF), or a link to another task with a relation (blocks, blocked by,
relates to). Add a URL or snippet with the Reference button, link tasks
with the Link button, or select a task and drop, paste, or pick a file in
the Detail pane: an image pastes straight from the clipboard, a pasted URL
becomes a URL reference, pasted text a snippet. The References pane follows
the selected task (clear the selection to see every reference), with URLs
and files as links; selecting a reference previews it in the Detail pane,
an image inline. A task link shows on both tasks,
worded from each side, and Go to opens the linked task, with its own
references, in a Linked Task window. Uploaded files live beside the
database in <db>.files/, named by content hash; deleting the last
reference to a file, or its task, removes the file.
Quick start
pip install mktask
mktask # http://127.0.0.1:8080/
Everything installs via pip; nothing is fetched at runtime.
CLI
mktask [config] [-p PORT] [--host HOST] [-d PATH] [-u USER] [--files DIR] [--version]
config— path to amktask.toml. Defaults to./mktask.tomlif present, otherwise the one bundled with the package.-p, --port— override the listening port (default 8080).--host— override the listening host (default127.0.0.1).-d, --db— database file;.dbis appended when there is no extension.:memory:runs without persistence.-u, --user— the username whose first two alphanumeric characters, uppercased, prefix new Task IDs (mark→TKMA…; a one-character name is padded withX). Defaults to the OS login name.--files— directory for uploaded reference files, served at/files. Defaults to<db>.filesbeside the database (mktask.db.files/), a temporary directory for:memory:.
The server prints the URL to open once it is listening. If the port is already taken it exits immediately with an error instead of starting.
Customizing
Copy the bundled config out and edit it:
python -c "import mktask, pathlib; print(pathlib.Path(mktask.__file__).parent / 'mktask.toml')"
mktask.toml declares the SQLite tables, the mkio services, and the static
routes; static/app.json next to it declares the UI (menus, panes, frames,
dialogs). Both are plain config — see the mkio and mkui READMEs for the
formats. The one piece of code is mktask/services.py, which the tasks
service points at: it assigns Task IDs, runs the complete, reopen, and
delete cascades, and manages references (task links are written as a
mirrored pair, labels follow the linked task's title, orphaned files are
removed). static/refs.js is the one custom widget: the drop box, the
preview, and the Linked Task viewer.
Upgrading
Until 1.0, a release may change the database schema without migrating an
older database. 0.2.0 did (Task IDs, splitting, and complete replacing
done): delete a 0.1.0 mktask.db before starting a newer version. 0.3.0
only adds the task_refs table, which auto_migrate creates in an existing
database, so a 0.2.0 database carries over as is.
Development
pip install -e '.[test]'
mktask -d :memory:
python -m pytest
The tests cover the CLI and config loading, Task ID formatting, a real
server over HTTP and WebSocket (every task op, splitting and the cascades,
the Task ID sequence across restarts and past eight digits, references and
task links with their validation and cascades, file upload, dedupe, and
cleanup, live delete announcements, the query filter, saved layouts, the
port, host, user, and files flags), and the static integrity of app.json
against mktask.toml and refs.js.
License
Apache License 2.0. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mktask-0.3.0.tar.gz.
File metadata
- Download URL: mktask-0.3.0.tar.gz
- Upload date:
- Size: 55.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dab19b5d74ce4bfb0cdb6f8c0de03bf6373096c15aac2b3e862ad36ba768a6b1
|
|
| MD5 |
8891b4f57469630c0940a8957c3710f1
|
|
| BLAKE2b-256 |
53cf9783b4155ebe16580d02613f5af1b22d0c8a0c4daa2776c4a71b71d261e2
|
File details
Details for the file mktask-0.3.0-py3-none-any.whl.
File metadata
- Download URL: mktask-0.3.0-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62d7d0a97a5e77ee55cd7562428249aa0388a0cb40256ae717b1660132810a73
|
|
| MD5 |
54a018366a141dafd20bc3b0a8bb58ab
|
|
| BLAKE2b-256 |
e40505e880b6ff325a5994961d7d598efe921396ddd77b01c1d3626bc4273566
|