VIPIRC(1)                        User Commands                       VIPIRC(1)

NAME
       vipirc - small terminal IRC client for Unix-like systems

SYNOPSIS
       vipirc [options]
       vipirc --test-mode [options]
       vipirc --init-config [options]
       vipirc --check-config [options]
       vipirc --manual

DESCRIPTION
       vipirc  is  a  C  terminal  client  supporting up to eight isolated IRC
       server sessions in one process and terminal. It  provides  channel  and
       private  conversation  views, a toggleable channel user list, collected
       mentions, unread  indicators,  editable  configuration,  verified  TLS,
       optional  automatic  SASL  authentication, and explicit active IPv4 DCC
       SEND file transfers.  The program uses the terminal's default colors.

       Every interactive launch opens a welcome screen displaying:

              Not vegetarian?  www.bloodguiltcurse.net will change your mind

       An ordinary printable key, Enter, Tab, or navigation key dismisses  it.
       Terminal  signal  characters  retain  their  meaning:  Ctrl-C exits the
       welcome with status 130;  Ctrl-Z  suspends  and  fg  resumes  the  same
       screen.  SIGQUIT  exits  with status 131 after terminal cleanup. Custom
       terminal signal characters are respected; other control  bytes  do  not
       dismiss  the welcome.  During normal connection startup, missing server
       and nickname values are requested in the terminal. The nickname  prompt
       offers  the  Unix login username; Enter accepts that default, and typed
       text selects a different  nickname.   With  no  channel  selected,  the
       server view shows registration messages and the message of the day.

       Defaults  are  loaded  first,  then  the  selected  configuration, then
       command-line overrides. A directly supplied  or  interactively  entered
       server  initiates a connection. A saved server connects on startup when
       autoconnect=true  is  configured.   --no-connect   suppresses   startup
       connection  for every server profile. Connection options on the command
       line override only the primary profile.

OPTIONS
       -s, --server HOST
              Server hostname or numeric  IPv4/IPv6  address,  without  a  URL
              scheme or port.

       -p, --port PORT
              TCP  port, from 1 through 65535. The usual defaults are 6697 for
              TLS and 6667 for explicitly selected plain IRC.

       -c, --channel CHANNEL
              Channel to join after registration and required  authentication.
              Accepts  a  comma-separated  list;  the  option may be repeated.
              Quote channel names in a shell because an unquoted # may start a
              comment.

       -n, --nick NICK
              Requested nickname. Missing values are prompted  with  the  Unix
              login username as the default.

       -C, --config FILE
              Select the primary server configuration and its adjacent catalog
              of  saved  secondary  profiles. An explicitly selected file must
              exist unless it is being created by --init-config.

       --tls  Use   TLS   with    certificate-chain    and    hostname/address
              verification.  TLS is the default transport.

       --plain
              Explicitly select unencrypted IRC. Automatic account and server-
              password authentication are refused on plain connections.

       --ca-file FILE
              Use this PEM certificate authority file in place of the system's
              default trust store. Verification remains mandatory.

       --no-connect
              Open  all  server  sessions without connecting. Use /connect for
              the current server, or Connect in Servers for the selected  row.
              In test mode this leaves every simulator stopped.

       --test-mode
              Load the normal configuration and start interactive, bounded IRC
              simulation  inside  the  client  process. No network socket, DNS
              lookup, or credential read  is  performed.  Missing  server  and
              nickname  values  do  not  prompt.   The  configured server is a
              display label. See OFFLINE TEST MODE.

       --init-config
              Create the selected configuration and exit. Existing  files  are
              not  overwritten.  Other  connection  options can supply initial
              values.

       --check-config
              Validate primary settings,  command-line  values,  the  adjacent
              server  catalog,  and  referenced profiles, then exit. This does
              not test network reachability or  validate  credentials  with  a
              server.

       --manual
              Print the full application manual to standard output and exit.

       -h, --help
              Print a command-line summary and exit.

       -v, --version
              Print the version and exit.

       -V     Compatibility alias for --version.

       Long  options  also accept --name=value.  Short options accept combined
       option  syntax.  The  --  delimiter  ends  option  parsing.  Positional
       arguments are not accepted.

       Selecting a different --server clears inherited authentication settings
       and  auto-join  channels.  Supply the new server's channels explicitly.
       Saved secondary servers have isolated profiles.  A  different  --config
       path   selects  an  independent  primary  configuration  and  workspace
       catalog.

       Help, version, manual, and configuration-check options exit  without  a
       welcome  screen or interactive terminal. --test-mode cannot be combined
       with --init-config or --check-config;  either  combination  exits  with
       usage status 2.

OFFLINE TEST MODE
       vipirc --test-mode
       vipirc --test-mode --config /absolute/config.ini
       vipirc --test-mode --no-connect

       The  simulator  uses  the  selected  configuration,  real interface and
       editor, mention filters, bounded state, and  applicable  protocol/queue
       paths.   Synthetic  IRC  activity  and  membership events are generated
       within the process. No socket is opened, no server  name  is  resolved,
       and no password or CA file is read. Configured server names are display
       labels  only.   The  primary  profile,  saved secondaries, and sessions
       added through Servers > New each run separate simulations.

       Simulation starts after dismissing the welcome  screen  even  if  saved
       autoconnect is false. --no-connect leaves every simulator stopped until
       explicitly connected. /disconnect stops the current simulator; /connect
       starts  only  that  session's  simulation.   Exit  and relaunch without
       --test-mode for a real connection.

       Missing server and nickname values do not prompt. The nickname  uses  a
       valid  Unix  login  name or a test nickname fallback. Selected channels
       are used; if the list is empty, #test-one and #test-two  are  supplied.
       Server  is  still  channel  0. The client starts in Navigation: c opens
       channels and q opens queries. Tab switches typing/control focus on  the
       main  screen; Escape there opens Settings.  /channels and /ql also open
       the lists.

       This mode lets the user inspect settings, fixed-height input, wrapping,
       paste, early length warnings, send confirmation, mentions,  navigation,
       and  simulated membership.  The applicable queue, pacing, and retained-
       history bounds still apply.  No Python runtime or external  IRC  daemon
       is required by the simulator.

       Events  are  scheduled  at two-second intervals. The repeating examples
       include channel text, a nickname mention,  a  custom  watch  string,  a
       private   message,   and  a  participant  joining,  changing  nickname,
       receiving voice, and leaving. All  current  custom  watch  strings  are
       tried  in  rotation,  one  per 16-second activity cycle. /watch changes
       affect the  next  watch  event.   /msg  NICK  TEXT  yields  a  labelled
       simulated  private  reply.  Channel text is locally echoed. JOIN, PART,
       NICK, WHOIS, TOPIC, and AWAY receive simulated responses; this is not a
       complete IRC server emulator and does not enforce keyed-channel access.

       File   transfers   provides   a   memory-only    sample    offer    for
       review/reject/cancel.  Send and Accept are blocked before filesystem or
       socket  access. Closing a secondary test server removes its runtime row
       only; saved catalog and profile files remain unchanged.

       /save is disabled. Changes made in  the  interface  remain  in  memory.
       Edit  the  configuration  file externally and restart to try persistent
       settings.  The  mode  does   not   automatically   create   or   update
       configuration.

       --check-config  is  a separate noninteractive syntax/value check of the
       primary, catalog, and referenced profiles. Simulation adds  interactive
       inspection, but neither operation proves real server reachability, TLS-
       certificate   validity,   SASL   credentials,   or   network  delivery.
       Configuration ownership, syntax, and normal value  checks  still  apply
       when loading a test-mode configuration.

GETTING HELP
       /help,  /manual,  /view  help,  Actions  >  Help,  and  original-keymap
       Navigation h open the same secondary Help /  Manual  screen.  It  works
       while  disconnected  and  has  no  chat  input  field. It remembers the
       previous main view and preserves its draft. A typed command that  opens
       the manual is consumed normally.

       Up/Down  scrolls a line, Page Up/Page Down scrolls a page, and Home/End
       goes to the beginning/end. Vim-style  j/k  and  g/G  provide  the  same
       scrolling.   Escape,  Enter,  q, or the focused Back control returns to
       the previous main view in Navigation, preserving its draft and  toolbar
       focus.  Vim  h/l  also  returns.  Tab  stays  in  the  reader  with the
       instruction to press Escape to return to the chat screen; use Tab there
       to focus Input. Pasted text is ignored  in  the  manual.  Next/previous
       view cycling skips Help.

MODES AND ACTIONS
       The client starts in Navigation with the original keymap. Both original
       and  the  optional  Vim-style preset start in Navigation. The first row
       shows mode, keymap, and connection  state  before  other  details;  the
       second names the current view; the third holds a focused toolbar:

       Servers  Channels  Queries  Mentions  Users  Actions

       Left/Up moves to the previous control and Right/Down to the next. Enter
       activates the highlighted control. Servers opens the workspace's server
       list; Channels and Queries open the current server's choosers; Mentions
       opens  its collected matches; Users toggles the channel roster; Actions
       opens the  menu.  Initial  focus  is  Channels  for  configured/channel
       startup,  otherwise Servers. Every server retains its own main view and
       draft. A narrow toolbar  scrolls  around  focus,  with  clickable  side
       arrows.

       Tab  on  the  main chat screen focuses Input without sending. Printable
       text edits the draft and  Enter  submits  it,  staying  in  Input.  Tab
       preserves  the  draft,  cancels  selection,  and returns to Navigation.
       Main-screen Escape opens Settings  from  either  mode,  preserving  the
       draft  and  cancelling  selection.  In  Navigation, Enter activates the
       focused control; Tab is the focus switch.

       Other original-keymap actions on the main Navigation screen:

       Page Up, Page Down
              Scroll history.

       Home, End
              Go to the oldest/newest retained history.

       ?      Open Actions.

       Esc    Open Settings from the main screen.

       c, q   Open channels or queries.

       m      Open mentions.

       0, s   Open the current server's MOTD view.

       S      Open the Servers list.

       u      Toggle the user list.

       x      Clear the entire current draft.

       a      Select the entire draft and enter Input.

       h      Open Help with original keys.

       n, p   Next/previous view.

       r      Redraw.

       /      Enter Input. Insert / only if  the  draft  is  empty;  otherwise
              retain it.

   Navigation presets
       The  optional Vim-style preset maps h/k to the previous toolbar control
       and l/j to the next. The i key enters Input alongside Tab, and g/G goes
       to the oldest/newest retained history. Other main-view  aliases  remain
       shared  except  h,  which opens Help only with original keys. Actions >
       Help, /help, or /manual  works  in  either  preset.  Input  editing  is
       identical. This preset does not implement Vim editing operators or full
       Vim compatibility.

       /keymap  reports the preset; /keymap original or /keymap vim changes it
       without changing the current mode. Its command draft  clears  normally.
       The  config  setting  is  keymap=original|vim  in  [interface], default
       original.  /save persists it during normal operation; test-mode changes
       stay in memory.

   Actions menu
       Activate the Actions toolbar control, click it, or use ? in Navigation.
       Up/Down selects an item; Enter or a mouse click activates it:

       Type/edit draft
       Channels (server is 0)
       Queries
       Mentions
       Server/MOTD
       Toggle user list
       Clear input
       Select all input
       Toggle mouse
       Use Vim-style navigation / Use original keys
       Use bracket focus / Use reverse focus
       Help
       Connect/Disconnect
       Set away / Return from away
       Ignored senders...
       File transfers...
       Quit

       The keymap and focus-style entries offer the alternative to the  active
       setting. They preserve drafts and return to Navigation. Type/edit draft
       and  Select  all  input  enter  Input. Other non-exit actions remain in
       Navigation; list/editor actions  open  their  named  secondary  screen.
       Connect/Disconnect  applies  to  the  current  server;  Quit  exits the
       workspace.  Back or Escape returns to the chat screen.  With  Vim-style
       keys,  j/k selects items, h goes back, l activates, and g/G selects the
       first/last item. Arrows and Enter remain available.

       Tab stays in secondary  screens,  including  Actions,  Help  /  Manual,
       server  and  conversation  lists,  Settings,  and  File  transfers, and
       reports:

       Input is on the chat screen. Press Esc to return.

       Return with Escape, then use Tab to  type  on  the  main  chat  screen.
       Menus,  the  manual  reader,  and confirmation dialogs ignore bracketed
       paste. On main Navigation, bracketed  paste  enters  Input  as  literal
       draft  text.  Pasted  tabs  become  spaces  and  cannot  change  focus.
       Warning/confirmation prompts ignore Tab until acknowledged.

   Focus appearance
       Focused controls, chooser rows, and menu entries use reverse  video  by
       default.  Actions  >  Use  bracket  focus selects bracket highlighting;
       Actions > Use reverse focus restores reverse video. The config  setting
       is  focus_style=reverse|brackets  in  [interface]. Input-text selection
       highlighting is unchanged.  /save  persists  the  style  during  normal
       operation; test-mode changes remain in memory. Both styles use the same
       keyboard and mouse behavior.

SERVERS AND ACTIVITY
       Activate  Servers  on the toolbar, use Navigation S, or enter /servers.
       Up to eight server sessions share the terminal and event loop. Each has
       independent configuration, credentials, nicknames,  channels,  queries,
       mentions,   rosters,  history,  drafts,  and  cursor/scroll  positions.
       Background servers continue receiving messages  and  handling  protocol
       traffic.

       Up/Down  selects a server; Left/Right selects an action; Enter executes
       it:

       Open  New  Connect  Disconnect  Close  Back

       Open switches to  that  server's  previous  main  view  in  Navigation.
       Connect  and  Disconnect apply to the selected row. New, also available
       as n in the list, opens the creation form. Back or  Escape  returns  to
       chat;  Tab  stays.   Vim j/k selects rows, h/l selects actions, and g/G
       selects endpoints.  Mouse row clicks open servers; action clicks  apply
       to the selected row.

       The  primary server is entry 0 and cannot be closed. Disconnect retains
       views, history, and drafts; accepted direct  file  transfers  continue.
       Secondary  Close  always  asks  for  confirmation,  defaulting  to  no.
       Confirming discards its drafts/history, cancels  its  offers/transfers,
       and  removes  its  saved  startup  catalog  reference while keeping the
       physical profile file.  Closing the current secondary  returns  to  the
       primary main screen. In test mode, Close changes only runtime state.

   New server
       Basic  fields  are  Server,  Port,  Verified  TLS,  Nickname, Auto-join
       channels, and Auto-connect. The footer provides:

       Edit  Add  Connect  Advanced  Cancel

       Advanced reveals Username, Real  name,  Authentication,  Authentication
       user, Password file, Server password file, and CA file before the first
       connection.   The  button becomes Basic when expanded. Enter in a field
       stages its value; Escape cancels the whole form.  Field  paste  follows
       Settings rules.

       Fresh  servers  use  verified  TLS  on port 6697 and a valid Unix login
       identity or fallback. Authentication, credential  paths,  CA  override,
       channels,   watch  strings,  and  ignores  start  empty.  Only  primary
       interface preferences copy; Auto-connect defaults to false.

       Add validates and creates  a  disconnected  session,  even  with  Auto-
       connect  checked. Connect creates and connects immediately. Both switch
       to the new server's main screen; neither saves configuration. Use /save
       or Settings Save explicitly to  preserve  the  selected  server  across
       launches.

   Unread indicators
       Server,  channel,  and  query  rows begin new N !M: unread activity and
       unread mentions. Counts beyond  999  display  as  999+  while  counters
       remain exact.  Showing a main conversation clears that view's counts. A
       list  covering  the  current view does not mark arriving messages read.
       Server  aggregates  count  source  server/channel/query   views   once,
       excluding copied Mentions lines and Manual. Reading Mentions clears its
       own  feed  only;  source  conversations  remain  unread. Outgoing local
       echoes do not add unread activity.

       Every server keeps its own server/MOTD channel 0.  /server,  Navigation
       s/0,  and /channel 0 select the current server's MOTD view. Channel and
       query lists identify their server  and  never  mix  conversations  from
       other servers.

SETTINGS
       Escape  on  the  main chat screen opens Settings for the current server
       from Input or Navigation.   Edits  are  staged  until  Apply  or  Save.
       Up/Down selects a labelled field; Left/Right selects the footer action;
       Enter  activates  it.  Vim-style  j/k  selects  fields  and h/l selects
       actions. Home/End selects the first/last field.

       Edit  Apply  Save  Cancel

       Startup fields are Server, Port, Verified TLS, Nickname, Username, Real
       name, Auto-join  channels,  Auto-connect,  Authentication  (none/sasl),
       Authentication  user, Password file, Server password file, and CA file.
       Interface  fields  are  User  list,  Mouse,  Navigation   keys,   Focus
       indicator,  and  History  lines.  Mentions provides existing Watch term
       fields and Add watch term.  Ignore provides existing Ignore mask fields
       and Add ignore mask.

       Edit toggles a boolean checkbox, opens a two-option selector, or  opens
       a  text/number  editor.  Enter in a field stages its value; it does not
       Apply, Save, or send chat. Emptying an existing watch term removes  it;
       Add  watch term creates another within the normal limits.  Ignore masks
       use the same staging rules; emptying an existing mask removes it.

       Apply  validates  the  staged  configuration  and   applies   interface
       preferences,   mention   terms,  ignore  masks,  and  the  auto-connect
       preference in memory. It stays in Settings, resets the action to  Edit,
       and   updates   the   base  for  further  edits.   It  does  not  write
       configuration.

       Server, transport, identity, auto-join, authentication, and CA  changes
       are pending startup settings. Save and restart to use them. They do not
       change  the  active  connection  or the values used by /connect in this
       process.  Use /nick, /join,  and  /part  for  current-session  changes.
       /save preserves pending startup choices while saving live preferences.

       Save  validates and atomically writes this server's full configuration,
       applies live  preferences,  and  returns  to  main  Navigation.  A  new
       secondary's first Save creates its isolated profile and startup catalog
       entry;  other  servers'  configurations are not overwritten. In --test-
       mode, Save is disabled and Apply previews in memory only. Edit the file
       externally and restart for permanent test-mode configuration changes.

       Cancel or Escape closes the whole  Settings  panel,  including  from  a
       field  editor  or choice popup. Unapplied changes are discarded without
       another question. Applied preferences and pending startup values remain
       in memory; chat drafts stay intact.  Escape  from  a  secondary  screen
       returns  to  main  Navigation; another Escape there opens Settings. Tab
       stays in Settings and shows the return-to-chat instruction.

       Editing Server to  a  case-insensitively  different  value  immediately
       clears  inherited  Authentication,  Authentication user, Password file,
       Server password file, and Auto-join channels in the staged form.  Enter
       the desired values after choosing the new server. The active session is
       untouched.  Credential fields contain paths; password-file contents are
       neither read nor displayed by Settings.

       Bracketed  paste  is  accepted only in an active text/number editor. It
       inserts data without committing  or  closing  the  field.  Tabs  become
       spaces; CR, LF, Escape, and unsupported controls are rejected. Paste on
       the  field  list  or in a choice popup is ignored. Review the field and
       press Enter to  stage  it.   Warning/confirmation  prompts  keep  their
       cancel/acknowledgment behavior before the Settings shortcut.

TERMINAL SIGNALS
       Ctrl-D is ignored, including when the draft is empty. To exit normally,
       use  /quit  in  Input  mode  or  choose Actions > Quit. Custom terminal
       signal assignments still take precedence over ordinary key handling.

       Unix terminal signal keys remain available. The usual Ctrl-C  interrupt
       exits  without  saving drafts; Ctrl-Z suspends the process. The shell's
       fg command resumes it. A suspended client cannot answer its server  and
       may time out.

INPUT
       Ordinary  text  is  sent to the current channel or private conversation
       when Enter is pressed in Input mode. Server and mentions views have  no
       implicit  recipient.  Text beginning with / is a local command; type //
       to send a message beginning with one literal slash.

       The editor retains a flat logical buffer. Display wrapping does not add
       characters. Backspace at the beginning of a  wrapped  row  removes  the
       preceding  character  on  the  previous  row. Resizing retains text and
       cursor position.

       Input height is fixed by the current  view's  ordinary-message  payload
       budget  B and the usable terminal width W (terminal columns minus one).
       It reserves floor(B/W)+1 rows, including the  caret  cell,  subject  to
       available  screen  space.  For  B=465 and W=99, five rows are reserved.
       Small usable screens clamp the area to leave  at  least  three  history
       rows.   Views   without  a  recipient  use  a  one-character  recipient
       allowance.

       Typing, deleting, and composing /msg or /me do not grow or  shrink  the
       input area. A longer draft scrolls inside it to keep the caret visible.
       Height  is  recalculated  on terminal resize, view switch, or an actual
       protocol-budget change.

       Bracketed paste is captured as literal text,  including  leading  slash
       characters  and  newlines.  It never executes a pasted local command or
       sends automatically. Typed Enter  submits;  explicit  newlines  can  be
       composed  through  bracketed  paste.  Pasted tabs become spaces without
       changing focus.  A terminal supporting bracketed paste is recommended.

       These keys apply in Input mode:

       Enter  Send the composition, or review the  confirmation  for  multiple
              messages.

       Left   Move to the previous character group.

       Right  Move to the next character group.

       Up, Down
              Move between wrapped visual input rows.

       Home   Move to the beginning of the complete composition.

       End    Move to the end of the complete composition.

       Backspace
              Delete the previous character group.

       Delete Delete the character group under the caret.

       Tab    Preserve  the  draft, cancel selection, and return to Navigation
              without sending.

       Esc    Preserve the draft, cancel selection, and open Settings.

       Navigation x or Actions > Clear input clears the whole draft, including
       offscreen text. Clicking [Clear] does the  same  without  changing  the
       current  mode.  The  menu  clear action returns to Navigation. Clearing
       never sends text.

       Navigation a or Actions > Select all input selects the entire draft and
       enters Input. Typing or pasting replaces the  selection  on  the  first
       valid  character;  an empty or wholly rejected paste preserves text and
       selection.   Backspace  or  Delete  clears  selected  text.  Left/Right
       cancels  selection  at  its  beginning/end;  Up/Down  cancels selection
       before visual-row movement.  Home/End  move  to  the  complete  draft's
       endpoints and cancel selection.  Tab preserves text, cancels selection,
       and  returns  to  Navigation. Escape preserves text, cancels selection,
       and opens Settings.  Selection does not transfer text to a clipboard.

       A base character and its following zero-width marks  are  edited  as  a
       group.   Complete Unicode grapheme segmentation is not implemented. Use
       a UTF-8 locale and a terminal whose width rules agree with  its  curses
       library.

COMMANDS
       /help, /manual
              Open  the  complete embedded manual as a secondary screen. Back,
              Escape, Enter, or  q  returns  to  the  previous  main  view  in
              Navigation.

       /servers
              Open the workspace server list.

       /server
              Select the current server-message view.

       /channels
              Open the numbered channel chooser, including server entry 0.

       /channel N|#NAME
              Switch  by channel-chooser number or open channel name. Number 0
              selects  the  server.  Positive  numbers  count  channel  views,
              including retained views for channels that have been left.

       /ql    Open the separate query list.

       /pm NICK
              Open  or  switch  to  a  private  conversation without sending a
              message.  This also works while disconnected.

       /mentions
              Select collected nickname and custom-string matches.

       /views Alias for /channels; open  the  channel-only  chooser  including
              server 0.

       /view N|NAME
              Select  by  the  same channel numbering as /channel, or select a
              named view.

       /next, /prev
              Select the next or previous view.

       /users [on|off|up|down]
              Toggle the user list, explicitly show or hide it, or scroll  the
              roster.

       /mouse [on|off]
              Toggle  terminal mouse controls, or explicitly enable or disable
              them.   Use  /save  during  normal  operation  to  preserve  the
              preference; test-mode changes remain in memory.

       /keymap [original|vim]
              Report  the  current navigation preset, or select one. This does
              not change the current mode. Use /save  to  persist  the  choice
              during normal operation; test-mode changes remain in memory.

       /join CHANNEL [KEY]
              Request to join one channel, optionally with one key token. Keys
              must be printable ASCII without spaces, colon, or comma, and the
              complete  JOIN must fit the wire limit. The key is not logged or
              saved; only the channel name enters auto-join. Re-enter the  key
              when  needed  after  reconnecting  or  restarting.   The offline
              simulator accepts keys without testing channel admission policy.

       /part [CHANNEL]
              Leave  the  specified  channel,  or  the  current  channel  when
              omitted.   Retain  its  view and history while cancelling queued
              text for that channel.  An in-flight message may  finish  before
              PART.

       /close [N|NAME]
              Close  the  current  or selected channel/private conversation. A
              number is a channel-chooser number; use a  name  for  a  private
              conversation.  Joined  channels  are  parted  first.  The  view,
              history, roster, and draft are removed  and  its  view  slot  is
              released. Queued chat for that destination is cancelled; one in-
              flight message may finish. Built-in views cannot be closed.

       /msg TARGET TEXT
              Send text to one nickname or channel.

       /me TEXT
              Send an IRC action to the current conversation.

       /nick NICK
              Request a nickname change.

       /away [MESSAGE]
              Set  away  with a message; without text, clear away. The message
              is limited to the current wire limit minus 8 bytes, normally 504
              bytes. Oversized text and controls are  rejected,  never  split.
              Registration  is  required.  The  away indicator changes only on
              server acknowledgments and resets on  disconnect  or  reconnect.
              The offline simulator supplies those acknowledgments.  Actions >
              Set away sends the default message Away, preserving the view and
              draft.  Return  from  away  clears  away status. An unregistered
              session shows Away status (disconnected) and asks you to connect
              first.

       /back  Clear away status. Takes no argument and requires registration.

       /whois NICK
              Request information about a nickname.

       /topic [TEXT]
              Request the current channel topic, or request a new topic.

       /connect
              Connect the current server using its active connection settings.

       /disconnect
              Disconnect the current server  while  retaining  its  views  and
              drafts.  Accepted direct file transfers continue.

       /dcc, /transfers
              Open  the  shared  File  transfers  screen for explicit DCC SEND
              review.

       /cancel
              Discard queued chat messages that have not started transmission.
              A message already in flight may finish;  messages  already  sent
              cannot be recalled.

       /quit  Exit  the  whole  workspace  and  stop  all  server sessions and
              transfers.

       /save  Generate the selected configuration from the  current  settings.
              Custom  comments  and  formatting  in  that  file  are replaced.
              Pending startup choices applied through Settings are  preserved.
              This command is disabled throughout --test-mode.

       /set autoconnect on|off
              Change  future startup connection behavior. Use /save to persist
              it.

       /watch add LITERAL
              Add a custom literal substring to the mention matches.

       /watch remove LITERAL
              Remove a custom match.

       /watch list
              List custom matches.

       /ignore [MASK]
              List local ignore masks in the server view, or add one mask.

       /unignore MASK
              Remove the stored mask. See LOCAL IGNORE  FILTERS  for  patterns
              and aliases.

       /clear Clear the current view's retained lines.

       /join and /part also update the selected auto-join list. /save persists
       it for future launches unless pending Settings startup choices override
       it.

LOCAL IGNORE FILTERS
       /ignore and /ignore list list stored masks. /ignore MASK or /ignore add
       MASK  adds  one;  /unignore  MASK  or  /ignore  remove MASK removes it.
       /ignore clear clears the list. These commands work disconnected. For  a
       nickname  literally  named list, add, remove, or clear, use /ignore add
       NICK.

       Up to 32 masks of 127 ASCII bytes each are accepted. A plain mask  must
       be  an exact valid nickname. Wildcards require full nick!user@host form
       with three nonempty components; for example, *!*@*.example. Within each
       component, * matches zero or more bytes and ? matches one  byte.  Other
       permitted  bytes  are  literal; there are no regex classes, escapes, or
       shell expansion.  Nick follows IRC case rules;  user  and  host  ignore
       ASCII  case.  Whitespace,  controls, and non-ASCII are invalid. Removal
       compares stored patterns under those  case  rules;  wildcards  are  not
       expanded to remove other masks.

       Only   incoming  user-originated  PRIVMSG/NOTICE  is  filtered,  before
       mentions or query creation. A source needs  an  explicit  user  prefix;
       nickname-only  masks can match incomplete user/host details, while full
       masks  require  all  three  parts.  Bare   server   notices   and   all
       membership/control/numeric  state  remain  visible. Existing history is
       unchanged. The filter is local, not a ban.

       Settings edits the same list and Apply  takes  effect  live.  /save  or
       Settings  Save  persists  it  in  normal  mode; test-mode edits stay in
       memory. Configuration repeats mask= entries under [ignore].  Actions  >
       Ignored senders... opens Settings directly at its ignore group.

CHANNEL CHOOSER
       Activate  Channels  on  the  main  toolbar,  use Navigation c, or enter
       /channels.  Entry 0 is  always  server/MOTD.  Other  entries  are  open
       channels,  including  left  channels whose history is retained. Up/Down
       selects a row; Left/Right selects an action:

       Open  Join  Part  Close  Back

       Enter executes the highlighted action for the selected row. Open is the
       initial action. Join prepares /join in Input while  preserving  drafts.
       Part  leaves  a  channel  and keeps its view/history. Close removes the
       view.  Part and Close reset the active action to Open. Back  or  Escape
       returns  to  Navigation  on  the chat screen. Tab stays in the chooser;
       Escape returns to the chat screen, where Tab can focus Input.

       Vim-style j/k selects rows, h/l selects actions, and  g/G  selects  the
       first/last  row. Direct aliases remain: p parts, c closes, and original
       j or Vim o prepares a join. Clicking a row opens it; clicking an action
       applies it to the selected row. A narrow bar shows  the  active  action
       and left/right arrows.

       Closing  a  joined  channel  first requests PART. History and draft are
       removed, and queued text for that  destination  is  cancelled;  an  in-
       flight  message may finish. A close that discards a nonempty draft asks
       first, defaulting to no. Server 0  cannot  be  parted  or  closed;  use
       /disconnect to end its connection.  /channel, /view, and /close use the
       same  channel  numbers. /views aliases /channels. Closing a channel can
       renumber the list; use current numbers.

QUERY LIST
       Activate Queries on the toolbar, use Navigation q, or  enter  /ql.  The
       list  contains  only  private  conversations.  Up/Down  selects  a row;
       Left/Right selects an action:

       Open  New  Close  Back

       Enter executes it. Open is the initial  action.  New  prepares  /pm  in
       Input  while  preserving  drafts.  Close removes the selected query and
       resets the action to Open. A close discarding  a  nonempty  draft  asks
       first,  defaulting  to no. Back or Escape returns to the chat screen in
       Navigation. Tab stays in the list; return with Escape, then use Tab  to
       type.

       Vim-style  j/k  selects  rows, h/l selects actions, and g/G selects the
       first/last row. Direct aliases are c for Close and original n or Vim  o
       for  New. Clicking a row opens it; clicking an action applies it to the
       selected row. Narrow bars show the active action and side arrows.

       /pm NICK opens or selects a query without sending anything.  /msg  NICK
       TEXT  sends  text  directly. Queries are identified by nickname. /close
       NICK closes one.

MENTIONS
       The current nickname is watched automatically, using the  server's  IRC
       case  mapping  and  nickname  boundaries.  Custom  values  are  literal
       substrings, not regular expressions. IRC/ASCII case rules  apply;  non-
       ASCII  characters  match exactly. Nickname changes update the automatic
       match.

       The mentions view retains each matching  received  line,  its  original
       displayed  timestamp,  sender,  and  source  conversation.  Lines  wrap
       visually without truncating the stored message text within the accepted
       protocol bounds. Mention history is retained in memory and  is  bounded
       like  other history; it is not a permanent archive.  Timestamps are the
       local receipt date and time, YYYY-MM-DD HH:MM:SS.

       Incoming private messages automatically create a new  query  view  only
       while  fewer  than  eight  query  views  exist.  Additional unsolicited
       queries remain visible  with  full  context  in  server  and  mentions.
       Explicit  /pm  or  /msg  can create further query views, subject to the
       per-server 32-view limit.

MOUSE CONTROLS
       Mouse handling is enabled by  default  when  curses  and  the  terminal
       support  mouse  events.  /mouse  toggles  it;  /mouse  on|off  sets  it
       explicitly. Actions > Toggle mouse also  changes  the  preference.  The
       config setting is mouse=true|false in [interface]. /save persists it in
       normal use; test-mode changes stay in memory.

       Click  a  toolbar control to focus and activate it. On the main screen,
       click the input to place its caret and enter Input; [Clear] clears  the
       draft  without changing mode. The toolbar remains visible when mouse is
       off.  Clickable side arrows reveal controls when the whole toolbar does
       not fit.

       In channel/query choosers, clicking a row opens it; clicking an  action
       applies  it  to the selected row. The wheel moves row selection. Narrow
       action bars show  the  active  action  and  side  arrows.  In  Actions,
       clicking  an  item  activates  it.  Back  or Escape returns to the chat
       screen. Tab stays in these secondary screens and  displays  the  return
       hint.

       Over  history,  each  wheel  step  scrolls  three visual rows; over the
       roster, it scrolls three users. The main chat display requires at least
       9 rows and 20 columns. The first row keeps mode and keymap visible, the
       second identifies the view, and the third contains the  toolbar.  Below
       80  columns, offline sessions show [OFFLINE] at the start of the second
       row. Input height is clamped to leave three history rows.

       The terminal and any  SSH  multiplexer  must  forward  supported  mouse
       events.   Availability  depends  on  curses,  TERM,  and  the terminal.
       Keyboard controls remain available. Mouse actions do not send  chat  or
       acknowledge  safety  prompts.  The early length popup requires Enter or
       Escape, returning to Input; later send confirmation uses its  displayed
       keys. Mouse controls do not open URLs or transfer clipboard text.

MESSAGE LENGTH
       An  ordinary  IRC  line has a 512-byte limit including its final CR and
       LF.  This is a  byte  limit  on  the  complete  protocol  line,  not  a
       character  count  for  the  message  body.  Command,  target, and relay
       identity consume space.

       For :nick!user@host PRIVMSG target :text<CR><LF>, the text budget is:

       B = L - (len(nick) + len(user) + len(host)
                + len(target) + len("PRIVMSG") + 9)

       L is normally 512, reduced  by  a  recognized  smaller  server  LINELEN
       value.   All  lengths  are  bytes.  Action  envelopes  are additionally
       subtracted.  Until the complete relay identity is  known,  conservative
       allowances  are used. ASCII uses one byte per character. A Unicode code
       point uses one to four UTF-8 bytes, and one displayed glyph may contain
       multiple code points.  The  number  of  visible  characters  that  fits
       therefore varies. The editor's 8192-scalar/16384-byte draft capacity is
       separate from this message budget.

       While  editing, the client warns as soon as the longest logical payload
       line reaches B bytes, or the draft already needs multiple messages:

       Message limit reached (B bytes).
       More text will need multiple chat lines.
       Enter/Esc: keep editing. Nothing sent.

       If several messages are already needed, the middle  line  instead  says
       "This  draft  needs multiple chat lines." Enter or Esc returns to Input
       mode without sending. Other keys cannot dismiss the popup, and a  short
       key-repeat  guard  protects acknowledgment. Editing back to one message
       below the byte limit rearms the warning. /msg, /me, and  //  use  their
       actual  chat payload; other local commands do not trigger it. Bracketed
       paste is checked after completion and retains the pasted  draft  within
       the input limits.

       Submitting  text  needing  multiple  messages  with  Enter  produces  a
       separate confirmation before any split is sent:

              This text needs N IRC messages. Send all? [y/N]

       The default is  no.  Splits  preserve  complete  UTF-8  characters  and
       nonempty  message  text;  explicit newlines separate messages and empty
       lines are  skipped.  Local  slash  commands  must  remain  single-line;
       compose  multiline chat in the selected conversation. Confirmed chat is
       paced at least 1.2 seconds per message. At most 64 chat messages can be
       queued.  Protocol control traffic is handled separately. Network  flood
       policies may be stricter, and the server can reject a message.

FILE TRANSFERS
       /dcc,  /transfers,  or Actions > File transfers... opens the workspace-
       wide transfer  list.  Records  identify  the  originating  IRC  server.
       Up/Down  selects a record; Left/Right selects an action; Enter executes
       it:

       Accept  Reject  Send...  Cancel transfer  Back

       Vim j/k selects rows, h/l selects actions, and g/G  selects  endpoints.
       Mouse  rows  select records; action clicks execute the selected action.
       Review requires at least  12  rows  by  20  columns.  Escape  from  any
       transfer  screen  returns  directly  to  chat  without losing drafts or
       stopping accepted transfers. Tab stays in the panel.

       Only active classic IPv4 DCC SEND is  implemented.  DCC  CHAT,  resume,
       passive/reverse transfers, automatic acceptance, address discovery, and
       port   forwarding  are  not  implemented.  The  maximum  file  size  is
       4,294,967,295 bytes. Files are never opened or executed automatically.

       DCC is an unencrypted direct peer connection, independent of  IRC  TLS,
       without  cryptographic  authentication of the connecting peer. Offering
       includes the advertised IP; accepting reveals the receiving  host's  IP
       to  the  peer. Review the sender, intended file, size, and endpoint for
       each file.

   Receiving
       An offer opens no file or socket. Reject creates neither. Accept in the
       list opens a review  form  with  Directory  and  Save  as  fields,  and
       Edit/Accept/Cancel  actions.  The form's Accept starts receiving. Enter
       in a field stages its value without accepting. Cancel  returns  to  the
       list.   Field  paste  inserts  data  without  committing; paste outside
       fields is ignored.

       The   default   directory   is   $XDG_DATA_HOME/vipirc/downloads   when
       XDG_DATA_HOME             is             absolute,            otherwise
       $HOME/.local/share/vipirc/downloads when HOME is absolute.  Without  an
       absolute  base, enter a destination. Missing ancestors are created mode
       0700 only after Accept. The final directory must be private  and  owned
       by  the  user.  A  new  regular  file  has  mode  0600; existing files,
       symlinks, and parent traversal components are refused.

       A basename must be visible  and  nonhidden,  without  path  separators,
       control  or bidirectional-formatting characters, or quotes. Quoted wire
       names may contain internal spaces. Failed/cancelled partial  files  are
       removed  only  when  they  still  identify  the  file  created for that
       transfer; a replacement file is not removed.

   Sending
       Send... opens Nickname, Source file, Advertised IPv4, and  Listen  port
       fields  with  Edit/Offer/Cancel  actions.  A current query supplies the
       nickname as a default. The form identifies the IRC server used for  the
       offer.  Offer  explicitly  starts  the  listener  and  queues the offer
       through that registered server's paced chat path.

       Source file must be an  existing  regular  file;  symlinks  and  parent
       traversal  are refused. Prefer absolute paths. The advertised IPv4 must
       be reachable by the receiver. Listen port 0 chooses an available  local
       port;  explicit  ports  range from 1 through 65535. NAT may require the
       appropriate public address and a forwarded local port. vipirc does  not
       discover the public address, configure UPnP, or arrange forwarding.

       With  SSH,  paths,  HOME/XDG download directories, advertised/listening
       addresses, and peer connections belong  to  the  host  running  vipirc,
       which  may  be  remote.  They  do not use the terminal emulator's local
       filesystem or IP.

   Lifecycle and limits
       Accepted transfers  continue  while  chatting,  switching  servers,  or
       Disconnecting  IRC.  Cancel  transfer  stops  one;  Close  cancels  the
       originating   server's   offers/transfers;    quitting    stops    all.
       Cancellation, failure, or expiry removes a still-queued outgoing offer,
       but an offer already sent or in flight cannot be recalled.

       Workspace     limits     are     eight     pending     offers,     four
       active/listening/connecting transfers,  and  twelve  retained  records.
       Terminal  records  are recycled oldest-first when full, and IDs are not
       reused during a run. Offers expire after five minutes;  transfers  stop
       after  two  minutes  without  progress.   Data  uses  bounded streaming
       buffers and cumulative  32-bit  acknowledgments.   Test  mode  supports
       memory-only  review/reject/cancel;  Send  and  Accept  fail  before any
       filesystem or socket access.

CONFIGURATION
       The file is an INI-style, literal-text format. Recognized sections  and
       keys:

       [connection]
       server=irc.ircnow.org
       port=6697
       tls=true
       nick=tutankh-aten
       username=
       realname=vipirc user
       channel=#ircnow
       autoconnect=true
       auth=none
       auth_user=
       password_file=
       server_password_file=
       ca_file=

       [interface]
       user_list=true
       mouse=true
       keymap=original
       focus_style=reverse
       history_lines=500

       [mentions]
       word=project name
       word=another literal phrase

       [ignore]
       mask=spammer
       mask=*!*@*.example

       The  channel  value is a comma-separated auto-join list without spaces.
       An empty value opens the server  view.  The  nickname  is  prompted  if
       empty;  the  IRC  username defaults from the Unix account. The realname
       field is a descriptive protocol field and  need  not  contain  a  legal
       name.

       keymap accepts original or vim, default original. Both presets start in
       Navigation;  Input  editing  is  identical. /keymap changes the current
       choice, and /save persists it during normal operation.

       focus_style accepts reverse or brackets,  default  reverse.  It  styles
       selected controls, chooser rows, and menu entries. Input-text selection
       highlighting  is  unchanged.  Actions offers the same preference; /save
       persists it in normal use.

       Boolean  values  are  true/false,  yes/no,   or   1/0   in   lowercase.
       history_lines  is  from  50  to  5000,  with a default of 500. Up to 32
       repeated word entries are accepted,  each  at  most  127  UTF-8  bytes.
       Unknown sections, unknown keys, malformed values, and excessive lengths
       are errors. Repeated scalar keys use the last value; repeated word keys
       add  separate matches. Repeated mask keys in [ignore] add masks, within
       the separate 32-entry/127-byte limits.

       A line beginning with # or ; after leading  whitespace  is  a  comment.
       There  are  no  inline  comments.  Leading  and  trailing whitespace is
       trimmed.  There is no quoting, variable substitution, tilde  expansion,
       or  shell  evaluation.  Prefer  absolute  file paths. Symbolic links in
       config and secret paths and parent traversal components are refused.

       Settings Apply and configuration  saving  reject  leading  or  trailing
       ASCII  spaces  in  text values, including watch phrases and credential-
       file paths, so saving cannot silently change their meaning  on  reload.
       Interior spaces remain valid where the field permits them. Hand-written
       INI  padding  still  uses  the  trimming rule above; there is no escape
       syntax for outer spaces.

       Generated configuration has mode 0600. Its final parent directory  must
       be owned by the current user with mode 0700. Existing config files must
       be  owned by the current user and not writable by other users.  Changes
       edited externally are loaded on the next launch.  In --test-mode, /save
       is disabled and interface changes remain in memory.

       Each file describes one server profile. --config  selects  the  primary
       and  its  adjacent  catalog;  separate  --config  paths  can  still run
       independent workspaces in  separate  terminals.  The  8  MiB  retained-
       history  text  cap  applies per server, in addition to each view's line
       limit.

   Saved server catalog
       For primary path P, P.servers lists up to seven additional profiles  in
       the private P.d directory. Its syntax is [servers] followed by repeated
       profile=ID   entries.   Generated   names   use   server-<24  lowercase
       hexadecimal characters>.ini. Manual IDs may contain 1 through 63  ASCII
       letters, digits, underscores, hyphens, or dots, beginning with a letter
       or  digit  and containing no consecutive dots. Directory components and
       arbitrary paths are refused.

       Servers > New writes nothing. Its first explicit /save or Settings Save
       creates a mode-0600 profile in the mode-0700 directory and registers it
       in the catalog. Later saves update that  profile;  saving  a  secondary
       never  replaces  the  primary.  Catalog  updates  are  locked.  Invalid
       catalog/profile entries remain visible as errors while healthy profiles
       remain usable.

       Close removes the saved catalog reference and keeps the  profile  file.
       --check-config  checks  the  primary,  catalog, and referenced profiles
       without connecting. Connection command-line overrides affect  only  the
       primary;  --no-connect suppresses startup for every profile. Each saved
       secondary otherwise follows its  own  autoconnect  preference.  Offline
       Save is blocked and Close changes runtime only.

AUTHENTICATION
       Set  auth=sasl,  auth_user  to the registered network account name, and
       password_file to a separate secret file. SASL PLAIN is used  only  over
       successfully verified TLS. Failure of required authentication stops the
       connection  before  channel  auto-join.  The  client  does not create a
       network account or assume a nickname-service command format.

       A  separate  optional  server_password_file  supplies  a  server   PASS
       password.   It  is  not  the same as the SASL account password. It also
       requires TLS.

       A secret must be a normal file owned by the current user, with no group
       or other permission bits, normally mode 0600 or 0400. It  contains  one
       password  of  at most 1024 bytes, optionally ending in one line ending.
       Do not put secrets in command-line arguments, chat messages, or  config
       values. Secret paths are literal and never evaluated by a shell.

FILES
       $XDG_CONFIG_HOME/vipirc/config.ini
              Default configuration when XDG_CONFIG_HOME is set to an absolute
              path.

       $HOME/.config/vipirc/config.ini
              Default configuration otherwise; account database information is
              used  when  an  absolute  home directory cannot be obtained from
              HOME.

       FILE selected by --config
              Alternative primary configuration. Its own .servers catalog  and
              .d profile directory form a separate workspace.

       PRIMARY.servers
              Startup  catalog  of  saved  secondary  profile  IDs  beside the
              primary file.

       PRIMARY.d/server-<24 hexadecimal characters>.ini
              Separate private secondary profile, generated by explicit Save.

       $XDG_DATA_HOME/vipirc/downloads
              Default  receive  directory  when  XDG_DATA_HOME  is   absolute;
              created only by explicit transfer acceptance.

       $HOME/.local/share/vipirc/downloads
              Default receive directory otherwise, when HOME is absolute.

       Chat  and  mention  history are not written to disk. Received files are
       written only after  explicit  Accept;  saved  profiles/catalog  require
       explicit Save.

ENVIRONMENT
       HOME   Used  to choose the default configuration directory and fallback
              DCC receive directory on the host running vipirc.

       XDG_CONFIG_HOME
              Overrides the default configuration base when set to an absolute
              path.

       XDG_DATA_HOME
              Chooses the DCC receive-directory base when set to  an  absolute
              path.

       TERM   Terminal  capability  description  used  by  curses; it does not
              select the character encoding.

       LANG, LC_CTYPE, LC_ALL
              Locale selection. A  UTF-8  locale  is  needed  for  predictable
              Unicode widths.

       ASCII  is  already  a one-byte subset of UTF-8. SSH does not change the
       encoded message length. On each remote  host,  run  locale  and  locale
       charmap  to  inspect  the  session,  and  locale  -a  to list installed
       locales. Use an installed UTF-8 locale whose effective LC_CTYPE matches
       the terminal. Locale names vary across Unix-like systems.   The  client
       does not guess terminal encoding or transcode legacy encodings.

       The  active  LC_CTYPE  is  respected.  A  UTF-8  locale enables Unicode
       editing.  A non-UTF-8 or invalid locale selects explicit ASCII terminal
       mode, shown on the welcome screen and by  a  persistent  marker.  ASCII
       input works; non-ASCII input is refused with a status message. Incoming
       non-ASCII  code  points  display as '?' without changing stored network
       text. The client does not force a locale or change  terminal  settings.
       Select an installed UTF-8 locale and restart for Unicode use.

EXIT STATUS
       0      Normal completion or interactive exit.

       1      An operational error, such as failing to create configuration or
              initialize the interface.

       2      Invalid   command-line   usage,  invalid  configuration,  or  no
              terminal for interactive operation.

       130    SIGINT interrupted the welcome screen after terminal cleanup.

       131    SIGQUIT interrupted the welcome screen after terminal cleanup.

SECURITY
       TLS  verifies  certificate  chains  and  hostname  or   numeric-address
       identity.  There is no verification-bypass option or silent fallback to
       plain  IRC.  TLS protects the connection to the server; IRC is not end-
       to-end encrypted.

       Received text is untrusted and is sanitized  before  terminal  display.
       Input,  protocol,  queue,  history,  view,  and  user-list  growth  are
       bounded.  The program does not execute remote text, invoke shells, open
       links, load scripts, or automatically answer CTCP  requests.  DCC  SEND
       requires   explicit   per-file   approval;  its  direct  connection  is
       unencrypted and is not protected by  IRC  TLS.  These  controls  reduce
       attack surface and do not establish invulnerability.

       There  are  at  most  eight  server  sessions. Per-server limits are 32
       views, 32 custom mention strings,  32  ignore  masks,  64  queued  chat
       messages, and 8 MiB of retained history text. Each channel stores up to
       4096  users.   Each  draft holds at most 8192 Unicode scalars and 16384
       UTF-8 bytes.  Workspace DCC  limits  are  eight  pending  offers,  four
       active transfers, and twelve retained records. History may total 64 MiB
       at  eight  servers;  this  is  a retained-text cap, not a total-process
       memory cap. Server state is allocated as needed.

EXAMPLES
       vipirc -h
       vipirc -v
       vipirc --test-mode
       vipirc --test-mode --config /absolute/config.ini
       vipirc --server irc.ircnow.org --channel '#ircnow' --nick tutankh-aten
       vipirc -s irc.ircnow.org
       vipirc --init-config -s irc.ircnow.org -c '#ircnow'
       vipirc --check-config
       vipirc --no-connect
       vipirc --plain --server localhost --port 6667
       vipirc --manual | less

PORTABILITY
       The design targets Unix-like systems including Linux  on  ChromeOS  and
       BSD.   Build requirements are a C11 compiler, POSIX interfaces, GNU/BSD
       getopt_long,  wide-character   curses,   and   OpenSSL-compatible   TLS
       development  libraries.  Python 3 is used for integration tests, not by
       the installed chat executable.  Consult the release  validation  report
       for platforms actually tested.

SEE ALSO
       stty(1), locale(1), chmod(1)

       The  embedded  manual  is  available  through /help, /manual, or vipirc
       --manual.  INSTALL and SECURITY.md give build and threat-model details.

       DCC specifications: https://www.irchelp.org/protocol/ctcpspec.html
       https://www.irchelp.org/protocol/dccspec.html
       RFC 2812: https://www.rfc-editor.org/rfc/rfc2812
       Modern IRC: https://modern.ircdocs.horse/
       IRCv3 SASL: https://ircv3.net/specs/extensions/sasl-3.1

CREDITS
       An application of ThatIAm.vip (www.thatiam.vip).
       Designed by remfan1994.
       Website: https://www.thatiam.vip

LICENSE
       Source is  available  under  the  included  IALA  (Insha-Allah  License
       Agreement).   See  LICENSE.md  for  its  full  supplied  text.   Linked
       dependencies retain their own licenses; see NOTICE.

vipirc 0.3.1                      2026-10-26                         VIPIRC(1)
