Перейти к содержимому
KAMOUniverse

Журнал изменений

Что нового.

Каждое усовершенствование платформы, как только она появится.

  1. · kamo-marketing

    Польский видеогерой с современной анимацией и оптимизацией

    Добавьте изображение плаката для мгновенной визуальной обратной связи во время загрузки видео - Реализация загрузки скелета с пульсирующей анимацией - Запуск видео приглушен (соответствие политике автоматического воспроизведения браузера) - Добавить preload="metadata" для эффективной загрузки видео - Улучшение укладки кнопок: больший (h-12 w-12), лучший радиус границы (округленный-xl) Улучшение тени с эффектом двойного слоя (24px + 8px) - Внедрение плавной анимации контейнера (0.8s easyOut) - Добавить AnimatePresence для плавных переходов немых / немых значков - Усиление эффектов наведения с помощью масштаба, тени и фоновых переходов - Добавить анимацию для тактильной обратной связи (шкала 0,95) - Отслеживание состояния загрузки видео для плавных переходов непрозрачности

  2. · KlusterServices

    KAMOTEAM делится папкой на каждом рабочем столе

    desktop-1 размещает /srv/kamoteam и экспортирует его через NFSv4; каждый пользователь VM получает / Рабочий стол / Kamoteam как symlink (через /etc/skel для новых счетов и агента) для существующих/принятых), и рабочая станция монтирует один и тот же каталог. ВМ хранит данные, потому что это всегда на стороне - рабочая станция - это Ноутбук WiFi на DHCP, поэтому на хостинге выпадет папка для пользователей VM Время, когда он спит и ломает их крепление, когда его адрес перемещается. Полное чтение / запись требует трех вещей вместе, и опущение любого дает долю. что выглядит правильно, пока второй человек не напишет: группа камотеам, сетгид плюс DEFAULT POSIX ACL (без 022 umask файлы пользователя могут быть прочитаны). все остальные), и NFS all squash к фиксированной идентичности, так что uid рабочей станции 1000 не рассматривается как uid 1000. Только NFSv4: один порт, без rpcbind, что делает его пересылаемым через Маскарад KubeVirt. Об этом сообщает NodePort 32049.

  3. · kamo-marketing

    Замените текстовый блок героя промо-видео

    Поменяйте копию героя главной страницы, CTA и статистику на приглушенное видео, сохраняя вращающийся фон.

  4. · KlusterServices

    Предупреждение о OOMKills и о занимаемой должности, которая им предшествует

    Ничто не следило за памятью. «МедиаСервис» убивали каждые несколько часов шесть раз в день и шесть раз в EmailService, и то, как кто-то узнал, было чатом. Окно, которое тихо перестало загружать сообщения — контейнер погибает Перезапуск внутри секунды читается как сломанная функция, а не как отключение. Три правила. ContainerOOMKilled Fires on the Event; ContainerOOMKillLoop Отделяет один раз от стручки, убиваемой неоднократно, которая быстро перезапускается Достаточно показать 1/1 бег. ContainerMemoryNearLimit - это тот, который Поймали эти дни раньше: >85% от лимита держали в течение 30 минут. Для JVM на MaxRAMPercentage, который не является занятой капсулой, это капсула, сидящая на своем кучном потолке с не кучей, сложенной сверху, которая является устойчивым состоянием непосредственно перед Ядро вмешается. Четвертый, информационный, флаги контейнеров без ограничения на Все они не могут быть OOMKilled своей собственной группой, но могут взять узел вниз. Проверено на реальных данных, а не предполагаемых: выражения были оценены на этом кластере, и запрос последних 12 часов показывает причину = "OOMKilled" для точно kamowsemail (18:33-01:28 UTC) и kamowsmedia (21:28-01:03 UTC) — Две группы, которые потерпели неудачу. Правила стали бы критическими для обоих. Предупреждение, которое бесшумно не соответствует ничему, является той же неудачей, что и отсутствие предупреждения. Проверка имела большее значение, чем ЯМЛ. Применяется вручную; мониторинг / не является целью CI.

  5. · KlusterServices

    Блокировать исходящий SSH, кроме шалфея, разрешать k1m1/k3m1, связывать агент dir

    Исходящий tcp/22 отклоняется для каждого uid, кроме корня и шалфея, нажатого на розетку Таким образом, будущие счета покрываются без повторного запуска чего-либо. Повторное применение в Загрузка системным блоком, поскольку правила nftables не выдерживают перезагрузку. Это а ограждение, а не граница: у Камодева есть беспарольное sudo apt, которое корневой эквивалент — два требования находятся в напряжении, и это документально подтверждено. k1m1/k3m1 хост-записи идут в облако-init TEMPLATE, а также /etc/hosts, потому что manage etc hosts регенерирует файл на каждой загрузке и простое приложение бесшумно исчезает. Использует IP-адреса LAN; наложения WireGuard / CGNAT удаляются и 10.0.50.1 - это только связь между узлами. Cloud-init теперь переносит рабочий стол / агент / в качестве одного детерминированного тарбола, а не в качестве тарбола. заполнитель на файл — набор шел от трех файлов до десяти, и каждое дополнение В противном случае подразумевалось редактирование шаблона и шаг CI-рендеринга.

  6. · KlusterServices

    Стандартная цепочка инструментов, контакты панели задач и беспарольные установки для всех пользователей

    Добавить krita и maven ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** Прикрепляет Chrome, VS Code, Kate, Spectacle и Krita к панели задач для каждого пользователя. и позволяет пользователям dev устанавливать программное обеспечение без пароля администратора. Установка без пароля нуждается в обеих половинках: злоумышленники покрывают терминал охватывает Discover и любой другой графический установщик. Упаковано в пакет управление через группу Камодева, а не через общий корень — см. комментарии в разделе Каждый файл объясняет, почему это меньший радиус взрыва, но не граница безопасности. Taskbar: новые учетные записи наследуют шаблон от /etc/skel в пользовательское время; Существующие учетные записи получают только свои пусковые установки = строка переписана, поэтому Панель не выбрасывается, чтобы исправить список иконок.

  7. · kamo-internal

    Введите значок рабочего стола Linux в положение, а не в бога

    Иконка теперь появляется именно тогда, когда связь за ней будет работать — ССО Конечная точка применяет одно и то же правило, поэтому они не могут не согласиться. Windows и Master У них есть одна общая черта, поэтому они остаются в Боге.

  8. · kamo-internal

    Диалог Dev Machine на карте администратора

    Держите три государства друг от друга, что один переключатель рухнет: никогда не предусмотрено (нужен пароль), обеспеченный, но заблокированный (нужен только переключатель) и неисправный (необходимы ошибка и повторение). Коммутатор не может придумать пароль, который никто не выбрал.

  9. · kamo-internal

    Клиентский модуль и маршруты прокси

    *** пересылается явно — buildForwardHeaders устанавливает X-OTK, но не Токен сеанса, и конечные точки разработчика-машины устраняют абонента от него. Сегмент действия проверяется по фиксированному набору, а не проходит через него.

  10. · SecurityService

    Личные учетные данные SSO и предполет, который объясняет неудачи

    Linux защищен включенным положением, а не богом, и обслуживается Собственные полномочия члена. Соединение полностью исключается из токена, когда У них их нет — они предлагают то, что будет отвергнуто, как у Гуакамоле. Общая ошибка, которая является бездействием, устраняется.

  11. · SecurityService

    Dev Machine Service и контроллеры

    Имя пользователя происходит от электронной почты участника ACCOUNT, а не от рабочего электронного письма TeamMember. рабочий адрес может сидеть на другом домене и молча создавать другой Фамилия счета. Пароль сброса требует, чтобы GD и GodModeActive были вместе.

  12. · SecurityService

    HTTP-клиент для агента резервирования машины dev

    здоровье () проглатывает транспортные сбои и отвечает ложно, чтобы предполет SSO мог Возврат 503, а не 500.

  13. · SecurityService

    Секретный кодек AES-GCM и вывод имени пользователя POSIX

    Codec намеренно обратим - автологину RDP нужен реальный пароль - и использует GCM, поэтому неправильный или неправильный ряд клавиш громко выходит из строя, а не расшифровывается Шум, который будет передан Гуакамоле.

  14. · kamo-shared-library

    Dev machine accounts entity, status enum and repository

    статус и включенные намеренно отделены: учетная запись с резервированием, но с отключением сохраняет свой домашний каталог, поэтому восстановление доступа вместо восстановления.

  15. · KlusterServices

    Секреты агента в CI, живость гуакамоле, оповещения о доступности

    Боевые выражения, проверенные против живого Прометея. Использование kube-state-метрики Вместо kubevirt * — конечная точка метрики KubeVirt здесь не соскабливается. Правила, написанные против него, будут читаться как освещение, но никогда не увольняются. селектор Ярлык release=kps соответствует правилу Prometheus CR. Секретная обработка выполняется с xtrace, поэтому значения не попадают в журнал CI.

  16. · KlusterServices

    Idempotent Agent Installer, совместно используемый облачными и живыми установками

    Устанавливается под /opt/kamo-desktop-agent, поэтому install-agent.sh имеет отдельный источник и пункт назначения. Охватывает netplan-by-driver, отключение облачной сети, xrdp сессионная политика, /etc/skel/.xsession и сам агент.

  17. · KlusterServices

    Добавить агент снабжения и его единичные испытания

    Python 3 Stdlib. Каждая мутация выполняет подпроцесс со списком argv. строка оболочки; пароли идут в chpasswd на stdin, чтобы они оставались вне /proc.

  18. · SecurityService

    Отправляйте int64 ids в браузер в виде строк, не касаясь сеансов

    CockroachDB unique rowid() ids - 19 цифр, прошедшее число. MAX SAFE INTEGER, таким образом Отправленный как номер JSON поступает в браузер с округленными низкими цифрами и каждым Поиск, сделанный с ним, промахивается. 163 ответа обработчика помещают сырой Long org и идентификаторы членов в Специальные карты, так что это не было чем-то, что можно было бы закрыть. Причина, по которой он оставался открытым, заключается в том, что очевидное исправление приводит к падению платформы. картограф что служит ответами это тот же боб KSessionService пишет *** сессионную карту Redis with, and ids read back out of this map by ((Number)....longValue() -- 65) время в этом сервисе и снова в DocsService, MediaService и ConversionService, которые читают ту же полезную нагрузку. Дальше процитирую эту фасоль и все эти броски. Таким образом, правило прикрепляется к конвертерам сообщений MVC вместо этого на копии. Ответы получают сессии, издатели NATS и клиенты службы обслуживания сохраняют числовой картограф Они всегда были. Это также не одеяло длинное. Струна. Длинный не является синонимом Ид здесь: эпоха Миллис на SecurityRoleDTO и DTO типа ветви и модели безопасности, LeadIntakeEndpointDTO Счетчики, Page.getTotalElements(), размеры байтов и продолжительность - все это длина браузера Включает арифметику и новую дату, и большинство из них попадают в Карты, где микс-ин не имеет ключа. Прикрепить к. Сериализатор вместо этого включает значение: выше безопасного диапазона JS Напишите строку, под ней число. Каждая уникальная rowid выше, каждая метка времени, счет Размеры ниже, а поля, которые никто не классифицировал, обрабатываются по тому же правилу. Проверено против сверстников, которые читают эти ответы: KamoJwtService и DavAuthFilter Вы уже принимаете любую форму (instanceof Number? : Long.parseLong(...)).

  19. · kamo-login

    Заменить оповещение о запасе анимированной табличкой состояния

    Входящие сообщения входа («Логин успешен!») Перенаправление...», «Недействительно Имя пользователя и/или пароль.") использовали оповещение MUI по умолчанию, пастель которого заполняет плюс Соответствующий пастельный текст читается как общий против стеклянной регистрационной карты. StatusMessage переворачивает эту формулу: замороженная почти белая пластина в одну и ту же Стеклянная семья как карта, с суровым цветом, сосредоточенным в одной иконе чип, стирка, которая исчезает перед текстом, граница линии волос и мягкая ореол. Чернила остаются почти черными с шепотом акцента, смешанным, поэтому он сохраняется. Контраст против любой организации - цвет-первичный. Нейтральные / информационные сообщения заимствуют Собственная первичная форма вместо синего. Движение - это один организованный вход - пластина входит, икона рисует Его собственный ход, и одна зеркальная изюминка проносится по всему. "в ожидании" добавляет дорожную линию волос для работы еще в полете, подключенную к существующей «Перенаправление» состояния таким образом «Перенаправление...» показывает прогресс, а не просто Заявляю. Ошибки получают короткий импульс. Предпочитает-снижает-движение разрушает все это к простому исчезновению. Ошибки объявляют Как роль = «предупреждение» / утверждение, все остальное остается вежливым. Применяется для входа в систему, восстановления, сброса пароля и страниц ошибок OAuth.

  20. · kamo-marketing

    Добавить 25-летнюю юбилейную печать

    Два места размещения, оба выбраны для того, где уже делается претензия: Footer — 60px, рядом с «© 2001-<год>... установлен 2025». по всему сайту, Сгруппированный с сделанным знаком в качестве еще одного знака доверия. Около — 168px, открытие секции миссии. Эта страница там, где 25-летняя история является аргументом, а не мимолетной запиской. Не в домашнем герое: этот заголовок был просто раздет до одного преднамеренного Эффект, и золотой медальон рядом с ним снимет ограничение. Один компонент AnniversaryBadge стоит за обоими, поэтому актив, его альтернативный текст и В этом году он отмечает выход из одного файла. Источник PNG составлял 2,4 МБ при 1254px. Размер до 512px и кодируется в WebP 95 КБ, и так как оптимизация следующего изображения включена, то, что на самом деле является кораблем AVIF выводится на место размещения: 8,3 КБ для нижнего колонтитула при 2x, 35 КБ для About.

  21. · kamo-marketing

    Показать диапазон авторских прав 2001 года и год регистрации

    Renders" © 2001-<year> KamoCRM. KamoCRM Inc. основана в 2025 году. Все права Зарезервировано". Начало диапазона жестко закодировано рядом с динамическим концом года. чем жить в переведенной строке, так что ни одна местность не может повредить ее.

  22. · kamo-marketing

    Добавить встречу и интеграцию заработной платы

    Zoom и Microsoft Teams для встреч и десять поставщиков платежных ведомостей Рабочая сила сейчас, BambooHR, Dayforce, Gusto, Paychex Flex, Paycor, Paylocity Rippling, UKG, Workday. 33 интеграции до 45, с новым Payroll & HR Категория и видеоконференции продвигаются рядом с голосом. Каждая страница отражает то, что ее поставщик фактически реализует, а не то, что он делает. Унифицированный шаблон. Paylocity не имеет календаря оплаты или остатков PTO. Dayforce не имеет календаря зарплатных периодов, и ни Paychex, ни Rippling не работают. распределение труда, так что ни одна из этих страниц не утверждает обратное; Отличается и от поставщика (OAuth для Gusto, Paycor, Rippling и BambooHR, a) Сертификат для ADP, токен обновления для Workday, сервисные счета для UKG И в каждой из них, и в каждой из них есть свои плюсы. Логотипы являются активами поставщика от kamo-internal's public/logo/{meet,payroll}. Набор заработной платы WORDMARKS работает от 0.72:1 (Dayforce) до 6.2:1. (Paychex): отображается в квадратной пластине, используемой логотипами значков, появляется отметка 6:1 несколько пикселей высотой. Интеграция теперь несет внутренний актив ЛоготипWidth/logoHeight, и где они установлены, карта концентратора и страница деталей рендер на фиксированной высоте с автоматической шириной на тарелке, которая растет, чтобы соответствовать - Такой же фикс камо-внутренний сделан для тех же активов. Квадратные логотипы это нетронутым. В метаданных хаба названы только старые пять категорий и жестко закодированные "31 родные" "; в настоящее время он охватывает совещания и фонд заработной платы и подсчитывает реестр.

  23. · kamo-marketing

    Подсчитывать приложения и интеграции отдельно с реальными числами

    «Apps & Integrations» — это одна плитка с 31+. Теперь их два, каждый с Эта цифра может быть получена повторно, а не оценена: Приложения 64 — проекты Forgejo, принадлежащие «камо», исключены Интеграции 64 — отдельные сторонние API с рабочим клиентским кодом Интеграция происходит из реестров провайдеров (AiProviderType). BulkTextProviderType, SocialProviderType, VoipProviderType IdentityProviderType, RetailProviderType, MlosIntegration) plus the payroll, Адаптеры для встреч и закрытия MLOS. Записи Enum, за которыми ничего нет 18 нереализованных поставщиков календаря, Encompass и Xbox делают это Не считается. Обе цифры поддерживаются вручную; комментарий записывает, как Перепроверь их. Четыре плитки нуждаются в сетке с четырьмя сетками, поэтому строка статистики теперь идет 1/2/4 поперек. Точки останова с плиткой и тип масштабируется в соответствии.

  24. · kamolos

    Включить ProxyHmacFilter — шаг 2, X-Org-Id теперь является проверенным заголовком

    los.proxy-hmac.enabled дошел до ложного дефолта Сервис был развернут, поэтому ProxyHmacFilter существовал и никогда не запускался. X-Org-Id — заголовок каждый запрос в этом сервисном тресте — был неподписанным и клиентоподобным на Многопользовательский кредитный API. Безопасно включить сейчас, потому что шаг 1 приземлился первым: камо-внутренние крепления одинаковы Секрет лос-прокси-хмака и его бегущая капсула подписывается, проверенная до того, как это было толкнул. Обратный ордер отклонит каждый запрос на кредит на платформе. Проверено перед перелистыванием: - фильтр обходит/привод/**, поэтому пуск и готовность зондов все равно Проходите. Если бы он поймал их, капсула никогда не была бы готова, и это бы прокатилось. себя обратно. - он обходит /api/los/webhooks/**, поэтому Stripe продолжает работать - они проверены Собственная подпись Стрип. - камо-внутренний - единственный абонент камовслос-сервиса, поэтому нет неподписанных Путь от службы к службе остался позади. Это не заменяет проверки организации в LoanService и LoanScope. Это поднимает то, что X-Org-Id означает от «заголовок, который кто-то отправил» до «заголовок, который этот прокси отправил». Они решают, может ли названная организация видеть строку. Оборона в глубину: ни то, ни другое Достаточно одного.

  25. · kamo-internal

    Подпишите заголовки идентификаторов прокси — шаг 1 включения ProxyHmacFilter

    KamoLOS доверяет X-Org-Id и X-Member-Id из этого прокси. ProxyHmacFilter существует Доказать, что эти заголовки действительно пришли отсюда, но он отключен в производстве: Развертывание не устанавливает LOS PROXY HMAC ENABLED, и до сих пор не существовало общей тайны. los.proxy-hmac.enabled падает до ложного, а заголовки не подписаны в прямом эфире мультиарендатора API с 15 реальными кредитами. Маршрут LOS уже вычисляет подпись - он просто пропускает, когда LOS PROXY HMAC SECRET отсутствует. Установить новый секрет лос-прокси-хмака - вот что Переключатели включены. Эта сторона идет первой нарочно. «Камолос» игнорирует подпись до тех пор, пока она не станет собственной los.proxy-hmac.enabled - это правда, поэтому это обязательство не меняет поведения нигде; это только Прикрепление X-Proxy-Signature и X-Proxy-Timestamp. Делать это по-другому — Проверка перед подписанием — отклонит каждый запрос на кредит на платформе. Шаг 2 устанавливает LOS PROXY HMAC ENABLED=правда и тот же секрет на развертывании камовслоса, после того, как это будет подтверждено.

  26. · SecurityService

    Разрешить наложение логотипа KamoMeet на config.json

    KamoMeet - это вилка Meet без доступа к OrgContext, поэтому она изучает Org. брендинг из темы config.json этот сервис печет. Орг хранит ан наложение TOKEN; это разрешает его против собственной палитры этой организации и пишет Завершенный шестицветный как kamomeetLogoOverlayColor. Решать здесь, а не доставлять стол из тринадцати токенов в вилку Дело в том, что РЕПО уже несет в себе фоновое слайд-шоу Org как единое целое. из девяти независимых экземпляров, и второй такой стол будет дрейфовать так же путь. Выпечка разрешенного цвета также не является «замороженной гексом» избегает в базе данных — config.json регенерируется на каждом сейфе брендинга; Изменения цвета включены. Матч приставок является явным, а не «невторичный означает первичный». А. Тест уловил, что сделала свободная версия: «#FF0000» ровно столько же, сколько «ПРАВИЛЬНО», поэтому оставил пустой шаг и решился на первичную базу — Цвет, который никто не выбирал, появляясь на экране, никто на стороне платформы никогда не Смотри. Неизвестные токены и неустановленные оттенки опущены из config.json Именно так каждый клиент читает «без наложения». Таблица токенов должна соответствовать логотипу kamo-internalOverlay.ts; Тесты — это то, что делает дивергенцию неудачной.

  27. · InitializerService

    Добавить колонку kamomeet logo overlay

    Третья накладная поверхность: экран предварительной встречи KamoMeet. Такая же форма, как и Два других — недействительные, без возврата, без дефекта. Охранник дрейфа нуждался только в добавлении имени поля, потому что он повторяет его. Накладные поля объекта вместо того, чтобы называть их по одному за раз. Это то, что Весь смысл в том, чтобы написать его таким образом.

  28. · kamo-shared-library

    Несите наложение логотипа KamoMeet на Организацию

    Третья и последняя накладная поверхность, та же лексика, что и у двух братьев и сестер, плюс его ветвь в родовом пути пластыря. Этот отличается тем, где он заканчивается. Домашняя страница и экран загрузки Прочитайте их токен прямо с OrgContext; KamoMeet - это вилка Meet без каких-либо ограничений. доступ к этому, поэтому Служба безопасности решает этот токен против организации Палитра и пекут готовый цвет в тему config.json вилка Уже зацепился. Таким образом, токен никогда не покидает платформу. Тринадцать вариантов существуют в одном месте, а не копируются в вилку. что уже накопилось девять независимых копий фона Слайдшоу. Нуль решает НЕТ, поэтому каждая существующая организация начинается без наложения. The Колонка kamomeet logo overlay уже применяется (KamoInitializer).

  29. · kamo-internal

    Наложение логотипа для экрана предварительной встречи KamoMeets

    Третья и последняя поверхности, предлагаемые рядом с двумя другими — теми же тринадцатью Варианты, собственная настройка, по умолчанию No Overlay. Скрытый, если только орг не может достичь этого экрана: приложение «Встречи» AND KamoMeets выбран в качестве провайдера. Орг на Zoom или команды никогда не отображает экран предварительной встречи KamoMeets и организацию без приложения Он никогда не открывается, так что поле будет контролироваться на пустом месте. Сохраненный Ценность сохраняется, пока она скрыта, поэтому возвращение Встреч к жизни восстанавливает Выбор вместо того, чтобы молча расчищать его. Провайдер забирается один раз на гору. Пока не ответит, поле останется скрытый, поэтому он появляется, а не мерцает; неудачный поиск решает KAMO MEET, что делает бэкэнд для организации без провайдера строка — лучше показать безобидную обстановку, чем скрыть настоящую из-за Запрос провалился. В отличие от своих двух братьев и сестер, этот токен никогда не достигает поверхности, которой он управляет. KamoMeet - это вилка Meet без доступа к OrgContext. решает оттенок и выпекает готовый цвет в тему этой организации config.json. Только UI настроек здесь читает токен.

  30. · InitializerService

    Очистите отчеты и строки приборной панели и прекратите посев VIEW DASHBOARD

    VIEW DASHBOARD (0), VIEW REPORTS (1) и EXPORT REPORTS (2) были удалены из RoleRightType сегодня, вместе с двумя названными ими страницами. Это устраняет то, что они Сзади, через оба кода. **************************** Список VIEW DASHBOARD среди прав Он предоставляется каждой новой организации, поэтому он также выходит. Это была единственная ссылка за пределами сайта определения, и компилятор — это то, что он нашел. Поиск правильного имени и чтение списка - это не один и тот же поиск. VIEW TASKS намеренно отсутствует в чистке: приложение/задачи выглядят идентичными Удалены страницы в источнике, но планируется завершить. Id 0 - это реальный идентификатор - предикат перечисляет его явно и все, что находится на этом пути. Опираясь на правдивость, он молча пропускал строки VIEW DASHBOARD.

Ваша вселенная ждет.

Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.

Бесплатно навсегда — не требуется кредитная карта