Mabadiliko
Nini kipya.
Kila kuboresha jukwaa, kama ni meli.
· kamo-shared-library
Add BranchTitleResolution, resolveEffectiveBranchTitles, updateBranchTitles
· SecurityService
Store branchTitlePlural/NonPlural in Redis session
· kamo-shared-library
Add branchTitle fields to Organization
· kamo-internal
Increase avatar Size slider max from 140% to 250%
· kamo-internal
Add resolveCollisions useCallback
Detects head-to-head and head-to-toolWindow spatial violations and moves offending heads to the nearest clean position via spiralSearch. Must be called via double-rAF to avoid reading mid-animation MotionValue positions.
· kamo-internal
Add MIN_GAP constant and spiralSearch helper
Adds the 5px minimum gap invariant constant and a spiral-search function that finds the nearest collision-free pixel position for a hexhead, checking head-to-head and head-to-toolWindow clearance.
· kamo-internal
Add status/substatus widget to lead view tab bar
- Extract LEAD_STATUS_TYPES, getStatusIcon, getSubStatusIcon to shared app/lib/leadStatuses.tsx utility; update LeadManager to import from it - Add inline status/substatus display (with icons) right-aligned in the tab bar on the lead view page, tabs remain left-aligned - Add edit mode with cascading status/substatus dropdowns (icons in options), Save/Cancel buttons; substatus required before saving; changing status resets substatus selection
· kamo-internal
Rewrite HexHead system with framer-motion physics
Replace the broken 1800-line HexHeadGroup with a clean physics-based implementation using framer-motion springs and motion values. Key changes: - Remove wiggle/fidget swarm detection (too sensitive, unreliable) → Replaced with deliberate 500ms hold-to-swarm gesture - Remove complex collision resolution, spiral fallback, resolveOverlaps, **************** and all multi-pass overlap logic - Remove layoutMode state and makeRoom nudge system - Instant snap-to-slot on release near any head (flat-top hex geometry, nearest free axial slot, stiffness 800 spring = feels instant but alive) - Groups drive followers via RAF loop calling animate() with organic spring (stiffness 400) — loose, trailing group feel during anchor drag - Chat window docking via separate dock RAF loop watching window bounding rect — group follows window edge when it moves - Home row auto-arrangement (spring fly-in) for all free heads - New HexHeadSpring.tsx: thin motion wrapper with isSnapping pulse animation and isHoldReady ring-pulse animation - HexHead.tsx: unchanged - Zero new dependencies (framer-motion already installed at v12) - Fixes TS1128 build errors in old implementation
· kamo-internal
Flat-top honeycomb layout, 5px gaps, cluster-aware groups, tool window relayout
HexHeadGroup: - Switch to flat-top hex geometry (HEX_INRADIUS/HEX_STEP) — hexes now share flat top/bottom edges with adjacent group members, giving a proper honeycomb look with the existing hex polygon shape - HONEYCOMB_PADDING, GAP, SAFE_GAP all reduced to 5px (was 12px) - OCCUPY_DISTANCE = HEX_STEP (~67px) — correctly uses actual flat-top center distance so ring-1 honeycomb seats are never falsely rejected - axialToPixel updated to flat-top formula (r = column axis, q = diagonal) - findClusterIds: BFS proximity helper scopes swarm to one spatial cluster, so independent groups remain independent during jiggle/swarm - computeHoneycombOffsets now limits followers to the anchor's cluster only - recompactClusters: after a single-head drag, finds remaining clusters and re-seats each in a proper honeycomb around its centroid; also merges two groups when they are dropped on or near each other - Edge docking (right/bottom edge) only triggers when a group (swarm) is dragged there; single-head drags no longer force all heads to the edge - Swarm edge-dock passes swarm member IDs so only that group docks, not unrelated groups elsewhere on screen ToolWindowsContext: - GUTTER 8→5, PADDING_RIGHT 16→5 (5px gap between windows and from edge) - relayoutWindows: deterministic right-to-left slot assignment respecting member-panel offset; replaces ad-hoc per-event calculations - Called on every state change: open, close, minimize, un-minimize, maximize, member-panel-toggle, and viewport resize — windows always stay tight
· kamo-internal
Persist tool windows across navigation — Layer 1 guard + ToolProviders wiring
· kamo-internal
Add ToolProviders client wrapper for root layout
· kamo-internal
Add ToolWindowsContext for persistent tool window state
· kamo-internal
Add chat toolbar with call controls, live search, and smart auto-scroll
Move call buttons from header to dedicated toolbar row with 50% lighter background. Add live search field that highlights matches and auto-scrolls to most recent result. Add scroll-to-bottom button that clears search. Implement smart auto-scroll that stops following when user scrolls up and resumes when scrolled back to bottom.
· kamo-internal
Softphone dial pad shorter, chat call controls, hexhead avatars, calc light theme
- Reduce softphone dialpad button padding from 12px to 9px (6px shorter) - Add call controls toolbar (audio, video, screen share) to ChatBox in embedded mode so they appear below the ToolWindowShell header - Fix hexhead avatar fetch: pass memberId to spawn event so HexHeadGroup uses the real member ID instead of window ID for avatar lookup - Restyle calculator to match chat/softphone light theme: white backgrounds, primary color accents, readable text on light surfaces across all modes
· kamo-internal
Unify tool window dimensions and refine UI
- All tools now share uniform 320x650 size (softphone 25% taller, others match) - Remove programmer and graphing calculator modes from UI (components retained) - Chat hexheads use avatar variant with user photos instead of icon variant - Tool window bottom corners are now square (top corners remain rounded)
· kamo-internal
Add ChatNotificationListener for incoming message auto-open
· kamo-internal
Add CalculatorTool with mode switching and register it
· kamo-internal
Add ScientificMode calculator component
Expression-based scientific calculator with live result preview. Supports trig (sin/cos/tan + inverses), log/ln, powers (x², x³, x^y, eˣ, 10ˣ), roots (√, ∛), factorial (n!), constants (π, e, φ), parentheses, DEG/RAD toggle, and M+/M-/MR/MC memory. Keyboard input for digits, operators, Enter/=, Escape and Backspace. Uses the safe recursive-descent evaluateExpression parser.
· kamo-internal
Add GraphingMode calculator with canvas plotting
· kamo-internal
Add CurrencyConverterMode calculator component
· kamo-internal
Add UnitConverterMode calculator component
· kamo-internal
Add ProgrammerMode calculator component
· kamo-internal
Add SimpleMode calculator component
· kamo-internal
Add premium calculator styling constants
· kamo-internal
Replace AuthenticatedChatWrapper with AuthenticatedToolWrapper, remove ChatDock
· kamo-internal
Add softphone and calculator buttons to NavTop
· kamo-internal
Migrate hexchat:open to tool:open, add call-initiation listener
· kamo-internal
Extract softphone into standalone tool, remove from ChatBox
· kamo-internal
Register chat as a tool
Register the chat tool definition with id 'chat', using ChatTool as the component, ChatBubbleIcon, indigo gradient hex head style, 320x360 default size, and unlimited instances.
· kamo-internal
Add ChatTool adapter with embedded mode for ChatBox
- Create ChatTool adapter that wraps ChatBox for the tool system - ChatTool handles avatar fetching and session creation (previously done by ChatDock) - Add embedded prop to ChatBoxProps; when true, skip window chrome (fixed positioning, header, animations) and render as a plain flex container filling its parent

Ulimwengu wako unasubiri.
Kuanza bure katika dakika. Ongeza bidhaa wakati wowote wewe ni tayari - hakuna uhamiaji, hakuna logins mpya.
Bure milele - hakuna kadi ya mkopo inahitajika