Projets

logiciel

accshift

Passez d'un compte de jeu à l'autre en un clic, sans mot de passe enregistré : Steam, Riot, Battle.net, Epic et d'autres. Sur Windows, macOS et Linux.

  • Tauri
  • Rust
  • Svelte
logiciel

Boite

Tout votre travail et vos agents IA au même endroit : Claude Code, Codex et d'autres dans une seule fenêtre de discussion, sur l'ordinateur et depuis le téléphone.

  • Tauri
  • Rust
  • SvelteKit
outil de dev

Douane

Pour les développeurs : utilisez tous vos abonnements IA dans n'importe quel outil de code, par un seul serveur chez vous qui suit le quota de chaque compte.

  • Rust
  • SvelteKit
  • Docker
appli PS Vita

Spotivita

Écoutez Spotify sur une PS Vita : votre bibliothèque, la recherche, les pages d'artiste et Spotify Connect.

  • C++
  • VitaSDK
outil Windows

Windows Bagarre

Une fenêtre qui nettoie un Windows 11 tout juste installé et le règle pour le jeu.

  • PowerShell
  • WPF
fastpick
outil de dev

fastpick

Pour les développeurs : choisissez quel assistant de code IA lancer, avec quel service et quel modèle, depuis un menu du terminal, ou laissez une roulette choisir.

  • Rust
  • Ratatui
  • crates.io
fast-mcp-ssh
outil de dev

fast-mcp-ssh

Permet à un assistant IA de travailler sur un ordinateur distant : lancer des commandes, transférer des fichiers, prendre des captures d'écran.

  • Rust
  • MCP
  • crates.io
extension web

PriceHover

Voyez un prix d'une page web dans une autre devise ou en cryptomonnaie : au survol, à la sélection ou directement dans la page. Chrome et Firefox.

  • WebExtension
  • TypeScript
  • Svelte
AlarmeMeian
appli Android

AlarmeMeian

Pilotez une alarme de maison Meian depuis un téléphone Android, par SMS.

  • Kotlin
  • Android
logiciel

B.O.T.S

Un petit robot en haut de l'écran qui suit vos agents Boite, vous prévient quand l'un d'eux a besoin de vous et vous laisse répondre sans ouvrir Boite.

  • Tauri
  • Rust
  • Svelte
logiciel

Cortisoff

De petits modules pour votre bureau : lumière du soir, fréquence d'écran et vibrance pour chaque jeu, raccourcis. Sur Windows, Linux et macOS.

  • Rust
  • Lua
  • egui
Projets

extension web

PriceHover

  • WebExtension
  • TypeScript
  • Svelte
PriceHover

Voyez un prix d'une page web dans une autre devise ou en cryptomonnaie : au survol, à la sélection ou directement dans la page. Chrome et Firefox.

En images

Documentation technique, en anglais

Hover any price on any page and read it in your own currency.
Chrome and Firefox, MV3, built with WXT and Svelte 5.

Install · What it reads · Inline mode · Crypto · Popup · Privacy

Why

A price in a currency you do not think in costs a tab, a search box and your place in the page. PriceHover reads it where it sits. No account, no paste, one request a day for the rates.

Features

  • Hover or select a price. Your own currency comes first and is never converted away from.
  • $ means what the site means. $49 on a .ca shop is Canadian, 1 099 kr on a .no shop is Norwegian, ¥ on a .cn shop is yuan. A table row that names its currency decides for the prices in it, and a site that names its currency once is remembered for the whole site.
  • Lock a site's currency when you know better: amazon.com with $ = CAD, from the settings page.
  • Prose stays prose. try 100 times and error code 500 KD are not prices. Every ambiguous token has a rejection test behind it.
  • Ranges. €10 – €20, €10-20 and 10-20 kr convert as one range.
  • Click a row to copy the amount.
  • Inline mode. Write your currency beside every price instead of waiting for a hover. It only ever appends.
  • Two switches. A master one and a per-site pause, both in the popup.
  • A calculator in the popup. 20 chf, 100 eur jpy, and 0.5 btc once crypto is on.
  • Rounding. ≈€1,235 where €1,234.56 would pretend to a precision a conversion does not have.
  • Sub-cent prices stay prices. A yen is €0.0061, not €0.01, and never €0. Per-unit and prorated prices ($0.0075) are read too.
  • Crypto, if you want it. 24 assets including BTC, ETH, XMR, USDT, USDC and DOGE. Off by default, one extra host, granted by you and given back when you switch it off.
  • 44 currencies, eight languages. Flags are bundled, nothing is fetched from a third party.

2.0.0 changed how $ is read. On a country domain it now converts as that country's dollar, not as USD. Settings → Behaviour → Read $, kr and ¥ from the site puts the old reading back, except on sites you locked.

What it reads

The same $49.99, two shops

The country comes from the domain, or from the region in <html lang> when the domain says nothing. Vanity endings (.co, .io, .ai, .me, .tv, .to) are ignored, because the country in them means nothing. When the site decided and not the price, the card says so.

One table, eight currencies, three symbols

Two things outrank the domain: a code printed beside the price ($49 CAD), and the row the price sits in, so SteamDB's ¥ 69 on the Chinese Yuan row is yuan while the ¥ 1,980 on the Japanese Yen row stays yen. One thing ranks below it: what the site's own pages said, remembered per site on your machine and listed in the settings, where each entry can be removed. A lock you set yourself beats all of them.

On the page Read as
¥74,800 on a .jp shop 74 800 JPY
¥74,800 on a .cn shop 74 800 CNY
$49.99 CAD anywhere 49.99 CAD
¥ 69 on a row labelled Chinese Yuan 69 CNY
₹1,49,900 149 900 INR (Indian lakh grouping)
KD 12.500 12.500 KWD (three decimals, not thousands)
€10-20 a range, 10 to 20 EUR
try 100 times, requires PHP 8.2, error code 500 KD nothing

Inline mode

Off by default. The site's own text is never rewritten, only appended to, and text fields, editable areas, code and pre are left alone.

Crypto, both ways

Off by default. One switch in the settings turns it on, your browser asks for api.coingecko.com, and from then on:

  • Crypto prices on a page convert like any other. 0.0042 BTC, ₿0.05, Ξ0.085, 250 USDT, and the tickers XMR, USDC, DOGE, XRP, LTC and BCH. ETH 8092 stays a Zurich postal code and BTC 10000 a headline.
  • Any of the 24 assets can sit in your list, so a price in dollars also reads in bitcoin or ether.
  • The popup takes them too: 0.5 btc, 100 eur eth.
  • Rates have their own clock, refreshed hourly while the switch is on, with a warning on the card when they are stale.

Switching it off hands the permission back, and nothing contacts the second host again.

The popup is also a converter

Type 250 chf, 20 usd jpy, 0.5 btc once crypto is on, or a bare number to convert from your own currency. The footer says how old the rates are and refreshes them on demand.

Settings

Your own currency, the list to convert into and its order, hover delay, rounding, inline mode, paused sites, locked site currencies, and the currencies read from each site.

Privacy

PriceHover contacts exactly one host, open.er-api.com, and asks it one question: today's exchange rates. That request carries nothing about you or the page you are on. Prices are detected on your machine, flags are bundled in the extension, and there is no analytics, no telemetry and no identifier. Two permissions, storage and open.er-api.com, plus the page access every content script needs to read the page it runs on.

Turning on crypto conversion adds a second host, api.coingecko.com, and nothing else. It is off by default, your browser asks before granting it, and switching it back off hands the permission back.

Full details in the privacy policy.

Install

  • Firefox: addons.mozilla.org.
  • Chrome: the zip on Releases loads unpacked from chrome://extensions with developer mode on. The Web Store listing is published by hand, so it can trail a tag by a few days.

Build from source

bun install
bun run dev            # Chrome, hot reload
bun run build          # Chrome MV3  -> .output/chrome-mv3
bun run build:firefox  # Firefox MV3 -> .output/firefox-mv3
bun test               # unit tests, plus DOM tests under happy-dom
bun run typecheck      # tsc --noEmit, kept clean and enforced in CI

bun run icons, bun run flags and bun run locales regenerate committed files and never run at build time. A release is cut by pushing a vX.Y.Z tag: CI refuses a tag that disagrees with package.json, builds both targets and attaches the zips.

Contributing

Issues and pull requests are welcome. Keep bun test and bun run typecheck clean, and never add a runtime request to a second host. Detection is the part that breaks quietly: a token accepted one position too freely turns error code 500 KD into a price, so every new one arrives with the case that must stay silent.

License

GNU General Public License v3.0 or later. Use it, read it, fork it. Distributing a modified version, publishing a fork to a browser store included, means releasing its source under the same license. Every dependency is GPL-compatible, and only Svelte (MIT) ships inside the extension.