This media is not supported in your browser
VIEW IN TELEGRAM
Я долго думал как можно в Valkyrie сделать шаринг конфигурации иконок между командой.
Кейс простой: первый разработчик добавляет пак иконок, а второму, спустя время, надо в него добавить несколько новых.
Можно попробовать хранить всё в конфиг файле в репозитории, но там появляется момент с абсолютным путём для экспорта, нужно писать дополнительные проверки и логику.
И я подумал, зачем изобретать что-то, если у нас уже есть готовый Kotlin объект и из него можно легко выгрузить нужные данные через PSI Tree.
Демка фичи выше, а тут релиз 0.6.0 с кучей улучшений и новым README 🌚
Кейс простой: первый разработчик добавляет пак иконок, а второму, спустя время, надо в него добавить несколько новых.
Можно попробовать хранить всё в конфиг файле в репозитории, но там появляется момент с абсолютным путём для экспорта, нужно писать дополнительные проверки и логику.
И я подумал, зачем изобретать что-то, если у нас уже есть готовый Kotlin объект и из него можно легко выгрузить нужные данные через PSI Tree.
Демка фичи выше, а тут релиз 0.6.0 с кучей улучшений и новым README 🌚
❤6🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Выкатил первый снапшот фичи для предпросмотра ImageVector без @Preview аннотации прямо в студии:
- Сделал превью для backing property и lazy property форматов 🌚
- Превью работает даже с material иконками от Google ❤️
все сделано на базе парсинга PSI дерева
в целом это большая подготовка к новым фичам по оптимизации иконок, переноса между паками и многое другое 🌚
p.s. чтобы не спамить канал, буду кидать новые демки в комментарии
- Сделал превью для backing property и lazy property форматов 🌚
- Превью работает даже с material иконками от Google ❤️
все сделано на базе парсинга PSI дерева
в целом это большая подготовка к новым фичам по оптимизации иконок, переноса между паками и многое другое 🌚
p.s. чтобы не спамить канал, буду кидать новые демки в комментарии
🔥15❤1👍1
Релиз Valkyrie 0.7.0 с фичей по предпросмотру ImageVector в студии (по аналогии с SVG) 🌚
• Превью иконок в Backing и Lazy проперти стилях (#136)
• Поддержка превью Google Material иконок (хоть они и deprecated)
• Базовые экшены для изменения подложки иконки и зума (#151)
• Редизайн настроек (#157)
и поддержка K2 мода (начиная с IntelliJ IDEA 2024.2.1) 🙂
• Превью иконок в Backing и Lazy проперти стилях (#136)
• Поддержка превью Google Material иконок (хоть они и deprecated)
• Базовые экшены для изменения подложки иконки и зума (#151)
• Редизайн настроек (#157)
и поддержка K2 мода (начиная с IntelliJ IDEA 2024.2.1) 🙂
🔥13
This media is not supported in your browser
VIEW IN TELEGRAM
Листал issues связанные с IntelliJ IDEA и попалась фича, о которой я не знал 😁
Если у вас MacBook, то вместо хоткея
Сильнее нажав, провалитесь либо в сорцы, либо в использование метода 🤫
Если у вас MacBook, то вместо хоткея
cmd+b можно использовать тачпад 🌚Сильнее нажав, провалитесь либо в сорцы, либо в использование метода 🤫
👀12👍5🌚3
This media is not supported in your browser
VIEW IN TELEGRAM
Готовлю релиз новой версии Valkyrie с обновленным Simple Mode 🤓
из нового:
- поддержка вставки файла или текста иконки с буфера обмена
- возможность заренеймить иконку
- превью текущей иконки
из нового:
- поддержка вставки файла или текста иконки с буфера обмена
- возможность заренеймить иконку
- превью текущей иконки
🔥21❤1
Когда у нас на кмп проекте выкатили фичу с форматированием даты и времени на все таргеты через
Оказывается многие не в курсе, что в kotlinx-datetime появилось мультиплатформенное форматирование.
API довольно простое 🌚
Допустим мы хотим конвертировать UNIX в строку формата:
Тогда весь код сведется к 2 шагам:
1. Создание форматтера через dsl в необходимом стиле:
2. Конвертация с использованием
P.S: Форматирование без учета локали!
expect/actual - я чуть не умер ☠️🫨Оказывается многие не в курсе, что в kotlinx-datetime появилось мультиплатформенное форматирование.
API довольно простое 🌚
Допустим мы хотим конвертировать UNIX в строку формата:
10 March, 2024Тогда весь код сведется к 2 шагам:
1. Создание форматтера через dsl в необходимом стиле:
private val formatter = LocalDateTime.Format {
dayOfMonth(padding = Padding.NONE)
char(' ')
monthName(MonthNames.ENGLISH_FULL)
char(',')
char(' ')
year()
}
2. Конвертация с использованием
format() функции:
fun format(timestamp: Long): String {
return Instant.fromEpochMilliseconds(timestamp)
.toLocalDateTime()
.format(formatter)
}
P.S: Форматирование без учета локали!
GitHub
Releases · Kotlin/kotlinx-datetime
KotlinX multiplatform date/time library. Contribute to Kotlin/kotlinx-datetime development by creating an account on GitHub.
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Демка работы CLI тулы для генерации IconPack 🌚
❤5🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
А это уже конвертация 6000 иконок через cli 🌚
логи для дебага через
логи для дебага через
-v, чтобы видео было интереснее 😁🔥10👍2
Перед новым релизом Tiamat 1.3.0 решили полностью обновить семпл 🌚
Об нововведениях расскажу чуть позже, не хочу в пятницу ничего писать 😁
Об нововведениях расскажу чуть позже, не хочу в пятницу ничего писать 😁
👍5🔥3
Why Android? 🌚
Введем новую рубрику предновогодний опрос 🎄 Через год вместе посмотрим что вы наванговали на 2024й год, что сбылось 🌝, что не сбылось. 🌚 Что ждём от следующего года глобально в Android, в Compose и в целом в программировании?
Ну что, давайте накидаем на 2025 чего-нибудь 🌚
Правила простые: ваши предсказания в андроид и около него, а в следующем году подведем итоги 🌝
Правила простые: ваши предсказания в андроид и около него, а в следующем году подведем итоги 🌝
🌚10
This media is not supported in your browser
VIEW IN TELEGRAM
Начиная с IntelliJ IDEA 2025.1 EAP можно запускать адекватное Compose Preview прямо из commonMain и без всяких костылей 🌚
youtrack
youtrack
🔥22👍1
Интересный баг 🌚🌝
Перед новым годом тестировал поддержку K2 мода в Valkyrie и заметил, что после установки пропадают некоторые плагины. Думал просто какой-то глюк в IntelliJ IDEA EAP🌚
Месяц назад прилетает issue, что мой плагин не может быть установлен одновременно с Compose Multiplatform плагином 😳
Ставишь Valkyrie - удаляется Compose, ставишь Compose - удаляется Valkyrie (видео есть в issue) 😱
И это всё происходит без каких-либо ошибок и сообщений в логах.
Помогли ребята из JetBrains. Оказывается, проблема была в названии папки плагина, который находится внутри архива после сборки.
У меня gradle модуль на гитхабе всегда был с именем "idea-plugin" и в архиве была соответствующая папка.
В Compose Plugin до версии 1.7.1 включительно было свое уникальное имя, но после 1.7.3 и рефакторинга имя слетело на такое же "idea-plugin".
В итоге, при установке один плагин просто перезаписывал другой без каких-либо ошибок и предупреждений 😁
Перед новым годом тестировал поддержку K2 мода в Valkyrie и заметил, что после установки пропадают некоторые плагины. Думал просто какой-то глюк в IntelliJ IDEA EAP🌚
Месяц назад прилетает issue, что мой плагин не может быть установлен одновременно с Compose Multiplatform плагином 😳
Ставишь Valkyrie - удаляется Compose, ставишь Compose - удаляется Valkyrie (видео есть в issue) 😱
И это всё происходит без каких-либо ошибок и сообщений в логах.
Помогли ребята из JetBrains. Оказывается, проблема была в названии папки плагина, который находится внутри архива после сборки.
У меня gradle модуль на гитхабе всегда был с именем "idea-plugin" и в архиве была соответствующая папка.
В Compose Plugin до версии 1.7.1 включительно было свое уникальное имя, но после 1.7.3 и рефакторинга имя слетело на такое же "idea-plugin".
В итоге, при установке один плагин просто перезаписывал другой без каких-либо ошибок и предупреждений 😁
😱12
Главная новость недели заключается в том, что в Valkyrie законтрибьютил разработчик, который тоже пишет свою конвертацию noscript/xml в ImageVector.
Я как-то натыкался на его решение, но особо не смотрел реализацию)
А тут глянул и немного офигел. Если коротко он написал свой кастомный мультиплатформенный парсер напрямую SVG -> ImageVector и XML -> ImageVector.
Ключевое и самое интересное это мультиплатформенный, потому что у меня давно есть идеи выйти за пределы плагина и запилить WASM/CMP приложение, но писать с нуля парсер нету времени.
Так вот, дальше всё как в тумане 🌚
Я создаю issue, пару дней взаимных подписок и обдумываний, в итоге он соглашается, я добавляю его в mainteiners и мы уже начали миграцию 😏
🔥12👍2😁1
Сделал прожарку канала через @ScratchAuthorEgoBot 😁
И да, пост пятничный🌚
И да, пост пятничный🌚
Слушай, ты, наш главный "Иконочник" и "Навигатор" всея Руси, ну и затейник же ты! Вечно ты там что-то "киллер-фичами" называешь, а на деле просто пишешь то, что Google или JetBrains должны были сделать пять лет назад. И ладно бы молча, но нет же – сначала "подгорает", потом "сгораешь", а потом выпускаешь свою "Valkyrie", которая, конечно, лучше, но эмоций-то сколько! Тебе бы в стендап, а не в разработчики.
И этот твой смайлик 🌚 – это уже отдельная песня! Его больше, чем кода в твоих проектах. Кажется, если бы ты его не использовал, то сообщения просто не отправлялись бы. Он у тебя и вместо запятой, и вместо точки, и вместо мата, когда очередной баг ловишь. Вот кто твой личный мем-генератор? Или это у тебя встроенный эмодзи-плагин, который ты, конечно же, сам написал, потому что "на рынке не было нормальных решений"?
Твоя одержимость Compose – это что-то! Кажется, если бы тебе предложили выбрать между едой и новой фичей в Compose, ты бы голодал, но изучал бы "shared element transition" или "Lookahead". И эти постоянные "вечерние" и "пятничные" посты с мемами и всякой крипотой из Android SDK – ты что, забыл, что люди по пятницам отдыхают, а не сидят и не гуглят "SexualActivityRecord"? Или это твой способ убедиться, что никто не расслабляется, пока ты работаешь?
А эти твои "баги" – вечно ты вляпываешься в самые неочевидные. Ну кто, скажи на милость, додумается, что плагин не ставится из-за названия папки "idea-plugin", а не потому что ты что-то там накосячил?! И потом еще JetBrains виноваты. А то, что Koin issues закрывает, а не фиксит – ну это вообще святое! Сам-то небось тоже свои баги в Valkyrie так "фиксишь" – просто ждешь, пока люди перестанут на них жаловаться!
И еще ты любишь поныть, что "не было нормальных простых решений" – да ты сам эти "простые" решения потом так усложняешь, что тебе приходится свою навигацию писать, свою CLI тулу, и вообще весь мир переделывать под себя. В общем, ты наш местный супергерой, который спасает мир от "консольной шляпы" и "ужасного выравнивания", но в процессе сам же и генерирует новые мемы для нашего чатика! Ну а что, главное, чтобы "по фактам", да? 🌚
🤣11