- Go 100%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| cmd/peekseq | ||
| docs/superpowers | ||
| internal | ||
| testdata | ||
| .gitignore | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
peekseq — a Logseq TUI
A terminal browser for a local Logseq graph. Recency-sorted page picker, ripgrep-backed full-text search, backlinks, and a TODO dashboard. Renders pages with hanging-indent bullets, coloured workflow markers (TODO/DOING/LATER/WAITING/DONE/CANCELED/NOW), and highlighted wiki-links you can step through. Press e to edit the current page in your $EDITOR; e on a missing today's-journal file creates it on demand. Press . to jump to today's journal.
Install
Requires Go 1.26+ and ripgrep 14+ on PATH
(the --json output format that the search view consumes was added in rg 14).
go install git.fiatcode.dev/fiatcode/peekseq/cmd/peekseq@latest
Or from source:
git clone https://git.fiatcode.dev/fiatcode/peekseq
cd peekseq
go build ./cmd/peekseq
Usage
peekseq --graph /path/to/graph # explicit path
PEEKSEQ_GRAPH=/path/to/graph peekseq # via env var
peekseq -version # print version and exit
A graph path is required — either pass --graph or set $PEEKSEQ_GRAPH. The flag wins when both are set. Drop the env var into your shell config for the zero-arg invocation.
Keys
Press ? from the page view at any time to see a grouped keymap inside the app.
| Key | Action |
|---|---|
Ctrl-P |
open picker (recent + fuzzy) |
/ |
open full-text search (ripgrep) |
T |
open TODO dashboard |
b |
open backlinks for the current page |
? |
toggle the help overlay |
n / N |
cycle the wiki-link cursor |
Enter |
follow link / open selection |
[ / ] |
back / forward in page history |
. |
jump to today's journal (creates it if missing) |
< / > |
previous / next journal (on a journal page) |
j / k |
scroll one line |
Ctrl-d/u |
half-page scroll |
g / G |
jump to top / bottom of page |
R |
rebuild the index |
e |
edit current page in $EDITOR |
Esc |
close an overlay |
q |
quit (from page view) |
What gets rendered
[[wiki-links]]are styled inline, navigable withn/N, and follow withEnter. Aliased links ([[Target|alias]]) show the alias.- Workflow markers at the start of a bullet are colour-coded (
TODOred,DOINGyellow,LATERblue,WAITINGdim,DONEgreen,CANCELED/CANCELLEDstrikethrough,NOWmagenta). :LOGBOOK: ... :END:blocks are hidden — they're metadata, not content.- Long bullets wrap with hanging indent, so continuation lines align with the text after the bullet rather than under the bullet glyph.
- Backlinks filters self-references — viewing a page never lists that page's own mentions of itself.
Environment
| Variable | Effect |
|---|---|
PEEKSEQ_GRAPH |
Default graph path (overridden by --graph). |
PEEKSEQ_STYLE |
Force a Glamour markdown style (dark, light, ascii, notty). Default dark. |
NO_COLOR |
Honoured: forces notty rendering, no ANSI styling anywhere. |
PEEKSEQ_DEBUG=1 |
Mirror Bubble Tea events to ./peekseq.log. Useful when reporting bugs. |
Scope
Read-only except for the e key, which hands the current page's file to $EDITOR, and the . key, which creates today's journal if it doesn't exist. No fold/unfold, no filesystem-watch live reload (use R).
What is not supported
A few Logseq features are intentionally out of scope for v1. None of them crash peekseq — they degrade to plain text or a silent no-op.
{{query …}}and{{embed …}}blocks are stripped from the rendered page (Glamour can't render them usefully).- Block references
[[page#block]]resolve topage; the#blockfragment is dropped. alias::/title::/tags::properties are not extracted — they appear as plain text in the page body.- Case-insensitive linking is not enforced.
[[alpha]]on a page calledAlpharesolves correctly. pages/orjournals/subdirectories are skipped with a stderr warning. Namespace pages must use the___filename convention.- The TODO dashboard shows only open markers (
TODO/LATER/DOING/WAITING).DONE/CANCELED/NOWbullets are styled on the page but never appear in the dashboard.