Release/v26.9 sirius - #64
Draft
Paldiu wants to merge 62 commits into
Draft
Conversation
Removed support for majority of languages, only vetting MySQL, SQLite, and PostgresSQL (encouraged) as supported types. Added imports for the actual jdbc impls and also the hikari and reactor imports. added these to library loader. This is tons of extra code that realistically will never be used by us, but we still want to support mysql / sqlite in case other users want to use this without setting up a pgsql server as that can be more complex than a sqlite instance.
SQL groundwork is now mostly completed. we can now start working on migrating to json, converting all the config files into database schemas / tables, etc I'll craft up a doc on how to use this from a dev standpoint later on.
Compacted all the individual hand rolled implementations per language and just ran everything through the appropriate adapter. Created new repositories to cover a total of 9 repositories, admins, bans, permbans, strikes, discord links, ranks, protected areas, saved flags, playerdata Removed lombok in some classes (PlayerData, ProtectArea)
…cutting a testing build for this work.
Add bookspy and unify spy modes
Fix SQLite login deadlock and updated_at migration
Based. See PR for full changelog
Merge scope/discord-rewrite into release/v26.9-sirius
…ommands on admins
adds sign + book to text filter
Persist /jlm toggle and restore its non-op permission. Needed to merge this so I can rebase the branch for a large PR I'm about to submit.
Fix JSON/SQL persistence: reconcile, ranks, bans, players
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v26.9 "Sirius"
Ranks & permissions
Rankenum is gone. Ranks are now defined entirely inranks.json(SQL-backed, with the JSON file as snapshot and fallback) and are editable at runtime through/rankconfig.@Permissionno longer takes alevel. A command declares only its permission node, and the rank required to reach it is derived by resolving the least privileged rank that grants that node. Re-tiering a command is now a config edit. A node that no rank grants is unreachable rather than open.PermissionTrie, which handles exact grants and trailing wildcards in a single walk.RankRolebinds the few code paths that need to name a rank (default,default_op,impostor,admin_default,console_floor) to whichever rank declares that role inranks.json, each with a structural fallback.console_floorand are raised byhost_senders:bindings.Titles
New system alongside ranks, defined in
titles.jsonand stored in thetitles/title_permissionstables.weightorders titles for display only./title [list | info | of | grant | revoke]. Granting is gated ontfm.manage.titles.Database
migrationsledger.AccessControllercaps in-flight queries with a fair, re-entrant FIFO semaphore sized to the HikariCP pool.PersistenceQueueserialises each domain's writes onto one ordered chain and is awaited before the shutdown flush./sqlstatusreports pool health: active/idle/total connections, threads waiting, and fairness-queue state.admins,bans,permbans,ranks,protectedareas,savedflags, per-player data,backupandversionare now JSON.Discord
DiscordConnectionowns the gateway and its reconnect budget. Attempts are spaced bydiscord.reconnect.interval_secondsand capped atmax_attemptsconsecutive failures; any successful connection resets the count.boundedElastic, server-state reads hop to the main thread, and each interaction has its own error boundary.discord_links.jsonis written through on every link change and reconciled back into SQL at startup if it is newer.Spy modes
SpyMode(off,ops,admins,all) is shared by/cmdspy,/potionspy,/signspyand the new/bookspy. Each mode is stored per player./bookspyrelays book edits to admins with a per-page diff, click-to-view pages, and unsafe pages withheld.[View]button for the full sign.World System
Other
/saconfig listgroups admins by the rank they actually hold;/saconfig setrankaccepts any rank markedadmin.tfm.server.whitelist.manage, separate fromtfm.server.whitelist.Displayablemoved fromrankto a newdisplaypackage.