Cockatrice/libcockatrice_protocol/libcockatrice/protocol/pb/serverinfo_user.proto
Lukas Brübach 124990239c [Server/Client/Protocol] Add developer staff role
Introduce a Developer staff level (proto flag 32, DB admin bit 8) that
sits between admin and moderator: no kick/ban/warn/report/admin powers,
but gets server log access via a new developer command container family
(GET_SERVER_STATS, VIEWLOG_HISTORY) and an idle-timeout exemption.

- Protocol: IsDeveloper flag, developer_commands.proto envelope,
  Command_GetServerStats/Command_GetLogHistory, Response_GetServerStats,
  Command_AdjustMod.should_be_developer
- Servatrice: fail-closed developer dispatcher, uptime snapshot handler,
  shared log history handler reuse, bit-8 DB mapping
- Client: burgundy pawn/badge/labels/sort order, prepareDeveloperCommand,
  minimal Developer stats tab, log tab access, promote/demote actions

Took 24 minutes

Took 18 seconds

# Commit time for manual adjustment:
# Took 15 minutes
2026-08-29 16:19:43 +02:00

42 lines
No EOL
1.3 KiB
Protocol Buffer

syntax = "proto2";
message ServerInfo_User {
enum UserLevelFlag {
IsNothing = 0;
IsUser = 1;
IsRegistered = 2;
IsModerator = 4;
IsAdmin = 8;
IsJudge = 16;
IsDeveloper = 32;
};
message PawnColorsOverride {
optional string left_side = 1;
optional string right_side = 2;
};
message CardArtParams {
optional string card_name = 1;
optional string card_provider_id = 2;
optional double margin_pct_l = 3 [default = 0.33];
optional double margin_pct_r = 4 [default = 0.02];
optional double vertical_offset = 5 [default = 0.35];
optional double zoom = 6 [default = 1.0];
};
optional string name = 1;
optional uint32 user_level = 2;
optional string address = 3;
optional string real_name = 4;
// gender = 5; // obsolete
optional string country = 6;
optional bytes avatar_bmp = 7;
optional sint32 id = 8 [default = -1];
optional sint32 server_id = 9 [default = -1];
optional uint64 session_id = 10;
optional uint64 accountage_secs = 11;
optional string email = 12;
optional string clientid = 13;
optional string privlevel = 14;
optional PawnColorsOverride pawn_colors = 15;
optional CardArtParams card_art_params = 16;
}