This Jackie Robinson day I found myself wearing my royal blue Brooklyn Dodgers cap almost all day, and working on both iterations of Lazurite and mapping out what v0.4.0 of Commonplace will look like.


The amount of assets you have to add coupled with XML in a mobile app really blows my mind. I added the native splash screen package to the flutter toolchain coupled with a small bun program to generate the images (with sharp) from the Lazurite logo and it produced 55 assets. The diff just to add a splash screen was one of the more absurd I've had recently. Icons are no different.

I've been working through the app store review guidelines.


Speaking of icons, the way I have icons setup in Lazurite for desktop is a little silly. I use my favorite functional paradigm on the frontend, namely union/enumerated types and switch/match cases. I have a giant union of IconKind strings that map to icon classes from remix, exposed through egoist's tailwindcssicons plugin. This gives me intellisense all the way down which is super nice.

export function Icon(props: IconProps) {
  const [local, rest] = splitProps(props, ["class", "iconClass", "kind", "name"]);

  return (
    <span {...rest} class="flex items-center justify-center" classList={{ [local.class ?? ""]: !!local.class }}>
      <Switch>
        <Match when={!!local.iconClass}>
          <i class={local.iconClass} />
        </Match>
        <Match when={local.kind === "quill"}>
          <i class="i-ri-quill-pen-line" />
        </Match>
        {/* There's like a million more of these */}
      </Switch>
    </span>
  );

The most import QoL part of this is that it wraps the icon in flex items-center to make sure the icon alignment is where I want it to be.

It's a pattern that seems like its "slop" but the funny thing is, any time an agent works on UI, it never uses available Icon variants. It just uses the iconClass override.

I like the affordances provides quite a bit. Reactivity seems to work the way you expect it to and I don't find myself hitting many of the footguns that React has. Whether or not that has anything to do with my abilities as an engineer remains to be seen.


Speaking of React, I dove back into the Commonplace codebase today mostly to figure out where I want to go with the next release. So far it looks like:

  • standard.site publishing (leaflet, pckt, & greengale)

  • Find & replace in document

  • Wikilinks

  • Toggleable document outlines

Deferred for v0.5.0 is private Github gists & publishing gists (I've already got ATmosphere/BlueSky OAuth setup in the application so we don't need to add any plumbing there).

There are lots of markdown note taking apps out there. If you want to check out the one I built, you can download it for your operating system of choice (Mac, Windows, or Linux) on Github.

Release Commonplace v0.3.1-pre · stormlightlabs/writer
You&#39;ll find a brand-new face for Writer Commonplace! We&#39;ve given it a cleaner, darker design and a brand new welcome screen. Here are some more details: Added Image support PDF exports now...
https://github.com/stormlightlabs/writer/releases/tag/v0.3.1