gitlab.com/dbohdan/catchup

Ephemeral IRC logger and Web-based log viewer

0 stars
0 dependents
License: MIT

No shard.yml at tag v0.19.0.

Installation

# Add this to your shard.yml
dependencies:
  CatchUp:
    gitlab: dbohdan/catchup
    version: ~> 0.19.0

Then run:

shards install

shard.yml

No shard.yml at tag v0.19.0. You can read it on the repository.

Dependencies

No shard.yml at tag v0.19.0.

README

This README is the one indexed from the repository at its latest ref, not from the tag for this version.

CatchUp

CatchUp is an ephemeral IRC logger and a mobile-friendly Web-based log viewer in a single binary. It was created for #tcl on freenode (and now Libera Chat), but it is written in Go. It understands IRC bridges, like the ijchain XMPP bridge and the ischain Slack bridge that operate on the channel. It only keeps logs for the last 48 hours. The goal is to let you catch up with the scrollback from your phone, not to keep a record forever.

CatchUp uses SQLite for storage. The database is created in ${XDG_STATE_HOME}/catchup/, ~/.local/state/catchup/ by default.

Screenshot

Screenshot.

Building

Install Go 1.25 or later and Task on your developer machine, clone this repository, and run:

# A static binary for the current platform:
task release

# Or for another target:
task release OS=linux ARCH=amd64

# Or for every supported target:
task release-all

The binaries are written to bin/ as catchup-VERSION-GOOS-GOARCH (for example, catchup-v0.16.0-linux-arm64) and are fully static; they cross-compile without a C toolchain.

Developing

The HTML view uses templ, which generates Go code to create a type-safe template. Because the generated file (internal/web/index_templ.go) is committed, building only requires Go. Install the code generator to edit the template:

go get -tool github.com/a-h/templ/cmd/templ@latest

Then edit internal/web/index.templ and run task generate to regenerate.

Command-line options

Usage: catchup [options]
  -h, --help                     Show this help and exit
  -V, --version                  Print version and exit
      --host string              Host to bind to (default "127.0.0.1")
      --port int                 Port to bind to (default 8080)
      --irc-uri string           IRC connection URI (default "ircs://irc.libera.chat/#tcl")
      --nick string              IRC bot's nick (default "CatchUpBot")
      --bridge string            Matching nicks are treated as bridges to other channels (default "^i[js]chain")
      --table string             Database table (default "tcl")
      --collapsed-nicks string   Hide messages from matching nicks by default

For example, --collapsed-nicks='(?i)^UptimeRobot$' initially hides UptimeRobot's messages. Click [ + ] to show them and [ − ] to hide them again.

License

MIT.