Skip to content

Instantly share code, notes, and snippets.

View kelsos's full-sized avatar
πŸ•΅οΈ
Happily Coding πŸ˜ƒ

Konstantinos Paparas kelsos

πŸ•΅οΈ
Happily Coding πŸ˜ƒ
View GitHub Profile

Plan: Move Blockchain Balances Cache from Memory to User DB

Motivation

Currently blockchain balances are cached in-memory via @cache_response_timewise on ChainsAggregator. This means:

  • Cache is lost on restart (forces a full re-query)
  • No way to show cached balances instantly on app load
  • Single API conflates "give me what you have" with "go refresh from nodes"

This plan moves the cache to SQLCipher (user DB), splits the API into fetch-from-cache and refresh, and tracks per-chain staleness.

@kelsos
kelsos / radiant-pondering-nygaard.md
Created February 28, 2026 18:31
Pinia Settings Domain Composables β€” Detailed Implementation Plan

Settings Domain Composables β€” Implementation Plan

Context

The rotki frontend has 4 settings stores consumed by ~210 files (~39% of the codebase). currencySymbol alone is imported in 42 files. Components must know which store holds which setting, creating tight coupling and boilerplate. The goal is to create domain composables (following the existing useAmountDisplaySettings pattern) so most components never import a settings store directly.


PR 1: useCurrencyInfo + migrate ~21 files (highest impact)

@kelsos
kelsos / gist:5f5c2ca2748e41ea5c50020cccc7d732
Created February 28, 2026 18:13
Pinia Store Cleanup Plan β€” rotki frontend
# Pinia Store Cleanup Plan
Analysis of 47 Pinia stores (~7,500 LOC) in the rotki frontend identified several performance and design issues. This plan organizes fixes by effort and risk.
---
## Quick Wins (~30 min, low risk)
### 1. Fix `toRefs()` β†’ `storeToRefs()` (7 files)
@kelsos
kelsos / logical-wobbling-gizmo.md
Created February 18, 2026 10:17
Detailed implementation plan: Lazy-load WalletConnect and local bridge backends

Lazy-Load Wallet Backends (WalletConnect + Local Bridge)

Context

The useWalletStore Pinia store eagerly imports both wallet backends at module level:

  • WalletConnect (use-wallet-connect.ts): imports @reown/appkit + ethers β€” ~2 MB
  • Local Bridge (use-injected-wallet.ts): imports ethers + cross-imports supportedNetworks from WC β€” ~300 KB
  • wallet-constants.ts: imports formatUnits from ethers β€” pulls ethers into a constants file

The store is on the startup path via use-logout.ts and account.ts, both of which only use disconnect. This means ~2.5 MB of wallet libraries load on every page visit, even though most users never use the wallet feature during a session.

@kelsos
kelsos / pure-swimming-crescent.md
Last active January 31, 2026 19:55
MusicBee Remote: Go Core Architecture Design

MusicBee Remote: Rust Core Architecture

Overview

This document outlines an architectural redesign to rewrite the MusicBee Remote plugin core in Rust while maintaining a minimal C# shim for MusicBee API access.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     MusicBee (C++)                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
@kelsos
kelsos / PARTY_MODE_SPEC.md
Created January 24, 2026 22:18
Party Mode Feature Specification for MusicBee Remote Plugin

Party Mode Feature Specification

Overview

Party Mode is a permission-based access control system that allows the plugin administrator to restrict what actions remote clients can perform. This is useful for parties or events where you want to let guests control music but limit potentially disruptive actions (e.g., stopping playback, removing tracks, changing volume drastically).

Legacy Implementation Analysis

The feature existed in the origin/old-develop branch and was removed during a major refactor. Key components:

@kelsos
kelsos / PKGBUILD
Created February 4, 2020 18:53
GH CLI PKGBUILD
pkgname=gh-cli
pkgver=0.5.4
pkgrel=1
pkgdesc="the GitHub CLI"
arch=('x86_64')
url="https://github.com/cli/cli"
license=('MIT')
depends=()
makedepends=()
provides=("${pkgname%-bin}" "gh")
@kelsos
kelsos / LockedTransfer.rst
Last active June 26, 2019 09:45
Locked Transfer Draft

LockedTransfer

A LockedTransfer is a message used to reserve tokens for a new mediated transfer.

Preconditions

For a LockedTransfer to be considered valid the following conditions have to be true.

@kelsos
kelsos / StackTrace.java
Created October 3, 2017 18:56
Geth Mobile Stacktrace
go.Universe$proxyerror: abi: cannot unmarshal []common.Address in to []interface {}
at org.ethereum.geth.BoundContract.call(Native Method)
at io.sikorka.android.contract.SikorkaRegistry.getContractAddresses(SikorkaRegistry.kt:78)
at io.sikorka.android.contract.SikorkaRegistry.getContractAddresses$default(SikorkaRegistry.kt:64)
at io.sikorka.android.node.contracts.ContractRepository$getDeployedContracts$1$1.call(ContractRepository.kt:19)
at io.sikorka.android.node.contracts.ContractRepository$getDeployedContracts$1$1.call(ContractRepository.kt:10)
at io.rea
@kelsos
kelsos / SikorkaRegistry.java
Last active October 3, 2017 17:48
Abigen Result
// This file is an automatically generated Java binding. Do not modify as any
// change will likely be lost upon the next re-generation!
package io.sikorka.android.contract;
import org.ethereum.geth.*;
import org.ethereum.geth.internal.*;