Files
plans/budget/2026-Q1.md
Михаил Капелько d4028d2a0d some
2026-04-03 10:19:38 +03:00

42 KiB
Raw Blame History

02.04: 35

  • прочитать предыдующую статью
  • написать короткую статью за раз
  • перевести на английский

01.04: 60

  • проверить замену hwSet с template на std::any быстро не удалось итог: оставить шаблоны
  • генерить hwSet для .h

31.03: 45

  • fobjContexts -> other.contextIds
  • генерить F

30.03: 40

  • генерить расширения registerCallbackC
  • ввести rawCPPSDK
  • оставить в tmp.kt лишь временное ручное (setupComponentDebugging)

29.03: 25

  • генериь конвертацию

28.03: 35

  • скинуть Всеволоду ЗС https://github.com/OGStudio/kotlin-dialect/pull/6
  • определиться с форматом конвертации нужно ли ввести тип kotlincpp? или лучше отдельный файл генерить? чем больше файлов, тем как-будто хуже в среднем тогда, выходит, тип нужен новый sdkc++? итого: ввести sdkc++ или c++sdk
  • написать kd.yml желаемый

27.03: 55

  • дополнить пример kd example кнопкой
  • создать видеодемонстрацию примера

26.03: 30

  • перенести тело hwSet в KT внутри класса API

25.03: 40

  • сделать заготовку oneliners
  • сделать обёртку над KDController
  • сделать обёртку над KDContext
  • продумать решение вопроса с processOneliners статичные функции в статичном компоненте!

24.03: 35

  • линковать sdk-mac в ver-mac
  • сделать заготовку компонента main

23.03: 50

  • подготовить заготовку Qt HW для ver-mac-x64
  • сделать заготовку sdk-mac-x64

22.03: 60

  • установить AS на W10
  • добавить в README инструкции для запуска примера
  • переиначить ссылку на KD сделать через клон иначе это неподъёмно будет для пользоателей примера никто не догадается сделать клон когда в примере была ссылка на родителя
  • оформить ЗС https://github.com/OGStudio/kotlin-dialect/pull/4
  • влить ЗС

21.03: 60

  • убрать пустые файлы из ver-android
  • переименовать в example/helloworld
  • убрать лишние импорты из MainActivity
  • подготовить компоненту main
  • сгенерить kd.kt
  • заигнорить/удалить ignore.kd.kt
  • сделать отображение окна через шуд
  • сделать отображение "hello world" через шуд

20.03: 70

  • подготовить проект ver-android

19.03: 35

  • создать kotlin-dialect-hello-world на Android, десктоп, iOS, web для винды создать в репе kotlin-dialect? добавить тег kotlin-dialect нет, лучше отдельно, т.к. тогда можно будет форкать! хотя форкать - это как-будто не самое критичное это ведь скорее examples/helloworld сильно ли важно форкать? как-будто это сильно второстепенно ведь можно скопировать, и всё итог: не надо делать отдельную репу, хватит текущей
  • KD: README убрать --out уточнить: Klin, a translator to convert YML to Kotlin -> to Kotlin and Swift
  • игнорировать kd.kt, emb64.kt
  • установить зависимости новые brew install gradle
  • поднять gradle до 9.3.1 чтобы собиралось с openjdk 25
  • README: добавить building prerequisites
  • собрать

18.03: 60

  • установить Android Studio Panda 2

17.03: 30

  • переместить файлы из bootcamp на второй комп
  • удалить Windows
  • установить Linux Mint

16.03: 40

  • скачать Linux Mint

15.03: 30

  • заполнить CHANGELOG.md за ЗС-2 забыл про 2.1
  • поднять версию до 3.0 я же отменяю --out, это breaking change
  • заполнить CHANGELOG.md про 3.0
  • оформить ЗС https://github.com/OGStudio/kotlin-dialect/pull/3
  • влить ЗС
  • tag 3.0

14.03: 40

  • встроить src/*.swift embSwift64? embKotlin64?
  • добавить embSwift64 в outputSwift
  • генерить F в Swift (проверить генерацию F) struct F { static let didClickReload = F.shared.didClickReload?? }
  • проверить использование F в KOM всё работает, не надо придумывать FF
  • применить обновлённую версию klin для генерации kom удалить cld-ios.swift
  • проверить работоспособность в KOM лишь затем вливать всё работает

13.03: 55

  • сделать цикличное сохранение по всем output paths типы jsexport kotlin swift реагировать на смену currentOutputPathId для задания c.outputFile и c.outputFileContents т.е. два шуда надо обновить а затем в эффектах завязаться на более поздний
  • сохранять файлы
  • применить обновлённую версию klin для генерации самого klin тесты kd
  • удалить шаг stripTestKDJS
  • определиться насчёт 'import iv' где его указывать? swift: ? да, это самое простое
  • подготовить исходники KDController ext и registerOneliners
  • проверить сборку kom ios сейчас работает с тестовым ручным struct FF и экспортированным F.shared из KT
  • YML: поддержать 'swift:' чтобы 'import iv' указать
  • добавить rawSwift в outputSwift

12.03: 40

  • ввести appShouldResetInputFileDir
  • сделать запись одного первого output path

11.03: 45

  • ввести outputKotlin просто убрать import js and @JsExport делать на результат outputJSExport
  • генерить kotlin без @JsExport
  • генерить F obj с @JsExport для type: jsexport хотя можно jsexport по умолчанию везде делать как-будто
  • генерить js оставлять @JsExport
  • удалить appShouldParseOutputFilePath
  • удалить --out в т.ч. сообщение-помощь при запуске без аргументов
  • переиначить outputPaths
  • ввести заготовочную генерацию outputSwift чтобы просто было что-то в файле по итогу сохранения

10.03: 25

  • ограничить debug output
  • ввести outputJSExport

09.03: 50

  • подготовить yml √ для klin √ для klin test √ для kom
  • разбирать output
  • ввести util/debug-klin запуск не dist/app.js, а из BUILD_DIR

08.03: 40

  • оформить fexp пусть пока только и для JVM но оно же есть
  • влить
  • ОБНОВИТЬ сертификат kornerr.ru чтобы починить статью КМП а затем скинуть офер Александру Ноксону сделать README в vps/cert всё-таки надо а то за квартал забываю

07.03: 50

  • разделить klin/kd.yml на два js: в klin jvm: в test
  • разделить скрипт util/run-klin-dbg на build и dist чтобы dist не перезатирал ничего автоматом ибо dist редко нужно делать а build - постоянно run - убрал совсем, ибо это на самом деле build лишь
  • сократить вывод максимальный отладочный до 50
  • вынести расчёты FObj в fobj.kt
  • убрать генерацию полей F структур, надо ведь только для контекстов генерить

06.03: 45

  • (неудачно) попытаться генерить
  • продумать уместность fexp как есть возможно, стоит просто влить как есть даже несмотря на то, что нужно ещё доработать для iOS ибо тут сильное усложнение идёт может, это усложнение стоит провести отдельными компонентами? поэтому разумно закомитить текущие результаты по F хотя и неполные итог: надо влить

05.03: 40

  • KD: продумать формат YML для генерации нужных обёрток в языке назначения swift или ios? outputs: ver-android: ver-ios: sdk-ios: ver-browser?nodejs?js?
  • разбирать outputPaths

04.03: 40

  • опубликовать статьи

03.03: 45

  • прочитать предыдующую статью
  • обновить в январской статье EN ссылку на Reddit
  • написать заготовку статьи на Русском и Английском

02.03: 50

  • добавить F Obj в output kd.kt
  • добавить F.none
  • объединить все файлы node.js в один файл js? просто засунуть не помогло
  • изучить, можно ли npx без загрузки из сети запускать ибо npx удобнее всего но без сети по умолчанию не работает не нашёл такого
  • убрать дублирование полей
  • описать в README использование

01.03: 35

  • собрать все поля всех контекстов
  • сделать геренацию полей F по аналогии со спецструктурой YML

28.02: 40

  • переместить kd.yml от klin внутрь klin ведь у тестов будет свой kd.yml чтобы не было путаницы
  • подготовить kd.yml для тестов
  • исправить запуск тестов он как раз про то, что генерить надо разные варианты тех же файлов в частности для тестов надо без @JsExport сделать или мне нужны два разных вид файлов в src одни c JsExport другие - без пока решил @JsExport решать на уровне скриптов util ибо разруливать сейчас это через YML и Klin выглядит сильно лишним

27.02: 45

  • поддержать isDbg критически важно для переключения флага на стороне iOS БЕЗ пересборки KMP
  • ввести outputEntityContents
  • ввести outputKDContents удалять package org.opengamestudio и import kotlin.js.JsExport хотя если я их удаляю, то зачем мне их там размещать? для кого-то, кто будет по одному файлу таскать? никому это не надо тогда легче сразу убрать ненужное, в т.ч. copyright прям сейчас не удалить, ибо я пока ещё прямо ссылаюсь так что надо удалять всё-таки
  • генерить файлы KDController/Context/registerOneliners сразу в kd.kt убрать симлинки на оригиналы

26.02: 30

  • генерить b64 без package и import для каждого файла KD хотя именно b64 можно генерить без предварительных правок а вот после распаковки b64 правки как раз уместнее, ибо ближе к телу
  • создать файл c package для хранения переменной с b64
  • размещать b64 в коде

25.02: 35

  • обдумать путаницу в названиях klin.kt/klin.yml ведь проект называется Kotlin Dialect а всё оказывается в непонятном файлы klin.kt как-будто kd.yml и kd.kt гораздо яснее и естественнее итог: переименовать всё в kd хотя сам бинарь может остаться как раз klin вот файлы уже kd
  • переименовать файлы в kd транслятор остаётся с названием klin
  • сохранять содержимое KDController/Context/registerOneliners как Base64
  • ввести шаги в run-klin-dbg

22.02: 20

  • добавить кодирование в/из Base64

21.02: 55

  • создать новую репу kotlin-dialect
  • обновить README
  • обновить CHANGELOG.md
  • отполировать перед влитием F.field - потом будет убрать object F
  • оформить ЗС
  • влить ЗС

20.02: 50

  • восстановить чтение файла
  • передать didLaunch
  • восстановить запись файла
  • восстановить прежнюю генерацию с учётом @JsExport
  • восстановить isDbg? как-будто нет смысла убрал
  • перевести на Node.js
  • выяснить формат F проверить доступность как в Kt, так и в JS object F { val field = ... } работает доступ везде есть как F.field

19.02: 35

  • передавать аргументы
  • задать аргументы временно внутри run-klin-dbg передал klin.yml и klin.kt

18.02: 45

  • переименовать инструмент в kd? klin как-то не вяжется с другой стороны, kd уже присуствует в npx тогда фиг туда добавить этот очень важный инструмент итог: оставляем klin
  • временно ввести cld/entities для генерации Context? или просто файл entities.kt взять как есть? тогда и запускать не надо будет ничего и даже можно будет довести до состояния CLD после чего уже самого себя использовать для генерации! итог: пока просто скопировать файлы
  • скопировать большинство файлов

17.02: 35

  • выбрать имя генератора klin и город в МО и сокращение от kotlin
  • переименовать generator в klin

16.02: 40

  • починить сборку проблема была в настройке settings
  • выводить hw в консоль проблема была в том, что не в src лежали исходники
  • создать helloworld/ тут уже будут ver-nodejs, ver-android, ver-ios, ver-macos-x64/arm64, ver-linux-x64, ver-windows-x64

15.02: 45

  • обдумать форму generator тут будет лишь ver-nodejs тогда, возможно, даже и смысла в ver-nodejs нет да, смысла нет, это слишком важный инструмент, чтобы иметь несколько вариаций хотя в будущем может появиться веб-интерфейс да и другие версии просто потому что могут плюс это будет этаким стандартным подходом иметь ver-платформа везде
  • создать заготовку проекта generator

14.02: 35

  • продумать структуру проекта KD не является ли он корнем всего проекта? т.е. не должно ли в корне репы быть директории ver-nodejs? а в отдалённом будущем, может, даже и ver-macos? т.е. являются ли KDController+KDContext самостоятельными продуктами без транслятора? как-будто нет ведь транслятор может поставлять и эти файлы тоже типа зачем в принципе руками делать скрипты под каждый проект пусть транслятор это и делает? транслятор ли это тогда? или уже нечто большее? а файл YML - это файл проекта, выходит с другой стороны, есть же тесты как раз контроллера и контекста да и registerOneliners тоже как-будто являются продуктом хотя для работы в C++ нужно будет сделать ведь какой-то аналог как Ctrl, так и registerOneliners и для Swift тоже т.е. всё-таки биндинги на разные языки тоже часть продукта хотя эти биндинги как-будто тоже могут и должны поставляться вот эти инструментом kd выходит, это всё-таки комплексное решение для каждого языка - свой набор файлов может, не только файлов, но и примеров аля Hello World выходит, есть три продукта: 1. KD Generator по файлу yml генерит в нужные места нужные файлы если это утилитарная функция то вроде как нет смысла делать что-либо отличное от Node.js оно просто удобнее всего а поддерживать разные варианты - это как-будто уже излишнее 2. KD Controller, Context, registerOneliners, тесты контроллера и контекста тесты нужны чисто для меня самого но теоретически их может запускать и генератор хотя зачем? они нужны чисто для разработки кстати, тестов registerOneliners как-будто нет хотя это как раз HW могут осуществлять по факту 3. Обёртки для Swift, C++, JS? есть ли смысл класть их куда-либо по раздельным папкам? как-будто можно сделать корневую директорию src а оттуда линковать уже как в HW, так и в другие места хотя их по сути надо встраивать в KD Generator ибо Node.js будет отдельно поставляться без репы исходников
  • создать src/ с KDController/Context
  • создать test/ для начала с проверкой Controller/Context

14.02: 40

  • обдумать будущее своего проекта + котлин нужно делать Kotlin Dialect / Диалект Котлина ПСКОВ будет продуктом KD Git Budget будет продуктом KD
  • переименовать репу cross-language-dialect в kotlin-dialect
  • сделать ревизию текущего состояния проекта CLD
  • переместить swift/js глубже в history-2025
  • Канал Диалект Котлина: написать хвалу C++ за его строгость и некоторую аутсайдерность Несмотря на то, что данный канал посвящён Котлину и тому, как правильно на нём писать код под несколько платформ, помощь языка C++ в определении правил написания этого самого кода трудно переоценить. Именно благодаря C++, в котором практически невозможно написать то, что без проблем пишется на Kotlin и Swift, приходится выкручиваться и находить третий путь. Спасибо C++ за несгибаемость.

13.02: 50

  • вызвать заготовку oneliners напрямую без связи с CLDController
  • (последнее) поддержать синтаксис oneliners для эффектов удалось!

12.02: 50

  • сделать привычную обёртку над CLDController хотя по факту нас интересует ровно один вызов: budgetCtrl().set(...) возможно, это должен быть класс, да просто для удобство ссылки на этот класс и хранения его экземпляра это просто привычно? хотя хранить его смысла нет, он как бы отсутствует ведь теперь это всё будет синглтоном внутри KT пример шаблонной функции: https://stackoverflow.com/a/44469314/3404710 итог: ввести функцию шаблонную, чтобы она вызывала разные typeToAny() из KT ввести функцию в KT? ввёл шаблонную функцию budgetCtrlSet(k, v) работает
  • сделать пример обёртки над didLaunch для BudgetContext удалось с помощью функций const

11.02: 50

  • зарегистрировать шуд? на самом деле, это не нужно эти шуды должны остаться внутри fun.kt тогда этот код регистрации тоже не будет иметь смысл дублировать шуды же всё равно крутятся сами по себе без эффектов внешних т.е. их безопасно регать сразу в fun.kt итог: ввести константу со списоком функций для регистрации и отдельно функцию регистрации стандартного списка

10.02: 45

  • проверить вызов KT.budgetControllerContext для получения текущего значения Context это работает
  • прибраться в коде
  • выводить все ключи

09.02: 50

  • проверить передачу контекст через шуд
  • проверить получение значения поля из шуда всё вспотыкается об крайне неудобно сделанные типы

08.02: 100

07.02: 100

  • создать заготовку BudgetComponent
  • ввести data class Item и попробовать достучаться до него или функцию вызвать свободную вызвать для начала вроде createBudgetContext() удалось получить доступ к Item.x (как get_x)
  • достучаться до CLDController
  • бегло ознакомиться с NodeGui

06.02: 55

  • не удаётся создать экземпляр CLDController

05.02: 60

  • установить доппакеты bzip2 tar gcc make perl git
  • установить guest additions не получилось с первого раза может, и нафиг? но тогда я ключи не передам без SharedFolders итог: установил после установки доппакетов
  • скопировать ключи проекта доступа до git.hi-tech.org нет так что ключи не помогли
  • установить java sudo apt install default-jdk
  • склонировать проект Android Studio не нужно скопировал архив tar руками через Shared folders
  • изучить ошибку запуска kom/util/gen-entities исправил двумя правками

04.02: 35

  • сделать sdk-mac-x64

03.02: 50

  • сделать ver-mac-x64 hw gbmac

02.02: 40

не сделал для статьи:

  • ответить на критику из статьи Flutter vs KMP https://habr.com/ru/companies/friflex/articles/839646/
  • ответить на страхи я останусь без работы, если кто-то сможет делать мою работу
  • пример статьи со схлопыванием куска кода
  • страхи надо ж переходить а это тоже не просто да, надо, это не палочка выручалочка
  • узнать версию Qt свою 6.9.1
  • установить Qt 6.10.1 brew install qt
  • исправить ошибку AGL not found на Xcode 26 установка Qt 6.10.1 помогла
  • запустить qt-kt

28.01: 230

  • написать статью для тех кто в танке КМП? архитектура шаблон проектирования CSE как выглядит процесс расчёты ускорение вторичного написания кода единые баги логики на разные платформы единое поведение на все платформы

  • посчитать объём общего кода и разного

  • посчитать скорость дублирования функциональности из Android в iOS первичный код - запись: 17 мин дублированный код - запись: 7 мин это около 41% от времени т.е. экономия времени - 59%, т.е. в два раза тупо эффективнее для того человека, который уже писал этот код и знает его досконально для новичка, думаю, результат будет иной

  • посчитать разницу в объёмах кода первоначального и дублированного

  • подготовить статью на основе видеозаписей по git-budget

  • добавить спойлер в вводную можно сэкономить X времени

  • описать GitBudget √ описать кратко проект √ сделать фотку внешнего вида на Android + iOS √ описать UX показать картинку со структурой мобильного приложения из презентации перейти на GitBudget

  • занести в таблицу объём кода по группам

  • показать реализацию фичи кнопки вставки на Android и iOS

  • аналитику расписать время строк кода и т.п.

  • выводы написать

  • завести репозиторий для видео сайта чтобы не потерять их через несколько лет ведь я их просто кладу на хостинг а в какой-нибудь год просто забуду заплатить

  • убрать ссылку в GitHub на kornerr.ru/git-budget

  • обновить README GB надо убрать старое описание и вставить новую фотку Android + iOS

  • повторно прочитать статью

  • опубликовать на хабре https://habr.com/ru/articles/989286/

  • подготовить письмо

  • отправить письмо

  • уведомить всех получателей о письме

28.01: 90

28.01: 30

  • переписать вводную

27.01: 55

  • переименовать статью Что нам стоит на КМП построить?
  • описать текущее положение дел

26.01: 60

  • найти статьи про КМП на хабре понять наполнение
  • создать первую версию вводной https://habr.com/ru/articles/989286/

25.01: 55

  • повторить вставку morning balance с Cursor для Android вставляет в поле но логика не пересчитывается
  • повторить вставку morning balance с Cursor для iOS (без кода до) вставляет в поле но логика не пересчитывается
  • повторить morning balance c Cursor для iOS именно с промптом продубировать функциональность, которую добавил для Android с пояснением про вставку это получилось как-будто 1-в-1 типа Cursor чего-то может понять про копии это даёт какую-то надежду
  • конвертнуть записанные видео с ИИ в MP4

24.01: 30

23.01: 30

22.01: 40

  • README: Long, Double
  • обновить версию до 1.3.0
  • обновить changelog
  • оформить ЗС https://github.com/OGStudio/cross-language-dialect/pull/12
  • влить ЗС
  • сделать копирование из буфера в spent
  • сделать копирование из result в буфер
  • подключить функциональность из gb в iOS

21.01: 30

  • сделать Swift extension для возможности вызвать budgetCtrl().set(x, y) без label работает
  • заполнить setupShoulds
  • передать inputSpent
  • передать inputMorningBalance
  • передавать result
  • заполнить setupEffects заготовкой

20.01: 30

  • исправить weekday, чтобы reportedWeekday был 7, а не 1
  • добавить registerCallback для отладки

19.01: 40

  • создать заготовку компонента budget в iOS
  • реализовать budgetReportedDate()
  • реализовать budgetReportedWeekday()

18.01: 30

  • собрать проект с подключенной либой gb
  • вызвать simplyPrint в iOS
  • перенести функции в gb

18.01: 50

  • досоздать заготовку build.gradle.kts
  • создать заготовку ver-sdkios
  • переименовать ver-sdkios -> sdk-ios
  • сделать скрипт util/gen-ios √ сборка √ архивирование

17.01: 40

  • доверстать заготовку интерфейса два поля ввода текстовый результат кнопки для буфера

17.01: 35

  • сверстать поле ввода spent с кнопкой

16.01: 40

  • долг: entities.yml: удалить copyResult это didClickCopy ведь уже
  • создать заготовку приложения на iOS по примеру песочницы
  • оформить ЗС https://github.com/kornerr/git-budget/pull/7
  • влить ЗС

16.01: 35

  • создать ЗС [GigaIDE AI version] до изменений paste
  • повторить копирование в буфер через Giga IDE не удалось ибо не работает агент

15.01: 45

  • уведомить о факте копирования на моём Samsung это и так происходит ГигаЧат сказал, что и многие другие производители отображают уведомление на копирование в буфер итог: не надо ничего показывать дополнительно
  • создать новую ветку для ЗС с помощью Cursor
  • продублировать копирование в буфер с помощью Cursor
  • оформить ЗС cursor
  • оформить ЗС ручной
  • влить ЗС ручной
  • скачать Giga IDE

15.01: 35

14.01: 40

  • оформить ветку, но не сливать её https://github.com/kornerr/git-budget/pull/2
  • сделать руками вставку в буфер тоже под запись замерить время вышло 40 минут а с cursor AI было 40 минут второй части + сколько в первой т.е. никак не быстрее как минимум то же время но в голове меньше мыслей было а по факту было больше review и меньше внимательности ибо я пропустил в review, что нужно было didClickPaste вместо pasteSpent

14.01: 40

  • исправить работу с inputSpent, pastedSpent надо ввести shouldResetSpent spent на основе inputSpent и pastedSpent после чего убрать из shouldResetResult весь блок if с вызовом budgetCtrl() ибо внутри should нельзя вызывать эффекты вроде budgetCtrl()
  • исправить задание значения для vm.inputSpent из spent при отличии cursor неверно выбрал поле и не так написал эффект
  • проверить отображение pasted spent в поле ввода и что нет цикла после задания inputSpent руками цикла нет отображение есть вставка из буфера произошла успешно

13.01: 40

  • оформить ЗС https://github.com/kornerr/git-budget/pull/1
  • влить ЗС перед Cursor AI обязательно иначе потом ничего не видно будет по комитам
  • сделать вставку из буфера

13.01: 45

  • сделать budgetReportedWeekday() использовать LocalDate оно больше подходит, чем Calendar https://stackoverflow.com/questions/38739983/calendar-set-day-of-week-not-correct
  • передавать значения по умолчанию
  • сделать подсчёт строки результата
  • (практически) сравнять функциональность W и A

12.01: 45

  • добавить Scaffold как-будто из-за его отсутствия может быть чёрная штука вверху при выборе поля не использовать modifier из Scaffold использовал - помогло
  • сделать два поля ввода
  • сделать budgetReportedDate()

12.01: 40

  • переименовать Playground -> Budget
  • сверстать интерфейс с двумя полями ввода и одним выводом

11.01: 35

  • влить ветку budget на сайте чтобы можно было добавить cv/ files
  • запустить заготовку в Android Studio запустилось
  • создать util/do-tmux
  • вернуть и перегенерить cld/*

11.01: 40

  • обработать файлы первого уровня
  • обработать уровень app
  • обработать уровень app/src/main
  • обработать уровень app/src/main/res
  • обработать уровень app/src/main/kotlin

10.01: 25

  • найти репозиторий старого git budget https://github.com/kornerr/git-budget его и возьму
  • найти эталон по UI для бюджета вот этот сайт плюс-минус на мой уровень https://costtrack.app/ общий список прилложений по бюджетированию https://t-j.ru/short/all-budget-apps итог эталона нет почти все приложения уродливые так что я могу делать свою уродливую версию а там уже посмотрим

09.01: 35

  • определять weekday / weekend
  • считать перерасход
  • считать 'осталось Р/д' для будней

09.01: 30

  • обдумать создание отдельного приложения уже без JS либо забить на буфер пока что но потом всё равно хочется его иметь либо всё-таки приложение тогда и гит чисто для бюджета будет смотреться логичнее да и просто как пример приложения-доказательства выглядит лучше создать надо, но в следующей итерации прямо сейчас мне полезнее подсчёт, а не форма итог: потом -да, сейчас - нет
  • убрать pre кнопки буфера можно оставить, они ведь в браузере работают
  • считать целевой утренний баланс

08.01: 45

  • изучить отсутствие вставки из буфера в WebView Uncaught (in promise) NotAllowedError: Failed to execute 'readText' on 'Clipboard': Read permission denied. после ввода WebCC ничего не изменилось onPermissionRequest не вызывается короче, это прям проблема на WebView так что аналог электрона - это прям сильно упорото будет в JS стопицот вещей иначе работают их тупо невозможно поддержать гораздо проще КМП

08.01: 45

  • добавить кнопку быстрой вставки из буфера в поле ввода
  • добавить кнопку быстрого копирования результата
  • сделать вставку из буфера

07.01: 15

  • исправить форматирование даты 3.1 -> 03.01
  • учитывать отрицательный баланс