Reference
Limitations
An honest list of what is not available yet, so you know the limits before relying on it.
Agent
- DeepSeek is the only model provider so far.
- There is no automatic contradiction check yet; contradictions can be asked about through the chat.
- The Markwork agent only touches Markdown files in the work folder. Running commands is only done by an external harness from a kanban card.
- A batch has at most 20 actions. Moving a file does not update links in other files; the agent must propose that separately.
- The search is keyword-based (BM25), not meaning-based;
search_textdoes not recognize synonyms. - The Git tools only read what has been committed.
edit_noteandedit_schemarewrite a structured document through its model, so blank lines and the order of a note's own text are normalized like in the app;edit_schemadoes not rename a field or change the type of one that notes use.- Undo restores a deleted file from the journal snapshot, not from the Trash.
- The conversation history cannot be searched from the panel yet; search the files in
.markwork/chats/. - The token estimate is rough (3 characters per token).
External harness
- Only pi so far. The run status (queued, working, log) only exists while the app is open.
- A card is recognized by its text, so editing the title of a card that is being worked on breaks its status.
- A question is recognized by a
?at the end of the answer. - The
[[ ]]notes on a card are copied only at Work on it with pi; Reply to pi does not copy them again. At most 10 notes, 8,000 characters per note and 24,000 in total. On the board, a link to a note that does not exist is shown the same as a normal link. - Without a permission extension such as
permission-gate, all the pi tools run right away. - Worktrees need the project folder to be in a Git repository with at least one commit. Each worktree is a full checkout, so dependencies are installed again in it; Markwork does not show how much disk they use.
- The review compares files line by line without colors per language, and has no side-by-side view; binary files are listed without a diff. The conflict check before a merge looks at what pi committed, not at what it left uncommitted.
- Comments on the diff go to pi as one reply; they are not kept after the review closes without sending them. A comment on a removed line names the file but no line.
- Create Pull Request works for Forgejo and Gitea only (GitHub and GitLab are not supported yet), and sends the whole branch: files unchecked in the review are still pushed. It does not push new commits to a pull request that is already open (reply to pi, then push by hand), never forces a push, and does not ask for a missing access token: add it in the Pull Requests tab of the project folder first. Through markworkd the access token is passed in the environment of the push call, which needs
GIT_CONFIG_*in the daemon'senv_allowand is kept in the daemon's run record (mode 0600) until Markwork forgets the run just after git ends; a crash in between leaves it there until the daemon's retention removes it. - Taking only some files makes one commit and is refused for a file that also changed on the base branch since the worktree was made.
- The summary of what pi said and the commands it ran is only there while the run is known to this window (or found again on markworkd); after a restart without the daemon, the review still shows the changes.
- Open Terminal knows Console, Ptyxis, GNOME Terminal, and
xdg-terminal-execon Linux, Terminal on macOS, and Windows Terminal (then a cmd window) on Windows. There is no interactive terminal inside Markwork.
The kanban board
- Only top-level list items become cards.
- There is no archive or label editing through the interface yet; write
#tagin the card title. - Moving a card with the keyboard is only possible through the right-click menu.
Home
- Due dates and the inbox are only read from the open work folder (at most 300 Markdown files).
- Clicking a task opens its board without highlighting its card.
- Recent files are recorded by Markwork itself, in its settings, so they do not appear in the recent lists of other apps.
The daily journal
- One fixed journal folder (
journal/in the work folder) with a fixed template; it cannot be set in Preferences yet. - Activity is only recorded while Markwork is open and only for the open work folder. Cards moved by editing the board text, or boards changed outside Markwork, are not recorded (their commits still appear).
- Activity is merged when the journal is opened with Ctrl+Alt+J or from Home, not while the journal is open. Opening the journal file from the file tree does not merge it.
- Commits are recognized by their short hash: an amended or rebased commit can appear twice. Commits on other branches are not included.
- Undoing an agent change is also recorded as an agent change.
Collaboration
- Only Forgejo and Gitea (the same API) are supported; GitHub and GitLab are not. It has been tried against Forgejo 16 only; a Gitea server has not been tried, and neither has a server that is not on
localhost. - One repository per work folder, found from its
originremote. A remote over SSH is reached overhttpson the default port, so a server whose web address is another one cannot be used through an SSH remote. - The list is read now and then (not pushed by the server), so a change shows up after the next check, or when you press refresh.
- Comments are on the pull request as a whole; there are no comments on a line, no review with an approval or a request for changes, and no way to edit or delete a comment. The note view compares line by line, not word by word.
- Only the first 250 pull requests and the first 250 changed files of a pull request are read.
- Compare Changes works on one conflict at a time. Its Incoming and Current sources are snapshots; if the document changes, reopen the comparison before applying. Apply Result edits the document, but does not complete, commit, or push the repository merge.
- Resolving a conflict here merges the pull request into your base branch and pushes that branch. It cannot push to the branch of the pull request itself. Recording the pull request as merged needs the repository to allow manually merged pull requests; otherwise the pull request stays open on the server until you close it.
- Sending changes: the pull request goes to the default branch of the repository, you cannot pick another. Through a fork, the server may still be making the copy when the push comes (it has not been tried on a server that does this slowly). AGit needs the server to have it turned on, and sends a description of several lines as one line.
The editor and export
- The visual editor: a code block shows its fences while the cursor is in it, a table is edited cell by cell (a cell is one line, and there is no alignment button for a column yet), and a numbered list keeps its numbers as typed. A link's address is hidden, so it is changed in Markdown (the header switch). A block is a paragraph, heading, list, quote, table, or code block, found from the blank lines between them, so a loose list (items with blank lines between them) is several blocks. Pasting HTML from a web page pastes its text, not its formatting.
- An animated GIF only shows its first frame; an image changed on disk is reloaded after the app is opened again.
- Long table cell text is cut with “…”, and the contents of a cell are only one line.
- Panes: the layout is not remembered when the app is closed, undo is per pane (an edit made in the other pane is not undone from this one), and a board, list, or table in a pane that does not have the focus needs a click to get it before it can be used.
[[ ]]links: there is no backlinks panel or graph yet; renaming or moving a file does not update the links that point to it; the![[ ]]embeds and the^idblock references are not supported yet; the[[suggestions are only file names, not headings yet.- HTML export does not embed local images and does not include the code block colors yet.
- CSV tables: a file of more than a million cells opens as text, and a long file takes about as long to open as a Markdown file of the same size. There is no sorting, filtering, column types, or formulas yet, the search in a table matches inside one cell at a time, and neither the assistant nor the search across the folder includes
.csvfiles. Dragging a row or column to a place that is not on screen works only by holding the pointer near the edge of the table and moving it a little; there is no keyboard way to move a row or column yet.
The system
- The interface is in English; the translation infrastructure (gettext) is in place, but no other language is available yet, and the labels of the window itself are not wrapped for translation yet.
- The window looks the same on Linux, macOS, and Windows; it does not take the system accent color.
- The deb does not update itself: install the next one from the releases.
The complete list is in the Limitations section of the README.