iWxircWx-ConnHelp Guide
⌕
Under the Hood

Advanced Guide

Technical notes for experienced mIRC users, room owners and add-on developers who want to understand IRCWX-specific behavior.

Beginner friendlyAdvanced notes included

Architecture in plain English

ircWx-Conn keeps mIRC as the scripting/runtime environment and adds IRCWX-specific protocol handling, DCX user interfaces and a local connection path. Standard mIRC Remote scripts and events remain useful; specialized wrappers are added only where IRCWX semantics differ from ordinary IRC.

mIRC

Windowing, Remote scripts, commands, events and normal user customization.

ircWx-Conn

Connection/protocol logic, IRCWX status/modes, pacing, dialogs and public API helpers.

DCX/Webchat

Modern controls, people lists, custom dialogs and the embedded Webchat-style view.

Local connection proxy

The client uses a local loopback connection layer while maintaining the IRCWX-facing server session. This allows ircWx-Conn to translate or own protocol-specific behavior while mIRC still sees the connection in a familiar way.

Do not “fix” this by killing every socket. Add-ons should use their own socket names and should not issue broad socket-closing commands that can destroy the core connection.

IRCWX room encoding

Raw IRCWX room names use a form such as %#My\bRoom. The public helpers are:

$ircwx.room.raw(My Room)
$ircwx.room.display(%#My\bRoom)

Event-driven code should normally use $chan or $active because those already provide the current raw room token.

IRCWX status model

ircWx-Conn tracks more status information than a single visible mIRC nick prefix can represent. The public rank helper returns one primary rank: superowner, owner, host, helpop, voice or participant. Voice can coexist with a higher rank, so use $ircwx.status.has(...,voice) when the independent voice bit matters.

Outbound pacing model

ircWx-Conn does not put every ordinary mIRC command through one global queue. It uses separate pacing classes for traffic that is known to be flood-sensitive.

LaneDefault behaviorTypical traffic
Text/Paste4-line chunks, 1800 ms recovery, rapid-paste settlingAutomated room text, room-scoped notices and queued message traffic.
Management250 msMODE, PROP, ACCESS and related bulk management.
JOIN/Navigation2500 msAuto Join, multi-room JOIN and automated PART navigation.
CREATE2500 msRoom-creation handshake/follow-up work.

Queues are bounded and session-scoped so stale work from a dead connection is not supposed to spill into a new session.

IRCWX-specific semantics

NOTICE

IRCWX room-scoped user notice is not ordinary IRC NOTICE. The public API uses:

ircwx.notice <room> <nick> <text>

and emits the IRCWX form NOTICE <room> <nick> :<text>.

WHISPER

IRCWX private messaging is room-aware and uses its own whisper/CMWHISP lifecycle. Use ircwx.whisper or the user interface, not ordinary /msg, when you need IRCWX whisper semantics.

Public API vs internals

Stable add-on code should use the documented public helpers rather than internal queue, hash or socket names. Internal names such as low-level send aliases and queue hashes are implementation details and can change while API version 1 stays compatible.

$ircwx.api.version
$ircwx.plain(text)
$ircwx.room.raw(room)
$ircwx.room.display(room)
$ircwx.rank(room,nick)
$ircwx.status.has(room,nick,status)
$ircwx.canmanage(room,nick)

Developer Mode and raw diagnostics

Developer Mode is useful when you are comparing server traffic, troubleshooting numerics or developing protocol behavior. Keep normal users on the default non-developer presentation so diagnostic output does not overwhelm the chat experience.

File ownership boundaries

AreaOwnerGuideline
scripts\, core resources, aliases.ini, dcxalias.iniircWx-Conn updaterDo not store permanent third-party customizations here.
addons\User / third-party add-onsPreferred location for persistent add-ons.
Native mIRC preferences and personal listsUser / mIRCFactory Reset is deliberately not a generic mIRC reset.