Wiki pages#
Every workspace has one wiki: a tree of pages for the things that do not belong on a ticket — decisions, guides, conventions, anything you would otherwise explain twice.
Open it with Wiki in the sidebar, under Workspace tools.
Before you start#
- The wiki is per workspace, and there is one of them. It is created with the workspace; if it is somehow missing, writing your first page creates it. You do not choose between wikis and you cannot add a second one from the app.
- Wiki access follows workspace membership, not board access: everyone in the workspace can read every page, including pages about boards they cannot open.
- Writing needs a writer role — owner, admin or member. Viewers can read and search but cannot create or edit. See Roles and permissions.
Create a page#
- A top-level page: click the + beside Pages at the top of the sidebar tree.
- A page inside another: hover the parent row in the tree and click its
+, or open the parent and choose Add child page from the
⋯menu.
Either way, name it in the dialog and click Create page. Titles can be up to 300 characters, and a page left untitled is saved as Untitled.
Nest and organise pages#
Pages nest as deeply as you like. The tree in the sidebar shows the structure, with a chevron to expand and collapse a branch, and the top of each page shows its breadcrumbs back to the root.
Move a page under a different parent: open it, then ⋯ → Move page, and
choose a new parent from the dropdown — or Top level to bring it to the
root. A page cannot be moved underneath itself or one of its own descendants;
that is refused with "A page cannot be moved below itself."
Reorder pages among their siblings: drag a row in the tree and drop it near the top or bottom edge of another row; a line shows where it will land. Dropping a page beside a row also makes it a sibling of that row, so a drag can change both the parent and the position at once.
Nest one page inside another: drag a row and drop it onto the middle of another row — the target row is outlined rather than showing a line, and the dragged page becomes the last child of it. The branch opens so you can see where the page went. As with Move page, a page cannot be dropped onto itself or onto one of its own descendants; those drops do nothing.
Sort sub-pages automatically: open a page, then ⋯ → Sort sub-pages and
choose one of:
- Manual order — the order you dragged them into. This is how every page starts.
- Alphabetical (A–Z) — by title, ignoring capitals, and with numbers read as numbers so Step 2 comes before Step 10.
- Newest first / Oldest first — by the date each page was created.
The choice belongs to the parent page, so everyone sees its sub-pages in the same order, in the sidebar tree and in the contents list alike. Each page decides only for its own direct children; pages elsewhere in the wiki are unaffected, and top-level pages are always in manual order.
Pick anything other than Manual order and new sub-pages slot into place on their own — but dragging those rows up and down no longer does anything, and says so. Your hand-made order is kept underneath, so switching back to Manual order restores it exactly.
Show a contents list: ⋯ → Show child page list puts a Pages in this
section panel at the top of the page, linking to its direct children with
their own child counts, in whichever order the page sorts them. The same menu
item hides it again. The setting belongs to the page, so everyone sees it.
Limitations#
- Reordering pages by hand is drag-and-drop only, with a mouse or other pointer. There is no keyboard equivalent — no arrow-key reordering, no "move up" or "move down" command, and no way to type a position. Elsewhere in Laver (board and column reordering) arrow keys do work; in the wiki tree they do not. Sort sub-pages is keyboard-reachable and covers the common cases.
- If you cannot drag, Move page is the keyboard-reachable fallback. It can change a page's parent, but it cannot set where the page sits among its new siblings.
- A page can only be moved within its own wiki.
Write a page#
The page title is the big field at the top; the body is below it.
The editor is rich text. Type / for the command menu, or use the toolbar:
- Headings 1–3, bold, italic, strikethrough, inline code
- Bullet lists, numbered lists, checklists, quotes, code blocks
- Links, images, tables, dividers
- Undo and redo
Type @ to mention someone. The list is the active members of the workspace,
and the person you mention gets an in-app notification linking to the page.
Notifications are in-app only — Laver does not email them.
/diagram draws boxes, arrows and labels on a canvas inside the page — see
Diagrams. A diagram is stored in the page rather than as
a file, so it copies with the text and sits in the version history like any
other edit. Being a picture, it is the one thing a text export leaves behind:
exporting the page as Markdown, HTML, ODT or PDF, or editing it as Markdown,
carries everything except the drawing.
/timeline builds a roadmap: a column of moments, each with a block of text
attached to it. The time is whatever the plan is written in — Q3 2026,
Week 2, after the migration — so nothing is sorted for you and nothing is
parsed as a date. It is filled in where it sits, in the page itself: click a
box and type, or paste into it from the paragraph above — there is no dialog in
the way, which matters because most of what goes on a roadmap is already
somewhere else on the page. Rearranging is the point: drag a moment by its
handle, or use the arrows beside it, to move a block of text to a different
time, and the bin beside those takes a moment off. Like a diagram it is
stored in the page rather than as a file, and like a diagram it is what a text
export leaves behind — the words are searchable, but Markdown, HTML, ODT and
PDF have no timeline to render it as.
View options#
The sliders button at the top of the page, next to History, changes how the page is shown to you. Nothing in this menu is saved to the page, so a wider column or a visible word count is yours alone — everyone else keeps their own. Each choice is remembered in the browser you made it in.
Page width sets how wide the column of text is:
| Width | What you get |
|---|---|
| Default | About 90 characters a line, which is where prose reads best |
| Wide | Room for a wide table without letting paragraphs run away |
| Full width | The whole window, edge to edge |
Page mode is either one long canvas — the usual thing, a page as long as it needs to be — or Show page breaks, which draws a dashed line down the page wherever a printed page would end, labelled Page 2, Page 3 and so on. The guides are measured against the same paper Laver's PDF export uses, so they are a good indication of where a page will fall, not a promise: a table or an image that cannot be split will move the real break. While page breaks are shown, the paper sets the width and the width buttons are greyed out.
Show word count adds the number of words, the number of characters and roughly how long the page takes to read to the line under the title, beside when the page was last edited and which version it is on. It updates as you type, and it counts what is in the page body — the title is not included.
Show outline puts the contents of the page above the first paragraph, as an indented list of its headings — the same document outline you would expect in Google Docs or Word. The headings are in the order you wrote them, each one stepped in under the heading it belongs to, so a heading you left over nothing at all is on the list like any other.
Click a heading to jump to it in the page. A heading with sub-headings under it has a triangle beside it, which folds that part of the outline away while you work in another one, and hovering a heading says how many words are under it. The outline is read from what is on screen, so it keeps up as you write, and as with everything else in this menu it is yours alone.
Tables that add up#
A table cell that starts with = is a formula, and the cell shows what it comes
to instead of what you typed. Click into the cell and the formula comes back, so
it can be read and corrected; click away and it is a number again.
Cells are named the way a spreadsheet names them — columns A, B, C across,
rows 1, 2, 3 down, counted from the top left of that table. So =B2
is the second column of the second row, =A1+A2 is those two added, and
=SUM(B2:B9) totals a run of them. A formula may point at a cell that is itself
a formula, which is how a total becomes part of a bigger one.
With the cursor in a table the toolbar shows the cell's name and a Σ button: it writes the total of the run of numbers above the cursor or the run to its left, whichever is the longer — so the cell under a column totals the column and the cell at the end of a row totals the row, without being told which you meant. Where both runs are worth having, right-clicking the cell offers them apart as Sum column and Sum row under Formulas, and Average the same way.
Select a block of cells — drag across them, or hold Shift and press the arrow
keys — and the toolbar names the block, B2:D4, and shows what it comes to:
Sum, Avg and Count, worked out as you drag and written nowhere. The
figures are shown to two decimal places, so an average of a column of prices
reads as a price. It is the quickest way to check a column without adding a row
to it.
With a block selected, Σ totals its rows and columns together in one press: a total under each column, a total beside each row, and the grand total in the corner where the two meet. Alt-= does the same from the keyboard, and on a single cell it writes the ordinary Σ total. A trailing empty row or column you dragged over is where the answers go rather than part of the sum; if there is no room the table grows a row or a column to hold them; and a word already sitting in the totals row — Total, say — keeps its place. Right-clicking inside the block offers the same as Total B2:D4 and Average B2:D4.
You can point at a cell instead of spelling its name. While a cell is being
written as a formula — anything from a bare = onwards — Cmd-click (or
Ctrl-click on Windows and Linux) another cell in the same table to drop its
name in where the cursor is. Type = in C3, Cmd-click C2, type +, Cmd-click
A2 and the cell holds =C2+A2. Clicking a second cell straight after the first
corrects it rather than adding to it, so a wrong cell is one click to fix.
Keep the button held and drag, and the name grows into the run you cross: type
=SUM( in C11, hold Cmd, press on C2 and drag down to C10, and the cell holds
=SUM(C2:C10) — a whole column picked up without a colon being typed or a row
being counted. The block is outlined as you go, and dragging back over it names
whatever the block is when you let go rather than leaving a trail. Letting go
also closes the brackets the formula left open, so =SUM( finishes itself; the
cursor stays inside them, so a comma carries straight on to the next range. A
drag that crosses the cell you are writing in is ignored, since a cell cannot be
part of its own total.
Beside the cell's name in the toolbar is the formula bar, a box holding what
is actually in the cell — the formula, not the answer. Typing in it types into
the cell, so a long formula can be written somewhere it is not hidden behind its
own result. While the cursor is in the bar and what you have written so far is a
formula, an ordinary click on another cell drops its name in — no Cmd needed
— and the cursor carries on after the name, so = then a click, +, another
click builds the formula out of clicks. An ordinary drag names the run it
crosses, the same as with Cmd in the cell. Enter finishes and moves down a
cell; Escape puts the cell back the way it was. Cells holding anything more than
plain text — a link, say, or two paragraphs — are shown in the bar but not
editable there.
A table that adds up handles like a grid. The pointer over it is the cell crosshair rather than the usual I-beam, the cell under it is outlined, the cell you are typing in is boxed, and a selected block is drawn as one block rather than as a heap of cells. While you are writing a formula, the cells it names are outlined too — a colour per range — so it is clear at a glance whether it picked up the column you meant. Enter moves down a cell instead of starting a new paragraph — use Shift-Enter for a line break inside a cell, and Enter in the bottom row still adds a paragraph as it always did.
Beyond +, -, *, /, ^ and brackets, a formula can use:
| Function | What it does |
|---|---|
SUM, AVERAGE, MEDIAN, MIN, MAX, PRODUCT |
The usual arithmetic over cells and ranges |
COUNT, COUNTA |
How many numbers, and how many filled cells |
ROUND, FLOOR, CEILING, ABS, SQRT, POWER |
Shaping a number |
IF, AND, OR, NOT |
A cell that depends on a comparison |
CONCAT, and & between two values |
Text joined together |
A few things worth knowing:
- Money and percentages count as numbers.
£1,200,1 200,(400)for a negative and12%are all read as figures, so a column written for people still totals. Anything else is text:SUMskips it andCOUNTAcounts it. - A cell that cannot be worked out says so, in the same words a spreadsheet
uses —
#DIV/0!,#NAME?for a function that does not exist,#REF!for a cell outside the table,#CYCLE!for two cells that depend on each other, and#ERROR!for a formula that does not parse. - The page stores the formula, not the answer. Two people can type in the same table at once and neither is overwriting the other's totals, and the sum moves the moment a number above it changes.
- A table can be told to stop. The grid button next to Σ turns
spreadsheet mode off for that one table — its
=cells go back to being the text you typed, everywhere the page is read, exported or published, and the cell cursor and Enter behaviour go with them. Spreadsheet → Turn off formulas in the right-click menu does the same. New tables add up until you say otherwise, and so does every table written before the switch existed. - Exports and published pages show the values. A PDF, Word, ODT or markdown export of the page carries the numbers a reader saw, not the arithmetic behind them — as does a page published to the web, and a ticket description.
Add images and files#
Paste an image, drop one onto the page, or use the image button in the toolbar. It uploads to the page and is embedded where the cursor is. Selecting an image gives you width buttons, including Auto for its original size.
For anything that is not an image, type /upload and choose a file. It uploads
to the page and lands where the cursor was, as a link with the file's name —
click it to open or download the file. Images chosen this way are embedded like
a pasted one.
- The same files a ticket takes. PNG, JPEG, GIF, WebP, PDF, Word, Excel, PowerPoint, CSV and plain text. See Comments and files.
- 25 MB per file. Anything larger is refused with "Files must be 25 MB or smaller."
- Every upload is scanned for malware before anyone can open it, so a file may say it is being checked for a moment after it lands.
- Uploads count against the workspace storage allowance, the same pool ticket attachments draw on. See Comments and files for the limits per plan.
Import a Markdown file#
Notes you already have in a .md file go onto a page without being retyped or
pasted in as plain text: open the page, then ⋯ → Import into this page →
Markdown (.md), and choose the file.
- The file is added to the end of the page, never over the top of it. To import into a blank page, create one first and import into that.
- Headings, lists, task lists, tables, quotes, code blocks, links and emphasis all arrive as the real thing, because the file is read by the same Markdown Laver's API and its exports use — so a page exported as Markdown (.md), edited elsewhere and imported back comes in as it left.
- Indented sub-bullets stay indented, however deep they go, and so does anything else written under a list item: a second paragraph, a code block, a quote or a table.
- A YAML front matter block — the
---fencedtitle:andtags:lines that Obsidian, Hugo and Jekyll put at the top of a file — is left out rather than landing on the page as a line and a heading. .mdand.markdownfiles, up to 100,000 characters each. A longer file is refused; split it and import the parts.- Headings below the third level arrive as third-level headings, which is as deep as the editor goes.
- Images are not brought in with the text. A picture kept beside the file on
your computer is left out — add those with the image button once the words
are in — while one written as a public
https://address comes in as that image. - Importing needs edit access to the page. Anyone else with it open is shown the new version.
Drafts and autosave#
There is no save button. Laver saves the page 750 ms after you stop typing, and the pill at the top right of the page tells you where it has got to:
| Pill | Meaning |
|---|---|
| Saved | The server has your latest edit |
| Unsaved | You have typed since the last save; a save is queued |
| Saving | A save is in flight |
| Error | The save failed. Your work is kept in this browser and Laver retries |
| Conflict | Someone else saved this page while you were editing it |
Every keystroke is also written to a draft in this browser, so closing the tab or losing connection does not lose your work. When you reopen a page whose local draft is newer than the server's copy, a banner says "A newer local draft was restored from this device." — keep typing to save it, or click Discard draft to go back to the server's version.
Two things worth knowing about drafts:
- The draft is stored in the browser you typed it in. It does not follow you to another device or another browser.
- Conflict means Laver has stopped pushing your edits so it does not overwrite someone else's. Your draft is safe and unsent. Copy what you need, reload the page to pick up their version, and paste your changes back in.
Version history#
History is its own button at the top of the page, next to ⋯. It lists
every saved version, newest first, each with its version number, the time it
was saved and the page title at the time, and a Restore button. Restoring
writes the old content back as a new version, so nothing is lost by trying it.
Every autosave creates a version, so the list is granular.
Rename a page#
Edit the title field at the top of the page — it autosaves like the body. To rename a page without opening it, right-click its row in the tree and choose Rename.
Duplicate a page#
⋯ → Duplicate page, or right-click a row in the tree and choose
Duplicate. The copy is titled "original (copy)" and is placed directly
after the original among its siblings. Child pages are not copied — only
the page itself.
Search the wiki#
Type into Search the wiki... in the sidebar, or press
Cmd/Ctrl+Shift+F.
Search covers page titles and body text across the whole wiki, and results
show a matching excerpt. Use the arrow keys and Enter to open one. Archived
pages are not searched.
That box searches this wiki. Cmd/Ctrl+K searches everything — boards,
tickets and comments as well as pages — from wherever you are; see
Search the workspace.
Two people in the same page#
Pages are edited live. Open one that someone else has open and you will see their name in the toolbar and a coloured caret where they are typing; click the name to jump to them. Both sets of keystrokes are merged as they are typed — there is no lock to take, no "someone else is editing this" refusal, and no version of the page to reconcile afterwards.
The same is true of a ticket description, which is the other place the editor appears.
Comment on a line#
Highlight a line, a phrase or a single word and choose Comment from the menu that appears over the selection. The comment opens in the panel on the right of the page, above the words it is about, and the text stays marked in the page so the next reader can see that something was said about it. Click a mark to open its thread; click a thread to jump to its words.
- Anyone who can edit the page can comment on it, as can somebody the page was shared with as Can comment — a level that discusses the page without changing it. A read-only seat cannot comment, and neither can a guest, who cannot reach the wiki at all.
- Reply continues a thread. Replies belong to the thread, not to each other, so a conversation stays one column deep.
- Resolve closes a thread and takes its mark off the prose without deleting anything. Resolved threads are folded away at the bottom of the panel and can be reopened.
- You can edit or delete your own comments. Deleting the first comment of a thread deletes its replies with it.
- A comment is anchored to the words it was written on, not to a position in the page, so it follows them as the page is edited around them. If the words themselves are rewritten there is nothing left to mark, and the thread says This text has since been edited — what was written is kept and stays readable.
Who can see a page#
The label at the top of an open page says who it is currently visible to, and opens the panel that changes it. By default it reads Everyone in the workspace: every active member can read every page, and writing still needs a writing role.
Make this page private narrows it to you and the people you add by name, each as Can view, Can comment or Can edit. A private page is gone from the tree, from search and from exports for everybody else, and the pages underneath it go with it — a page under a private parent is only reachable by the people who can reach the parent, however open the child itself is. Private pages are a paid plan feature.
Publish a page to the web#
A page can be given a public link that anyone can read without signing in — release notes, a public handbook, an FAQ. It is a paid plan feature, and an owner or admin has to switch publishing on for the workspace first, under User access → Settings; until they do, the control is not there at all.
Open the sharing panel and choose Publish to the web, then copy the link.
- It is read-only, and it carries
noindex, so search engines are asked to leave it out. - A private page cannot be published. Make it visible to the workspace first.
- The panel shows how the page is doing once it is out: total views, when it was last read, and a bar per day for the last 30 days with where the readers came from. Readers are counted once per browser per day — nothing is stored that could tell Monday's reader from Thursday's.
- Take it off the web breaks the link permanently. Publishing again makes a new one, which is also how you deal with a link that reached the wrong person.
- User access → Published to the web lists every page and board in the workspace that is readable without a login, and takes any of them down.
Publishing is one page at a time. There is no public view of a wiki as a whole.
Send a page to be signed#
⋯ → Get a signature emails one named person a private link to this page,
where they fill in whatever blanks it asks for and sign a section of it. They
need no Laver account, and a private page can be sent this way — a signature
request is a send to one address rather than a publication. See
Document signatures.
Delete or archive a page#
⋯ → Archive page, or right-click a row in the tree and choose Delete.
Both do the same thing, and both take the page's child pages with them —
the confirmation says so.
The pages disappear from the tree and from search for everyone. A deleted page goes to the workspace Trash, where it can be restored for 30 days — see Trash and restore — but read the confirmation before accepting it rather than relying on that.