Commit graph

10 commits

Author SHA1 Message Date
b462d37bd5
Add i18n framework: per-account language, catalogs, t! macro, SET LANGUAGE
All checks were successful
CI / check (push) Successful in 5m16s
2026-07-19 22:57:45 +00:00
a774dfedb1
Fix migration over-granting op on disabled levels and halfops
All checks were successful
CI / check (push) Successful in 5m16s
2026-07-19 20:28:24 +00:00
c2db3bad7e
Preserve Anope negative mode locks on import instead of dropping them
Some checks failed
CI / check (push) Failing after 3m4s
2026-07-19 13:45:43 +00:00
6429b82fc4
nickserv: SET SNOTICE — opt-in server-notice-style service replies (*** NickServ: ...) sourced from the server instead of the pseudoclient
All checks were successful
CI / check (push) Successful in 3m47s
2026-07-18 03:40:22 +00:00
ea7bba4f16
migrate: map channel access from any Anope provider, report unmapped tiers
All checks were successful
CI / check (push) Successful in 3m45s
Access mapping only parsed numeric access/access data; an XOP (AOP/SOP/VOP) or
flags (+ov) entry would parse to 0 and be dropped silently, as would any
sub-voice numeric level. A fresh re-import at cutover could hit these if access
is edited via ChanServ meanwhile. access_role() now handles numeric, XOP and
flags, and the loop reports anything it still can't map to op/voice instead of
dropping it. Live data is all numeric, so counts are unchanged.
2026-07-16 16:04:15 +00:00
b8265661f0
migrate: derive protect/memo-notify from Anope flags, report unmodellable channel flags
All checks were successful
CI / check (push) Successful in 3m48s
Anope applies nickserv `defaults` at registration and serializes the result, so
a stored flag is the account's whole state (absence = off). no_autoop and
hide_status already followed this, but memo_notify and no_protect were hardcoded
on — flipping nick protection and memo-notify ON for every account that never
set them. Derive both from MEMO_SIGNON / PROTECT like the others.

Also report the channel SET flags echo can't model (PERSIST, SECUREFOUNDER,
KEEP_MODES, FANTASY) in the skipped list instead of dropping them silently.
2026-07-16 15:57:40 +00:00
0bc65097bf
migrate: report every Anope record echo cannot model
All checks were successful
CI / check (push) Successful in 3m47s
The importer silently ignored NSMiscData, SeenInfo, Stats and the third-party
YouTube caches. List each in the skipped report — per-account misc fields by
owner, the rest as a counted summary — so an operator sees exactly what will
not carry over instead of discovering it after cutover.
2026-07-16 15:26:23 +00:00
9d94dd5eb0
chanserv: support param mode locks (+f flood, +j joinflood)
Some checks failed
CI / check (push) Has been cancelled
Mode locks were char-only, so Anope FLOOD/JOINFLOOD locks were dropped on
migration. Carry a value per locked param-mode through the event log, MLOCK
parsing/display, drift enforcement, compaction, and the Anope importer, so a
migrated network keeps its flood protection verbatim.
2026-07-16 15:23:09 +00:00
3f97a66dbb
migrate: carry channel SET flags, noexpire, and account hide-status
All checks were successful
CI / check (push) Successful in 3m45s
Completes the importer: Anope's per-channel bool flags (KEEPTOPIC, PEACE,
SIGNKICK, BS_GREET, and defensively SECUREOPS/RESTRICTED/PRIVATE/TOPICLOCK/
NOAUTOOP/NOBOT) now map to ChanSettings, CS_NO_EXPIRE to channel noexpire, and
NickCore HIDE_MASK to the account's hide-status. PERSIST/SECUREFOUNDER/
KEEP_MODES/FANTASY have no Echo equivalent and are skipped. Verified: #devs
carries its full flag set + noexpire off the real backup.
2026-07-16 15:03:54 +00:00
062eae703e
add Anope->Echo migration importer (echo import)
All checks were successful
CI / check (push) Successful in 3m41s
New 'echo import <anope.json> <out.log> [node]' subcommand builds a fresh event
log from an Anope db_json: accounts (identity only — Anope's one-way password
hashes can't become SCRAM verifiers, so migrated users auth by certfp/external
authority), grouped nicks, cert fingerprints, vhosts, channels (+desc/topic/
assigned bot), access mapped to op/voice by each channel's AUTOOP/AUTOVOICE
thresholds, param-less mode locks, BotServ bots (service pseudo-clients skipped),
and memos. Read-only on the source; self-verifies by replaying the produced log.
Verified against the live backup (11 accounts, 10 channels, 10 bots) + a unit
test over a synthetic fixture. The prerequisite for a safe cutover.
2026-07-16 13:05:45 +00:00