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.
Use /quickstart for guided connection setup or /panel for interactive configuration.
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 opens the complete manual. Escape returns from the reader to the log.

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

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.

configuration
-------------
Default primary file: $XDG_CONFIG_HOME/1keyirc/config.ini; XDG_CONFIG_HOME must be absolute.
When XDG_CONFIG_HOME is unset or empty: $HOME/.config/1keyirc/config.ini. --config FILE selects another file.
[history] lines= sets the retained-chat limit. Configuration does not contain [interface] options.
[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.
[output] format=compact|full is also owned by primary profile 0; compact is the default.
[mentions] word= and [ignore] mask= may repeat.
Saved extra servers use the adjacent .servers catalog and .d directory.
/quickstart opens guided connection setup; /panel opens broader interactive configuration.
Opening a panel or editing its fields does not write files or start a connection; review and choose the final action explicitly.
Runtime changes are not saved implicitly. /save writes this server; /save input or /save output 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.

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.
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.
Help and multi-line command responses use a separate reader backed by a 512 KiB bounded buffer. They do not become chat history.
Accepted commands can be recalled in the command editor. Authentication changes, keyed joins and sensitive service messages are omitted.
The default primary history limit is 100 records.

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.
Help/response Up/Down scrolls; Page Up/Down changes page; Home/End reaches the beginning/end.
In the reader, / opens Command with normal completion/history. Escape cancels that prompt back to the reader.
Executing a command replaces the previous response. Short acknowledgments return to the log; short errors keep the command editable.
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.

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.

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.

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.

startup
-------
Start with --server HOST, optionally --channel '#CHANNEL' and --nick NICK. Quote #CHANNEL for the shell.
Without a configured server, start disconnected and use /quickstart for guided setup.
For command-based setup, 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.
1keyirc --manual prints this complete 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
  /cl           List channels (alias of /channels)
  /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       Read 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
  /panel        Open the interactive configuration panel
  /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
  /queries      List private queries (alias of /ql)
  /quickstart   Open guided connection setup
  /quit         Exit the program and close all sessions
  /save         Save the current profile, primary preferences, or all profiles
  /server       Select or manage a server profile
  /servers      List all configured server sessions
  /set          Choose application-wide sending and output preferences
  /settings     Show effective settings with credentials redacted
  /sl           List servers (alias of /servers)
  /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/irc-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 this application's numbered resume command.
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.
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.
From the shell: 1keyirc --sessions; 1keyirc --resume NUMBER.

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

/cl - List channels (alias of /channels)
----------------------------------------
Usage: /cl

Lists this server's channel views, including channel 0 for server messages and each channel's joined/parted state.
Use /channel NUMBER or /channel #NAME to select one. Queries have their own /ql list.

Examples:
/cl
/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 local client list command.
/help all opens the complete manual in the separate help reader.

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 a local client list command, not a shell command or a network-wide IRC LIST request.
Use /server N, /channel N and /pm NICK to select the corresponding entries.

Examples:
/ls
/ls servers
/ls queries
/ls unread

/manual - Read 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

/panel - Open the interactive configuration panel
-------------------------------------------------
Usage: /panel

Choose a server profile, then edit its connection, startup, authentication, history, mention and ignore settings.
The default is the current profile; choosing another profile does not switch your chat conversation.
Primary profile 0 also offers application-wide send mode and output format. Other profiles retain those global choices.
Enter keeps a shown value; '-' clears an optional field. Up returns to the preceding question; Escape discards unapplied edits.
Watch terms and ignore masks are entered one at a time; an empty new entry finishes that list.
Plaintext credential input is hidden. Setup answers never enter command history. Credential files are not read while editing.
At the final review choose 1 Save and connect, 2 Save only (default), 3 Connect once, or 4 Apply only.
Nothing is applied, saved or connected merely by opening the panel or answering its earlier questions.
Connect once applies without saving; Apply only neither saves nor connects. A live connection is never implicitly retargeted or reconnected.
A failed connection does not undo changes already applied or saved by the final action.
Use /quickstart for the shorter server, transport, port and nickname setup.

Examples:
/panel

/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

/queries - List private queries (alias of /ql)
----------------------------------------------
Usage: /queries

Uses the same private query list as /ql. Channel numbering remains separate.

Examples:
/queries
/pm alice

/quickstart - Open guided connection setup
------------------------------------------
Usage: /quickstart

Edit the current profile's server, TLS transport, port and nickname in that order, then review the settings.
Verified TLS is the default. A plaintext connection must be selected explicitly.
Enter keeps a shown value. Up returns to the preceding question; Escape discards unapplied edits. Answers never enter command history.
At the final review choose 1 Save and connect, 2 Save only, 3 Connect once (default), or 4 Apply only.
Opening setup and answering earlier questions does not apply settings, save a file or connect.
Connect once applies without saving; Apply only neither saves nor connects. A live connection is never implicitly retargeted or reconnected.
A failed connection does not undo changes already applied or saved by the final action.
Use /panel for broader configuration choices.

Examples:
/quickstart

/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 preferences, or all profiles
----------------------------------------------------------------------
Usage: /save [input|output|all]

Bare /save writes the selected server's effective settings, including staged connection changes.
/save input and /save output save the complete primary profile (server 0), which owns send_mode and output_format.
/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 application-wide sending and output preferences
-------------------------------------------------------------
Usage: /set send_mode direct|review | /set output_format compact|full

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.
output_format compact is the default: selected chat shows [HH:MM:SS] <nick> text.
output_format full includes the server, date and target on each chat line. Mentions and other-server diagnostics retain necessary origin context in compact mode.
These choices belong to primary profile 0 and apply across servers. Use /save input or /save output to persist them.

Examples:
/set send_mode review
/save input
/set output_format full
/save output
/set output_format compact

/settings - Show effective settings with credentials redacted
-------------------------------------------------------------
Usage: /settings

Shows the selected profile's pending connection choices and the primary send mode/output format.
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

/sl - List servers (alias of /servers)
--------------------------------------
Usage: /sl

Uses the same configured-server list and stable slot numbers as /servers.
Use /server NUMBER to select one.

Examples:
/sl
/server 1

/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
