Cubicle Zoo

Chrome extension

Snake King

A discreet reading bar for personal text, short notes, selected feeds and lightweight market updates.

Status: Prototype
Snake King's reading bar running across the top of a Google Sheets tab, showing a line of Chinese novel text beside speed, pause and progress controls
Category
Chrome extension
Technologies
TypeScript, Vite, Manifest V3, Chrome APIs, Playwright
Links

Summary

Snake King is an experimental Chrome extension that adds a compact reading line inside ordinary web pages. It keeps personal text, short notes, selected feeds and lightweight market updates available without requiring a separate reading application.

My role

I defined the product idea and built the extension from its permission model and local storage through to the injected reading interface, options experience, automated tests and release preparation.

Problem

Long articles, personal reading material and small reminders usually compete with the page already being used. The experiment asks whether a narrow, controllable reading surface can keep that information visible with less interruption.

Users and use case

The current prototype is aimed at people who want to read their own text, glance at selected information or keep a short reminder visible while continuing to work in another browser page.

Constraints

Chrome does not allow an extension to add permanent interface below the native bookmark bar, so Snake King must render inside permitted web pages. The product also avoids a hosted backend and keeps personal content, preferences and credentials in the local browser profile.

Solution

A toolbar action injects a single reading bar into the active page. It supports horizontal or vertical movement, pause and speed controls, memos, imported text, reading progress, selected news sources, user-configured data feeds and experimental stock quotes.

Architecture and workflow

The extension uses Chrome's current extension manifest with a background service worker, an isolated Shadow DOM interface and versioned local storage. Optional permissions are requested only for sources selected by the user, while outside content is rendered as plain text rather than remote markup.

Key decisions

Snake King is invoked per tab instead of requesting broad access at installation. Personal text remains local, source permissions are granted individually and article extraction is limited to permitted public pages without bypassing paywalls or retaining full copies.

Testing and delivery

Vitest covers the content and state logic, while Playwright loads the built extension into Chromium and exercises injection, reading controls, local content, saved progress, navigation and hostile page styling. Linting, type checking and production builds form the remaining release checks.

Current limitations

The first-use flow is still too easy to misunderstand, the options screen and in-page bar do not yet feel like one visual product, and store presentation needs stronger screenshots and explanation. The overlay can also cover a site's own sticky header.

Lessons and next steps

A functional extension is not automatically an understandable product. The next iteration focuses on onboarding, consistent visual language, clearer store material and more forgiving reading controls, including direct movement through paused text.