# thrds - multi-thread post drafting (https://github.com/Open-Athena/thrds)
# Sample rc file; source from your dotfiles (or via `~/.private/.thrds-rc`).
#
# Naming: `ts*` = slack subgroup, `tc*` = capture subgroup. Session verbs get
# the single-letter slot (used more than CRUD in practice); the two CRUD verbs
# that would collide with session names (`tsp`=push vs post, `tsr`=recover vs
# rm) get 2-letter suffixes (`tspo`, `tsrm`).
#
# `slck` (installed alongside `thrds`) is `thrds slack` as its own command, so
# every verb is reachable as `slck <verb>` without an alias. The `ts*` aliases
# below stay for the handful of verbs used often enough that two more
# keystrokes matter; anything not listed here is just `slck <verb>`.

# --- thrds slack (session verbs) ---
alias tsi='slck init'                   # init a session for a doc
alias tsp='slck push'                   # sync threads → staging PC
alias tsl='slck pull'                   # pull from Slack (+ `-w` to write back)
alias tsd='slck diff'                   # local vs Slack
alias tsa='slck archive'                # archive the staging PC
alias tso='slck open'                   # browse gist (default)
alias tsos='slck open -s'               # browse staging PC
alias tsop='slck open -p'               # browse prod channel
alias tsls='slck list-sessions'         # what sessions exist in a channel
alias tsr='slck recover'                # rebuild state from Slack metadata

# --- thrds slack (per-thread model) ---
alias tss='slck status'                 # per-thread state + destination
alias tspr='slck promote'               # post ONE thread to its target
alias tsdr='slck drop'                  # mark a thread abandoned
alias tsad='slck adopt'                 # record an already-posted message
alias tsro='slck reorder'               # renumber thread files → gapless 01..NN
alias tsm='slck migrate'                # legacy doc → per-thread files
alias tsrp='slck replay'                # rewrite history → per-thread files

# --- thrds slack (CRUD, raw-mrkdwn by default) ---
alias tsh='slck history'                # last N messages in a channel
alias tst='slck thread'                 # OP + replies for a thread ts
alias tsrm='slck rm'                    # delete msg(s) by ts (+ `-f` orphans_ok)
alias tspo='slck post'                  # post raw mrkdwn (+ `-m` for md→mrkdwn)
alias tse='slck edit'                   # edit msg by ts (raw by default)
alias tspl='slck permalink'             # get permalink URL

# --- thrds capture (gist-only trajectory, no platform target) ---
alias tci='thrds capture init'          # init a capture-only session
alias tcp='thrds capture push'          # commit + push to gist
alias tco='thrds capture open'          # browse the gist

# --- thrds discord (render + MD-compat lint; prod delivery is copy-paste) ---
alias tdi='thrds discord init'          # init a discord session (gist-mirrored)
alias tdr='thrds discord render'        # print doc + lint warnings → stderr
alias tdc='thrds discord render | pbcopy'  # macOS: paste directly to clipboard
alias tdl='thrds discord lint'          # just the MD-compat warnings
alias tdo='thrds discord open'          # browse the gist

# --- thrds bsky (render + post-length + masked-link lint) ---
alias tbi='thrds bsky init'             # init a bsky session (gist-mirrored)
alias tbr='thrds bsky render'           # print doc + lint warnings → stderr
alias tbc='thrds bsky render | pbcopy'  # macOS: paste directly to clipboard
alias tbl='thrds bsky lint'             # just the length + link warnings
alias tbo='thrds bsky open'             # browse the gist
