Android

55 개의 포스트

toss6분 읽기큐레이션 요약

토스의 속도와 품질, 상용 도구로 충분한가 — 토션(Tossion)

토션(Tossion)은 흩어진 자동화·수동 테스트 결과와 테스트 케이스를 하나의 플랫폼에서 연결하고, QA 조직이 필요한 기능을 직접 빠르게 확장하기 위해 만든 테스트 관리 플랫폼입니다. 테스트 런에는 당시의 테스트 케이스와 판정 근거를 스냅샷으로 보존해 과거 결과의 신뢰성을 확보하고, AI·PR 분석·실기기 자동화까지 하나의 흐름으로 통합했습니다. 토스는 상용 TCM의 기능을 사용하는 데 그치지 않고, 빠른 개발 속도와 품질 기준에 맞춰 플랫폼 자체를 계속 진화시키는 것을 목표로 합니다. ## 흩어진 테스트 정보를 하나의 기록으로 통합 - 기존에는 자동화 테스트 결과, 매뉴얼 테스트 결과, 테스트 케이스와 판단 근거가 서로 다른 곳에 흩어져 과거 결과를 확인하는 데 시간이 걸렸습니다. - 토션의 기본 구조는 **프로젝트 → 스위트 → 섹션 → 테스트 케이스**이며, 섹션은 트리 구조로 관리됩니다. - 테스트 케이스는 제품 변화에 따라 수정·삭제되지만, 테스트 런은 당시 검증 내용을 보존하기 위해 별도로 축적됩니다. - 테스트 런을 생성할 때 테스트 케이스를 단순 참조하지 않고 다음 정보를 복사해 독립적인 행으로 저장합니다. - Assignee - Test Step - Description - 테스트 런의 각 행에는 상태 변경 이력이 쌓이며, 누가 언제 어떤 Version에서 어떤 판단을 했는지 확인할 수 있습니다. - 섹션을 직접 선택한 테스트 케이스에는 Type·Platform 등의 필터를 적용하지 않습니다. 명시적인 선택이 자동 조건보다 우선하기 때문입니다. ## 테스트 런의 스냅샷과 변경 이력 - 테스트 런은 **Active → Completed → Closed** 상태로 진행됩니다. - Closed 시점에 테스트 케이스, 코멘트, 자동화 결과를 스냅샷으로 저장합니다. - 이후 원본 테스트 케이스가 수정되거나 삭제되어도 종료된 테스트 런의 화면과 리포트는 변하지 않습니다. - 이를 통해 “지난달에는 무엇으로 검증했는가”라는 질문에 당시 상태 그대로 답할 수 있습니다. ## 빠른 피드백을 반영하는 협업 기능 - Assignee별로 전체 테스트 수와 남은 테스트 수를 보여 주는 진척도 차트를 제공합니다. - Status, Type, Assignee, Version, Platform, RNR, History 등 실제로 필요한 필드만 추가·유지합니다. - 여러 사용자가 같은 테스트 런을 동시에 사용할 수 있도록 다음 기능을 제공합니다. - 현재 접속 중인 사용자 아바타 표시 - 사용자별 색상 구분 - 편집 중인 테스트 케이스와 Description 잠금 - 창을 닫거나 연결이 끊기면 잠금 자동 해제 - 다른 사용자의 Status 변경을 새로고침 없이 반영 - 핵심은 기능의 규모보다 사용자 요청을 개발·배포·활용하는 시간이 짧다는 점입니다. ## 상용 TCM 대신 직접 만든 플랫폼 - 토스의 빠른 개발 속도에서는 품질 검증도 같은 속도로 변화해야 하며, 품질이 속도의 희생양이 되어서는 안 됩니다. - 상용 도구는 제공 업체가 정한 기능과 로드맵 안에서만 사용할 수 있습니다. - 토스가 필요로 한 것은 정해진 기능을 제공하는 도구가 아니라, 새로운 요구를 즉시 추가할 수 있는 플랫폼이었습니다. - 이를 기반으로 다음 기능을 직접 추가했습니다. - 릴리즈 PR 분석 - AI 기반 테스트 케이스 생성 - 실기기 회귀 테스트 실행 - 자동화 결과를 수동 테스트 케이스별로 기록 ## 릴리즈 PR 분석과 QA 범위 결정 - RC 빌드나 릴리즈 마일스톤에 포함된 PR을 모두 수집해 QA 라벨이 있는 PR과 없는 PR로 나누어 분석합니다. - QA 라벨이 있는 PR은 검증 관점을 정리하고, 라벨이 없는 PR은 정말 QA 검증이 필요 없는지 다시 확인합니다. - 분석 목적은 기능 요약이 아니라 “이번 릴리즈에서 반드시 확인해야 할 항목”을 찾는 것입니다. - QA 서버의 Agent가 토션에 등록된 작업을 주기적으로 확인하고, 작업을 받으면 서버에 로그인된 AI를 실행합니다. - 수백 개의 PR을 한 번에 처리하지 않고 여러 묶음으로 나누어 병렬 분석합니다. - AI 결과는 다음과 같은 규칙으로 검증합니다. - 화면명이나 구체적인 조건이 없는 모호한 문장 - PR 제목을 그대로 옮긴 요약 - 함수명이 그대로 남은 설명 - 재현 단계·기대 결과·실패 증상·판단 근거가 빠진 테스트 케이스 - 부적합한 결과는 AI가 다시 분석합니다. - 병합된 PR 수와 분석 결과 수를 대조해 누락된 PR이 있으면 해당 항목만 재처리합니다. - 과거 장애가 발생한 파일 목록과 이번 PR의 변경 파일을 비교해 위험도를 조정합니다. - 결과는 묶음 단위로 토션에 저장해 중단 시에도 완료된 분석을 보존하고, 재실행할 때 이미 처리한 PR은 건너뜁니다. - 최종적으로 추려진 항목은 Sprint 테스트 런의 범위와 검증 근거가 됩니다. ## AI 기반 테스트 케이스 생성 - 기능 개발 속도를 사람이 따라가기 어렵기 때문에 AI가 테스트 케이스를 생성해 토션에 등록합니다. - AI는 “자산 > 계좌 연결 > 은행 선택”처럼 경로를 출력하고, 토션이 이를 실제 섹션 트리로 변환합니다. - 기존 섹션이 있으면 재사용하고, 없으면 중간 단계를 포함해 새로 생성합니다. - 결과의 신뢰성을 확보하기 위해 세 겹의 검증을 적용합니다. 1. AI가 누락된 분기·에러 상황·경계값을 스스로 재검토 2. 표기 규칙, 테스트 케이스 번호, 화면 누락, 요구사항 반영 여부를 스크립트로 검증 3. 별도의 AI가 테스트 계획을 작성해 범위와 위험 요소, 적용할 테스트 기법을 정의 - 테스트 계획과 실제 테스트 케이스를 비교해 다음을 확인합니다. - 계획에는 있지만 테스트 케이스에 없는 항목은 누락 - 테스트 케이스에는 있지만 계획에 없는 항목은 범위 이탈 - 화면 중심으로만 테스트하면 상태 전이처럼 화면에 드러나지 않는 테스트 축을 놓칠 수 있습니다. - 따라서 테스트 계획에서 상태 전이, 경계값 등 필요한 테스트 기법을 먼저 지정하고, 테스트 케이스가 이를 모두 포함하는지 확인합니다. - AI의 토션 접근은 화면이 아닌 CLI로 제한하고, 환경 차이로 인한 설치·런타임·경로 문제를 줄이기 위해 단일 실행 파일로 배포합니다. ## 토션에서 실기기 회귀 테스트 실행 - 신규 기능은 사람이 직접 검증하고, 안정화된 테스트 케이스는 회귀 자동화 대상으로 편입합니다. - 토션의 실행 화면에서 다음 항목을 선택해 바로 테스트를 시작합니다. - 대상 기기 - 빌드 - 실행 범위 - 결과를 연결할 테스트 런 - QA 서버의 러너는 Android·iOS 실기기를 관리하며, 스스로 토션에 등록되지만 관리자 승인 전에는 작업을 받지 않습니다. - 러너는 주기적으로 연결된 기기 상태를 보고하므로 실행 가능한 기기를 화면에서 확인할 수 있습니다. - 토션이 발급한 빌드를 설치해 실행함으로써 어떤 빌드에서 나온 결과인지 명확히 유지합니다. - 전체 회귀 또는 특정 섹션만 선택해 실행할 수 있습니다. - 테스트 중에는 시나리오별 통과·실패 여부, 실행 시간, 오류 메시지가 실시간으로 기록됩니다. - 결과는 시나리오가 아니라 **스텝 단위**로 저장됩니다. - 상태 - 소요 시간 - 오류 메시지 - 해당 시점의 스크린샷 - 시나리오 단위 영상 - 실행 결과를 특정 테스트 런에 연결하면 자동화 결과가 수동 테스트 기록의 각 테스트 케이스에 직접 반영됩니다. ## 자동화 결과를 테스트 케이스와 연결 - 별도 자동화 리포트에 “200건 중 3건 실패”라고만 표시하면 어떤 수동 테스트 케이스가 실패했는지 사람이 다시 대조해야 합니다. - 이를 해결하려면 양방향 연동이 필요합니다. - 테스트 케이스를 자동화 코드로 변환 - 자동화 결과를 다시 테스트 케이스별 기록으로 저장 - 토션은 자동화 결과를 테스트 케이스 한 건 단위까지 내려보내 수동 검증 기록과 자동화 실행 결과를 같은 맥락에서 확인할 수 있도록 설계되었습니다. - 제공된 글은 이 자동화 코드 생성 기능의 상세 구현 설명 직전에서 끝납니다. 토션의 핵심은 테스트 관리, AI 분석, 테스트 생성, 실기기 자동화를 각각 분리하지 않고 하나의 테스트 런과 테스트 케이스 흐름으로 연결한 데 있습니다. 유사한 플랫폼을 구축할 때도 먼저 결과의 스냅샷·이력 보존을 설계하고, 이후 AI와 자동화를 기존 기록 구조에 연결하는 방식이 실용적입니다.

원문 읽기(새 탭에서 열림)
discord4분 읽기큐레이션 요약

Discord 패치 노트: 2026년 8월 4일

Discord의 2026년 8월 패치는 설정 화면 개편, Electron 42 업그레이드, 데스크톱·모바일 전반의 성능 및 안정성 개선에 초점을 맞췄습니다. 설정 메뉴의 명칭과 관련 항목을 정리해 탐색성을 높였고, 오버레이·테마·프로필·게임 활동 등에서 발생하던 다양한 UI 버그를 수정했습니다. 모든 수정 사항은 병합됐지만 플랫폼별 적용은 순차적으로 진행될 수 있습니다. ## 설정 화면 개편 - `Activity`가 `Games & Apps`로 변경되었습니다. - `Content & Social`은 `Messaging Permissions`로 이름이 바뀌었습니다. - `Authorized Apps`, 연결 설정, 운영체제별 페이지와 키 바인드 등 관련 항목을 더 명확하게 묶었습니다. - `Data & Privacy`, `Activity Privacy` 등 여러 설정 페이지의 문구와 스타일을 개선했습니다. - 설정 항목의 이름과 배치를 정리해 사용자가 원하는 기능을 찾기 쉽게 했습니다. ## Electron 42 업그레이드 - 데스크톱 클라이언트를 Electron 42 기반으로 업데이트했습니다. - Electron 유지보수 측면의 개선과 함께 Discord의 CPU 사용량이 일부 감소했습니다. - 이번 버전은 대규모 기능 추가보다는 클라이언트의 기반 기술과 실행 효율 개선에 초점을 맞췄습니다. ## 데스크톱 안정성 및 계정 기능 수정 - CAPTCHA 완료 후 이메일 변경이 실패하던 문제를 해결했습니다. - 서버 초과 상태에서 유효한 초대 링크를 사용해도 “유효하지 않거나 만료된 초대”로 표시되던 오류를 수정했습니다. - 서버 선택 드롭다운에서 선택이 적용되지 않거나 목록이 현재 선택 항목으로 되돌아가는 문제를 고쳤습니다. - 긴 서버·역할 목록을 스크롤할 때 목록이 갑자기 맨 위로 이동하는 현상을 해결했습니다. - 전화번호 인증 오류가 표시될 때 입력 필드가 어긋나는 문제를 수정했습니다. - 프로필 편집 화면이 저장할 변경 사항이 없는데도 상점으로 이동한 뒤 계속 열려 있던 문제를 해결했습니다. - 비공개 서버 프로필을 사용하는 사용자에게도 기본 프로필 보기 메뉴가 표시되도록 수정했습니다. ## 오버레이와 게임 활동 개선 - 오버레이가 활성화된 상태에서 일부 게임을 탭 전환하면 화면 전체가 검게 변하던 문제를 해결했습니다. - 서버가 선택된 상태에서 오버레이 채팅 위젯을 드래그해 위치를 변경할 수 없던 문제를 수정했습니다. - 오버레이에서 서버 아이콘을 드래그할 때 이미지가 잘못 잡혀 채팅 위젯이 커서를 따라다니던 현상을 해결했습니다. - 오버레이에서 그룹 DM을 만들면 모달이 게임 오버레이가 아닌 기본 Discord 창에 열리던 문제를 수정했습니다. - 활동 감지를 끈 게임을 실행했을 때 백그라운드에서 실행 중인 다른 게임의 플레이 상태가 지워지던 오류를 해결했습니다. - 게임 데이터를 불러온 직후 사용자 프로필 팝업의 크기가 변하거나 흔들리던 문제를 수정했습니다. ## 테마와 프로필 UI 수정 - 테마 미리보기 종료 후 원래 테마로 돌아가지 않고 미리 본 테마가 기본값으로 저장되던 문제를 해결했습니다. - 사용자 지정 테마 편집기를 연 뒤 테마 전환이 작동하지 않던 문제를 수정했습니다. - 친구 탭의 `Active Now` 패널에 사용자 지정 테마의 그라데이션이 적용되지 않던 문제를 해결했습니다. - 프로필 카드에서 사용자 지정 상태 문구의 하단이 잘리던 현상을 수정했습니다. - 긴 서버 이름, 연결 이름, 사용자 지정 상태가 잘리지 않고 말줄임표로 표시되도록 개선했습니다. - 프로필 효과 미리보기 카드의 불필요한 여백을 제거했습니다. - 배지에 마우스를 올렸을 때 Early Supporter 배지의 눈이 투명해지던 시각적 오류를 수정했습니다. - 프로필 편집 드롭다운과 배지 모달의 클릭 영역, 닫기 버튼, 포인터 커서 표시 문제를 개선했습니다. ## 기타 데스크톱 버그 수정 - 긴 드롭다운과 작은 창 크기에서 모달이 잘못 배치되거나 콘텐츠가 잘리던 문제를 해결했습니다. - 서버 목록을 클릭한 뒤 키를 입력하면 주황색 포커스 링이 나타나던 현상을 수정했습니다. - 친구 추가 입력란에 `#`을 입력할 때 판별자 안내 문구가 텍스트와 겹치던 문제를 해결했습니다. - Linux에서 Stable과 Canary 클라이언트가 작업 표시줄과 창 관리자에서 하나로 묶이던 문제를 수정했습니다. - 활동 사이드바의 확장 영역과 아이콘 클릭·호버 동작을 개선했습니다. - 위시리스트 안내 팝업과 Xbox Game Pass 안내 팝업의 위치가 어긋나던 문제를 수정했습니다. ## 모바일 성능 및 표시 문제 개선 - Android에서 게임 프로필의 공지 목록을 스크롤할 때 프레임이 떨어지던 문제를 개선했습니다. - iPad에서 상태 표시줄 아래로 잘리던 프로필 헤더의 닫기 버튼과 액션 버튼을 수정했습니다. - Android의 You Bar에서 특정 스와이프 동작 후 빈 화면에 멈추던 문제를 해결했습니다. - PIP 모드에서 복귀한 뒤 서버 목록 하단의 일부 아이콘이 표시되지 않던 문제를 수정했습니다. - iOS에서 상태 문구가 있는 사용자의 이름 스타일 효과가 멤버 목록에서 제대로 표시되지 않던 현상을 해결했습니다. - Android에서 여러 줄 텍스트를 닉네임·서버 이름·역할 이름 같은 한 줄 입력란에 붙여넣을 때 입력창이 비정상적으로 커지던 문제를 수정했습니다. - iOS의 `Active Now` 카드에서 긴 게임 제목이 잘리던 문제를 해결했습니다. - Android와 iOS에서 사용자 프로필의 긴 연결 링크가 잘리지 않고 표시되도록 개선했습니다. - Android 라이트 테마의 Server Boosts 화면에서 카드와 배경의 흰색 음영이 서로 달랐던 문제를 수정했습니다. 이번 패치는 새로운 기능보다는 설정 구조 정리와 반복적으로 발생하던 UI·플랫폼별 오류 제거에 의미가 있습니다. Discord 데스크톱 사용자는 업데이트 후 테마, 오버레이, 게임 활동 관련 동작을 확인하고, 문제가 계속되면 플랫폼별 최신 버전 적용 여부를 점검하는 것이 좋습니다.

원문 읽기(새 탭에서 열림)
discord4분 읽기큐레이션 요약

Discord Social SDK 버전 1.10에서 모바일 플랫폼 지원 정식 출시

Discord Social SDK 1.10은 iOS와 Android 모바일 지원을 정식 출시해, 게임 개발자가 모바일에서도 Discord의 소셜 기능을 활용할 수 있게 했다. 주요 개선 사항은 Android Rich Presence, 딥링크 기반 계정 연결, 모바일 Discord Social Commerce이며, 이를 통해 플레이어 유지율·참여도·신규 유입을 높이는 것이 목표다. Tencent, Scopely, Ninja Kiwi 등의 사례는 친구 관리, 파티 구성, 커뮤니티 참여를 게임 경험과 자연스럽게 연결할 수 있음을 보여준다. ## 모바일 플랫폼 지원 정식 출시 - Discord Social SDK는 C++, Unreal Engine, Unity 프로젝트에서 사용할 수 있다. - 지원 플랫폼과 최소 버전은 다음과 같다. - Android 7.0 이상 - iOS 15.1 이상 - 모바일 환경에 맞춰 작은 화면과 이동 중 플레이를 고려한 기능 개선이 이루어졌다. - 계정 연결과 소셜 기능을 통해 게임의 도달 범위, 플레이 시간, 참여도를 높이는 것을 목표로 한다. ## Android Rich Presence 개선 - Android 게임에서 실시간 게임 상태를 공유하는 방법이 여러 가지로 확대됐다. - 계정 연결뿐 아니라 RPC(Remote Procedure Call)를 통해서도 Rich Presence를 제공할 수 있다. - 플레이어의 현재 게임 상태를 Discord 친구들에게 노출해 게임 발견과 소셜 공유를 촉진한다. - 향후 Rich Presence 초대 기능과 결합해 친구의 게임 참여를 유도할 수 있다. ## 딥링크 기반 모바일 계정 연결 - 모바일 계정 연결 과정에 딥링크가 추가됐다. - 브라우저 리디렉션이나 수동 로그인 절차를 줄여 앱 안에서 더 빠르게 Discord 계정을 연결할 수 있다. - Tencent의 Delta Force 사례에서는 단일 탭 방식의 계정 연결로 모바일 온보딩과 캠페인 활성화 과정의 마찰을 낮췄다. - 계정 연결은 게임 내 친구 목록, 초대, 커뮤니티 기능을 사용하기 위한 기반으로 활용된다. ## 모바일 Discord Social Commerce - Discord Social Commerce가 모바일로 확장돼, Discord를 통해 게임 아이템을 판매할 수 있게 된다. - 기존 플레이어뿐 아니라 친구와 잠재적인 신규 유저에게도 상품을 노출할 수 있다. - Marvel Rivals 파일럿 결과: - 구매의 41%가 선물 구매였다. - 선물 구매자의 25%는 휴면 유저 또는 신규 유저였다. - Discord의 소셜 관계가 수익화뿐 아니라 플레이어 재활성화와 신규 유입에도 기여할 수 있음을 보여준다. ## Tencent의 Arena Breakout 사례 - 크로스플랫폼에서 분산된 친구 목록과 파티 구성의 불편함을 해결하기 위해 SDK를 도입했다. - 주요 기능: - **Unified Friends List**: 여러 플랫폼의 친구 목록을 하나로 통합 - **Game Invites**: 분대 구성과 게임 초대 절차를 간소화 - 개선된 모바일 Account Linking - 도입 효과: - 분대 구성 시간 단축 - 세션 간 크로스플랫폼 메시지 증가 - 공식 Discord 서버 활동 증가 - 향후 기간 한정 게임 이벤트와 Discord 소셜 기능을 결합할 계획이다. ## Scopely의 Marvel Strike Force 사례 - Discord를 게임 내 커뮤니케이션과 동맹 관리 플랫폼으로 활용했다. - 플레이어 간 소셜 상호작용뿐 아니라 고객 지원과 커뮤니티 운영을 위한 전용 채널도 제공했다. - 도입 이후 나타난 결과: - 신규 플레이어의 계정 연결 증가 - 동맹별 Discord 채널 생성 가속 - 전반적으로 긍정적인 커뮤니티 반응 - 게임 커뮤니티 관리와 플레이어 지원을 Discord 안에서 함께 운영할 수 있다는 점을 보여준다. ## Tencent의 Delta Force 사례 - 공식 Discord 커뮤니티를 단순한 공지 채널이 아니라 플레이어가 함께 만들어가는 커뮤니티 공간으로 발전시켰다. - Account Linking과 Unified Friends List를 먼저 도입해 게임과 커뮤니티 사이의 경계를 줄였다. - 브라우저 이동과 수동 로그인 대신 모바일 단일 탭 계정 연결을 적용했다. - 주요 효과: - 온보딩 과정 개선 - 캠페인 참여 활성화 - 분대 구성 편의성 향상 - 커뮤니티 제작 콘텐츠와 게임 활동의 연결 - 향후 Discord 내 게임 검색 노출과 Rich Presence 초대 기능도 확대할 예정이다. ## Ninja Kiwi의 Bloons TD 6 사례 - Bloons TD 6는 Account Linking과 Unified Friends List를 도입해 Discord 기반 소셜 경험을 구축하기 시작했다. - 제공된 글의 내용은 이 사례의 초기 도입 기능을 소개하는 부분에서 끝나며, 구체적인 성과 수치는 제시되지 않았다. 모바일 게임에 Discord Social SDK를 도입하려면 먼저 계정 연결과 통합 친구 목록으로 진입 장벽을 낮추고, 이후 Rich Presence·게임 초대·커뮤니티 채널을 결합하는 방식이 효과적이다. 특히 모바일에서는 브라우저 전환과 수동 로그인 단계를 최소화하는 것이 온보딩과 유지율 개선에 중요하다.

원문 읽기(새 탭에서 열림)
line5분 읽기큐레이션 요약

AI 에이전트를 위한 Android CLI: 대규모 모바일 개발 환경에 적용하기

LINE Android처럼 수백 개의 Gradle 모듈과 대규모 코드를 가진 저장소에서는 단순한 `grep`·`glob` 검색만으로 AI 에이전트가 의미론적 질문에 답하기 어렵고, 불필요한 결과와 재시도로 토큰 비용이 급증합니다. LINE 개발팀은 Android CLI를 문서 검색과 Android Studio 연동의 기반으로 활용하되, 고정된 바이너리·래퍼·스킬·프롬프트를 조합해 보안, 환경 일관성, 오류 처리, 토큰 효율성을 보완하고 있습니다. 핵심은 CLI를 에이전트에 그대로 노출하지 않고, 저장소 규모와 조직 환경에 맞게 통제된 인터페이스로 제공하는 것입니다. ## 대규모 Android 저장소에서 AI 에이전트가 겪는 문제 - 수백 개의 Gradle 모듈과 방대한 코드 때문에 검색 한 번에도 지나치게 많은 결과가 반환됩니다. - 검색 결과가 에이전트 컨텍스트에 포함되면서 토큰과 비용이 빠르게 증가합니다. - 텍스트 검색만으로는 다음과 같은 의미론적 질문에 정확히 답하기 어렵습니다. - 특정 심볼의 선언 위치 - 심볼의 실제 참조 위치 - IDE가 판단하는 사용되지 않는 코드나 경고 - 의존성 내부 심볼의 위치 - 관련 없는 결과를 바탕으로 에이전트가 반복 검색과 재시도를 수행하면서 비효율이 커집니다. - 따라서 Android CLI를 그대로 적용하기보다는 래퍼, 스킬, 프롬프트를 통한 보완이 필요합니다. ## 문서 검색을 Android CLI로 전환 - Android CLI는 빌드·배포, SDK 관리, 환경 진단, 공식 문서 검색, Android Studio 연동 등을 제공합니다. - 첫 적용 대상은 Android, Jetpack Compose, AndroidX, Firebase 등의 공식 문서 검색이었습니다. - 모델의 사전 학습 지식은 최신 API 변경을 반영하지 못할 수 있어 잘못된 시그니처를 생성하는 환각이 발생할 수 있습니다. - 최신 Android Knowledge Base를 직접 참조하면 문서의 권위와 최신성을 확보할 수 있습니다. - 기존에는 Google Cloud Knowledge MCP 서버를 사용했지만 다음 운영 부담이 있었습니다. - 개발자별 Google Cloud API 인증 설정 - 인증 프록시 운영 - API 할당량 제한 대응 로직 유지 - Android CLI의 `docs` 명령은 다음 두 단계로 사용됩니다. - `docs search`: 키워드로 공식 문서 검색 - `docs fetch`: 검색 결과의 KB URL로 문서 본문 조회 - 이 기능은 `get-android-dev-knowledge` 스킬로 에이전트에 제공됩니다. - 기존 MCP 방식과 비교해 인증, 프록시, 할당량 처리 인프라를 제거하고 더 적은 토큰으로 최신 문서를 참조할 수 있습니다. ## CLI 바이너리를 저장소에 번들링한 이유 LINE 팀은 전역 설치된 `android` 명령 대신 `.agents/tools/android-cli/android`처럼 저장소 내부의 고정 경로에 바이너리를 포함했습니다. ### 환경 파편화 방지 - 개발자마다 CLI 버전, 설치 위치, 운영체제가 달라지는 문제를 줄입니다. - 저장소를 클론하면 동일한 버전을 사용할 수 있습니다. - 개발자 장비뿐 아니라 CI와 AI 에이전트 실행 호스트에서도 동일한 환경을 보장합니다. ### 보안 정책과 래퍼 적용 - Android CLI는 호출 과정에서 일부 데이터를 수집할 수 있습니다. - 이를 막으려면 호출마다 `--no-metrics` 인자를 지정해야 합니다. - 에이전트가 해당 인자를 누락할 수 있으므로 모든 호출을 통과시키는 래퍼에서 강제하는 방식이 안전합니다. - 래퍼가 실제 바이너리를 안정적으로 찾으려면 바이너리 위치가 고정되어 있어야 하므로 저장소 번들링이 유리합니다. - 대규모 저장소에 이미 `git-lfs`가 적용되어 있어 바이너리 포함 비용도 감당할 수 있었습니다. ## `--no-metrics` 관련 버그와 오류 출력 개선 - Android CLI 1.0 도입 과정에서 정보 수집 기능이 `--no-metrics` 처리 전에 초기화되는 버그가 발견되었습니다. - 이 때문에 메트릭 수집을 비활성화해도 `~/.android/cli`에 쓰기를 시도할 수 있습니다. - 샌드박스나 파일 시스템 권한으로 쓰기가 차단되면 여러 페이지의 Java 스택 트레이스가 출력됩니다. - 장황한 스택 트레이스는 에이전트 컨텍스트를 불필요하게 차지하고 문제 해결도 어렵게 만듭니다. - 래퍼는 CLI 실행 전에 다음을 수행합니다. - `~/.android/cli` 디렉터리 생성 시도 - 임시 파일을 만들어 쓰기 권한 확인 - 쓰기가 막히면 한 줄짜리 파싱 가능한 오류 출력 - 에이전트는 이제 긴 예외 대신 “쓰기 권한을 부여한 뒤 재시도하라”는 원인과 조치를 직접 전달받습니다. - 반복적으로 발생하는 오류를 에이전트가 처리하기 쉬운 구조화된 메시지로 변환하는 방식은 이후 Android Studio 연동에도 적용됩니다. ## Android Studio 연동의 의미론적 기능 Android CLI 1.0에서는 실행 중인 Android Studio와 연결해 IDE 수준의 분석을 명령줄에서 수행할 수 있게 되었습니다. - `studio check` - Android Studio 실행 여부를 확인합니다. - 대상 프로젝트가 열려 있는지 확인합니다. - 프로젝트 인덱싱이 완료되었는지 확인합니다. - 다른 Studio 기능을 사용하기 위한 전제 조건입니다. - `studio analyze-file` - 빌드하지 않고 단일 파일에 IDE 인스펙션을 적용합니다. - 에러와 경고를 반환합니다. - `is never used`처럼 단순한 `grep`으로 파악하기 어려운 의미론적 문제도 찾을 수 있습니다. - `studio find-declaration` - 심볼의 선언 위치를 찾습니다. - 프로젝트 코드뿐 아니라 `.aar`, `.jar` 의존성 내부도 검색합니다. - `studio find-usages` - 특정 심볼이 사용된 위치를 찾습니다. - `studio render-compose-preview` - `@Preview`가 적용된 Jetpack Compose 화면을 PNG 이미지로 렌더링합니다. ## CLI를 래퍼와 스킬로 감싼 설계 - Android Studio 기능도 CLI를 에이전트에 직접 노출하지 않고 얇은 래퍼와 스킬을 통해 제공합니다. - 가장 먼저 `studio-check` 스킬을 만들었습니다. - 에이전트가 CLI의 복잡한 입출력과 환경 전제 조건을 직접 처리하지 않도록 하는 것이 목적입니다. - 래퍼는 권한 확인, 실행 환경 검증, 오류 메시지 정규화 같은 공통 처리를 담당합니다. - 스킬은 에이전트가 언제 어떤 기능을 사용해야 하는지 안내하는 고수준 인터페이스 역할을 합니다. 실무적으로는 대규모 저장소에서 Android CLI를 전역 도구로 배포하기보다, 버전을 고정한 바이너리를 저장소에 포함하고 모든 호출을 래퍼로 통제하는 방식을 추천할 수 있습니다. 특히 검색 결과를 무작정 늘리는 대신 문서 검색, 심볼 탐색, IDE 분석처럼 목적에 맞는 의미론적 명령을 스킬로 제공하면 토큰 낭비와 에이전트의 반복 작업을 크게 줄일 수 있습니다.

원문 읽기(새 탭에서 열림)
toss6분 읽기큐레이션 요약

토스의 디바이스 팜 만들기

네뷸라는 팀별로 흩어져 운영하던 실기기 테스트 환경을 중앙 플랫폼으로 통합해, 누구나 API 호출 한 번으로 실제 스마트폰을 제어할 수 있도록 만든 사내 디바이스 팜입니다. Appium 대신 자체 드라이버를 개발해 속도와 확장성을 높였고, 실시간 미러링·보안·24시간 운영 안정성까지 직접 구축했습니다. 그 결과 15대에서 시작한 팜은 100대를 넘어 수백 대 규모로 확장되며 전사 공용 테스트 인프라로 자리 잡았습니다. ## 팀별 디바이스 팜의 한계 - 각 팀이 맥북이나 맥미니에 5~10대의 기기를 직접 연결하고 관리했습니다. - Appium 설정, 기기 인식, OS 버전 대응, 연결 장애 복구를 팀마다 반복해야 했습니다. - 기기 관리와 테스트, 보안·컴플라이언스까지 개발자가 함께 맡아야 했습니다. - 팀별 자원이 격리되어 회사 전체의 기기를 효율적으로 공유하기 어려웠습니다. - 네뷸라는 이러한 운영 부담을 중앙화하고 전문 플랫폼으로 이전하기 위해 시작됐습니다. - 맥미니 5대와 기기 15대, 개발자 1명으로 시작해 1년간 100대 이상으로 성장했습니다. ## API 한 번으로 실기기 제어 - 사용자는 기기가 어느 호스트에 연결됐는지, ADB나 Xcode를 어떻게 설정했는지 알 필요가 없습니다. - `occupy` API로 조건에 맞는 기기를 점유한 뒤 액션 API를 호출하면 됩니다. - 예를 들어 다음과 같은 흐름으로 기기를 사용할 수 있습니다. - Android 기기 점유 - 좌표 `(540, 1200)` 클릭 - 테스트 종료 후 기기 반환 - 예약, 케이블 연결, 로컬 환경 설정을 숨기고 단순한 인터페이스를 제공하는 것이 네뷸라의 핵심 가치입니다. ## 네뷸라의 4계층 아키텍처 - **클라이언트** - 웹 프런트엔드, SDK·CLI, 직접 API 호출 등 다양한 접근 방식을 제공합니다. - **서버** - 기기 발견·점유·할당·테스트 실행을 관리하는 오케스트레이션 계층입니다. - 테스트 요청은 Kafka로 전달되고 여러 Runner가 분산 처리합니다. - `occupy · assign · release` 기반 분산 락으로 한 기기를 여러 테스트가 동시에 사용하는 문제를 방지합니다. - **에이전트** - iOS용 Mac mini와 Android용 Linux 호스트에서 실행됩니다. - ADB·Xcode로 연결된 기기를 자동 발견하고 서버 요청을 로컬 기기로 전달합니다. - **기기 계층** - 기기마다 controller server와 controller runner가 동작합니다. - 실제 화면 클릭, 텍스트 입력 등의 동작은 이 계층에서 수행됩니다. ## Appium 대신 개발한 Nebula Driver ### 빠른 명령 처리 - Appium과 Android 기기에서 명령 지연을 비교한 결과, 클릭·입력 작업에서 네뷸라가 10배 이상 빠른 경우가 있었습니다. - Appium은 동작 전 화면이 안정될 때까지 기다리는 `waitForIdle`을 사용해 견고성을 높입니다. - 네뷸라는 화면이 진행 중이어도 노드에 바로 명령을 전달하고 즉시 반환하는 속도 우선 방식을 택했습니다. - `waitForIdle`을 끄면 성능 격차가 2~3배 수준으로 줄어들지만, 실시간 조작이 중요한 네뷸라에는 속도 중심 설계가 적합했습니다. ### Stateless 구조 - Appium은 세션 기반이라 세션 생성에 약 15~40초가 걸릴 수 있습니다. - 기기 수가 늘수록 세션 생성 실패와 세션 관리 비용도 증가합니다. - 네뷸라는 기기 컨트롤러를 미리 실행해 두고, 상태 없는 HTTP 호출을 받는 구조를 사용합니다. - 세션 시작 비용과 세션 장애를 줄이고, 대규모 기기 운영에 유리한 구조를 만들었습니다. ### 사내 환경에 맞춘 확장 - 자체 인터페이스를 소유하므로 필요한 기능을 직접 추가할 수 있습니다. - 한글·이모지 입력을 지원하는 자체 IME를 구현했습니다. - 토스 앱 전용 신호 트리거를 추가할 수 있습니다. - 사내 앱센터와 연동해 pre-release 빌드를 기기에 바로 설치할 수 있습니다. - 보안 정책도 드라이버 규격 안에서 강제할 수 있습니다. - Android는 ADB·UiAutomation, iOS는 Swift·XCTest를 기반으로 구현하고, OpenAPI 스펙으로 Go·TypeScript 코드를 자동 생성했습니다. ## 실시간 화면 미러링 - 네뷸라는 정해진 테스트 스텝만 실행하는 도구가 아니라, 사용자가 화면을 보면서 동시에 조작할 수 있어야 했습니다. - 따라서 실시간 조작과 실시간 영상 스트리밍을 Android·iOS 모두에서 해결해야 했습니다. ### Android 미러링 - scrcpy는 Android 화면을 데스크톱 앱에 보여주는 데 적합하지만, 서버를 거쳐 여러 브라우저에 배포하는 구조에는 맞지 않았습니다. - 네뷸라는 scrcpy의 인코딩 방식을 참고하되 자체 미러링 경로를 구현했습니다. - `SurfaceControl`로 가상 디스플레이를 만들고 `MediaCodec`으로 H.264 영상을 인코딩합니다. - 인코딩된 영상은 브로드캐스터를 통해 여러 브라우저 시청자에게 전달됩니다. ### iOS 미러링 - iOS는 Android처럼 화면을 자유롭게 추출하기 어렵고 USB 사용 방식에도 제약이 있습니다. - 기존 QVH·Appium MJPEG 방식은 화면을 보면서 동시에 조작하는 요구를 충족하지 못했습니다. - QuickTime Player의 iOS 화면 캡처 방식과 유사한 경로를 USB 독점 없이 내재화했습니다. - 그 결과 조작과 미러링을 동시에 수행할 수 있게 됐습니다. - Android와 iOS 모두 실시간 H.264·브로드캐스팅 경로로 통일해 브라우저에서 여러 기기를 한 번에 볼 수 있습니다. ## 중앙화로 강화한 보안과 컴플라이언스 - 팀별 운영에서는 개발자가 테스트와 기기 관리, 보안 준수를 모두 책임져야 했습니다. - 네뷸라 팀은 사내 보안팀과 협력해 모바일 기기 팜 운영 기준을 정의했습니다. - 중앙 플랫폼에 보안 정책을 적용해 모든 기기에 동일한 기준을 일괄 반영할 수 있게 했습니다. - 사용자는 보안 요건이 적용된 환경에서 테스트에만 집중할 수 있습니다. ## 24시간 운영을 위한 안정성 ### 하드웨어 운영 - USB 연결 안정성, 케이블·허브 선택, 전원 공급, 서버실 설계를 직접 검증했습니다. - 물리적 장애를 완전히 제거할 수 없기 때문에 사람의 대응 체계와 이중화를 함께 준비하고 있습니다. ### 소프트웨어 운영 - 호스트별 컨트롤러와 미러링 프로세스를 오케스트레이션합니다. - 프로세스가 종료되더라도 자동으로 복구되도록 설계했습니다. - 서버·에이전트·컨트롤러·미러링 구성요소에 무중단 배포를 적용했습니다. - 기기 상태, 프로세스 상태, 서버 성능을 함께 관측하는 모니터링 체계를 구축하고 있습니다. - 여러 팀이 상시 사용하는 공용 인프라이므로 안정성을 핵심 기능으로 취급합니다. ## API 위에 만들어진 테스트 생태계 - 기기 15대에서 100대 이상, 수백 대 규모로 확장 중이며 24시간 운영됩니다. - 웹페이지에서는 미러링 화면을 보며 클릭으로 테스트 스텝을 만들 수 있습니다. - SDK로 E2E 테스트 코드를 작성하고, CLI로 터미널·CI/CD·AI 에이전트에서 기기를 제어할 수 있습니다. - 제품 로그가 기대대로 기록되는지 검수하는 시스템에도 활용됩니다. - AI 에이전트가 API를 호출해 테스트 스텝을 직접 판단하고 실행할 수도 있습니다. - 하나의 공개 API를 기반으로 여러 도구와 활용 사례가 자연스럽게 확장됐습니다. - 사용자 사례에 따르면 Appium 기반 테스트를 이전한 뒤 실행 속도가 크게 향상됐고, 수동 검수 시간이 30~40분에서 10분 이내로 줄었습니다. 네뷸라의 사례는 기기 수를 늘리는 것보다, 복잡한 하드웨어와 운영 문제를 단순한 API 뒤로 숨기는 것이 중요하다는 점을 보여줍니다. 비슷한 플랫폼을 구축한다면 초기부터 기기 점유 모델, 실시간 미러링, 보안 정책, 자동 복구와 무중단 배포를 함께 설계하고, 내부 사용자가 쉽게 확장할 수 있는 단일 API를 중심에 두는 것이 좋습니다.

원문 읽기(새 탭에서 열림)
discord5분 읽기큐레이션 요약

Discord 패치 노트: 2026년 7월 7일

Discord의 2026년 7월 7일 패치 노트는 앱 성능·연결 속도 개선과 플랫폼별 버그 수정을 다룬다. iOS의 React Native Fabric 전환으로 앱 초기화 시간이 약 20% 단축됐고, 세션 연결 p95/p99 시간도 약 100ms 줄었다. 또한 메시지 전달 시 `@silent` 사용, 모든 서버에서 채널 고정 지원 등 사용성 기능이 확대됐다. ## 앱 성능과 안정성 개선 - iOS를 React Native의 New Architecture인 **Fabric**으로 이전했다. - 일반적인 앱 초기화 시간이 약 20% 개선됐다. - 향후 Android와 iOS의 성능·신뢰성 개선 프로젝트를 확장할 기반을 마련했다. - 세션 시작 로직의 설정값을 변경해 세션 연결 시간의 p95/p99를 약 100ms 단축했다. - Linux에서 NVIDIA GPU 사용 시 X11 연결이 점진적으로 누수되던 문제를 수정했다. - 장시간 실행 후 새 애플리케이션을 열 수 없게 되는 현상을 방지한다. - Windows에서 Discord가 시작 프로그램으로 자동 실행될 때 게임 창의 포커스를 빼앗던 문제를 수정했다. - 이제 백그라운드에서 조용히 실행된다. - 빠르게 두 번 새로 고친 뒤 데스크톱 클라이언트에서 마우스 클릭이 작동하지 않던 문제를 해결했다. ## 메시지 전달과 채널 사용성 - 메시지 전달 기능에서 `@silent`를 지원한다. - 새벽에 DM으로 메시지를 전달할 때 상대방에게 알림을 보내지 않을 수 있다. - 기존에는 Community 서버에서만 제공되던 **채널 고정(Channel Pinning)** 기능을 모든 서버로 확대했다. - 사용자가 자주 쓰는 채널을 개인적으로 채널 목록 상단에 배치할 수 있다. - Linux에서 GIF와 동영상이 반복 재생되지 않던 문제를 수정했다. - 반복 재생 처리가 운영체제별로 제대로 동작하도록 개선됐다. ## 데스크톱 인터페이스 및 프로필 수정 - 프로필 모달의 우측 상단 모서리와 배너 이미지가 어긋나던 문제를 해결했다. - 긴 검색어 입력 시 검색 드롭다운의 “결과 없음” 문구가 컨테이너 밖으로 넘치지 않도록 수정했다. - 작은 창에서 로그인 화면에 불필요한 스크롤바가 나타나고 로그인 박스가 중앙에서 벗어나던 문제를 고쳤다. - 프로필의 사용자 지정 상태 hover 표시가 사각형으로 보이거나 잘못 정렬되던 문제를 수정했다. - 최근 아바타 목록에서 일부 GIF 아바타가 깨져 다시 선택할 수 없던 문제를 해결했다. - 프로필 편집 중 “위젯 추가”를 눌러도 저장하지 않은 변경 사항이 사라지지 않도록 했다. - 사용자 지정 상태의 “24시간 후 삭제” 설정이 자정에 조기 만료되던 문제를 수정했다. - 일반 텍스트 입력창에서도 맞춤법이 틀린 단어를 우클릭하면 맞춤법 제안이 표시되도록 했다. - 검색 필터의 “이후(After)” 날짜가 필터 창을 다시 열 때마다 하루씩 앞당겨지거나 늦춰지던 문제를 해결했다. - 서버 프로필에서 기본 프로필로 전환할 때 tenure 배지 안내창이 잘못 표시되던 문제를 수정했다. - 다른 모달이 열린 상태에서 단축키로 Inbox를 열면 클라이언트가 잠기던 문제를 해결했다. - 배지 허브에서 Nitro나 Shop으로 이동할 때 기존 프로필 모달이 뒤에 남아 있던 문제를 수정했다. - 자신의 위시리스트에서 Nitro를 자신에게 선물할 수 있던 잘못된 흐름을 수정했다. - 이제 Nitro 구독 모달이 열린다. ## 모바일 앱 개선 - Android Nitro 탭에서 일부 기본 테마를 사용할 때 캐러셀 페이지 표시기가 보이지 않던 문제를 해결했다. - iOS 채널 목록을 스크롤할 때 화면이 흔들리거나 위치가 튀던 현상을 수정했다. - Android와 iOS에서 잘못된 `has:` 검색 필터 값이 유효한 필터로 처리되던 문제를 고쳤다. - iOS의 선물 수신자 선택 화면에 불필요한 색상 사각형이 표시되던 문제를 해결했다. - Android에서 닫을 수 없던 서버 애플리케이션 알림을 바깥 영역 터치나 뒤로 가기 버튼으로 닫을 수 있게 했다. - iOS에서 변경 중인 표시 이름 스타일이 전체 화면 프로필 미리보기에 반영되지 않던 문제를 수정했다. - iOS의 이벤트 카드와 Live 채널 알림에서 위치 텍스트가 카드 밖으로 넘치지 않도록 잘라서 표시한다. - 이미 가입한 서버의 초대 링크를 열 때 불필요한 Server Tag Adoption 절차로 이동하던 문제를 해결했다. - iPad 브라우저에서 서버 초대 링크를 열면 Discord는 실행되지만 초대 화면이 표시되지 않던 문제를 수정했다. - Android 프로필 사진 편집기에서 특정 테마를 사용할 때 “확대/축소”와 “회전” 텍스트 및 슬라이더가 보이지 않던 문제를 해결했다. - iOS 프로필 탭 전환 중 스크롤하면 콘텐츠가 잘리던 문제를 수정했다. - Android에서 친구 요청 수락 후 프로필의 통화·메시지 버튼 크기가 서로 다르게 표시되던 문제를 고쳤다. - iOS Shop 아이템 미리보기에서 프로필 미리보기 텍스트가 잠깐 나타났다가 사라지던 현상을 해결했다. - iOS에서 글자 크기를 키웠을 때 Nitro 혜택 설명이 잘리고 스크롤하기 어려웠던 문제를 수정했다. - iOS 알림 설정 화면이 푸시 알림을 이미 켠 뒤에도 계속 활성화를 요구하던 문제를 해결했다. ## 초대, 프로필, 이벤트 관련 수정 - iOS 채널 목록에 채널을 추가하라는 배너가 채팅 배경에 섞이지 않도록 구분선을 추가했다. - 프로필 카드와 상태 표시 요소의 모서리 및 정렬을 조정해 시각적 일관성을 높였다. - 예약 이벤트 카드와 Live 채널 안내 문구가 화면 가장자리를 넘지 않도록 처리했다. - 이미 가입한 서버 초대 링크가 잘못된 설정 흐름을 열지 않고 해당 서버로 바로 이동하도록 수정했다. ## 적용 방식 - 패치에 포함된 수정 사항은 모두 커밋되고 병합된 상태다. - 다만 플랫폼별 배포가 진행 중일 수 있어 모든 사용자에게 동시에 적용되지는 않을 수 있다. - 문제가 계속되면 Discord 커뮤니티의 격월 버그 메가스레드에 제보할 수 있다. 이번 업데이트는 대규모 신규 기능보다는 iOS 아키텍처 전환, 연결 속도 개선, 운영체제별 안정성 보강, 세부 UI 버그 수정에 초점이 맞춰져 있다. Discord를 사용하는 경우 앱을 최신 버전으로 업데이트하고, 특히 Linux·Windows·iOS에서 보고된 문제를 겪었다면 수정 여부를 확인하는 것이 좋다.

원문 읽기(새 탭에서 열림)
google4분 읽기큐레이션 요약

사용하지 않는 휴대폰으로 만드는 저탄소 컴퓨팅 플랫폼

사용이 끝난 스마트폰의 메인보드를 모아 클러스터로 구성하면, 새 서버 제조를 줄이면서 저비용·저탄소 클라우드 컴퓨팅 플랫폼으로 재활용할 수 있다. UC 샌디에이고와 Google은 2,000대의 Pixel 스마트폰으로 데이터센터를 구축해 교육·연구용 컴퓨팅을 제공할 계획이다. 이 방식은 스마트폰의 제한된 메모리와 코어 수에 맞는 작업을 선별하고, 대규모 배포에서 소비자용 하드웨어의 신뢰성을 검증하는 것을 목표로 한다. ## 컴퓨팅의 탄소 배출과 스마트폰 재활용 - 컴퓨팅의 탄소발자국은 크게 두 가지다. - **운영 탄소**: 기기 사용 중 소비되는 전력에서 발생하는 배출량 - **내재 탄소**: 하드웨어 제조와 원자재 추출 과정에서 발생하는 배출량 - 전력 효율 향상과 재생에너지 사용으로 운영 탄소는 줄일 수 있지만, 제조 과정의 내재 탄소는 해결이 더 어렵다. - 사람들은 평균 4년마다 스마트폰을 교체하지만, 교체된 기기에도 프로세서, 가속기, 메모리, 저장장치 등 핵심 컴퓨팅 기능이 남아 있다. - 기존 스마트폰을 재사용하면 새 하드웨어 생산과 추가적인 원자재 채굴을 피할 수 있다. ## 스마트폰과 서버의 성능 차이 - 2023년형 Pixel Fold의 고성능 코어는 SPEC 벤치마크에서 일부 최신 데이터센터 서버의 단일 코어 성능을 웃돈다. - 다만 스마트폰은 서버보다 다음과 같은 제약이 있다. - 코어 수가 적고 CPU 구성이 이기종임 - 메모리가 약 8~12GB로 제한됨 - 서버처럼 대규모 멀티스레드 처리나 대용량 메모리를 제공하지 못함 - 따라서 하나의 스마트폰에 들어갈 수 있거나, 여러 기기로 분할할 수 있는 작업이 적합하다. - 벤치마크상 약 25~50대의 스마트폰이 현대적인 서버 한 대에 해당하는 성능을 낼 수 있다. ## 스마트폰을 데이터센터 하드웨어로 개조 - 소비자용 스마트폰을 그대로 데이터센터에 배치하면 비효율적이고 위험하다. - 디스플레이, 배터리, 카메라, 케이스 등 서버에 필요 없는 부품이 공간을 차지함 - 특히 배터리는 데이터센터 환경에서 장시간 사용하기에 적합하지 않을 수 있음 - 따라서 메인보드만 분리해 클러스터에 사용한다. - 메인보드는 스마트폰 내재 탄소의 약 50%를 차지하는 가장 중요한 부품이므로, 이를 재사용하는 것이 환경적 효과가 크다. - Android 기반의 모바일 사용자 공간은 범용 Linux 배포판으로 교체한다. - 클라우드 작업에 필요한 프로그래밍 환경을 제공함 - 모바일 기기용 보호 기능을 제거하거나 조정할 수 있음 - 예를 들어 메모리 부족 시 애플리케이션을 종료하는 ‘Low Memory Killer’의 영향을 줄일 수 있음 - 컨테이너화된 애플리케이션을 Kubernetes로 관리해 25~50대 단위의 자기관리형 클러스터를 구성한다. ## 교육·연구용 저탄소 클라우드 - 대학에서 사용하는 Jupyter 환경, 과제 채점 시스템, 병렬 계산 수업용 애플리케이션 상당수는 스마트폰 한 대 또는 소규모 클러스터로 처리할 수 있다. - 일반적인 과제 채점 백엔드는 AWS t3.micro 수준인 2 vCPU·1GB 메모리 인스턴스에서도 실행된다. - 20대 스마트폰 클러스터를 이용한 실험에서: - 75명 이상 수강하는 수업의 최대 과제 제출량을 처리함 - 일반적인 AWS 백엔드보다 낮은 채점 지연 시간을 기록함 - 약 50초가 걸리는 CPU 집약적 행렬 곱셈 과제도 처리 가능했음 - 2,000대 규모의 클러스터는 약 50대의 서버에 해당하는 컴퓨팅 자원을 제공하고, 동시에 약 100개 수업을 지원할 수 있을 것으로 예상된다. - 2026년 가을 전체 시스템 운영을 시작할 계획이다. ## 대규모 운영에서 검증할 과제 - 소비자용 스마트폰 메인보드를 장기간 데이터센터 부하로 사용할 때의 신뢰성을 검증해야 한다. - 다수 기기의 장애를 감지하고 작업을 재분배하는 클러스터 관리가 중요하다. - 제한된 메모리와 이기종 코어 구조에 맞도록 애플리케이션을 설계해야 한다. - 이 프로젝트는 실제 교육·연구 서비스를 제공하는 동시에 스마트폰 기반 컴퓨팅의 확장성과 지속 가능성을 시험하는 테스트베드 역할을 한다. 사용이 끝난 스마트폰은 서버 전체를 대체하기보다는 교육, 과제 채점, 소규모 웹 서비스처럼 자원 요구량이 제한적인 작업에 재활용하는 것이 현실적이다. 특히 메인보드 재사용과 컨테이너·Kubernetes 기반 클러스터 관리를 결합하면 비용 절감과 제조 탄소 감축을 동시에 달성할 가능성이 있다.

원문 읽기(새 탭에서 열림)
discord5분 읽기큐레이션 요약

Discord 패치 노트: 2026년 6월 4일

Discord의 2026년 6월 4일 패치에는 모바일 통화 실수 방지, 데스크톱 시작 속도 개선, 사용자 설정 개편, 음성 초대 임베드 개선이 포함됐다. 특히 데스크톱 앱의 p50 시작 시간이 약 8%(약 650ms) 단축됐으며, 여러 플랫폼에서 접근성·레이아웃·검색·초대 흐름과 관련된 버그가 수정됐다. 모든 수정 사항은 코드에 반영됐지만 플랫폼별 배포는 진행 중일 수 있다. ## 통화 실수 방지와 음성 초대 개선 - 모바일 DM에서 통화 버튼을 누르면 바로 통화가 시작되지 않고 확인 단계가 표시된다. - 새 음성 초대 임베드는 다음 정보를 명확히 보여준다. - 초대 대상 서버와 채널 - 현재 채널의 사용자 수 - 사용자 이름에 마우스를 올렸을 때 움직이는 아바타 - 음성 채널 초대의 맥락과 참여자 정보를 더 쉽게 파악할 수 있도록 시각적 표현이 개선됐다. ## 데스크톱 성능과 설정 화면 개편 - 최근 몇 주 동안 데스크톱 앱의 p50 시작 시간이 약 8%, 약 650ms 개선됐다. - 추가적인 시작 속도 개선 작업도 계속 진행될 예정이다. - 사용자 설정의 Account 페이지가 새 디자인 체계에 맞게 개편됐다. - 다음 항목은 Account 카테고리 내부의 중첩 페이지로 정리됐다. - Devices - Family Center - Account Standing - Multi-Factor Authentication - 설정 페이지 간 시각적 일관성과 탐색 구조가 개선됐다. ## 초대·가입·이벤트 흐름 수정 - 게스트 초대로 서버에 들어갈 때 온보딩이나 “Apply to Join” 화면에 멈추던 데스크톱 문제가 해결됐다. - 초대 링크를 클릭했을 때 최대화된 창이 갑자기 복원되는 문제가 수정됐다. - Server Discovery에서 초대가 비활성화된 서버에 가입할 수 없을 때 아무 반응이 없던 문제가 해결됐다. - 이제 가입 실패 이유를 토스트 메시지로 안내한다. - iOS에서 이벤트 설명의 외부 Markdown 링크를 눌러도 이벤트 상세 시트가 남아 있던 문제가 수정됐다. - 이벤트 설명에서 사용자 멘션을 누르면 DM이 아니라 해당 사용자의 프로필이 열리도록 변경됐다. - 이벤트 공유 후 이벤트 시트가 시스템 공유 메뉴 위에 남아 있던 문제가 해결됐다. - 초대 권한이 없고 vanity URL만 있는 서버에서 iOS가 “Missing Permissions”를 표시하던 문제가 수정됐다. - 이제 데스크톱과 마찬가지로 vanity URL을 대체 경로로 사용한다. ## 검색·상태·메시지 표시 버그 수정 - Android에서 `has:forward` 검색 필터와 Media, Links, Files 같은 하위 탭을 함께 사용할 때 결과가 비거나 부정확해지는 문제가 해결됐다. - Android에서 긴 사용자 지정 상태가 삭제 버튼과 지나치게 붙던 레이아웃 문제가 수정됐다. - 모바일 Set Status 화면에서 뒤로 가기 버튼이 작동하지 않던 문제가 해결됐다. - 데스크톱의 여러 줄 `@time` 표시가 아래 텍스트와 겹치던 문제가 수정됐다. - iOS에서 글자의 하강부(descender)가 메시지 알림과 검색 결과에서 잘리던 문제가 해결됐다. - iOS에서 사용자 프로필의 서식 있는 텍스트가 일반 텍스트보다 작게 표시되던 문제가 수정됐다. - 데스크톱 커뮤니티 공지의 텍스트가 겹쳐 읽기 어려웠던 문제가 해결됐다. - 알림이 비활성화된 Unread inbox 구분선이 라벨 텍스트를 관통하던 문제가 수정됐다. ## iOS·Android UI 및 테마 개선 - iOS의 QR 코드 로그인 모달이 필요 이상으로 전체 화면을 차지하던 문제가 수정됐다. - 사용자 지정 테마에서 키보드를 열 때 배경이 잠시 기본 색상으로 깜빡이던 문제가 해결됐다. - 친구 목록의 고정 알파벳 헤더가 클라이언트 테마 색상으로 잘못 표시되던 문제가 수정됐다. - 알림 탭의 북마크 버튼이 시스템 글꼴 크기에 맞춰 확대되지 않던 문제가 해결됐다. - 설정 검색 결과의 마지막 행에서 둥근 모서리가 사라지던 문제가 수정됐다. - 서버 초대 메뉴의 모서리가 다른 UI와 달리 각지게 표시되던 문제가 해결됐다. - 서버 프로필 사진을 업로드할 때 이미지 선택기 위에 기존 아바타 업로드 요소가 남아 있던 문제가 수정됐다. - Wumpus가 사라졌던 iOS 친구 요청 빈 화면이 복구됐다. ## 접근성·입력·반응형 레이아웃 수정 - 데스크톱에서 “Paste as Plain Text”에 실제로 구현되지 않은 키보드 단축키 안내가 표시되던 문제가 제거됐다. - 비활성화된 게임 오버레이 설문에서 Tab 키로 사유 선택 항목에 접근할 수 없던 문제가 수정됐다. - 보이지 않는 서버 툴팁 내부 아이콘이 Tab 탐색 대상이 되던 문제가 해결됐다. - 초대받은 서버 모달에서 매우 긴 닉네임 때문에 UI 요소가 잘리던 문제가 수정됐다. - 높은 확대 비율에서 이벤트 상세 모달의 정보 영역이 지나치게 압축되던 문제가 해결됐다. - 작은 창과 높은 확대 설정에서 Shop 필터 패널이 화면보다 커져 “Clear Filters” 버튼을 누를 수 없던 문제가 수정됐다. - Join Game Server 안내 모달에 불필요한 스크롤바가 나타나던 문제가 제거됐다. - Student Hubs의 Add Servers 팝업에 불필요한 가로 스크롤바가 표시되던 문제가 해결됐다. ## 기타 상호작용 및 시각적 일관성 - Bluesky 연결 모달에서 핸들이 비어 있어도 Enter 키로 제출되던 문제가 수정됐다. - Nitro 결제 모달의 Nameplate 이미지에 실제 확대 기능이 없는데도 확대 커서가 표시되던 문제가 해결됐다. - 언급된 역할을 클릭할 때 역할 팝업과 채널 주제 상세 메뉴가 동시에 열리던 문제가 수정됐다. - Streamer Mode에서 Nitro 탭 헤더만 다른 탭보다 어둡게 보이던 문제가 해결됐다. - iOS Invite to Server 메뉴 요소의 모서리가 둥글게 표시되도록 통일됐다. - 데스크톱 창의 다양한 모달과 탭에서 잘못된 크기, 색상, 포커스, 스크롤 동작이 정리됐다. 이번 패치는 대형 기능 추가보다는 앱 시작 성능과 설정 구조를 개선하고, 모바일 실수 방지와 접근성·반응형 UI 문제를 폭넓게 다듬은 업데이트다. 사용자는 모바일 통화 버튼의 확인 단계와 개편된 Account 설정을 먼저 확인하면 되며, 특정 수정 사항이 보이지 않는다면 플랫폼별 순차 배포가 완료될 때까지 기다릴 필요가 있다.

원문 읽기(새 탭에서 열림)
line4분 읽기큐레이션 요약

도쿄에서 후쿠오카까지, 현장에서 답을 찾다 - CS InquiryChat 도입기

타사 채팅 솔루션의 종료를 계기로 데마에칸은 자체 메시징 플랫폼인 InquiryChat으로 전환했다. 이 프로젝트는 연간 라이선스 비용을 0원으로 줄였을 뿐 아니라, 상담 재활성화 비율을 약 20% 낮추고 보안·운영 유연성·사용자 경험을 개선했다. 성공적인 전환의 핵심은 단순한 기능 복제가 아니라, 현장 관찰과 사용자 테스트를 통해 실제 업무 맥락을 파악하고 이해관계자 간 합의를 이끌어낸 데 있었다. ## 자체 솔루션 전환의 배경과 목표 - 기존 타사 채팅 서비스의 종료가 예정되면서 후속 솔루션 도입과 자체 개발을 비교 검토했다. - InquiryChat을 선택한 이유는 다음과 같다. - 라이선스 비용을 제거할 수 있음 - 데마에칸의 운영 프로세스에 맞춘 유연한 커스터마이징 가능 - 내부 담당자를 통한 실시간 연동과 운영 지원 가능 - 고객 정보를 보안 문제 없이 활용 가능 - 실시간 분석·리포팅 제공 - 기존 서비스에는 다음과 같은 개선 과제가 있었다. - 상담원이 사용자가 전송하지 않은 메시지를 미리 볼 수 있는 보안 취약점 - 사용자가 이탈하면 세션이 유지되지 않아 상담을 처음부터 반복해야 하는 문제 - 다른 플랫폼과의 통합 및 사용자 정의가 제한적임 - 안정적으로 사용하던 도구를 교체하는 만큼, 상담원 교육과 업무 프로세스 변화, 서비스 중단 없는 전환이 필요했다. ## 문서 중심 요구 사항의 한계 - 초기 요구 사항은 기존 기능을 단순히 나열한 목록에 가까웠다. - 기능이 실제로 사용되는지, 현장 업무에 필요한지, InquiryChat에서 그대로 제공할 수 있는지 판단하기 어려웠다. - 요구 사항이 협업 부서를 거쳐 전달되면서 실제 상담원과 매니저의 업무 맥락이 희석됐다. - 기능을 다음 세 가지로 재분류해 우선순위를 정리했다. - 기본 제공 기능 - 커스터마이징 또는 추가 검토가 필요한 기능 - 신규 개발이 필요한 기능 ## 후쿠오카 콜센터 현장 조사 - 실제 사용자인 상담원과 매니저를 이해하기 위해 후쿠오카의 두 콜센터를 직접 방문했다. - 피크 시간대 업무를 모니터링한 뒤 여러 상담원과 매니저를 인터뷰해 공통 요구 사항을 도출했다. - 현장 조사로 불필요한 기능과 필수 기능을 구분할 수 있었다. - 매니저에게 지원을 요청하는 메시지 기능은 실제로 손짓이 더 빨라 거의 사용되지 않음 - 사무실에서 소리를 켤 수 없어 채팅 단절 음성 경고 기능은 실효성이 낮음 - 상담 내용을 CS 솔루션에 연동하는 기능은 상담 기록과 공유에 필수적이므로 우선순위를 높여 구현 - 직접 관찰한 근거를 바탕으로 협업 부서와 기능 우선순위를 설득할 수 있었다. ## 복잡한 협업 구조를 관리한 PM 전략 - 한국과 일본의 여러 부서, 외주 콜센터가 참여하는 구조에서 공통된 목표와 기준을 만드는 데 집중했다. - Jira 대시보드를 설계해 개발 진행 상황을 실시간으로 시각화하고 지표 기반 의사 결정을 가능하게 했다. - 파편화된 요구 사항을 하나의 마스터 사양서로 통합해 단일 기준을 마련했다. - 기획 의도가 실제 구현에 반영됐는지 확인하기 위해 기획·개발 단계의 내부 QA를 주도했다. - 출시 직후 현장에서 활용할 수 있도록 상세 운영 가이드도 제작했다. ## FGT를 통한 실제 사용자 경험 검증 - 화상 회의와 문서만으로는 세밀한 사용 경험을 검증하기 어렵다고 판단해 FGT를 진행했다. - 사용자와 상담원 역할을 나누고, 고객 문의 시작부터 문제 해결까지의 전체 시나리오를 직접 수행했다. - FGT 과정은 배경 설명, 수행 과제, 실습, 설문, Q&A 등으로 구성됐다. - 백엔드 연동에 집중하던 개발자도 실제 앱 사용 흐름을 경험하면서 문제를 QA 전에 발견하고 수정할 수 있었다. - 주요 피드백과 개선 사항은 다음과 같다. - 역할과 현재 상태를 더 직관적으로 표시할 필요 - 링크에 날짜뿐 아니라 시간도 표시 - Android 푸시 안정화 - 키패드와 채팅 입력창이 겹치는 문제 개선 - 푸시 알림 제목 변경 - 일부 대화 로그가 CS 솔루션에 누락되는 문제 해결 ## 보안과 상담 효율 사이의 균형 - 기존 상담원이 선호하던 ‘입력 중 메시지 미리보기’는 고객이 전송하지 않은 데이터까지 상담원이 볼 수 있다는 보안·정보 주권 문제를 안고 있었다. - 상담원에게는 고객 답변을 미리 파악해 평균 처리 시간(AHT)을 줄이는 유용한 기능이었다. - 단순히 기능을 삭제하면 상담 효율이 떨어질 수 있어, 대안으로 ‘입력 중 표시기’를 제안했다. - 상담원은 고객이 메시지를 작성 중인지 알 수 있지만, 실제 입력 내용은 볼 수 없도록 설계해 편의성과 개인정보 보호를 절충했다. - 이 과정은 기술 내재화가 기존 기능을 그대로 복제하는 것이 아니라, 운영 효율과 보안 원칙을 재검토하는 과정임을 보여준다. ## 실용적인 시사점 자체 솔루션 전환에서는 요구 사항 문서보다 실제 사용 현장 관찰이 우선되어야 한다. 또한 기능을 그대로 옮기기보다 보안, 업무 효율, 사용자 경험을 함께 평가하고, FGT 같은 실사용 검증을 통해 출시 전에 문제를 발견하는 것이 효과적이다.

원문 읽기(새 탭에서 열림)
meta2분 읽기큐레이션 요약

릴 프렌즈: 수십억 명까지 확장 가능한 소셜 디스커버리 구축

Friend Bubbles는 친구들이 시청하거나 반응한 릴스를 강조해 보여주는 기능이다. 겉보기에는 단순하지만, 실제 구현에는 머신러닝 모델의 발전과 iOS·Android 사용자 행동 차이 분석 등 복잡한 엔지니어링 작업이 필요했다. Meta Reels 팀은 개발 과정에서 기능의 작동 방식을 결정짓는 중요한 발견을 통해 최종적인 사용자 경험을 완성했다. ### 친구 활동을 활용한 릴스 추천 - 친구들이 시청하거나 반응한 릴스에 친구 정보를 표시해 콘텐츠의 사회적 맥락을 강화한다. - 사용자는 친구들의 활동을 바탕으로 새로운 릴스를 발견할 수 있다. - 단순히 친구의 반응을 수집하는 것이 아니라, 어떤 활동을 어떤 방식으로 노출할지 결정해야 한다. ### 머신러닝 모델의 발전 - Friend Bubbles의 핵심에는 친구 활동과 콘텐츠 노출을 연결하는 머신러닝 모델이 있다. - 모델은 어떤 친구의 어떤 반응이 사용자에게 의미 있을지 판단해야 한다. - 기능 개발 과정에서 모델이 초기 형태에서 발전했으며, 데이터와 실제 사용자 행동을 반영해 개선됐다. - “친구가 반응했다”는 사실만으로는 충분하지 않고, 콘텐츠와 사용자 사이의 관련성까지 고려해야 했다. ### iOS와 Android 사용자의 행동 차이 - iOS와 Android 사용자 사이에는 릴스 소비 방식과 친구 활동에 반응하는 방식에서 차이가 나타났다. - 동일한 기능을 두 플랫폼에 제공하더라도 사용자 행동이 다르기 때문에, 플랫폼별 데이터를 별도로 분석해야 했다. - 이러한 차이는 모델 학습과 기능 설계, 노출 방식 조정에 영향을 미쳤다. ### 예상 밖의 발견과 기능 완성 - 개발팀은 초기 가정만으로는 기능이 기대한 만큼 자연스럽게 작동하지 않는 문제를 겪었다. - 사용자 행동을 분석하는 과정에서 기능의 효과를 결정하는 “놀라운 발견”을 찾아냈다. - 이 발견을 바탕으로 친구 활동과 릴스 추천의 연결 방식을 조정했고, Friend Bubbles가 의도한 사용자 경험을 구현할 수 있었다. ### 단순한 기능에 필요한 깊은 엔지니어링 - Friend Bubbles 사례는 화면에 작은 정보를 추가하는 기능도 대규모 추천 시스템과 사용자 행동 분석을 요구할 수 있음을 보여준다. - 기능 구현에는 모델 설계뿐 아니라 플랫폼별 차이, 데이터 해석, 실험과 반복 개선이 함께 필요했다. - 글의 내용은 Meta Tech Podcast에서 Facebook Reels 팀 엔지니어들이 이러한 개발 과정을 설명한다는 소개에 해당하며, 세부 구현 방식은 팟캐스트 에피소드에서 다뤄진다. 작아 보이는 사용자 기능일수록 실제로는 추천 모델, 행동 데이터, 플랫폼별 최적화가 긴밀하게 결합되어야 한다. 비슷한 기능을 개발할 때는 초기 직관에만 의존하지 말고, 실제 사용자 행동과 플랫폼별 차이를 지속적으로 검증하는 것이 중요하다.

원문 읽기(새 탭에서 열림)
discord4분 읽기큐레이션 요약

Discord 패치 노트: 2026년 5월 4일

Discord의 2026년 5월 4일 패치 노트는 성능·안정성·사용성 개선과 다양한 버그 수정을 다룬다. 특히 서버 관리 및 권한 관련 문제를 집중적으로 해결했고, Android 동영상 시작 속도와 Soundboard 접근성을 개선했다. 데스크톱 설정 구조를 단순화하고 Linux 자동 업데이트도 지원해 전반적인 사용 편의성을 높였다. ## 서버 관리와 권한 문제 개선 - 서버 관리자용 기능에서 권한, 사용자 상태, 계정 안전 기능과 관련된 여러 오류를 수정했다. - Community 설정의 “Discord 관리자 서버 참여” 팝업을 닫아도 나중에 다시 참여할 수 있도록 버튼이 사라지지 않게 했다. - 서버 부스트 결제 화면에서 `ESC`를 눌렀을 때 결제 창이 아니라 뒤쪽의 부스트 페이지가 닫히던 문제를 해결했다. - 서버 프로필 편집 중 저장하지 않은 변경 사항이 있을 때, 모달 바깥을 클릭해도 경고 없이 닫히지 않도록 동작을 개선했다. - 서버별 프로필의 대명사를 지울 때 기본 프로필의 대명사가 자동 입력되던 문제를 수정하고, 기본 대명사는 placeholder로 표시한다. - 서버별 아바타의 링크를 복사할 때 기본 프로필 아바타 링크가 복사되던 문제를 해결했다. ## Android 동영상과 모바일 성능 - Android의 동영상 전송 네트워크 스택을 추가로 조정했다. - Android에서 동영상 피드가 시작되는 속도가 약 4.89% 빨라졌으며, 평균 시작 시간이 600ms 미만으로 줄었다. - 모바일에서 검색 결과를 불러오는 중 연결이 끊겼을 때 오류 메시지가 반복 표시되거나 요청을 무한 재시도하던 문제를 수정했다. - Media, Pins, Files, Links 탭에서 네트워크 오류가 발생해도 불필요한 재시도가 반복되지 않는다. - Android 검색 필터가 활성화되어도 파란색으로 표시되지 않던 시각적 문제를 해결했다. - iOS에서 프로필 또는 앱 소개의 링크를 눌렀을 때 발생하던 충돌을 수정했다. - iOS에서 기본 프로필의 사용자 이름을 복사한 뒤 서버별 프로필 화면으로 되돌아가던 문제도 해결했다. ## 데스크톱 설정 구조 개편 - 기존 Appearance, Accessibility, Chat, Streamer Mode, Advanced 설정을 다음 세 페이지로 통합했다. - Appearance - Accessibility - Developer - 일부 설정의 배치와 문구를 명확하게 변경했다. - “Sync Themes Across My Devices”를 다시 활성화했을 때 현재 테마가 이전에 동기화된 테마로 되돌아가던 문제를 수정했다. - 최근 아바타에 마우스를 올렸을 때 삭제 버튼이 보이지 않던 문제를 해결했다. - 프로필 편집 모달의 저장 변경사항 표시줄이 Legacy Username Badge 토글과 겹치던 문제를 수정했다. - “Connect Your Domain” 화면의 버튼 간격이 지나치게 좁거나 가장자리에 붙던 레이아웃 문제를 개선했다. - 프랑스어 환경에서 Poll 검색 필터인 `sondage`가 `Son`과 `dage`로 잘못 분리되던 문제를 해결했다. ## Soundboard와 음성 채널 로딩 - Soundboard 데이터를 처음 열 때가 아니라 음성 채널에 참가할 때 미리 가져오도록 변경했다. - 그 결과 음성 통화 중 Soundboard를 처음 사용할 때의 로딩 시간이 줄었다. - 작은 로딩 속도 개선만으로도 Soundboard 효과 사용량이 측정 가능하게 증가했다고 설명한다. ## Linux 업데이트와 패키지 지원 - Windows에서 사용하던 Rust 기반 자동 업데이트 시스템을 Linux에도 적용했다. - 이제 Linux 사용자는 새 버전을 직접 내려받아 설치하지 않고 앱 자체에서 업데이트할 수 있다. - 설치 패키지 형식으로 `.rpm`과 `.pkg.tar.zst`도 추가 지원한다. ## 기타 일반 버그 수정 - “Copy Username” 기능의 `GODLIKE!!`, `BEYOND GODLIKE!!` 메시지 배경이 투명하게 보이던 문제를 수정했다. 배경색은 기존 빨간색 대신 초록색으로 통일했다. - Quick Switcher에 초대 링크를 붙여 넣으면 해당 서버에 참가하고 바로 이동할 수 있게 됐다. - Active Now 창에서 사용자 이름에 마우스를 올릴 때 상태 표시기가 흰색으로 변하던 문제를 해결했다. - 모바일 검색 결과에서 긴 닉네임이 메시지 타임스탬프를 가리던 문제를 수정했다. - Server Boost 홍보 화면의 오디오가 결제 흐름으로 이동한 뒤에도 계속 재생되던 문제를 해결했다. - 알림을 빠르게 여러 개 삭제할 때 Inbox가 충돌하던 문제를 수정했다. - Nitro 탭에서 Nitro 가입 기간 보상 배지를 눌러도 사라지지 않던 문제를 해결했다. - 구독 설정에서 `GBP` 통화명이 비어 보이던 문제를 수정했다. - Inbox의 Unreads 미리보기에서 만료된 공개 이미지 링크가 표시되지 않던 문제를 해결했다. - 친구 요청 이메일에 오래된 `#0` discriminator가 표시되던 문제를 수정했다. - Nitro 체험 대상 친구를 선택하는 체크박스가 실제로 선택되지 않던 문제를 해결했다. - 사용자 프로필에서 Custom Status 편집 창을 열 때 전체 프로필을 대체하지 않고 위에 표시되도록 변경했다. - 프로필, 서버 부스트, 검색, 알림, 결제 등 여러 화면의 모달·버튼·레이아웃 관련 세부 오류를 정리했다. ## 적용 일정과 테스트 참여 - 모든 수정 사항은 코드에 반영되고 병합되었지만, 플랫폼별로 실제 배포되는 시점은 다를 수 있다. - 사용자는 커뮤니티의 격월 버그 메가스레드에 문제를 신고할 수 있다. - iOS 사용자는 TestFlight 버전에 참여해 정식 출시 전 기능과 수정 사항을 시험할 수 있다. 이번 업데이트는 대규모 신기능보다 서버 관리자 기능의 신뢰성, 모바일 성능, 설정 탐색성, 플랫폼별 업데이트 편의성을 높이는 데 초점을 맞췄다. Discord를 관리하거나 Android·Linux·데스크톱 앱을 주로 사용하는 사용자는 업데이트 후 관련 기능의 개선 여부를 확인해 보는 것이 좋다.

원문 읽기(새 탭에서 열림)
discord4분 읽기큐레이션 요약

디스코드 패치 노트: 2026년 4월 6일

Discord의 2026년 4월 6일 패치 노트는 음성 연결 안정성, 접근성, 미디어 업로드 성능을 중심으로 다양한 개선 사항을 소개한다. 데스크톱 음성 스레드 교착 상태를 약 30% 줄였고, iOS에서는 이미지 업로드 용량과 지연 시간을 각각 약 17%, 12% 개선했다. 이 밖에도 검색, 모바일 가로 모드, AFK 감지, 계정·친구·서버 기능과 여러 UI 버그를 수정했으며, 변경 사항은 플랫폼별로 순차 배포될 수 있다. ## 음성 연결과 미디어 공유 성능 개선 - 데스크톱에서 음성 채널 접속 중 “Connecting” 상태에 멈추는 음성 스레드 교착 문제를 약 30% 감소시켰다. - iOS에서는 이미지 업로드 파일 크기를 약 17% 줄이고 업로드 지연 시간을 약 12% 단축했다. - 결과적으로 음성 채널 연결 실패와 모바일 이미지 공유 시 대기 시간이 줄어들 것으로 기대된다. ## 접근성과 모바일 화면 개선 - Discord는 대규모 접근성 감사를 계속 진행하고 있으며, 이번 패치에서도 접근성 관련 수정이 대폭 포함될 예정이라고 밝혔다. - 모바일 가로 모드에서 전체 화면에 일괄 적용하던 패딩 대신 화면별로 패딩을 계산하도록 변경했다. - 이에 따라 가로 화면에서 불필요한 크기 조정이 줄고 화면 전환이 자연스러워졌다. - 데스크톱의 키보드 포커스 링, 설정 버튼 정렬, 긴 번역 문자열로 인해 프로필 버튼이 화면 밖으로 밀려나는 문제도 수정했다. ## 검색 및 기본 기능 수정 - `has:-image`와 같은 검색 부정 연산자가 무시되던 문제를 해결했다. - 이제 이미지가 포함된 메시지를 제외하는 검색 필터가 정상적으로 동작한다. - Wayland 환경의 Linux 클라이언트에서도 AFK 상태를 올바르게 감지하고 진입·해제할 수 있게 됐다. - 서버 목록을 수동으로 재정렬할 때 Android의 스크롤 속도도 개선했다. ## 데스크톱 UI와 입력 동작 개선 - 설정 화면의 편집·녹음 키 바인드 버튼 수직 정렬 문제를 수정했다. - 최소 높이 창에서 Shop 상품 모달을 바깥 영역 클릭으로 닫을 수 없던 문제를 해결했다. - 모달이 열린 상태에서 `CMD/CTRL+F`를 누르면 서버 검색이 실행되던 문제를 수정했다. - 테마나 앱 아이콘을 선택할 때 설정 모달이 페이지 하단으로 튀던 문제를 해결했다. - 브라우저에서 Discord 링크를 열어 데스크톱 앱으로 전환할 때 현재 채널이 덮어써지던 동작을 수정했다. - 업데이트 다운로드 중 클릭할 수 있는 것처럼 보이던 아이콘과, 프로필 편집에서 자기소개 변경 사항을 제대로 초기화하지 못하던 문제도 고쳤다. - 채널 이름 입력창에 지원되지 않는 커스텀 이모지 추가 버튼이 표시되던 문제를 제거했다. ## 친구, 계정, 프로필 기능 수정 - Android QR 코드로 친구를 추가한 뒤 요청이 전송되었다는 시각적 피드백이 없던 문제를 해결했다. - 이미 친구 추천 요청을 보낸 사용자가 추천 목록에 중복 표시되던 문제를 수정했다. - iOS에서 Invisible 상태에서 다른 상태로 전환하지 못하는 문제를 해결했다. - 계정 전환 후 브라우저 스타일의 뒤로 가기·앞으로 가기 탐색이 올바르게 작동하도록 수정했다. - 프로필의 외부 링크 연결 아이콘을 잘못 표시하던 문제와, 대기 중 친구 요청에 사용자 이름이 툴팁으로 중복 표시되던 문제를 고쳤다. ## 모바일 클라이언트 수정 - Android에서 테마를 변경해도 설정 화면 일부가 즉시 갱신되지 않던 문제를 해결했다. - Android QR 로그인 화면에서 활성화된 “로그인” 버튼이 사용할 수 없는 것처럼 보이던 문제를 수정했다. - Android의 인앱 브라우저 설정이 외부 브라우저를 여는 문제를 해결했다. - iOS에서 서버를 전환할 때 채널 목록이 순간적으로 흔들리거나, 검색 결과의 봇 메시지 컨테이너 안 이미지가 지나치게 작게 표시되던 문제를 수정했다. - iOS Server Guide의 신규 회원 진행률 표시, 환영 메시지 지연, 완료 후 진행률 바가 사라지지 않는 문제를 해결했다. - Nitro Classic 구독 취소 과정에서 발생할 수 있던 iOS 충돌도 수정했다. ## 서버, 상점 및 기타 시각적 버그 - Student Hub 가입 방식 필터가 제대로 작동하지 않던 문제를 해결했다. - 서버 템플릿 미리보기에서 역할이 오래된 디자인으로 표시되던 문제를 수정했다. - 상점의 구매 완료 오류 메시지 여백, Nitro 선물 이모지 선택기의 버튼 동작, Nitro Home 카드와 배지의 겹침 문제를 개선했다. - 프로필 배너 색상이 사용자 지정 상태의 반응·답장 도구 모음에 번지던 현상을 수정했다. - 게임 오버레이 사용 중 Inbox 멘션 탭의 패딩이 잘못 표시되던 문제와 서버 초대 모달의 키보드 포커스 위치 문제도 해결했다. 이번 업데이트는 새로운 대형 기능을 추가하기보다 음성 연결 안정성, 업로드 성능, 접근성, 플랫폼별 세부 오류를 폭넓게 다듬은 유지보수 중심의 패치다. Discord 사용자는 데스크톱 음성 연결이나 iOS 이미지 업로드를 자주 이용한다면 업데이트가 적용되었는지 확인하고, 문제가 계속될 경우 공식 버그 제보 채널이나 커뮤니티 버그 메가스레드에 신고하는 것이 좋다.

원문 읽기(새 탭에서 열림)
discord4분 읽기큐레이션 요약

디스코드 패치 노트:

이번 패치 노트는 Discord의 성능, 안정성, 접근성, 사용성을 개선한 다양한 수정 사항을 소개합니다. 특히 `\@everyone`와 `\@here`가 실제 멘션을 발생시키던 문제를 서버 측에서 바로잡았고, 데스크톱 앱의 중앙 실행 시간(p50 TTI)을 11.8% 단축했습니다. 또한 iOS·Android·Desktop 전반에서 실행 지연, 탐색, UI 정렬, 권한 및 역할 관리와 관련된 버그를 폭넓게 수정했습니다. ## 멘션 처리와 알림 안정성 개선 - `\@everyone`, `\@here`처럼 이스케이프된 멘션이 클라이언트에서는 일반 텍스트처럼 보이지만, 실제 전송 시 역할 멘션을 발생시키던 문제를 수정했습니다. - 이제 백엔드에서도 이스케이프 문자를 올바르게 해석하므로 `\@everyone`은 실제 알림을 보내지 않습니다. - 대규모 서버에서 의도치 않게 많은 사용자에게 알림을 보내는 사고를 방지할 수 있게 됐습니다. ## 데스크톱 성능 향상 - API가 Desktop 클라이언트로 전달하는 payload 순서를 변경했습니다. - 그 결과 앱 실행에 걸리는 중앙값인 p50 TTI가 11.8% 감소했습니다. - 전주에 진행된 내비게이션 성능 개선과 함께 데스크톱 앱의 초기 응답성과 실행 속도를 지속적으로 개선하고 있습니다. ## 접근성 개선 - Quest, Events, Profiles, Activities, Nitro 관련 화면을 대상으로 접근성 문제를 집중적으로 수정했습니다. - 스크린 리더 사용자가 해당 화면을 더 쉽게 탐색할 수 있도록 구조와 상호작용을 개선했습니다. - 이번 패치에 나열되지 않은 접근성 수정도 별도로 계속 진행 중입니다. ## 모바일 실행 및 애니메이션 문제 수정 - iOS에서 기기 재시작 후 앱 실행에 최대 2분이 걸리던 문제를 수정했습니다. - 부팅 직후 백그라운드 큐에 몰리는 asset 요청이 앱 실행을 지연시키던 것이 원인이었습니다. - 모바일에서 채팅 전환 등 UI 애니메이션이 중간 상태에서 멈추던 문제를 해결했습니다. - iOS 26에서 전체 화면 뒤로 스와이프 제스처가 작동하지 않던 문제를 수정했습니다. - iOS 설정 화면의 과도한 자동 스크롤과 기기가 절전 모드로 진입하지 못하는 문제도 해결했습니다. - iOS 스위치의 비활성화 상태 스타일을 통일했습니다. ## 메시지, 검색 및 초대 기능 개선 - Nitro 사용자가 보낸 대용량 첨부파일을 일반 사용자가 전달하지 못하던 비의도적 제한을 제거했습니다. - League of Legends 게임 초대가 간헐적으로 작동하지 않던 문제를 수정했습니다. - 일부 게임의 Overlay용 “Join” 초대가 정상적으로 생성되지 않던 문제를 해결했습니다. - 검색 결과에서 선택 항목이 첫 번째 항목에 고정되던 문제를 수정했습니다. - 현재 보고 있는 텍스트 채널이 `Ctrl/Cmd+F` 검색어에 자동으로 입력되지 않던 문제를 해결했습니다. - 메시지 작성 중 글자 수 제한 UI가 겹쳐 이모지·표현식 선택 버튼을 가리던 문제를 수정했습니다. - 우클릭으로 링크를 복사한 뒤 키보드 단축키가 일시적으로 작동하지 않던 문제를 해결했습니다. - Quick Switcher에서 `Ctrl/Cmd+T`로 닫기가 정상 동작하도록 수정했습니다. ## 서버 관리와 역할 기능 수정 - 비공개 채널 생성 시 역할 추가 단계에서 Desktop의 “Skip” 옵션을 선택할 수 없던 문제를 해결했습니다. - 모바일에서 역할 정렬과 관리자 역할 선택 기능을 복구했습니다. - 역할이 매우 많은 서버에서도 관리자용 역할 선택기를 다시 스크롤할 수 있습니다. - Android에서 역할 색상 선택기가 정상적으로 작동하지 않던 문제를 수정했습니다. - 삭제할 수 없는 역할에 “Remove Role” 항목이 표시되던 문제를 해결했습니다. - 채널 삭제 사유가 Audit Logs에 올바르게 표시되도록 수정했습니다. - 권한 설정 삭제 시 Android 모달의 레이어 순서가 잘못 표시되던 문제를 해결했습니다. - Server Onboarding의 채널·역할 선택 메뉴가 화면 밖으로 렌더링되던 문제와 모달 내부 정렬 문제를 수정했습니다. - 서버 초대 화면에서 Android의 정보가 중복 표시되던 문제를 수정했습니다. ## UI 정렬 및 표시 문제 개선 - Android Forest 테마에서 누락된 그라디언트를 복구했습니다. - Desktop의 채널 설명 링크가 지나치게 크게 표시되던 문제를 해결했습니다. - Nitro 홈 탭 이미지, 프로필의 아바타·상태 버튼, 채널 권한의 멤버 목록과 역할 삭제 아이콘 정렬을 수정했습니다. - 민감한 콘텐츠 알림이 메시지 아래에서 오른쪽 정렬되던 문제를 바로잡았습니다. - 브라우저에 따라 서버 아이콘이 지나치게 크거나 잘못 정렬되던 문제를 해결했습니다. - 게임 프로필의 툴팁에서 링크가 잘리던 문제를 수정했습니다. - 하드웨어 가속 설정 툴팁의 여백과 정렬을 조정했습니다. - 메시지 삭제 모달의 임베드 렌더링 문제를 해결했습니다. - 행 상태 아이콘과 텍스트 사이의 정렬 문제를 수정했습니다. ## 상점, 부스트 및 기타 기능 수정 - 여러 색상 변형을 가진 모바일 상점 수집품이 일부 변형을 표시하지 않던 문제를 해결했습니다. - 이모지 한도에 도달한 서버에서 “Boost Server” 버튼이 잘못 표시되던 문제를 수정했습니다. - 키보드로 서버 부스트 레벨에 초점을 맞출 때 부스트 버튼이 제대로 렌더링되도록 개선했습니다. - 프로필의 게임 위젯에서 마우스 뒤로 가기 탐색이 정상적으로 작동하도록 수정했습니다. - 웹훅 URL을 복사할 때 시각적 확인 표시가 없던 문제를 해결했습니다. - 오래된 Media 채널 홍보 팝오버와 연결된 404 링크를 제거했습니다. - Android 서버 초대 화면의 중복 정보 표시 문제와 일부 UI 표시 오류를 수정했습니다. 이번 패치는 새로운 대형 기능을 추가하기보다, 실제 사용 중 혼란이나 오작동을 일으키던 세부 문제를 광범위하게 정리한 안정성 중심 업데이트입니다. 특히 서버 관리자라면 멘션 오작동, 역할 선택·정렬, 온보딩 메뉴 문제를 줄이기 위해 최신 버전으로 업데이트하는 것이 좋습니다.

원문 읽기(새 탭에서 열림)
daangn원문

200MB 모듈을 팀 단위로 해결하기: 당근 숏폼팀의 On-demand Dynamic Feature Module 도입 (새 탭에서 열림)

당근 숏폼팀은 글로벌 사용자에게 불필요한 용량 부담을 주지 않기 위해 비디오 편집 기능의 핵심인 네이티브 라이브러리를 On-demand Dynamic Feature Module(DFM)로 분리했습니다. 기술적 순수성보다 운영의 안정성을 택하여 코드 영역은 베이스 모듈에 유지하고 무거운 SO 파일만 선택적으로 다운로드하는 구조를 도입했으며, 이를 통해 기능의 독립성을 확보하면서도 전체 앱 용량을 효율적으로 관리하는 성과를 거두었습니다. ### 편집 기능의 비대화와 DFM 도입 배경 * 당근 스토리의 비디오 편집 기능 추가로 인해 관련 모듈 용량이 200MB까지 증가했으며, 리소스를 CDN으로 전환한 후에도 40MB라는 적지 않은 용량이 남았습니다. * 편집 기능은 전체 사용자 중 일부만 사용하며 특히 기능이 제공되지 않는 글로벌 사용자에게는 불필요한 용량이었기에, 필요한 시점에만 설치하는 On-demand DFM 방식을 선택했습니다. * 단순히 용량을 줄이는 것을 넘어, 팀 단위의 실험적 기능이 전체 앱 사용자 경험(UX)에 영향을 주지 않는 구조를 만드는 것이 핵심 목표였습니다. ### 개발 과정에서의 기술적 제약과 해결 방안 * **Hilt/DI 제약:** DFM은 컴파일 타임에 베이스 모듈과 의존성 그래프를 합칠 수 없어 일반적인 Hilt 사용이 불가능합니다. 이를 해결하기 위해 `EntryPoint` 패턴으로 베이스의 의존성을 노출하고 DFM에서 Dagger 컴포넌트를 수동으로 구성했습니다. * **SplitCompat 설정:** 별도로 설치된 DFM의 클래스와 리소스에 접근하기 위해 `SplitCompat`을 적용하여 기본 ClassLoader가 나중에 설치된 모듈을 인식할 수 있도록 조치했습니다. * **R8 난독화 관리:** DFM에만 적용된 keep 규칙으로 인해 베이스의 타입이 난독화되어 런타임 오류가 발생하는 문제를 겪었으며, 모든 중요 규칙을 베이스 모듈에서 집중 관리하는 원칙을 세웠습니다. ### 네이티브 라이브러리(SO) 관리의 복잡성 * **로딩 경로 문제:** On-demand DFM의 SO 파일은 일반 경로와 다르기 때문에 `System.loadLibrary()` 대신 `SplitInstallHelper.loadLibrary()`를 사용해야 하며, 수정 불가능한 서드파티 SDK는 베이스로 옮기는 등 전략적 배치가 필요했습니다. * **STL 충돌과 메모리 이슈:** 여러 모듈이 `libc++_shared.so`를 공유할 때 발생하는 심볼 충돌과 메모리 오염을 방지하기 위해, 베이스 모듈에서 특정 SO를 제외하거나 `pickFirsts` 설정을 통해 버전 정합성을 맞추었습니다. * **ABI 필터 일치:** 베이스와 DFM 모듈 간의 지원 ABI 세트가 다르면 빌드 자체가 실패하므로 모든 모듈의 `ndk.abiFilters`를 동일하게 정렬했습니다. ### 실용적인 결론: SO 파일 중심의 DFM 구조 * 모든 코드를 분리하는 대신, 용량의 90% 이상을 차지하는 SO 파일만 DFM으로 옮기고 비즈니스 로직은 베이스 모듈에 남기는 실용적인 노선을 택했습니다. * 기능 코드가 베이스에 있으므로 DFM 로딩에 실패하더라도 앱이 강제 종료되지 않고 사용자에게 적절한 안내를 보여줄 수 있어 운영 안정성이 크게 향상되었습니다. * 로컬 개발 시 DFM 설치 여부를 신경 쓰지 않아도 되어 디버깅 효율이 높아졌으며, 결과적으로 대규모 앱에서 팀 단위 실험을 안전하게 진행할 수 있는 기반을 마련했습니다. **추천:** 대규모 앱에서 특정 국가나 특정 사용자에게만 제공되는 무거운 기능을 개발 중이라면, 전체 아키텍처를 분리하느라 고생하기보다 용량의 핵심이 되는 에셋이나 네이티브 라이브러리만 On-demand로 분리하는 방식을 우선적으로 고려해 보시기 바랍니다.

discord4분 읽기큐레이션 요약

디스코드 패치 노트: 20

Discord의 2026년 2월 4일 패치는 데스크톱 렌더링 성능, 스트리밍 사용성, 모바일 안정성, 권한 관리 등을 폭넓게 개선했다. 특히 느린 CSS 선택자를 최적화해 화면 이동과 상호작용 지연을 크게 줄였고, 화면 공유 확대·이동과 `@time` 명령어 같은 기능을 추가했다. 또한 오디오·비디오 백엔드의 Rust 이전이 80% 이상 진행됐으며, 다양한 플랫폼별 버그도 수정했다. ## 데스크톱 성능과 스트리밍 개선 - 데스크톱 렌더링 성능을 크게 향상해 메뉴 탐색과 앱 조작 시 지연을 줄였다. - 성능 저하의 주요 원인은 느린 엔드포인트나 컴포넌트가 아니라 비효율적인 CSS 선택자로 확인됐다. - 화면 공유 및 게임 스트림에서 마우스 휠이나 트랙패드로 확대·축소와 화면 이동이 가능해졌다. - 스트리밍 시작 과정의 미리보기 로딩 시간을 단축했다. - 프로필 편집 중 `Esc`를 눌러도 전체 프로필 편집 모달이 닫히지 않도록 수정했다. - 선택 항목이 없을 때 복사 단축키를 누르면 클립보드가 비워지던 문제를 해결했다. ## 모바일 기능 및 플랫폼별 수정 - Android 그룹 DM 알림에 발신자 이름 대신 그룹 이름이 표시되도록 변경해 iOS와 동작을 통일했다. - Android에서 여러 오디오 트랙이 포함된 동영상이 정상적으로 재생되도록 수정했다. - iOS의 클라이언트 테마 목록을 스와이프할 때 지나치게 빠르게 스크롤되던 문제를 해결했다. - Android에서 불필요한 하단 바가 표시되어 상호작용을 막던 문제를 수정했다. - iOS 및 Android 연결 설정의 버튼 정렬 문제를 해결했다. - 일부 Android 기기에서 Shop이 한 열로만 표시되던 문제를 수정했다. - iOS에서 GIF 선택기로 새 아바타를 설정할 때 정지 이미지로 저장되던 문제를 해결했다. - 모바일의 채널 탐색 기능은 베타 상태를 종료하고 정식 기능으로 전환됐다. ## 서버 권한과 커뮤니티 관리 - 신뢰할 수 있는 사용자에게 부여할 수 있는 `Bypass Slowmode` 권한을 추가했다. - 이 권한을 기존 역할과 연결하는 설정이 2월 23일까지 서버 관리자에게 제공될 예정이다. - 역할 멘션을 클릭해 해당 역할을 가진 사용자 목록을 확인하는 기능이 모든 안정화 버전에 적용됐다. - 서버 초대 모달이 사용자명뿐 아니라 표시 이름도 지원하도록 개선됐다. - 서버 태그가 데스크톱 프로필 미리보기에 올바르게 반영되도록 수정했다. - 역할 선택 필드가 투명하게 표시되던 문제와 서버 설정의 이모지 영역 정렬 문제를 해결했다. ## 오디오·비디오 백엔드의 Rust 전환 - Discord는 지난 1년간 오디오·비디오 백엔드를 Rust로 이전해 왔다. - 현재 전체 트래픽의 80% 이상이 새로운 Rust 기반 백엔드에서 처리된다. - 이번 패치에서는 이 마이그레이션이 상당히 진행되었음을 강조하며, 성능과 안정성 개선의 기반으로 제시했다. ## 시간 표시와 기타 사용성 개선 - 데스크톱에서 새로운 `@time` 명령어를 제공한다. - 사용자가 특정 시각을 입력하면 Discord가 Linux 타임스탬프를 생성하고, 보는 사람의 시간대에 맞춰 자동으로 표시한다. - `Ctrl+Alt+Shift+W` 또는 macOS의 `Cmd+Option+Shift+W`로 Vibing Wumpus 2.0을 실행할 수 있다. - 로그아웃할 때 재생 중인 음성 메시지가 정상적으로 중지되도록 수정했다. - 친구 요청을 무시한 뒤 DM 화면의 버튼이 “친구 요청 수락”에서 “친구 추가”로 올바르게 변경된다. - 이벤트 미리보기에서 Markdown이 정상적으로 렌더링된다. - 이벤트 진행 중에는 오류를 유발할 수 있는 “관심 있음” 버튼이 표시되지 않도록 수정했다. ## 프로필, 채널, 메시지 관련 버그 수정 - 프로필의 “About Me”를 편집할 때 커서가 부적절하게 텍스트 끝으로 이동하던 문제를 해결했다. - 서버별 프로필 편집 중 아바타 장식이 제대로 렌더링되지 않던 문제를 수정했다. - 프로필 테마 그라디언트가 모달 전체를 채우지 못하던 문제를 해결했다. - 매우 긴 포럼 채널 설명 때문에 채널 탐색 화면이 흔들리던 문제를 수정했다. - 서버 멤버 메뉴의 열 정렬 문제를 해결했다. - 포럼 채널이 포함된 온보딩 작업에서 UI 요소가 겹치던 문제를 수정했다. - 이모지 편집 시 “완료” 버튼을 빠르게 두 번 누르면 이모지가 중복되던 문제를 해결했다. - 서버에 텍스트 채널이 없는 상태에서 스티커의 관련 이모지를 클릭하면 클라이언트가 충돌하던 문제를 수정했다. - 받은 선물 모달이 두 번 나타나는 문제를 해결했다. - 데스크톱 받은편지함의 필터가 작동하지 않던 문제를 수정했다. ## 안정성 및 인터페이스 개선 - 특정 메뉴를 탐색할 때 클라이언트가 잠기는 문제를 해결했다. - Checkpoint 모달이 중복 표시되어 작업이 두 번 로드될 수 있던 문제를 수정했다. - F10 이후 기능 키가 UI에 `0`으로 표시되고 저장되지 않던 문제를 해결했다. - 위험할 수 있는 다운로드 모달의 버튼 간 여백을 조정했다. - 모바일의 커뮤니티 활성화 화면이 제대로 표시되지 않던 문제를 수정했다. - iOS에서 채널 카테고리가 읽지 않은 채널처럼 보이던 스타일 문제를 해결했다. - 데스크톱의 서버 설정 이모지 영역, 역할 선택 영역 등 여러 UI 정렬과 여백을 개선했다. - 모든 수정 사항은 코드에 반영됐지만 플랫폼별 배포는 단계적으로 진행될 수 있다. 이번 업데이트는 새로운 대형 기능보다는 성능과 안정성, 플랫폼 간 동작 통일에 초점을 맞췄다. 특히 데스크톱 사용자는 렌더링 지연 감소를, 스트리밍 사용자는 화면 확대·이동과 빠른 미리보기를, 서버 관리자는 `Bypass Slowmode` 권한을 우선 확인할 만하다.

원문 읽기(새 탭에서 열림)