Advanced Guide
Technical notes for experienced mIRC users, room owners and add-on developers who want to understand IRCWX-specific behavior.
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.
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.
| Lane | Default behavior | Typical traffic |
|---|---|---|
| Text/Paste | 4-line chunks, 1800 ms recovery, rapid-paste settling | Automated room text, room-scoped notices and queued message traffic. |
| Management | 250 ms | MODE, PROP, ACCESS and related bulk management. |
| JOIN/Navigation | 2500 ms | Auto Join, multi-room JOIN and automated PART navigation. |
| CREATE | 2500 ms | Room-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
| Area | Owner | Guideline |
|---|---|---|
scripts\, core resources, aliases.ini, dcxalias.ini | ircWx-Conn updater | Do not store permanent third-party customizations here. |
addons\ | User / third-party add-ons | Preferred location for persistent add-ons. |
| Native mIRC preferences and personal lists | User / mIRC | Factory Reset is deliberately not a generic mIRC reset. |