From 37443bf04cb6d17f84346403cec30a4c1cb788a7 Mon Sep 17 00:00:00 2001 From: HuntingFighter Date: Sat, 28 Mar 2026 17:21:11 +0100 Subject: [PATCH 1/2] Fixed a bug where permissions were not propagated to fluxer roles --- src/fluxer/roles_permissions.py | 2 ++ src/fluxer/writer.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/fluxer/roles_permissions.py b/src/fluxer/roles_permissions.py index 83ff25b..8832087 100644 --- a/src/fluxer/roles_permissions.py +++ b/src/fluxer/roles_permissions.py @@ -148,11 +148,13 @@ async def migrate_roles(context: MigrationContext, progress_callback: Callable[[ break logger.debug(f"Creating role: {role.name}") + # No permission mapping nescessary since fluxer uses the same permission map as discord fluxer_id = await context.fluxer_writer.create_role( name=role.name, color=role.color.value, hoist=role.hoist, mentionable=role.mentionable, + permissions=role.permissions.value, position=role.position ) if fluxer_id: diff --git a/src/fluxer/writer.py b/src/fluxer/writer.py index eb5c21b..dffa111 100644 --- a/src/fluxer/writer.py +++ b/src/fluxer/writer.py @@ -388,7 +388,7 @@ class FluxerWriter: print(f"Failed to send marker: {e}") return None - async def create_role(self, name: str, color: int, hoist: bool, mentionable: bool, position: Optional[int] = None) -> str: + async def create_role(self, name: str, color: int, hoist: bool, mentionable: bool, permissions: int, position: Optional[int] = None) -> str: """ Creates a new role in the Fluxer community. Returns the new Fluxer role ID. @@ -402,6 +402,7 @@ class FluxerWriter: color=color, hoist=hoist, mentionable=mentionable, + permissions=permissions, position=position ) return str(role["id"]) From dfcedb9d07e3fee8e321e2dbc295991715b41d26 Mon Sep 17 00:00:00 2001 From: HuntingFighter Date: Sat, 28 Mar 2026 17:54:15 +0100 Subject: [PATCH 2/2] Fixed a bug where Role order was reversed in Fluxer --- src/fluxer/roles_permissions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fluxer/roles_permissions.py b/src/fluxer/roles_permissions.py index 8832087..8b80a67 100644 --- a/src/fluxer/roles_permissions.py +++ b/src/fluxer/roles_permissions.py @@ -132,8 +132,8 @@ async def sync_permissions(context: MigrationContext, progress_callback: Callabl async def migrate_roles(context: MigrationContext, progress_callback: Callable[[str, int, int], Awaitable[None]] | None = None, force: bool = False) -> list[str]: """Copies roles and their baseline permissions. Returns a list of cloned role names.""" # Sort roles by position to respect Discord hierarchy - roles = sorted(await context.discord_reader.get_roles(), key=lambda r: r.position) - + roles = sorted(await context.discord_reader.get_roles(), key=lambda r: r.position, reverse=True) + if not force: roles = [r for r in roles if not context.state.get_fluxer_role_id(str(r.id))]