From 5b658874146d18c44e536e4c22d6ececdb576ca8 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Thu, 9 Jan 2020 18:14:57 +0100 Subject: [PATCH] Improve documentation on signalproxy objects --- .../serialization/signalproxy_objects.md | 727 +++++++++++++++++- mkdocs.yml | 2 +- 2 files changed, 696 insertions(+), 33 deletions(-) diff --git a/docs/protocol/serialization/signalproxy_objects.md b/docs/protocol/serialization/signalproxy_objects.md index f488e38..8e09ec9 100644 --- a/docs/protocol/serialization/signalproxy_objects.md +++ b/docs/protocol/serialization/signalproxy_objects.md @@ -11,6 +11,9 @@ are translated into the maps used in `InitData` responses and arguments to All types in this document are written in typescript typings notation. +In Network representation, all map/hash notations refer to QVariantMaps, all +list/array notations to QVariantList. + ## AoS to SoA For most network objects, the runtime representation contains a @@ -70,7 +73,7 @@ interface AliasManager { * Replaces all properties of the object with the content of the * "properties" parameter. This parameter is in network representation. */ - update(properties: QVariantMap) + requestUpdate(properties: QVariantMap) // S->C calls @@ -97,7 +100,7 @@ Applied translations: ```typescript interface AliasManager { - Aliases: QVariantMap{ + Aliases: { names: QStringList, expansions: QStringList } @@ -223,10 +226,10 @@ Applied translations: ```typescript interface BufferSyncer { - Activities: QVariantList[BufferId | Int], - HiglightCounts: QVariantList[BufferId | Int], - LastSeenMsg: QVariantList[BufferId | MsgId], - MarkerLines: QVariantList[BufferId | MsgId] + Activities: [BufferId | Int], + HiglightCounts: [BufferId | Int], + LastSeenMsg: [BufferId | MsgId], + MarkerLines: [BufferId | MsgId] } ``` @@ -240,16 +243,33 @@ interface BufferViewConfig { removedBuffers: [BufferId], temporarilyRemovedBuffers: [BufferId], + /** ID of the associated BufferView */ bufferViewId: Int, + /** Display name of the associated BufferView */ bufferViewName: QString, + /** If showing only buffers from one network, the NetworkId of it */ networkId: NetworkId, + /** Automatically add new buffers when created */ addNewBuffersAutomatically: Bool, + /** Sort buffers alphabetically */ sortAlphabetically: Bool, + /** Hide buffers which are disconnected/parted */ hideInactiveBuffers: Bool, + /** Hide networks which are disconnected/quit */ hideInactiveNetworks: Bool, + /** Disable buffer decoration (not fully implemented) */ disableDecoration: Bool, + /** + * Filter buffers by type + * Int value of the BufferInfo.Type enum + */ allowedBuffersTypes: Int, + /** + * Filter buffers by minimum activity + * Bitset of the BufferInfo.Activity enum values which should be shown + */ minimumActivity: Int, + /** Persistently show the buffer search UI */ showSearch: Bool @@ -264,7 +284,7 @@ interface BufferViewConfig { * Replaces all properties of the object with the content of the * "properties" parameter. This parameter is in network representation. */ - update(properties: QVariantMap) + requestUpdate(properties: QVariantMap) // S->C calls @@ -294,9 +314,9 @@ interface BufferViewConfig { ```typescript interface BufferViewConfig { - BufferList: QVariantList[BufferId], - RemovedBuffers: QVariantList[BufferId], - TemporarilyRemovedBuffers: QVariantList[BufferId], + BufferList: [BufferId], + RemovedBuffers: [BufferId], + TemporarilyRemovedBuffers: [BufferId], bufferViewName: QString, networkId: NetworkId, @@ -326,11 +346,6 @@ interface BufferViewManager { requestCreateBufferViews(properties: QVariantList) requestDeleteBufferView(bufferViewId: Int) requestDeleteBufferViews(bufferViews: QVariantList) - /** - * Replaces all properties of the object with the content of the - * "properties" parameter. This parameter is in network representation. - */ - update(properties: QVariantMap) // S->C calls @@ -350,7 +365,7 @@ interface BufferViewManager { ```typescript interface BufferViewManager { - BufferViewIds: QVariantList[Int] + BufferViewIds: [Int] } ``` @@ -370,7 +385,7 @@ interface CertManager { * Replaces all properties of the object with the content of the * "properties" parameter. This parameter is in network representation. */ - update(properties: QVariantMap) + requestUpdate(properties: QVariantMap) // S->C calls @@ -441,8 +456,8 @@ interface CoreInfo { quasselBuildDate: QString, startTime: QDateTime, sessionConnectedClients: Int, - sessionConnectedClientData: QVariantList[ - QVariantMap{ + sessionConnectedClientData: [ + { id: Int, remoteAddress: String, location: String, @@ -460,6 +475,9 @@ interface CoreInfo { ## DccConfig +!!! danger + This part is still unfinished. + **Runtime** ```typescript @@ -482,15 +500,95 @@ interface DccConfig { ```typescript interface HighlightRuleManager { - + highlightRuleList: [HighlightRule], + highlightNick: HighlightNickType, + nicksCaseSensitive: Bool + + + // C->S calls + + /** + * Request removal of an ignore rule based on the rule itself. + * Use this method if you want to remove a single ignore rule + * and get that synced with the core immediately. + */ + requestRemoveHighlightRule(highlightRule: Int) + /** + * Request toggling of "isEnabled" flag of a given ignore rule. + * Use this method if you want to toggle the "isEnabled" flag of a single ignore rule + * and get that synced with the core immediately. + */ + requestToggleHighlightRule(highlightRule: Int) + /** + * Request an HighlightRule to be added to the ignore list + * Items added to the list with this method, get immediately synced with the core + */ + requestAddHighlightRule(id: Int, name: QString | null, isRegEx: Boolean, + isCaseSensitive: Boolean, isEnabled: Boolean, isInverse: Boolean, + sender: QString | null, chanName: QString | null) + requestSetHighlightNick(highlightNick: Int) + requestSetNicksCaseSensitive(nicksCaseSensitive: Boolean) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + requestUpdate(properties: QVariantMap) + + + // S->C calls + + removeHighlightRule(highlightRule: Int) + toggleHighlightRule(highlightRule: Int) + addHighlightRule(id: Int, name: QString | null, isRegEx: Boolean, + isCaseSensitive: Boolean, isEnabled: Boolean, isInverse: Boolean, + sender: QString | null, chanName: QString | null) + setHighlightNick(highlightNick: Int) + setNicksCaseSensitive(nicksCaseSensitive: Boolean) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + update(properties: QVariantMap) +} + +interface HighlightRule { + id: Int, + name: QString, + isRegEx: Bool, + isCaseSensitive: Bool, + isEnabled: Bool, + isInverse: Bool, + sender: QString, + channel: QString +} + +enum HighlightNickType { + NoNick = 0x00, + CurrentNick = 0x01, + AllNicks = 0x02 } ``` **Network** +Applied translations: + +- [AoS to SoA](#aos-to-soa) + ```typescript interface HighlightRuleManager { - + HighlightRuleList: { + id: [Int], + name: QStringList, + isRegEx: [Bool], + isCaseSensitive: [Bool], + isEnabled: [Bool], + isInverse: [Bool], + sender: QStringList, + channel: QStringList + }, + highlightNick: Int, + nicksCaseSensitive: Bool } ``` @@ -500,7 +598,63 @@ interface HighlightRuleManager { ```typescript interface Identity { - + identityId: IdentityId, + identityName: QString, + realName: QString, + nicks: QStringList, + awayNick: QString, + awayNickEnabled: Bool, + awayReason: QString, + awayReasonEnabled: Bool, + autoAwayEnabled: Bool, + autoAwayTime: Int, + autoAwayReason: QString, + autoAwayReasonEnabled: Bool, + detachAwayEnabled: Bool, + detachAwayReason: QString, + detachAwayReasonEnabled: Bool, + ident: QString, + kickReason: QString, + partReason: QString, + quitReason: QString + + + // C->S calls + + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + requestUpdate(properties: QVariantMap) + + + // S->C calls + + copyFrom(other: Identity) + setAutoAwayEnabled(enabled: Bool) + setAutoAwayReason(reason: QString | null) + setAutoAwayReasonEnabled(enabled: Bool) + setAutoAwayTime(time: Int) + setAwayNick(awayNick: QString | null) + setAwayNickEnabled(enabled: Bool) + setAwayReason(awayReason: QString | null) + setAwayReasonEnabled(enabled: Bool) + setDetachAwayEnabled(enabled: Bool) + setDetachAwayReason(reason: QString | null) + setDetachAwayReasonEnabled(enabled: Bool) + setId(id: IdentityId) + setIdent(ident: QString | null) + setIdentityName(name: QString | null) + setKickReason(reason: QString | null) + setNicks(nicks: QStringList) + setPartReason(reason: QString | null) + setQuitReason(reason: QString | null) + setRealName(realName: QString | null) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + update(properties: QVariantMap) } ``` @@ -508,7 +662,25 @@ interface Identity { ```typescript interface Identity { - + identityId: IdentityId, + identityName: QString, + realName: QString, + nicks: QStringList, + awayNick: QString, + awayNickEnabled: Bool, + awayReason: QString, + awayReasonEnabled: Bool, + autoAwayEnabled: Bool, + autoAwayTime: Int, + autoAwayReason: QString, + autoAwayReasonEnabled: Bool, + detachAwayEnabled: Bool, + detachAwayReason: QString, + detachAwayReasonEnabled: Bool, + ident: QString, + kickReason: QString, + partReason: QString, + quitReason: QString } ``` @@ -518,15 +690,87 @@ interface Identity { ```typescript interface IgnoreListManager { + ignoreList: [IgnoreListItem] + + // C->S calls + + requestAddIgnoreListItem(type: Int, ignoreRule: QString | null, + isRegEx: Bool, strictness: Int, scope: Int, scopeRule: QString | null, + isActive: Bool) + requestRemoveIgnoreListItem(ignoreRule: QString | null) + requestToggleIgnoreRule(ignoreRule: QString | null) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + requestUpdate(properties: QVariantMap) + + + // S->C calls + + addIgnoreListItem(type: Int, ignoreRule: QString | null, isRegEx: Bool, + strictness: Int, scope: Int, scopeRule: QString | null, isActive: Bool) + removeIgnoreListItem(ignoreRule: QString | null) + toggleIgnoreRule(ignoreRule: QString | null) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + update(properties: QVariantMap) +} + +interface IgnoreListItem { + type: IgnoreType, + ignoreRule: String, + isRegEx: Boolean, + strictness: StrictnessType, + scope: ScopeType, + scopeRule: String, + isActive: Boolean +} + +enum IgnoreType { + SenderIgnore = 0x00, + MessageIgnore = 0x01, + CtcpIgnore = 0x02 +} + +enum StrictnessType { + UnmatchedStrictness = 0x00, + /** + * Dynamic ignore, ignore rule has to be applied by the client to the + * messages it receives + */ + SoftStrictness = 0x01, + /** Permanent ignore, messages don't even get saved to the database */ + HardStrictness = 0x02 +} + +enum ScopeType { + GlobalScope = 0x00, + NetworkScope = 0x01, + ChannelScope = 0x02 } ``` **Network** +Applied translations: + +- [AoS to SoA](#aos-to-soa) + ```typescript interface IgnoreListManager { - + IgnoreList: { + ignoreType: [Int], + ignoreRule: QStringList, + isRegEx: [Bool], + strictness: [Int], + scope: [Int], + scopeRule: QStringList, + isActive: [Bool] + } } ``` @@ -536,7 +780,33 @@ interface IgnoreListManager { ```typescript interface IrcChannel { - + channelModesA: Map<QChar, QStringList>, + channelModesB: Map<QChar, QString>, + channelModesC: Map<QChar, QString>, + channelModesD: [QChar], + name: QString, + topic: QString, + password: QString, + encrypted: Bool + + + // S->C calls + + addChannelMode(mode: QChar, value: QString | null) + addUserMode(nick: QString | null, mode: QString | null) + joinIrcUsers(nicks: QStringList, modes: QStringList) + part(nick: QString | null) + removeChannelMode(mode: QChar, value: QString | null) + removeUserMode(nick: QString | null, mode: QString | null) + setEncrypted(encrypted: Bool) + setPassword(password: QString | null) + setTopic(topic: QString | null) + setUserModes(nick: QString | null, modes: QString | null) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + update(properties: QVariantMap) } ``` @@ -544,12 +814,25 @@ interface IrcChannel { ```typescript interface IrcChannel { - + ChanModes: { + A: Map<QString, QStringList>, + B: Map<QString, QString>, + C: Map<QString, QString>, + D: QString + }, + UserModes: Map<QString, QString>, + name: QString, + topic: QString, + password: QString, + encrypted: Bool } ``` ## IrcListHelper +!!! danger + This part is still unfinished. + **Runtime** ```typescript @@ -572,7 +855,56 @@ interface IrcListHelper { ```typescript interface IrcUser { - + user: QString, + host: QString, + nick: QString, + realName: QString, + account: QString, + away: Bool, + awayMessage: QString, + idleTime: QDateTime, + loginTime: QDateTime, + server: QString, + ircOperator: QString, + lastAwayMessage: Int, + lastAwayMessageTime: QDateTime, + whoisServiceReply: QString, + suserHost: QString, + encrypted: Bool, + channels: QStringList, + userModes: QString + + + // S->C calls + + addUserModes(modes: QString | null) + joinChannel(channelname: QString | null) + partChannel(channelname: QString | null) + quit() + removeUserModes(modes: QString | null) + setAccount(account: QString | null) + setAway(away: Boolean) + setAwayMessage(awayMessage: QString | null) + setEncrypted(encrypted: Boolean) + setHost(host: QString | null) + setIdleTime(idleTime: QDateTime) + setIrcOperator(ircOperator: QString | null) + setLastAwayMessage(lastAwayMessage: Int) + setLastAwayMessageTime(lastAwayMessageTime: QDateTime) + setLoginTime(loginTime: Temporal) + setNick(nick: QString | null) + setRealName(realName: QString | null) + setServer(server: QString | null) + setSuserHost(suserHost: QString | null) + setUser(user: QString | null) + setUserModes(modes: QString | null) + setWhoisServiceReply(whoisServiceReply: QString | null) + updateHostmask(mask: QString | null) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + update(properties: QVariantMap) } ``` @@ -580,7 +912,24 @@ interface IrcUser { ```typescript interface IrcUser { - + user: QString, + host: QString, + nick: QString, + realName: QString, + account: QString, + away: Bool, + awayMessage: QString, + idleTime: QDateTime, + loginTime: QDateTime, + server: QString, + ircOperator: QString, + lastAwayMessage: Int, + lastAwayMessageTime: QDateTime, + whoisServiceReply: QString, + suserHost: QString, + encrypted: Bool, + channels: QStringList, + userModes: QString } ``` @@ -590,7 +939,108 @@ interface IrcUser { ```typescript interface Network { - + myNick: QString, + latency: Int, + currentServer: QString, + isConnected: Bool, + connectionState: ConnectionState, + prefixes: [QChar], + prefixModes: [QChar], + channelModes: Map<ChannelModeType, [QChar]>, + ircUsers: Map<QString, IrcUser>, + ircChannels: Map<QString, IrcChannel>, + supports: Map<QString, QString>, + caps: Map<QString, QString | null>, + capsEnabled: [QString], + networkInfo: NetworkInfo + + + // C->S calls + + requestConnect() + requestDisconnect() + requestSetNetworkInfo(info: NetworkInfo) + + + // S->C calls + + acknowledgeCap(capability: QString | null) + addCap(capability: String, value: QString | null = null) + addIrcChannel(channel: QString | null) + addIrcUser(hostmask: QString | null) + addSupport(param: QString | null, value: QString | null = null) + clearCaps() + emitConnectionError(error: QString | null) + ircUserNickChanged(before: QString | null, after: QString | null) + removeCap(capability: QString | null) + removeSupport(param: QString | null) + setAutoIdentifyPassword(password: QString | null) + setAutoIdentifyService(service: QString | null) + setAutoReconnectInterval(interval: UInt) + setAutoReconnectRetries(retries: UShort) + setCodecForDecoding(codecName: QByteBuffer | null) + setCodecForEncoding(codecName: QByteBuffer | null) + setCodecForServer(codecName: QByteBuffer | null) + setConnected(isConnected: Bool) + setConnectionState(state: Int) + setCurrentServer(currentServer: QString | null) + setIdentity(identity: IdentityId) + setLatency(latency: Int) + setMessageRateBurstSize(burstSize: UInt) + setMessageRateDelay(messageDelay: UInt) + setMyNick(mynick: QString | null) + setNetworkName(networkName: QString | null) + setNetworkInfo(info: NetworkInfo) + setPerform(perform: QStringList) + setRejoinChannels(rejoinChannels: Bool) + setSaslAccount(account: QString | null) + setSaslPassword(password: QString | null) + setServerList(serverList: QVariantList) + setActualServerList(serverList: [NetworkServer]) + setUnlimitedMessageRate(unlimitedRate: Bool) + setUnlimitedReconnectRetries(unlimitedRetries: Bool) + setUseAutoIdentify(autoIdentify: Bool) + setUseAutoReconnect(autoReconnect: Bool) + setUseCustomMessageRate(useCustomRate: Bool) + setUseRandomServer(randomServer: Bool) + setUseSasl(sasl: Bool) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + update(properties: QVariantMap) +} + +interface NetworkServer { + host: QString, + port: UInt, + password: QString, + useSSL: Bool, + sslVerify: Bool, + sslVersion: Int, + useProxy: Bool, + proxyType: Int, + proxyHost: QString, + proxyPort: UInt, + proxyUser: QString, + proxyPass: QString +} + +enum ConnectionState { + Disconnected = 0x00, + Connecting = 0x01, + Initializing = 0x02, + Initialized = 0x03, + Reconnecting = 0x04, + Disconnecting = 0x05 +} + +enum ChannelModeType { + NOT_A_CHANMODE = 0x00, + A_CHANMODE = 0x01, + B_CHANMODE = 0x02, + C_CHANMODE = 0x04, + D_CHANMODE = 0x08 } ``` @@ -598,7 +1048,172 @@ interface Network { ```typescript interface Network { - + Caps: Map<QString, QString>, + CapsEnabled: [QString], + IrcUsersAndChannels: { + Users: { + user: [QString], + host: [QString], + nick: [QString], + realName: [QString], + account: [QString], + away: [Bool], + awayMessage: [QString], + idleTime: [QDateTime], + loginTime: [QDateTime], + server: [QString], + ircOperator: [QString], + lastAwayMessage: [Int], + lastAwayMessageTime: [QDateTime], + whoisServiceReply: [QString], + suserHost: [QString], + encrypted: [Bool], + channels: [QStringList], + userModes: [QString] + }, + Channels: { + ChanModes: [ + { + A: Map<QString, QStringList>, + B: Map<QString, QString>, + C: Map<QString, QString>, + D: QString + } + ], + UserModes: [Map<QString, QString>], + name: [QString], + topic: [QString], + password: [QString], + encrypted: [Bool] + } + }, + ServerList: [ + { + Host: QString, + Port: UInt, + Password: QString, + UseSSL: Bool, + sslVerify: Bool, + sslVersion: Int, + UseProxy: Bool, + ProxyType: Int, + ProxyHost: QString, + ProxyPort: UInt, + ProxyUser: QString, + ProxyPass: QString + } + ], + Supports: Map<QString, QString>, + networkId: NetworkId, + networkName: QString, + currentServer: QString, + myNick: QString, + latency: Int, + codecForServer: QByteArray + codecForEncoding: QByteArray + codecForDecoding: QByteArray + identityId: IdentityId, + isConnected: Bool, + connectionState: Int, + useRandomServer: Bool, + perform: QStringList, + useAutoIdentify: Bool, + autoIdentifyService: QString, + autoIdentifyPassword: QString, + useSasl: Bool, + saslAccount: QString, + saslPassword: QString, + useAutoReconnect: Bool, + autoReconnectInterval: UInt, + autoReconnectRetries: UShort, + unlimitedReconnectRetries: Bool, + rejoinChannels: Bool, + useCustomMessageRate: Bool, + msgRateBurstSize: UInt, + msgRateMessageDelay: UInt, + unlimitedMessageRate: Bool +} +``` + +## NetworkInfo + +**Runtime** + +```typescript +interface NetworkInfo { + networkName: QString, + + serverList: [NetworkServer], + perform: QStringList, + + autoIdentifyService: QString, + autoIdentifyPassword: QString, + + saslAccount: QString, + saslPassword: QString, + + codecForServer: QByteArray, + codecForEncoding: QByteArray, + codecForDecoding: QByteArray, + + networkId: NetworkId, + identityId: IdentityId, + + msgRateBurstSize: UInt, + msgRateMessageDelay: UInt, + + autoReconnectInterval: UInt, + autoReconnectRetries: UShort, + + rejoinChannels: Bool, + useRandomServer: Bool, + useAutoIdentify: Bool, + useSasl: Bool, + useAutoReconnect: Bool, + unlimitedReconnectRetries: Bool, + useCustomMessageRate: Bool, + unlimitedMessageRate: Bool, + autoAwayActive: Bool +} +``` + +**Network** + +```typescript +interface NetworkInfo { + NetworkName: QString, + + ServerList: [NetworkServer], + Perform: QStringList, + + AutoIdentifyService: QString, + AutoIdentifyPassword: QString, + + SaslAccount: QString, + SaslPassword: QString, + + CodecForServer: QByteArray, + CodecForEncoding: QByteArray, + CodecForDecoding: QByteArray, + + NetworkId: NetworkId, + IdentityId: IdentityId, + + MsgRateBurstSize: UInt, + MsgRateMessageDelay: UInt, + + AutoReconnectInterval: UInt, + AutoReconnectRetries: UShort, + + RejoinChannels: Bool, + UseRandomServer: Bool, + UseAutoIdentify: Bool, + UseSasl: Bool, + UseAutoReconnect: Bool, + UnlimitedReconnectRetries: Bool, + UseCustomMessageRate: Bool, + UnlimitedMessageRate: Bool, + AutoAwayActive: Bool } ``` @@ -608,7 +1223,48 @@ interface Network { ```typescript interface NetworkConfig { - + pingTimeoutEnabled: Bool, + pingInterval: Int, + maxPingCount: Int, + autoWhoEnabled: Bool, + autoWhoInterval: Int, + autoWhoNickLimit: Int, + autoWhoDelay: Int, + standardCtcp: Bool + + + // C->S calls + + requestSetAutoWhoDelay(delay: Int) + requestSetAutoWhoEnabled(enabled: Boolean) + requestSetAutoWhoInterval(interval: Int) + requestSetAutoWhoNickLimit(limit: Int) + requestSetMaxPingCount(count: Int) + requestSetPingInterval(interval: Int) + requestSetPingTimeoutEnabled(enabled: Boolean) + requestSetStandardCtcp(enabled: Boolean) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + requestUpdate(properties: QVariantMap) + + + // S->C calls + + setAutoWhoDelay(delay: Int) + setAutoWhoEnabled(enabled: Boolean) + setAutoWhoInterval(interval: Int) + setAutoWhoNickLimit(limit: Int) + setMaxPingCount(count: Int) + setPingInterval(interval: Int) + setPingTimeoutEnabled(enabled: Boolean) + setStandardCtcp(standardCtcp: Boolean) + /** + * Replaces all properties of the object with the content of the + * "properties" parameter. This parameter is in network representation. + */ + update(properties: QVariantMap) } ``` @@ -616,6 +1272,13 @@ interface NetworkConfig { ```typescript interface NetworkConfig { - + pingTimeoutEnabled: Bool, + pingInterval: Int, + maxPingCount: Int, + autoWhoEnabled: Bool, + autoWhoInterval: Int, + autoWhoNickLimit: Int, + autoWhoDelay: Int, + standardCtcp: Bool } ``` diff --git a/mkdocs.yml b/mkdocs.yml index 775fd0d..5cc1175 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,7 +5,7 @@ site_author: 'Janne Koschinski' site_url: 'https://quasseldroid.info/docs/' # Copyright -copyright: 'Copyright © 2019 Janne Koschinski' +copyright: 'Copyright © 2020 Janne Koschinski' nav: - "Overview": index.md -- GitLab