Reference/Pages, links, references, and search
- Pages, links, references, and search
- The precise rules behind the moving parts: pages and aliases, links and tags, block references and embeds, the two reference panels on every page, and every search surface from the switcher to the saved-search page. Workflows/Find and revisit walks through using them in order; Feature showcase shows each construct rendered.
- Pages and namespaces
- A page is any name you link to. Type
[[while editing and completion offers existing pages and their aliases; choosing an alias inserts that authored alias spelling while still opening its real owner page. An alias row is labelled alias of its page, so you can tell it from an ordinary page with a similar name. Whether Enter prefers the strongest existing match or exactly what you typed is Settings → Editor → Advanced → Link autocomplete default, and an exact existing name always wins. - A link to a page that does not exist yet renders muted with a dotted underline. It isn't broken — opening it creates the page. (Logseq draws missing and live links identically; Tine marks the difference on purpose.)
- A name with slashes, like Project/Roadmap, is a namespace: it nests under
Projectin the sidebar's collapsible namespace tree, and a namespaced page gains an automatic Hierarchy section with the breadcrumb paths of its descendant pages. - Journals are pages too — one per day, reachable from Journals in the sidebar. Their formats, templates, tasks, and agenda are mapped in Reference/Journals, tasks, and scheduling.
- Links and tags
[[Page]]links and#tagtags run on the same machinery: a tag links and collects references like any page, and a tag with no page of its own is perfectly normal. A page'stags::property values render as navigable links too; quoted property values stay literal text.- A labelled page link such as read the welcome shows your words while opening the page. External
[label](https://…)links are ordinary Markdown, bare URLs and emails autolink, and Mod+L wraps the selection as an external link. Afile:link —[Test](file:///home/you/report.odt), or[Test](file://D:\test.txt)on Windows — opens that file or folder in whatever application your system uses for it, on desktop. - Click a link to follow it. Shift-click opens it in the right sidebar, middle-click or Ctrl/Cmd+click opens a background tab, and Alt+click opens it in another pane — the same destinations on every link surface. While editing, Ctrl+O opens the link at the caret and Ctrl+Shift+O opens it in the right sidebar — matching Logseq's shortcuts, no mouse needed.
- Aliases
- Put
alias:: Another name, Third nameamong the page properties at the top of a page — as Feature showcase does withalias:: Kitchen sink (features)— and links under those names land on the same page. - The page then shows read-only aka chips for every name it answers to ("Also known as — other names that link here"), and the raw
alias::property stays out of the under-title property list.
- Page and block properties
- Properties are the
key:: valuelines at the top of a page and under a block's first line, and every one of them is editable from a form — not only by typing raw lines. Click Page actions beside a page's title (or right-click the title) and choose Page properties…, or type/page propertieswhile editing; right-click a block for Properties…. The form lists the properties that page or block really has, so you are never left looking at a property you cannot change. - A page's form always offers Aliases, Tags, Display title, Icon and Public, even when the page has none of them yet. Every other property the page carries follows, each under its own key and each removable outright. Add a property takes any key you like; leave the value empty to write the key on its own.
- Machine-managed properties stay out of the form:
id::andcollapsed::are never listed, and thetine.keys behind Sheets and saved searches are edited from those surfaces instead. - Each property is written in the form its own file uses. A Markdown page gets
key:: value; an Org page gets a#+key: valuefile directive, and an Org block its:PROPERTIES:drawer — the shapes Logseq itself reads back. - A key does not have to be plain ASCII.
klíč:: hodnotais an ordinary property: it can be added, changed, and removed again like any other. - Properties you type directly at the top of a page are checked when you finish editing that header, not while you are still writing it — a half-written
key:: valueline simply waits, and the page saves itself as soon as the header is valid properties again. - A read-only page — a bundled Guide page, or one Tine cannot safely rewrite — offers no property editing at all, rather than a form whose writes would be dropped.
- Block references and embeds
- Type
((while editing: the popup full-text-searches blocks, and choosing one inserts a durable((reference))— whitespace-separated words are required anywhere in the block, in any order, while punctuation such asOR,-, and/stays literal. Tine first writes a stableid::on the source block, so the reference survives renames, reloads, and restarts. - The reference renders as a link-styled copy of the source text — not a grey chip — and stays in sync: edit the source and every reference updates. A per-block reference-count badge reveals the referencing blocks, grouped by page with ancestor breadcrumbs.
- Right-click an inline reference for open in sidebar, go to block, copy ref, and copy embed; Mod+C with nothing selected copies a reference to the block you're editing.
- Copying a block to the clipboard strips its
id::, like Logseq, so an internal id never leaks into a paste; the id stays in your file. {{embed [[Page]]}}and{{embed ((id))}}inline a whole page or a block with its context. Embeds are live editing surfaces: edit inside an embed and the source changes, while folding inside an embed stays local to that embed. When a block contains only a block embed, drag its visible root bullet to move the embed on the host page; clicking that bullet still zooms into the source block.
- The reference panels on every page
- Linked References sits at the bottom of the page (and of a page opened in the right sidebar): every block that links here — large panels group them by source page with bounded, highlighted excerpts. It's live — edit in place — and the chip filter narrows to blocks that also mention a second page, cycling include → exclude → off like Logseq's filter.
- Type into its search box to narrow both the references and the available page/tag chips. A chip you already selected remains visible at count zero when the text removes its last match, so the filter can always be undone. While the descendant index is still loading, Tine says it is indexing and deliberately leaves the list unfiltered instead of displaying a false filtered count.
- A page with a lot of backlinks opens its Linked References folded, so the outline stays reachable. Logseq's
:ref/linked-references-collapsed-thresholdinconfig.ednsets where "a lot" starts (Logseq's default is 100); set it to0if you would rather every page start folded and open the panel yourself. - Unlinked References, folded by default: plain-text mentions of the page title that were never linked — the fastest way to find where a name was written without brackets. Each mention is highlighted inside its excerpt, and the highlight is clickable: it opens the source page with that exact mention selected, ready to link or edit. A block whose mentions do not all fit the excerpt also gets a numbered jump row, and Show full block marks every one of them.
- Both panels have their own Copy / export action. The currently visible entries start selected; uncheck any you do not need, then export the selected blocks grouped by source page as Text, OPML, or HTML. Linked References exports its filtered set, and ordinary page export remains separate.
- Deep matches start folded behind an ancestor breadcrumb, in a view-local copy that never changes the source block's own collapse state; hover previews show surrounding context without leaving the page.
- Finding things
- Ctrl+K, the quick switcher, searches page titles plus the visible text of blocks — hidden properties and ids never produce phantom hits. Shift+Enter opens the highlighted result in the right sidebar; middle-click opens a background tab.
- Ctrl+Shift+K searches only the open page's blocks, including folded descendants. Mod+F opens the in-page find bar with next/previous and an n-of-total count; folded branches are expanded before the match is highlighted.
- The five Search syntax forms, listed in the switcher footer:
foo bar(both terms),foo OR bar(either),foo -draft(exclude),"exact phrase", and/[A-Z]{3}/(case-sensitive regular expression). - Title matches rank exact, then prefix, then substring, then fuzzy. After you deliberately open the same result more than once for a query, it may break ties among equally strong matches; that history stays on this device and in this graph, and Settings → Editor → Learn Ctrl+K choices disables or resets it.
- Search ignores accent marks and compatibility-width differences as well as case, so
cafefindscafé,lodzfindsŁódźandTinefindsTine. Marks that make a different letter still count:かdoes not findが,иdoes not findй, andकdoes not findकु;елкаfindsёлка. Page identity stays narrower: those spellings may still be separate pages, and Create is suppressed only for the same page identity. - Search reads the same index as the rest of Tine, so it does not re-read your pages for every keystroke. While that index is still being built — the first time a large graph is opened, or after many pages changed outside Tine — Ctrl+K and the
((block picker can search one complete snapshot of pages Tine has already loaded; block-text matches stay in document order, while page names and aliases keep their usual exact/prefix/substring/fuzzy ranking. They never show a partly built index. When you reopen a graph, Tine first compares it with the index it kept from last time; meanwhile Ctrl+K, Linked and Unlinked References and query blocks answer from that kept index, and update by themselves when the comparison finishes, for example to include a page you edited in another app while Tine was closed. Your own edits show up at once. If that snapshot is not available yet, the switcher says it is Indexing and re-runs the search when the ranked index is ready. In the moment after a save it says it is searching instead of showing an empty list, and if it cannot answer at all it says so and offers Retry. An empty result with no indexing notice therefore means nothing matched, and only that. While you type, the previous results stay on screen until the new ones arrive, and Enter waits for them rather than opening a result of the earlier search. A search of one or two characters reads only the most recent blocks and says More matches exist when older ones may match too; a third character searches them all. Chinese, Japanese and Korean are the exception: one or two characters are a whole word there, so such a search always covers every block, through an index of its own. Saved and structured queries keep waiting for the complete index rather than switching to this interactive fallback. While a large graph is being indexed, the toolbar shows how far it has got — for example Building search index · 3,200 / 10,000 pages — and the rest of Tine stays usable meanwhile. On a narrow window it shows the word Indexing beside the bar; hover it for the count. - The in-app Guide itself stays out of search, page lists, and backlinks.
- Linked and Unlinked References do not wait for the whole index. While it is being built they answer from the pages Tine has already read, and if building it fails they read your pages instead, as older versions did. They say they are indexing only in the short moment after an edit, while the index catches up with it, or before any pages are loaded; the Unlinked References header identifies that waiting state.
- Search tabs and saved searches
- Open search tab in the switcher footer turns the current search into a graph-scoped search tab with its own search box. The tab survives restarts and writes nothing to your graph until you name it. While the search index is still being built, or could not be built, the tab shows results from a scan of your pages, in page order, and says so; ranking, sorting and table columns return, and the results update, once the index is ready.
- Search / List / Table / Board are presentations of one result membership: switching the view never changes which blocks matched. Filters / Advanced narrows by friendly fields and date ranges; Edit as visual query opens the row-by-row builder, with a Display panel for the view, grouping, sort, columns, totals and row limit; Explain query shows what Tine understood. Choosing blocks and choosing a presentation are separate steps — see Workflows/Structure repeated information for that split in action.
- A text search returns pages and blocks, and they are shown as two sections in that order, each independently presented and independently controlled. Their buttons are Display pages and Display blocks; a section with no rows still shows its button, and a read that failed says so rather than reporting an empty graph.
- Page matches takes exactly three values, written to
tine.page-match-scope:names(page names and aliases — the historical default, and still exact, prefix, substring, fuzzy and regular-expression matching, not exact equality only),content(a page counts when one of its own blocks matches the same search, and that block supplies the page's rank and highlight), andboth(the union by page identity; with no explicit sort, name matches precede content-only matches, and a page matching both keeps its name match). The setting changes page membership only; the Blocks section evaluates the same block search either way. An absent or unreadable value behaves asnames. - The two sections' settings live in the block's own properties:
tine.page-view,tine.page-display,tine.page-sort,tine.page-group-field,tine.page-columns,tine.page-col-aggregates,tine.page-sample, and the same seven undertine.block-. The markertine.page-display:: 1(ortine.block-display:: 1) is what makes a section's settings its own: no marker means it follows the query's own settings, and the marker with nothing under it means the section shows nothing extra. Each section's sample reduces only its own rows; neither borrows the other's unused room. - Naming a search tab — typing into "Name this search to save it as a page" and pressing Save page — creates one ordinary page whose only block is a
{{query}}(plus atine.view::line unless you chose the plain List view, and whichevertine.*display lines the two sections were using). From then on it behaves like any page: linkable, searchable, always fresh. A page that already exists with the chosen name is never overwritten — you pick another name. - A
{{query [[Page]]}}block uses Logseq's path-refs rule: a block matches when it mentions the page, when a bullet it lives under does, or when it sits on that page — so the page's own outline always appears. The backlinks-only answer to the same question is the page's Linked References panel. - A query that asks about pages rather than blocks —
(page-property …),(page-tags …),(namespace …)— lists the pages themselves. {{query (all-page-tags)}}lists every page with at least onetags::value.- A query's text is edited at the foot of its sheet, in TQL — SQLite expression syntax over a fixed vocabulary of block and page fields,
prop('key'), page references and theany/every/offforms. The compact reference is Workflows/Find and revisit → Query text (TQL). A word Tine cannot read is named, and the query returns no results rather than a shorter answer. - When a query finds nothing, why empty? under the result asks which condition emptied it: for each condition, how many blocks it matches on its own and how many the query would match without it. That is usually enough to see which one to loosen.
- Related
- Workflows/Find and revisit — the task-first path over these pieces.
- Features/Tips & shortcuts — the wider shortcut map: tabs, sidebars, focus mode.
- Feature showcase — every construct above, rendered live.