johndunning.com/

github

Coding side projects in various states of completion.

  • QuicKey

    A 5-star-rated a Chrome extension for switching tabs with a Quicksilver-style search or a most recently used menu.

    Homepage

  • wagtail-mcp

    A basic MCP server that provides an LLM with read-only access to a Wagtail CMS instance.

    npm package

  • fwidgets

    A library for adding basic UI functionality to a Figma plugin without writing any UI code. Think of it like adding a series of interactive prompts to a command line tool, similar to the wizard structure of something like create-react-app. fwidgets lets you show one UI element at a time to the user, awaiting their input and then responding to it, while keeping all of your code in the main thread.

    npm package

  • figma-await-ipc

    A simple await-able replacement for postMessage() in Figma plugins.

    npm package

  • quick-score

    A string-scoring and fuzzy-matching library. It's based on the algorithm used in the Quicksilver macOS utility and is designed for smart auto-complete. It improves on the original algorithm by tuning the scoring for long strings, such as webpage titles or URLs, so that the order of the results makes more sense for a given search string.

    Demo     npm package

  • See all the repos

yalpf

Yet another laptop picture frame build log.

fireworks

A collection of free productivity-enhancing extensions that I built for Adobe Fireworks using JavaScript, ActionScript and Flex. Some highlights include:

  • JSML Library

    For you Fireworks developers out there who like to sling JavaScript but aren't down with Flash, or just don't want to deal with the overhead of building a whole SWF for a simple panel or dialog, the JSML Panel and Dialog Library can help. JavaScript Markup Language (JSML) is a combination of JS and Flex 3 that lets you create a Flash panel or dialog using just JavaScript, so you can build a fully functional Fireworks UI for your commands with nothing more than a text editor. For non-developers, this extension won't be very useful. more…

  • Tables

    The Tables panel enables you to quickly mock up HTML-style tables without having to laboriously position each cell or border. Although it's relatively straightforward to arrange elements in a grid using Fireworks' alignment and distribution commands, as soon as the table contents change you'll need to reposition everything manually. The Tables panel automates this tedious process, and will create border and background elements for you. more…

  • SVG

    With increasing support for <canvas> and SVG across browsers, many people have been creating vector images in the SVG format. The SVG extension makes it possible to use these images in your Fireworks documents by parsing the XML and recreating the vectors using Fireworks elements. more…

  • Spacer

    The Spacer panel makes it easy to arrange rows or columns of elements by adjusting the spacing between them. When you select some elements, the panel figures out if they're mostly horizontal or mostly vertical. It then displays the horizontal or vertical space between each element in a series of text fields, which you can edit to easily adjust the spacing. more…

  • Dynamic Symbols

    Creating the JavaScript code for a rich symbol is a tedious process, even if you're familiar with JS. Each time you make a change, you need to refresh the Common Library panel, reopen the folder that contains the symbol, drag another instance of the symbol into your document and then test it. You also end up with a lot of repetitive code to set the default symbol properties and to respond to changes to them. The Dynamic Symbols panel makes creating rich symbols much simpler and more efficient. more…

  • See all the extensions

archive

Some really old stuff. (Like, framesets old. Like, special handling for Netscape Navigator old.)