Skip to content

Instantly share code, notes, and snippets.

View rxliuli's full-sized avatar

rxliuli rxliuli

View GitHub Profile
@rxliuli
rxliuli / convert-chrome-extension-to-safari.md
Last active April 4, 2025 16:11
Converting Chrome Extensions to Safari

Converting Chrome Extensions to Safari

Background

I recently attempted to convert a Chrome extension to Safari—something I had postponed due to Xcode's poor development experience. This article documents the conversion process for Redirector, which is already available on Chrome/Firefox/Edge, into my first Safari extension on the App Store.

Conversion Process

WXT's documentation mentions how to publish Safari versions using the xcrun command line tool for converting Chrome extensions to Safari format.

@rxliuli
rxliuli / a-less-favorable-vue3.md
Last active April 7, 2025 21:16
Svelte5: A Less Favorable Vue3

Svelte5: A Less Favorable Vue3

Background

Svelte5 was released in October last year, touted as the best version of Svelte to date. The team was particularly proud of "runes," a reactive state system built on proxies. However, after experiencing Vue3's Composition API and SolidJS signals, I didn't feel particularly excited. This blog outlines specific issues encountered when using Svelte5 in real projects. If you're a Svelte5 enthusiast, you might want to stop reading now.

Runes Only Work in Svelte Components or .svelte.ts Files

When trying to write hooks with runes similar to React/Vue, like useCounter:

@rxliuli
rxliuli / index.user.js
Last active October 19, 2024 09:53
自动屏蔽 bilibili 登录弹窗
// ==UserScript==
// @name B站(bilibili)自动续播因未登录而暂停的视频 (Bilibili: Continue playing without logging-in)
// @namespace http://tampermonkey.net/
// @version 0.3
// @description 解决B站(bilibili)因未登录而自动暂停视频并弹出登录窗口的问题 / Solve the problem of Bilibili automatically pausing video and popping up a login window because it is not logged in
// @author TheBeacon
// @match https://www.bilibili.com/video/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @license MIT