Annoying Dino 2.1: you can throw him now, and the bugs I found on the way

DHSeaDev — Chrome Extensions, Windows Tools, & Idle Games

Annoying Dino 2.1.0 is the next version of a free Chrome extension that puts a dinosaur on whatever page you are reading. This one lets you pick him up and throw him, gives him a ball and a bone to fetch, hands you a new egg every day, and dresses him for Halloween. It also fixes a pile of things I got wrong in 2.0. As of October 13, 2026 it is built and tested, but I have not uploaded it yet, so the Web Store still lists the 2.0.0 I wrote about in the 2.0 post. I will say so here when that changes.

What is new in Annoying Dino 2.1?

Version 2.0 gave the dino a body. Version 2.1 gives you something to do with it.

  • Pick him up and throw him. Drag more than 7 pixels and he lifts off the ground with his legs kicking. Let go and he flies, bounces off the walls and ceiling, and lands in a puff of dust. A plain click is still a bop on the nose.
  • Toys. A ball and a bone, from the Play tab in the popup. Drag them, fling them, and he runs after them.
  • Little reactions. He sniffs a link when your cursor hovers it, studies text you select, pokes a cursor that has gone still, and greets you if you come back to the tab after 45 seconds away.
  • A daily egg and a Field Guide. Your first visit each day lays an egg, and every seventh day it is a golden one. The guide tracks five species across three egg types, so there is always one more thing to find.
  • Dino Cam. A button that frames the visible tab with a caption and saves it as a PNG on your own machine.
  • A rebuilt popup. Four tabs (Look, Behavior, Play, Guide), Start and Stop always in the header, and a wardrobe that shows the real item art, with a plain note on how to earn each locked one.

Which Halloween outfits does he get?

Four: a pumpkin for the head, a masquerade mask, a pair of bat wings, and a treat bucket. They unlock on their own between October 1 and November 2 by your local clock, and once you have them you keep them. A new “trick” activity brings out the bucket. With these the wardrobe holds 37 wearable items, up from 33.

The pumpkin was the fiddly one. My first version sat 0.6 units too low and covered the eyes of the brachiosaurus entirely, because I had measured the placement against the art’s centre when what matters is where the art ends: 2.6, not 2. The bat wings went behind the body and had to be drawn larger or they vanished. Neither shows up in a test that only asks whether an item applies. I only saw them by rendering all five species in each hat and looking.

What bugs did 2.1 fix?

Before I added anything I ran my own regression suite against the shipped 2.0.0. It passed 1 of 14 checks, and the browser suite passed 2 of 7. Those were real defects, not nitpicks.

  • Twelve tools could never be earned. They had an unlock hint in the popup but no counter behind them, so nobody could ever have unlocked them. Every tool and wardrobe item now comes from one rule table, and anyone who already earned the counters is credited at start.
  • A stolen hat was saved as “no hat.” When the pterodactyl grabbed your hat, 2.0 wrote “none” to your synced settings. Close the tab mid-theft and the hat was gone for good. It is a visual loan now, and your saved outfit is never touched.
  • Picking up a card a second time made it jump by its whole offset.
  • The speech bubble now sits above the real head position, which matters for tall species, hats and multi-line jokes, and flips below when there is no room.
  • Hard scrolling makes him surf on the next frame instead of whenever his current activity happened to end.
  • Storage growth. Empty per-site egg records are removed and the index is capped at 60.

Then I had three reviewers look at the 2.1 build independently: one on privacy and Manifest V3 rules, one on correctness, one playing it as a person who has never seen it. They found eggs lost when you stop the extension, egg records keyed by page path (a path can carry a secret, so they are keyed by site now), a throw that fired after you had simply set him down, and a daily egg that paid out if you set your clock backwards. All fixed, each with a test.

Why did tap-to-reveal cards stop working?

I found this one by using the thing, not by testing it. Some of the joke cards have a punchline you reveal by tapping. Tapping did nothing. The cards can also be dragged, and dragging uses pointer capture, which redirects all following pointer events to the capturing element. The browser then fires the click on that element instead of the one under your finger, so the click never arrived where the reveal code was listening. No test pressed on a card the way a hand does. Now the card checks on release: if the pointer moved less than 5 pixels, it was a tap, and the card flips. The browser test uses a real mouse click on the card and fails if the punchline stays hidden.

The second report from the same morning was that the species picker wrapped onto two lines. A flexible row that cannot wrap, with slightly smaller pills, fixed it, and a popup test now checks that all five buttons share one top edge and fit the width.

One test failure taught me something different. A hat test in the regression suite failed about once in eight runs. The code was fine. A second, randomly spawned pterodactyl was stealing the new hat during the test, which is exactly what it is supposed to do. I turned off friends for that test and ran the suite 30 times with no failures.

Does 2.1 ask for new permissions or touch the network?

No to both. The permissions are the same three as before: activeTab, scripting and storage. There are no network requests and no telemetry. The dino lives in a shadow root and never edits the page you are on. His reactions use geometry and timing only, never page text. The one remark per page load that depends on the kind of site uses the hostname and element counts, nothing else.

Dino Cam uses tabs.captureVisibleTab, which Chrome allows under activeTab after you click the extension. It works in my automated browser tests. I have not yet confirmed it from a real toolbar click on a live site, so treat that one feature as unverified until I have. The picture is saved locally and never uploaded.

How well is it tested, and what is not fixed?

The final package passes six suites: 42 of 42 in the simulation, 14 of 14 regression, 52 of 52 play tests with a seeded random generator so they are repeatable, 17 of 17 store-gate checks, 14 of 14 in a real browser and 15 of 15 against the real unpacked extension’s popup. A 13-check pre-ship gate says it is safe to bundle. I also broke the code on purpose in 14 places (the drag threshold, the wall bounces, the daily-egg freshness check and others) to make sure the tests go red. Each one did.

Four things are known and not fixed. A page left open past midnight does not roll the daily egg over until the next start. Two tabs opened at the same moment can both lay the daily egg. Calm mode does not slow every activity, so perching, stealing and graffiti ignore it. And the shadow root is open, so another script on the page could in principle look inside.

Where does Tantrum fit in?

The popup footer now links to Tantrum, my other Chrome extension, which turns any web page into a toy you can wreck, mend with gold seams, overgrow with plants or doodle on. It is on the Chrome Web Store, and this post covers what it asks for and does. If you like a dinosaur that bothers a page, you may like a tool that lets you do it yourself.

Questions people ask

How do I throw the dinosaur in Annoying Dino 2.1?

Press and drag him more than 7 pixels, then let go while the cursor is still moving. If you hold still before releasing, he is set down gently instead of thrown. A click without dragging is a bop.

When do the Halloween outfits unlock?

They are granted automatically from October 1 through November 2 by your computer’s local date, and you keep them afterward. They appear once version 2.1.0 is installed.

Did Annoying Dino 2.1 add permissions or collect data?

No. It declares the same three permissions as 2.0 (activeTab, scripting, storage), makes no network requests, and runs no analytics. Dino Cam postcards are saved on your own computer.

Is Annoying Dino 2.1 on the Chrome Web Store yet?

Not as of October 13, 2026. The listing is still Annoying Dino at version 2.0.0. This post will get a dated update when 2.1.0 is up.

Where this goes

The Annoying Dino project page has the full change history. The plan behind 2.0 is in the plan post, and this earlier post explains why I keep building on him. The rest of what I make is on the projects index, and every post is listed in the devlog index.


Leave a Reply

Your email address will not be published. Required fields are marked *