This page describes Calíope 1.5, the version we are building right now. 1.4 is finished and in App Review, and the store serves 1.3 on the Mac and 1.2 on iPad. The changelog says which version each feature landed in.

Adds an “Open in Calíope” button to every topic. It only works with the app installed.

File Previewer

File Previewer

Read .md, .sql, .json, .csv, .rtf and text files without opening an editor.

Where it is: Workspace › Tools › File Previewer

The File Previewer shows the contents of a local file interpreted by its extension: Markdown (.md) renders as a document, SQL (.sql) with syntax highlighting and line numbers, JSON (.json) re-indented and coloured, CSV (.csv, .tsv) as a table, rich text (.rtf) as a document, and plain text (.txt, .log) exactly as it is.

It is a read-only tool: it does not edit, does not save and does not run anything. To write and run queries there is the SQL Editor; to work with local SQLite databases, the SQLite Editor.

It works without a connection to any server and shows one file at a time, with a list of recent files.

Keywords: preview, file, markdown, md, sql, json, csv, log, read, viewer, read only

Open a file and return to recents

Pick a file from disk or reopen it from the recents list.

Tap Open… and pick any supported file: .md, .sql, .json, .csv, .tsv, .rtf, .txt or .log. The file is added to Recent, shown on the tool's start screen, which keeps the last eight.

Calíope stores a persistent permission for each recent file, so you can reopen it after quitting the app without hunting for it again. If the file is moved or deleted, the recent entry stops opening it and you just pick it again with Open….

Close releases the file and stops watching it for changes.

Keywords: open, recent, file, close, permissions, sandbox

What it renders from Markdown

Headings, lists, tables, quotes and code blocks.

Rendering covers headings from # to ######; paragraphs with bold, italic, inline code, strikethrough and links; ordered and unordered lists, with nesting; checklists - [ ] and - [x]; block quotes >; horizontal rules; pipe tables; and fenced code blocks. When a block is tagged sql, it is highlighted just like a .sql file.

Deliberately left out: images are never downloaded — their alternative text is shown instead —, embedded HTML is not interpreted and front matter at the top is skipped.

Headings are announced to VoiceOver as headings and all the text scales with Dynamic Type.

Keywords: markdown, md, headings, lists, tables, images, code

Viewing an RTF document

Rich text files are read as a document, with their structure intact.

An .rtf file — what TextEdit, Word or Pages write when they export — is shown as a document, not as markup. Headings, lists with their nesting and numbering, bold, italic, underline, strikethrough, links, paragraph alignment and monospaced runs are all kept.

What is not applied is the document's typography: not the typeface, not the point sizes, not the colours. Calíope supplies those, exactly as it does for Markdown, so the text scales with Dynamic Type and reads as well in light theme as in dark. You are reminded of this at the foot while the file is open.

Heading levels are inferred from the font size relative to the document itself: the largest is level 1, the next one level 2, and so on. An RTF file declares no hierarchy anywhere, so that is all there is to go on.

Out of scope: .rtfd packages are not opened — they are a folder, not a file — and embedded images and objects are not shown; if the document carries any, you are told how many at the foot.

Keywords: rtf, rich text, richtext, document, textedit, word, pages, formatting, bold, italic

Read a SQL file without running it

Syntax highlighting and line numbers, no execution.

.sql files are shown in a monospaced font, with line numbers and syntax highlighting: query, schema definition, control, functions, types, window and procedural keywords, plus string literals, numbers, --, # and /* … */ comments, and backtick-quoted identifiers.

There is no run button, and that is the point: the previewer never opens a connection. If you want to run the contents, open them in the SQL Editor.

Above 500 KB highlighting is switched off and the file is shown as plain text; a note at the bottom says so.

Keywords: sql, highlighting, syntax, lines, run, editor

JSON, CSV and plain text

Re-indented JSON, CSV as a table, logs as they are.

JSON (.json) is re-indented with two spaces per level and coloured: keys, text, numbers and true/false/null. The order of the keys is the file's own — nothing is reordered — and if the content is not valid JSON, the previewer says so at the bottom and still shows what it could read. Above 2 MB formatting is switched off and the file is shown exactly as it is on disk.

CSV (.csv, .tsv) is shown as a table with row numbers and a fixed header. The separator is detected — comma, semicolon, tab or pipe — and named at the bottom; quoted fields, doubled quotes and line breaks inside a field are respected. Up to 10,000 rows and 64 columns are drawn, and any trim is stated. It does not sort and does not filter: it is a viewer, not a data grid.

Plain text (.txt, .log, and any unrecognised extension) is shown as it is, monospaced and with line numbers. Lines longer than 2,000 characters are split so they can be drawn, and the marker means a continuation of the line above.

Objects and arrays fold: the triangle in the margin hides the container and leaves a summary —[…] or {…}— with the number of members; the two header buttons fold and unfold the whole file. Empty containers already come on a single line.

Keywords: json, csv, tsv, log, text, txt, table, separator, indent

Auto-refresh and size limits

The view updates on its own when the file changes on disk.

While the file is open, Calíope watches its path. If you save it from another program, the view updates on its own — with an Updated indicator for a few seconds — and keeps your reading position. You can also force it with Reload.

Watching survives atomic saves, the kind TextEdit, Xcode or vim do by replacing the file instead of rewriting it: it keeps refreshing after the second and third save.

If the file disappears, the tool says so without treating it as an error: deleting a file is not a failure.

Limits: for a large file the first 5 MB are read — the header says how much is being shown —, SQL highlighting is switched off above 500 KB, JSON formatting above 2 MB, and a CSV is drawn up to 10,000 rows and 64 columns. Every trim is stated at the bottom of the view.

Keywords: update, refresh, reload, changes, size, limit, 5 mb