Provider save for non-configurable types and mailbox member email mapping
**************** selections now immediately persist via saveProvider API instead of only updating local state. Mailboxes tab now correctly extracts emailAddress...
PRE TICKET DB 제약 + 재설계 작성 양식
- ordinal 14을 허용하기 위해 support ticket.status에 고정된 CHECK 제약 - 현대 카드 기반 UI를 가진 Redesigned TicketCreationForm: - "어떻게 도와드릴까요?" - "Chat with Support" 카드 (기본, 강조) - 사...
{ 화제: [...]에서 주제 배열 추출 API 응답
GET /api/support/topics endpoint 반환 { 주제: [...] }, 아니 원료 배열. 모든 소비자는 이제 배열을 사용하기 전에 data.topics를 추출합니다.
오류 및 404 페이지의 지원 도구 창 열기
이전 /help/ticket/new 탐색을 도구로 바꾸기:Open CustomEvent 지원 팝업 창을 직접 엽니 다.
생성에 대한 구성원에 대한 기본 역할 할당
*********** 이제 "Members"를 할당합니다. (모두) 조직의 역할.roleMemberID. *********** 이제 모두 할당 "회원"(모두) 역할과 "팀 회원" 역할에서 조직.roleTeamMemberID. 이것은 빈 member rights applied의 뿌리 ...
Recalculate member_rights_applied after role create/update/delete
The member_rights_applied table was never recalculated when roles were modified, causing all members to have 0 applied rights. Now calls **************** after ...
TopicManager에서 부서 로딩
X-***-Token 헤더(matching DepartmentManager pattern) 및 data.departments 응답 모양에서 부를 추출하십시오.
.map 오류를 방지하기 위해 API 응답에 Array.isArray 가드 추가
API는 backend table 대신 배열 대신 오류 객체를 반환할 수 있습니다. 아직 없습니다. Array.isArray 체크와 모든 배열 작업을 감시합니다.
Enable redirect following for MaxMind download
MaxMind returns 302 redirect to the actual file. HttpClient wasn't following it, causing the sync to fail with HTTP 302.
Add SecurityConfig to permit daemon trigger and actuator endpoints
Spring Security defaults blocked all endpoints with 401. Added explicit config to permit /api/daemon/** and /actuator/** without authentication.
Update ticket popup tool window to use light theme matching chatColors
Replace dark theme (dark backgrounds, white text, amber accents) with the light color scheme used by all other popup tool windows in the app.
Remove MANAGE_SUPPORT conditional from settings/analytics tabs, enable NavPri slide-out
All tabs now always visible. Removed disablePanel from NavPri Support entry so the slide-out panel works on hover.
Make description textarea fill remaining popup window height
Removed minRows/maxRows constraints and set flex layout on the input root so the textarea expands to fill all available vertical space.
Correct MediaObjImg 합성 키 대신 MediaObjImg UUID PK를 사용하는 FK
복합 FK (OBJ ID, IMG ID)는 유형의 비 PK 열을 참조 mismatch (uuid 대 int). OBJ IMG ID 참조에 단일 FK 변경 MediaObjImg.ID (UUID PK).
Hibernate EXTRACT (EPOCH) 제한을 피하기 위해 avg 해상도 시간의 기본 쿼리를 사용합니다
Hibernate 6은 EXTRACT (EPOCH ...에서)를 배회할 수 없습니다. (기간 유형, TEMPORAL). 기본 SQL 쿼리로 전환 CockroachDB는 기본적으로 처리합니다.
Redesign AI processing toggle as labeled switch with Assistant icon
Replace icon button with a toggle switch using the MUI Assistant icon, labeled "Train AI With This Note". Moved to the left of the save button. Renamed "Create"...
Add filter toggle button to notes header
The sidebar collapse button was hidden behind the app's left nav bar. Replaced it with a filter icon toggle in the NotesHeader that is always accessible regardl...
Transparent server-side encryption with stable master key
- Add permanent notes.master-encryption-key to ConfigMap (was generating a random key on each pod restart, making old notes undecryptable) - Always encrypt ...
Clear undecryptable note content and disable encryption flag
When server-side decryption fails (corrupted data or key mismatch), clear the content and set isEncrypted=false on the entity so the note stops showing cipherte...
Decrypt encrypted notes in getAllNotes and searchNotes responses
getAllNotes and searchNotes were returning raw encrypted content for notes with isEncrypted=true. Now decrypts content server-side before returning, matching th...
Extract plain text from Lexical JSON for note card previews
The note content is now Lexical JSON, not HTML. The preview function was falling back to stripHtml which dumped raw JSON as the preview. Now parses Lexical JSON...
JavaScript 정밀 안전에 대한 문자열로 NoteDTO Long ID를 직렬화
CockroachDB unique rowid() ID는 JavaScript의 MAX SAFE INTEGER를 초과합니다. 숫자로 파싱될 때 정밀도 손실. 추가 @JsonSerialize 와 ToStringSerializer to id and userId 필드 그래서 그들은 직렬화 JSO...
Rewrite GeoLite sync — correct download URL, streaming hash, batch inserts
- Use MaxMind's current permalink API with HTTP Basic Auth (account-id + license-key) - Streaming SHA-256 instead of Files.readAllBytes (prevents OOM on 100MB+ ...
Forward raw JSON responses in notes API routes to preserve ID precision
CockroachDB unique_rowid() IDs exceed JavaScript's MAX_SAFE_INTEGER. The previous response.json() + NextResponse.json() round-trip caused JSON.parse to convert ...
Improve notes save flow — keep editor open, show actual errors
- Don't close the editor after saving an existing note (only close after creating a new one) - Fix fetchWithAuth to read error.error instead of error.message ...
Open notes directly on click, derive categories from data, remove encryption
- Click a note to open it directly in the editor instead of making a separate API call that was failing - Derive categories and tags from loaded notes data in...
Use OTKPreAuthFilter attributes instead of re-validating OTK in NotesController
The OTKPreAuthFilter already consumes and validates the OTK, storing the session data in request attributes. NotesController was trying to re-validate the alrea...
Explicitly forward visitor IP to downstream services
ForwardedHeaderFilter consumes X-Forwarded-For from the incoming request, so when APIService forwards to SecurityService via RestTemplate the header is missing....
Resolve notes page load failure and replace Quill editor with Lexical
Add missing runtime/dynamic exports to all notes API routes to enable proper OTK authentication. Replace React Quill WYSIWYG editor with the same Lexical-based ...
Forward visitor IP/User-Agent to backend, add duration unit picker
apiProxy: Now forwards X-Forwarded-For and User-Agent from the original visitor so backend logs the real client info instead of the Next.js server. AccessBlock...
Remove RoleRightsSyncRunner — rights are added manually for existing orgs
The underlying bug in **************** (detached entity issue) has been fixed in kamo-shared-library. New rights for existing roles will be added manually via S...
CreateOrganization의 역할 권한을 만들 때 관리 된 역할 참조
OrganizationRepository.save() 후, 로컬 roleAdmin/roleEveryone 변수는 persistence context에서 분리 될 수 있습니다. createRoleRights()을 OrgRoleRight 항목을 detached 객체에 추가했습니다. 나중에 ...
Restore permission gate on AccessBlockManager
Re-adds the MANAGE_ACCESS_RULES permission check that was incorrectly removed. The underlying issue (admin roles missing new rights) is fixed by KamoInitializer...
Remove full-component permission gate from AccessBlockManager
New rights aren't assigned to any role yet, blocking all users. Other security settings tabs (API Access, OAuth2, System Debug) don't have permission gates — fo...
Remove GD check from ****************
The sed command that added the god-mode bypass incorrectly inserted it into all methods containing sessionData, not just hasRight. This caused 'return true' (bo...
Initialize god mode state synchronously from localStorage
isGodMode was initialized as false and only loaded from localStorage in a useEffect (after first render), so checkRight() returned false on initial render even ...
Allow god-mode-active users to bypass right checks in checkRight
New security rights aren't assigned to any role yet, causing all users to be denied. God-mode-active users now pass all checkRight() calls.
Allow god-eligible users to bypass access security permission checks
New rights (MANAGE_ACCESS_RULES, VIEW_ACCESS_LOGS, etc.) aren't granted to any existing role yet, so all users get Forbidden. God-eligible users (GD=true in ses...
Move AccessEnforcementFilter to scanned package, revert ComponentScan
The widened @ComponentScan caused a corsFilter bean conflict between CorsConfig and WebConfig. Moved the filter into com.kamo.api.app.config (already scanned by...
Add Redis connection config to K8s configmap
APIService pod was failing to start because spring-boot-starter-data-redis auto-configuration couldn't connect to Redis at localhost:6379. Points to redis.kamo....
Show KB nav item unconditionally in sidebar
Removed the isKnowledgeBase feature gate so KB always displays, matching the previous NavTop behavior.
GradientMeshBackground orbs 제거 마우스 코더를 따르는
파란색과 보라색 레이디얼 그라디언트 서클이 연출되었습니다. GradientMeshBackground 구성 요소 추적 마우스 위치.
불꽃과 스크롤 입자 파열 애니메이션 제거
영웅, 기능, 가격, 그리고 SignupSection. ScrollParticleBurstEnhanced 불꽃 애니메이션 제거 본문 바로가기.
단계 전환에 첫 번째 키 입력 드롭에서 암호 입력을 방지
초점 파싱 루프는 setSelectionRange(0, 길이)를 호출하여 50ms마다 호출되었습니다. 1.2s의 경우 어떤 유형의 문자를 선택하여 다음 키 입력을 대체 그것은. 이제 사용자 입력을 추적하고 브라우저 autofill에 대한 텍스트 만 선택합니다.
Replace broken Anthropic, OpenRouter, and xAI logo SVGs
The original files were 404 placeholders (14 bytes). Replaced with proper SVG logos from Simple Icons.
끊긴 Anthropic, OpenRouter 및 xAI 로고 SVGs를 대체하십시오
Kamo-internal의 원래 파일은 404 위주자 (14 바이트)이었다. 간단한 아이콘에서 적절한 SVG 로고로 교체.
