1keyirc - command-oriented terminal IRC
Not vegetarian? www.bloodguiltcurse.net will change your mind
1keyirc command help
Use /help ls for all help topics; /help commands explains the command system.
Use /help COMMAND for exact syntax and examples.
Start with /servers, /channels or /ql; /server N and /channel N select destinations.
Use /help /ls, /help autoconnect, /help autojoin and /help autoauth for common tasks.
Topics: about, authentication, commands, configuration, history, keys, limits, messages, security, startup.
/help all or /manual prints the complete manual and returns to the log.

TOPIC: about
An application of ThatIAm.vip (www.thatiam.vip), designed by remfan1994.
License: IALA (Insha-Allah License Agreement); see the included license text.
Welcome warning: Not vegetarian? www.bloodguiltcurse.net will change your mind

TOPIC: authentication
Use verified TLS with /autoauth sasl USER file PATH or /autoauth sasl USER gpg PATH.
The password file or decrypted GPG content supplies the credential; paths are literal.
Use an already-unlocked GPG key. No pinentry runs inside the chat editor.
Explicit plaintext password= and server_password= are also supported in private config files.
Choose only one source for each credential. /settings and /autoauth status redact sources.
Applied authentication settings take effect on the next disconnected /connect; /save persists them.

TOPIC: configuration
1keyirc uses its own configuration path and a common connection/profile format.
vipirc --idle uses the normal vipirc configuration and saved server catalog.
[connection] holds server, port, tls, nick, username, realname, channel, autoconnect, auth and credential sources.
[input] send_mode=direct|review is owned by primary profile 0.
[history] lines= controls native retention. [mentions] word= and [ignore] mask= may repeat.
Saved extra servers use the adjacent .servers catalog and .d directory.
vipirc accepts native 1keyirc profiles. 1keyirc rejects curses [interface] settings; use vipirc --idle for a full vipirc config.
Runtime changes are not saved implicitly. /save writes this server; /save input writes primary profile 0.
[connection] edits staged by /autojoin or /autoauth take effect on the next disconnected /connect, without altering a live connection.
Config files are private; writes replace individual files atomically. No import/export commands exist.

TOPIC: history
Recent displayed records and command history are bounded in memory and are not disk transcripts.
Changing a view replays its retained recent records; /mentions replays retained matching source lines.
The primary history setting caps records across all servers/views together; native defaults to 100.
Retention is limited to the smaller of that setting and 2048 records, with a separate 512 KiB hard byte cap.
Command history retains at most 64 entries and 64 KiB. Old records are evicted; /clear clears the selected view.
A complete command response has its own 512 KiB bounded output spool, so help and user lists do not depend on scrollback retention.
Accepted commands can be recalled in the command editor. Authentication changes, keyed joins and sensitive service messages are omitted.

TOPIC: keys
The log is the normal screen. / opens Command; another printable character starts Compose and is retained.
Arrows, Home, End, Delete and Enter can also open Compose; Enter opens it empty without sending.
Editor arrows, Home, End, Delete and Backspace edit the logical text; Tab/Shift-Tab completes names.
Command Up/Down recalls matching accepted commands. Command Enter executes; Compose Enter submits.
Review Enter confirms after the review is displayed; typing returns to editing.
Escape cancels an editor/review and returns to the log without sending. Escape on the log exits.
Ctrl-C terminates after restoring the terminal; Ctrl-Z performs ordinary job suspension.
Ctrl-D is inert. Use /quit to exit or /background to keep networking active after returning to the shell.
Bracketed paste inserts literal text and cannot submit commands; review it before pressing Enter separately.
A bracketed-paste leading slash opens literal Compose, not Command. A slash inside Compose is literal text.
Legacy unframed paste is indistinguishable from typing; use a terminal with bracketed-paste support.

TOPIC: limits
IRC limits are byte limits, not counts of displayed glyphs. UTF-8 characters can occupy more than one byte.
The client computes a message budget including target, command and relay overhead; it never splits a UTF-8 scalar.
A multi-message composition requires consent before queueing, even in direct mode. Chat is paced at one line per 1.2 seconds.
A send plan has at most 64 messages and 16384 bytes of composed text. More text must be shortened or sent deliberately in separate submissions.
There are at most 8 server slots and 32 views per server, including reserved views.

TOPIC: messages
Select a joined channel with /channel or a private query with /pm. Use /msg TARGET TEXT for an explicit destination.
Use /me TEXT for an action. /pm opens a query without sending. /ql keeps query names separate from channels.
Direct send is the default; /set send_mode review adds a review stage. Splitting always requires explicit consent.
Joining and authentication must finish before messages can be queued. /cancel cancels queued chat, not already-sent text.

TOPIC: security
Remote text is sanitized before terminal output. Inputs are parsed as local IRC commands, never shell commands.
There is no /raw, shell escape or automatic file acceptance. Bracketed paste never submits a command.
TLS verifies the server identity. Authentication is refused over an explicitly plaintext connection.
Passwords and private keys are not included in help/settings output or stored command history.
No disk conversation transcript is enabled by default. Configuration changes require an explicit save.

TOPIC: startup
Start with --server HOST, optionally --channel '#CHANNEL' and --nick NICK. Quote #CHANNEL for the shell.
Without a configured server, start disconnected and use /server add HOST, then /server NUMBER and /connect.
Autoconnect, autojoin and autoauth belong to each saved server profile. /help autoconnect explains the toggle.
--no-connect suppresses startup connections; --test-mode simulates activity without network or config writes.
--sessions lists detached jobs. --resume [NUMBER] reattaches; /help background explains selection.
-h/--help and -v/--version work without a terminal. --manual prints this manual.

The command system
Press / on the log to open Command. Enter runs the edited command; Escape cancels it.
Syntax: /COMMAND ARGUMENTS. Command names are case-insensitive; examples use lowercase option words.
Spaces separate arguments. There is no shell quoting, substitution, expansion or command chaining.
TEXT consumes the remaining text. Credential PATH consumes the remaining literal path, including spaces.
Arrows/Home/End/Delete/Backspace edit. Tab/Shift-Tab completes command names; Up/Down recalls matching history.
Only accepted safe commands enter bounded in-memory history. Password/service commands and keyed joins are excluded.
A command with unexpected arguments fails without its requested action. Help shows syntax, effects and examples.
Message commands create a send plan. Send mode and mandatory multi-message confirmation apply before queueing.
Most commands act on the selected server. /server NUMBER selects another; /server alone selects its MOTD view.
Runtime edits require /save; primary input settings use /save input. /help ls lists all help topics.
Commands (use /help COMMAND for syntax and examples):
  /autoauth     Inspect or prepare SASL authentication
  /autoconnect  Inspect or change automatic startup connection
  /autojoin     Inspect or prepare startup channel joins
  /away         Set away status, or clear it without a message
  /back         Clear away status
  /background   Keep connections running and release the terminal
  /cancel       Cancel queued chat messages
  /channel      Select a channel; number 0 selects the server
  /channels     List channels on the selected server
  /clear        Clear retained history for the selected view
  /close        Close a channel or query view
  /connect      Connect the selected server or an explicit server
  /disconnect   Disconnect a server while retaining its profile
  /help         Read topic help, syntax and practical examples
  /ignore       Manage local ignored senders
  /join         Join one channel on the selected server
  /ls           List server, channel, query or unread entries
  /manual       Print the complete built-in manual
  /me           Send an action to the selected conversation
  /mentions     View retained nickname and watch-term mentions
  /msg          Send text to one nickname or channel
  /next         Select the next conversation on this server
  /nick         Set or request the current nickname
  /part         Leave a channel and retain its history
  /pm           Select or open a private query without sending
  /prev         Select the previous conversation on this server
  /ql           List private queries on the selected server
  /quit         Exit the program and close all sessions
  /save         Save the current profile, primary input settings, or all profiles
  /server       Select or manage a server profile
  /servers      List all configured server sessions
  /set          Choose the application-wide message send workflow
  /settings     Show effective settings with credentials redacted
  /topic        Request or change the current channel topic
  /unignore     Remove one local ignore mask
  /unread       List unread conversations across servers
  /users        Print the current or named channel's known users
  /view         Select a named conversation or numbered channel
  /views        List channels (alias of /channels)
  /watch        Manage extra literal mention strings
  /whois        Request nickname information from the server

autoauth - Inspect or prepare SASL authentication
Usage: /autoauth [status|off|sasl USER file PATH|sasl USER gpg PATH]
Changes the selected server's authentication for its next connection. Verified TLS is required.
PATH is the remaining literal text, including spaces; no shell expansion or quoting is performed.
No file is opened by this command. GPG keys must be unlocked outside the program.
Plaintext passwords can be configured explicitly in a private config file, never as command arguments.
Use /save to persist. Disconnect first, then /connect to use applied changes; an active connection is never retargeted.
Examples:
/autoauth status
/autoauth sasl myaccount gpg /home/me/.config/1keyirc/account.gpg
/autoauth off
/save

autoconnect - Inspect or change automatic startup connection
Usage: /autoconnect [on|off]
Without an argument, show the selected server's setting. Changes affect the next program startup.
Use /connect for an immediate connection; use /save to persist the startup choice.
Each saved server has its own toggle, auto-join channels and authentication settings.
Examples:
/autoconnect
/autoconnect on
/save

autojoin - Inspect or prepare startup channel joins
Usage: /autojoin [list|add #CHANNEL|remove #CHANNEL|clear]
Edit the selected server's auto-join list for its next connection. Add/remove accepts one channel, without a key.
Changes are validated before application and do not join or part a live channel.
Use /join or /part for the running connection, and /save to persist startup changes.
Examples:
/autojoin list
/autojoin add #ircnow
/autojoin remove #old
/save

away - Set away status, or clear it without a message
Usage: /away [MESSAGE]
Requires registration. The server confirms the resulting away state. MESSAGE is literal text.
Examples:
/away Back after lunch
/away

back - Clear away status
Usage: /back
Equivalent to /away with no message. Requires a registered connection.
Examples:
/back

background - Keep connections running and release the terminal
Usage: /background
Detaches the running session after restoring the terminal. The shell receives a short numbered command, such as 1keyirc --resume 1.
From the shell, --sessions lists this program's private jobs; --resume resumes its sole available detached job.
Use --resume NUMBER when more than one job exists. Job numbers stay stable until exit and may then be reused.
vipirc -i jobs belong to vipirc: use vipirc --sessions and vipirc --resume NUMBER.
No terminal multiplexer is required. A pending resolver or credential helper can require a retry.
Ctrl-Z is ordinary job suspension; use this command when network activity must continue.
Examples:
/background

cancel - Cancel queued chat messages
Usage: /cancel
Removes messages waiting for pacing. A frame already being written is allowed to finish.
Cancellation does not retract messages that the server has already received.
Examples:
/cancel

channel - Select a channel; number 0 selects the server
Usage: /channel NUMBER|#CHANNEL
Numbers are listed by /channels. Selection changes the viewed conversation and subsequent plain-text target.
It does not join a channel. A retained parted channel must be rejoined before sending.
Examples:
/channels
/channel 0
/channel #ircnow

channels - List channels on the selected server
Usage: /channels
Channel 0 is always the server message/MOTD view. Queries have their own /ql list.
Rows show joined/parted state and unread/mention counts.
Examples:
/channels
/channel 1

clear - Clear retained history for the selected view
Usage: /clear
Clears this view's bounded in-memory history. It does not part, disconnect or retract sent text.
Terminal scrollback already produced by the program is controlled by the terminal.
Examples:
/clear

close - Close a channel or query view
Usage: /close [NAME|NUMBER]
Without an argument, close the current conversation. A channel is parted before its view is removed.
The permanent server and mentions views cannot be closed. Channel numbers come from /channels.
Examples:
/close alice
/close #old

connect - Connect the selected server or an explicit server
Usage: /connect [SERVER_NUMBER]
Uses that profile's validated applied settings, including staged connection edits. Disconnect first if already connected.
Connecting a numbered server does not change the selected conversation. Test mode stays offline.
Examples:
/connect
/connect 1

disconnect - Disconnect a server while retaining its profile
Usage: /disconnect [SERVER_NUMBER]
Without a number, disconnect the selected server. History and configuration remain available.
This does not change its next-startup autoconnect setting.
Examples:
/disconnect
/disconnect 1

help - Read topic help, syntax and practical examples
Usage: /help [TOPIC|COMMAND]
Use /help ls to list help topics, /help commands to learn the command system, or /help autoconnect.
A leading slash on a requested command is optional, except /help /ls specifically explains the IRC list command.
/help all prints the complete manual.
Examples:
/help
/help ls
/help commands
/help autoconnect
/help /ls

ignore - Manage local ignored senders
Usage: /ignore [list|clear|[add|remove] MASK]
Accepts a nickname or nick!user@host mask with * and ? wildcards. Matching user messages/notices are hidden locally.
Ignored text does not create queries or mentions. Protocol state, server notices and membership still work.
Use /save to persist this server's masks.
Examples:
/ignore list
/ignore add noisy!*@*
/ignore remove noisy!*@*

join - Join one channel on the selected server
Usage: /join #CHANNEL [KEY]
Requires registration. A key is one printable ASCII token and is never saved or retained in command history.
The channel name becomes part of this profile's running auto-join list; separately staged /autojoin edits take precedence when saved.
Use /autojoin to edit the next connection's joins without joining now.
Examples:
/join #ircnow
/join #private channel-key

ls - List server, channel, query or unread entries
Usage: /ls [servers|channels|queries|unread]
Without an argument, list channels on the selected server. This is an IRC list command, not a shell command.
Use /server N, /channel N and /pm NICK to select the corresponding entries.
Examples:
/ls
/ls servers
/ls queries
/ls unread

manual - Print the complete built-in manual
Usage: /manual
The same topic and command help is available without connecting. /help TOPIC is the shorter route.
Examples:
/manual

me - Send an action to the selected conversation
Usage: /me TEXT
Requires a joined channel or query and a registered connection. Message-budget and send-mode rules apply.
The frontend reviews a split message before queueing it.
Examples:
/me waves

mentions - View retained nickname and watch-term mentions
Usage: /mentions
Selects this server's mentions view. It contains bounded recent source lines and their original timestamps.
Use /watch for additional literal strings; /channel or /pm returns to a sendable conversation.
Examples:
/mentions
/channel #ircnow

msg - Send text to one nickname or channel
Usage: /msg TARGET TEXT
Requires registration. This command creates a send plan; direct/review mode and split-message consent still apply.
It does not silently change the current send target. Service/credential messages are excluded from command history.
Examples:
/msg alice Hello
/msg #ircnow Good evening

next - Select the next conversation on this server
Usage: /next
Cycles server, mentions, channel and query views; the internal manual buffer is omitted.
Examples:
/next

nick - Set or request the current nickname
Usage: /nick NICK
While connected, requests a server-confirmed change. While disconnected, updates the next connection identity.
Nicknames use the supported IRC ASCII syntax and are limited to 63 bytes.
Examples:
/nick tutankh-aten

part - Leave a channel and retain its history
Usage: /part [#CHANNEL]
Without an argument, part the selected joined channel. Removes it from the running auto-join list.
Queued messages for that channel are cancelled; one in-flight frame may finish. Use /close to remove the view.
Examples:
/part
/part #old

pm - Select or open a private query without sending
Usage: /pm NICK
Use /ql for existing queries. Creating a query does not contact the nickname until a message is sent.
Examples:
/pm alice
/ql

prev - Select the previous conversation on this server
Usage: /prev
The reverse of /next. It does not connect, join or send.
Examples:
/prev

ql - List private queries on the selected server
Usage: /ql
Queries are separate from channel numbering. Use /pm NICK to select one and /close NICK to close it.
Examples:
/ql
/pm alice

quit - Exit the program and close all sessions
Usage: /quit
Restores the terminal and ends this process's connections. Use /background to leave them running instead.
Examples:
/quit

save - Save the current profile, primary input settings, or all profiles
Usage: /save [input|all]
Bare /save writes the selected server's effective settings, including staged connection changes.
/save input saves the complete primary profile (server 0), which owns send_mode.
/save all saves each healthy profile separately. If one fails, earlier successful files remain saved and failures are reported.
Each file replacement is private and atomic; this is not one transaction across all files. Test mode never writes configs.
Examples:
/save
/set send_mode review
/save input
/save all

server - Select or manage a server profile
Usage: /server [NUMBER|add HOST [PORT] [NICK]|connect NUMBER|disconnect NUMBER|close NUMBER]
No argument selects the current server's message/MOTD view. NUMBER selects a server slot without connecting it.
add creates a profile with fresh credentials, verified TLS and autoconnect off; it neither selects, connects nor saves it.
PORT defaults to 6697. A different port does not disable TLS; plaintext must be explicitly configured.
connect/disconnect do not change selection. close removes a secondary session/catalog entry, not its profile file.
Server 0 is permanent. Numbers remain stable for the lifetime of their sessions.
Examples:
/servers
/server add irc.example.org 6697 mynick
/server 1
/autojoin add #chat
/save
/connect

servers - List all configured server sessions
Usage: /servers
Shows stable slot numbers, selected server, connection state and per-server autoconnect choice.
A loaded profile stays available even when it is not connected.
Examples:
/servers
/server 1

set - Choose the application-wide message send workflow
Usage: /set send_mode direct|review
direct is the default: Enter submits the composition, with mandatory consent if it needs multiple IRC messages.
review adds a deliberate review step before ordinary messages are queued.
The choice belongs to primary profile 0 and applies across servers. Use /save input to persist it.
Examples:
/set send_mode review
/save input
/set send_mode direct

settings - Show effective settings with credentials redacted
Usage: /settings
Shows the selected profile's pending connection choices and the primary send mode.
Authentication values are reported by source type; passwords and credential paths are never printed.
Use /autoconnect, /autojoin, /autoauth and /set to change their respective settings.
Examples:
/settings
/help configuration

topic - Request or change the current channel topic
Usage: /topic [TEXT]
Requires a joined channel and registration. Without text, requests the topic; otherwise submits literal TEXT.
The server decides whether your current channel privileges permit a change.
Examples:
/topic
/topic Welcome to our channel

unignore - Remove one local ignore mask
Usage: /unignore MASK
Equivalent to /ignore remove MASK. Save the selected profile to persist the change.
Examples:
/unignore noisy!*@*

unread - List unread conversations across servers
Usage: /unread
Rows include the server number, conversation name, unread messages and mention counts.
Use /server NUMBER followed by /channel or /pm to select a conversation.
Examples:
/unread
/server 1
/pm alice

users - Print the current or named channel's known users
Usage: /users [#CHANNEL]
This is a textual roster, not a visibility toggle. User mode prefixes are included when known.
An incomplete or capacity-limited NAMES reply is labelled. It does not send WHOIS requests.
Examples:
/users
/users #ircnow

view - Select a named conversation or numbered channel
Usage: /view NAME|NUMBER
Channel numbers are listed by /channels; query names by /ql. The server and mentions names are also accepted.
Use /help instead of selecting an internal manual buffer.
Examples:
/view #ircnow
/view alice
/view 0

views - List channels (alias of /channels)
Usage: /views
This alias uses channel numbering; private queries remain in /ql.
Examples:
/views

watch - Manage extra literal mention strings
Usage: /watch [list|add TEXT|remove TEXT]
Nickname mentions always remain enabled. Add/remove treats the remainder as literal text, not a regular expression.
Up to 32 additional strings of 1 to 127 UTF-8 bytes are supported per server. Use /save to persist.
Examples:
/watch list
/watch add release day
/watch remove release day
/mentions

whois - Request nickname information from the server
Usage: /whois NICK
Requires registration. Selects the server view so its response is visible. No local command is executed.
Examples:
/whois alice
