Toolaby Wall

Troubleshoot an extension

What an extension on the Wall says when something is wrong, why, and what fixes it.

The client checks the extension's manifest when its service worker starts, and says what is missing in the service worker's console, prefixed [toolaby], with the lines to add. Open it at chrome://extensions → your extension → Service worker.

This page lists those messages, then the problems that show elsewhere: in the popup, on the Wall's pages, and on the Chrome Web Store.

At startup

MessageCauseFix
Toolaby(config): `key` must be a tool key from the platform — tk_test_… or tk_live_…toolaby.config.js still holds the placeholder, or no key at all. The extension does not start.npx -y toolaby@latest wire <tool-id> in the extension's folder, or paste the key from the tool's Set up page.
Toolaby(config): the tool key is damaged — copy it again from the tool's Set up pageThe key was cut short when it was copied.Copy it again from the Set up or Keys page.
[toolaby] The "storage" permission is missing.The manifest has no storage permission. Nothing the client keeps survives.Add "permissions": ["storage"]. npx -y toolaby@latest wire <tool-id> --force does it.
[toolaby] externally_connectable does not include https://…/*.Sign-in and the after-purchase page cannot hand anything to the extension.npx -y toolaby@latest wire <tool-id> --force, or add the line the message shows.
[toolaby] This build was installed from a store but its tool key points at …A store copy carries a Test or local key.npx -y toolaby@latest wire <tool-id> --live --force, build, npx -y toolaby@latest pack, upload. See Ship to the Chrome Web Store.

In the extension

What you seeCauseFix
The sign-in page says Connected, and the extension still says Not signed inThe manifest's externally_connectable lacks the Wall's address, so the page could not reach the extension.See the startup message above. Then sign in again.
The Wall answers 403 forbidden_origin: This tool key is bound to another extension.Once you name your extension, a tool key works from the store copy, the copies with the wiring's key, and the copy you chose on the Keys page. This is another.On the tool's Keys page, Use this copy instead beside its id. Keep the manifest's key so every copy you load has one id.
The popup says Not set up yet, or a method rejects with Toolaby is not running in this extension's backgroundNothing starts the Wall in the background: the manifest names a background of yours that never calls it. Chrome says Receiving end does not exist.Wire again on the Set up page, or npx -y toolaby@latest upgrade <tool-id>. Then reload the extension. npx -y toolaby@latest check names the background.
A page of yours breaks where it reads the popup, or your popup opens without the checkYour code calls chrome.action.getPopup() or setPopup(), and finds or replaces the Wall popup in front of yours.Keep my popup in front on the Set up page, or npx -y toolaby@latest upgrade <tool-id> --own-popup. toolaby.showPaywall() then opens the Wall popup.
A change in the dashboard does not show in the extensionInstalled copies ask the Wall at intervals: within seconds on Test; on Live at most once in five minutes when the Wall popup opens, and hourly otherwise. Code of yours that swaps the popup (setPopup()) skips the Wall popup altogether.Wait the interval. Keep your popup in front and gate your paid action (see the row above).
On Windows, npx -y toolaby@latest … opens toolaby.js in your editor instead of runningCommand line 1.7.1 or older: the Command Prompt runs a toolaby.js in the current folder before a command named toolaby.Command line 1.7.2 is named toolaby-cli, so npx -y toolaby@latest works. Installed, type toolaby-cli.
Every open of the popup spends a free useThe Wall popup stands in front of yours and the Free plan counts uses.Put your popup first and count at the action. See Gate your extension.
has() answers yes for every featureThe tool has no features under Pricing. A tool with none holds everything.Add the features, and tick them on the plans that hold them.
showPaywall() opens a page that is not foundtoolaby-popup.html or toolaby-sidepanel.html is not in the build.Keep both in the extension; the wiring writes them. A framework must copy them into its output. See Frameworks.
The paywall opens at popup width in a side panelThe page does not say it is a side panel.<html data-toolaby-surface="sidepanel">.
A purchase went through and the extension still shows the Free planThe purchase was made signed out, so it waits on the address it was made with. Or the after-purchase page could not reach the extension (see externally_connectable).The buyer signs in once with that address: the after-purchase page's button, or Sign in in the extension. Then it unlocks.
Update needed in the popupThe tool's Versions set a minimum above this build's version.Publish a newer build, or lower the minimum.

In Chrome

What you seeCauseFix
Chrome refuses to load the extensionThe manifest's side_panel.default_path names a file that is not there. Chrome refuses the whole extension.Put the file back, or remove the side panel with its key and the sidePanel permission. See Surfaces.
The extension's id changes when it is loaded from another folderThe manifest has no key.npx -y toolaby@latest wire <tool-id> --force writes the tool's identity as the manifest's key.

On the Chrome Web Store

What you seeCauseFix
key field is not allowed in manifestA new item's first package may not carry a key.Upload the zip npx -y toolaby@latest pack makes: it leaves the key out.
The upload is refused for its key on an updateThe package's key is not the item's own.The same: npx -y toolaby@latest pack.
The store copy is refused with 403 forbidden_originYou chose another copy on the Keys page, and the tool does not know the store copy yet.Paste the listing's address under the tool's Settings → Store.

See also

On this page