SShortSingh.
Back to feed

Developer Bypasses Missing Firefox API to Set Bookmark Keywords via Sync Encryption

0
·24 views

A Firefox extension developer building Passport Containers needed to set bookmark keywords programmatically, but the WebExtensions bookmarks API has never supported keywords since a feature request was filed in 2016. An initial workaround intercepted address-bar searches and redirected them, but this lacked Firefox's native 'Visit' suggestion and stored keywords inside the extension rather than in Firefox itself. The developer discovered that Firefox Sync stores bookmark records on Mozilla's servers with a keyword field, meaning any client that writes to a synced record can set a real keyword across all devices. By implementing Mozilla's OAuth flow with scoped keys and PKCE, the extension retrieves the end-to-end encrypted Sync key without ever accessing the user's password, then writes the keyword directly into the bookmark's Sync record. The approach relies on a publicly known OAuth client ID intended for CLI use, since Mozilla does not issue Sync API access to third-party developers.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

WireGuard por tu cuenta o Tailscale en un homelab: qué plano de control operar

The article compares running raw WireGuard with using Tailscale for a home lab, focusing on who manages the control plane. Raw WireGuard requires manual handling of key distribution, endpoints and peer configuration, which suits setups with few nodes and a public IP. Tailscale automates coordination and traverses NAT without opening ports, at the cost of relying on its coordination service. The piece explains connection types (direct UDP, DERP relay, Peer Relay) and notes that traffic stays encrypted even through relays. It also outlines Tailscale's free Personal plan limits for non-commercial use.

0
ProgrammingDEV Community ·

Java Virtual Threads and Kotlin Coroutines Differ in How They Suspend, Shifting the Bottleneck

A DEV Community article compares Java virtual threads with Kotlin coroutines, focusing on how their suspension models affect code structure and runtime behavior. Traditional thread-per-request servers are limited by thread count, even though many threads sit idle waiting on databases or external APIs. Both technologies release the underlying OS thread during waits and resume at the suspension point, but virtual threads save and restore the full stack while coroutines rely on compiler-transformed, stackless functions. The author argues that virtual threads hide suspension points from the source code, whereas coroutines mark them explicitly. The article also notes that these approaches reduce the cost of waiting without adding total resources, so the bottleneck moves elsewhere, often out of sight in the virtual thread model.

0
ProgrammingDEV Community ·

Why old WooCommerce checkout snippets fail on the Checkout block and how to add fields

Stores using the WooCommerce Checkout block, the default for new installs since version 8.3, do not run most classic checkout hooks, so older custom field snippets fail silently. The recommended approach is the Additional Checkout Fields API, stable since version 8.9, which is best placed in a small plugin so it persists across theme changes. The article's example registers a namespaced purchase order field with sanitization and validation callbacks. Developers must also watch for namespacing requirements, storage location options, and a hook name discrepancy between the documentation and the source code. Once registered, the field appears in admin, thank-you pages and emails, and the CheckoutFields helper can retrieve it in code.

0
ProgrammingDEV Community ·

Guidance on Retrying Failed Email API Calls Under 2026 Seller Compliance Practices

A developer guide outlines how to retry failed email API calls only when errors appear transient, using capped exponential backoff with jitter. It recommends writing an immutable attempt record before each retry, capturing the order, notification, policy decision, response class, and timestamps. Rate-limit and server errors may justify retries, while malformed requests, authentication failures, and permanent recipient rejections should be routed to review or a dead-letter path. The guide stresses that API acceptance and downstream delivery or bounce events are separate facts that should be recorded distinctly. It also warns that retry limits and timing values are starting points to be validated against measured queue behavior and dependency performance.