um

Timeline

Things that happened, in order, joined by a line: an audit log, an order's history, a deploy log, an activity feed, a roadmap. An ordered list with no script.

Dots and times

The common case. time: goes through local_time_tag, so time_format: :relative keeps itself current.

  1. Invoice created
  2. Sent to billing@acme.test
  3. Viewed by the customer
  4. Paid in full

Order status

icon: in a circle, tone: to colour it, and pending: true for what hasn't happened yet: a hollow marker and a dashed line into it. A string time prints as it is.

  1. Order placed

    3 items, $148.00

  2. Payment confirmed

    Visa ending 4242

  3. Packed
  4. Shipped

    Tracking 1Z 999 AA1 0123 4567 84

  5. Out for deliveryTomorrow(upcoming)
  6. DeliveredBy Friday(upcoming)

Activity feed

avatar: takes a name (or avatar options) and draws it small. The block is the event's body.

Activity

  1. Ada Lovelace opened the issue
  2. Grace Hopper commented
    I can reproduce this on Safari 18. It only happens when the invoice has more than one currency.
  3. Katherine Johnson added a label
    bug billing
  4. Round each currency on its own #218

Deploy log

A failed step carries its log in the body; anything goes there, a code view included.

  1. Build started

    main at a1b2c3d

  2. Tests passed

    1,284 examples in 2m 12s

  3. Migrations failed
    == 20260922101500 AddCurrencyToInvoices: migrating ======
    -- add_column(:invoices, :currency, :string, {null: false})
    rails aborted!
    StandardError: PG::NotNullViolation: column "currency" contains null values
  4. Rolled back

    Production is still on 9f8e7d6

  5. Deploy to production(upcoming)

Commits

href: links the title. Built from a loop, in the order given; the gem doesn't sort.

  1. Ada Lovelace · e41f0a2
  2. Add currency to invoices
    Grace Hopper · a1b2c3d
  3. Katherine Johnson · 7c9d1e0
  4. Katherine Johnson · 3b5a8f4

Roadmap, horizontal

orientation: :horizontal lays events side by side from 40rem, and falls back to vertical on a phone.

  1. Private betaQ1

    40 teams onboarded

  2. Public launchQ2

    Pricing and self-serve sign-up

  3. IntegrationsQ3

    GitHub and Slack, in progress

  4. EnterpriseQ4(upcoming)

    SSO, audit log, SLAs

Releases, horizontal with dates

A Date reads as a date. Dots keep a horizontal timeline light.

  1. v0.4
  2. v0.5
  3. v0.6
  4. v0.7
  5. v1.0Soon(upcoming)

Tones

Every tone on a dot and on an icon. Markers are decoration: the title says what happened.

  1. Neutral

    Something happened

  2. Good

    It worked

  3. Info

    Worth knowing

  4. Warn

    Look at this soon

  5. Bad

    It failed

  6. Pending(upcoming)

    Not yet

  1. Neutral

    Edited

  2. Good

    Approved

  3. Info

    Mentioned

  4. Warn

    Retried

  5. Bad

    Rejected

  6. Pending(upcoming)

    Scheduled

Mixed markers

Dots, icons and avatars share one column, so the line stays straight.

  1. Account created
  2. Ada Lovelace joined
  3. Plan changed to Pro
  4. Grace Hopper joined
  5. Password policy tightened
  6. Renews(upcoming)

Interview process

marker: :decimal puts each step's position in its marker, named as CSS's list-style-type. The time can be markup, a badge here, and the body holds cards, people and links.

Interview process

  1. Intro call with Ada 30 mins

    A relaxed video call about how you work. Bring a story or two about a project you pushed over the line, and as many questions about us as you like.

    Ada Lovelace
    Co-founder
    Read the plan before you meet Ada · Why invoices are hard · 4:12 · 3 min 40
  2. Technical chat with Grace 1 hour

    Grace advises our engineering team while we hire a head of engineering. Expect to talk through a system you've built, the trade-offs you made, and how you use AI tools day to day.

    Across time zones, this is usually a morning in London and an afternoon in Toronto.

    Grace Hopper
    Engineering advisor
  3. Meet the founders 1 hr 30 mins

    In person with Ada and Katherine, the other co-founder. We'll go through your experience in detail and share what you'd be working on in your first six months.

    Katherine Johnson
    Co-founder
    Ada Lovelace
    Co-founder
    Your first six months · Where the product goes next · 11:05 · 4 min 12

Actions in the body

A pending step can carry the buttons that move it along.

  1. Submitted by Katherine Johnson

    Conference travel, $1,240.00

  2. Approved by the team lead
  3. Waiting for finance(upcoming)

Long titles

Titles and descriptions wrap; the time drops under the title when there's no room.

  1. Changed the webhook URL for the production environment to a new endpoint

    https://hooks.acme.test/unmagic/production/incoming

  2. Rotated the signing secret

Loading and empty

skeleton: true stands three placeholder events in. With no events a timeline renders nothing, so .presence || empty_state fills the gap.

Loading…

No deploys yet

Deploys show up here once you push to main.