Building in the open

ActionAmp didn't arrive finished. It's shipping every week: new surfaces, fixes, and ideas, in the open. This is the record of how it's growing up.

37 features shipped804 commitsJun 16 → today

Phases

Foundation
Shipped · Jun 16
MVP
Live
First users
Next
Community
Later

Now · Next · Later

NowMVP live
  • Simple-list Lenses
    Flat checklists that take direct entries or captured Inbox items through one-step triage, without the full project/goal machinery. In verification.
  • Member onboarding + workshops
    Yearly Pro includes a goal-setting workshop. Founding members receive personal onboarding plus a goal-setting workshop.
  • Capture media pipeline
    Image paste/drop into capture, inbox media covers, triage gallery with carousel, and lightbox, all shipped.
  • Guided first-run + Goal context
    Staged onboarding with a practice task. Next and Focus now explain why a task was chosen, including its Goal.
  • This Week, review rhythms, admin tools
    Monday–Sunday Week view, check-in/review cadences, recorded focus sessions, and an admin user directory.
  • Command palette + search
    Sitewide search and keyboard-driven command palette for every action and entity.
  • Soft-launched, self-funded
    Deployed, real billing, the core loop end to end.
NextFirst users
  • Newsletter capture
    Quiet hero/footer email capture before any distribution.
  • Retention critical-path
    First-7-days funnel; close the activation leaks.
  • Google sign-in
    Code-ready; gating on the OAuth client config.
LaterBeyond first users
  • Habits and recurring activities
    Daily, weekly, and custom routines that appear when relevant and roll forward after completion, without streaks, guilt, or a pile of duplicate tasks.
  • Reflection on completed work
    Help users look back at what they finished: what worked, what they learned. Thoughtful review, not streaks or guilt.
  • Quiet distribution
    Put the product in front of ~500 of the right people.
  • Then earn the open launch
    No dates until the numbers say go.

Shipped

Capture image intake
Paste or drop images into the capture popover (⌘V or drag-and-drop). Inbox rows show a media cover for captured images. The triage card displays images large with a swipe carousel, and clicking opens a lightbox. The CLI can download inbox images to disk.
This Week + project lifecycle
A Monday–Sunday Week view with weekday scheduling and Someday auto-promote. Projects gained completed and archived collapsible sections, a move-between-Lenses action, and an overflow menu for lifecycle controls. Shared captures can route directly to projects and lists.
Welcome experience
A calm fade-in veil between login and the app. All routes moved from /app to /do, with legacy redirects preserved. The context line now reads 'Next in <lens>'.
Guided first-run + Goal rationale + admin tools
New users get a staged onboarding loop with a practice task and a skip option. The Next card and Focus mode now explain why a task was chosen, including its Goal context. Admin gained a user directory with device tiles and deletion safeguards. Yearly Pro now includes a goal-setting workshop.
Simple-list Lenses
A second Lens behavior for flat checklists like shopping lists. Items can be added directly or arrive through capture and inbox triage, without the full project/goal machinery. Pro-only custom creation; empty Lenses can convert between types.
Command palette + Review rhythms + Focus sessions
A sitewide search (/) and command palette (⌘\) for quick navigation and actions. Review gained distinct Today, Week, and Month cadences with check-in prompts and per-Lens completion counts. Focus sessions are now recorded with a configurable timer and margin clock.
Pro CLI + marketing site polish
CLI and API access restricted to Pro accounts. The marketing site gained a guide library, share images, a sitemap, pricing comparison, founding-member improvements, and dozens of mobile and accessibility fixes.
Analytics + observability
StatCounter now measures the anonymous landing → signup → first app open → checkout path, while a first-party event ledger powers the admin Funnel for acquisition, activation, payment conversion, and D1/D7 retention. Local development traffic is excluded.
CLI: resources + shared capture
The terminal client gained project resource management (list, add, update, delete) and the capture command now accepts a shared page's title, body, source link, and one image attachment, mirroring the Android share target. Resources are full CRUD from the CLI, closing the last deferred CLI spec.
Project resources
The Resource entity is real: links and notes filed under a project, with add, edit, and remove on the project page. Ownership is project-only: the over-engineered 'project or goal' dual-parent was dropped, so the invariant is enforced by the database.
Share target: images + structured capture
The Android share target now separates a shared page's title, body, source link, and image before saving. One image (up to 5 MB) can be attached; the review page shows parsed chips so nothing reaches the inbox until you confirm.
Magic-link sign-in
Passwordless email sign-in replaces passwords. Enter your address and get a six-digit code or a sign-in link; either creates a normal session. The challenge is rate-limited, time-boxed, and consumed atomically; a failed delivery leaves no usable credential behind.
Task outcome field
Tasks gained an Outcome field (what happened, captured at completion) alongside the existing Context field. Both are optional markdown and invisible when empty; a one-line task stays a one-line task.
Won't-do state + CLI lenses
Tasks gained a fourth status, WONT_DO: the non-destructive decline for a task you considered and chose not to do. It drops out of every active list and surfaces in the Logbook with a Restore, so a 'no' is a recorded decision, not a deletion. The CLI also gained lens management (list, show, switch, current).
Admin dashboard + feedback triage
First in-app admin surface: a stats-first page at Settings → Admin showing global user, task, and feedback counts across today / 7-day / 30-day windows, with an inline feedback-status triage list. Activity tracking (when users signed up, when they were last active) wired through the core loop. A separate admin terminal client (actionamp-admin) gets `stats` and `feedback` commands backed by the same pure cores. The in-app feedback button now feeds a real Feedback model with human-addressable short IDs (XXXX-XXXX) and a triage workflow (open → in-progress → resolved → closed).
ActionAmp CLI — terminal client
A standalone terminal client for ActionAmp. OAuth browser login (no copy-paste tokens), 11 commands covering the full decision loop (now, task (start/pause/done/snooze/move), today, capture, inbox, project, goal, logbook), each with --json output for agents. The CLI talks to new /api/cli/* routes backed by pure op cores shared with the web app (zero duplicated logic). Plus 'actionamp llm' prints agent instructions.
Installable PWA + resilient sessions
ActionAmp is now a real installable PWA: standalone display, maskable icons, and long-press app-icon shortcuts (Capture, Next, Today) on Chromium Android. A sliding 30-day session cookie rides alongside the existing token so iOS/Brave PWA users no longer get logged out by WebKit's 7-day storage cap or Brave's clear-on-exit.
Daily Today reminder + version surfacing
Web Push reminder at a chosen local time, per-device subscriptions, a per-minute PgBoss job that sends at most once per user per day. App version (git SHA) now shows in Settings and the login footer, and a calm banner prompts you to refresh when a new build is deployed.
Founding 100 price correction + public footer
Founding 100 price was advertised as $139 in several surfaces; corrected to $99 everywhere to match live checkout. Public page footer went full-bleed and in-app legal links repointed to the marketing apex.
Deps, email transport, billing boot guard
nodemailer bumped through 6→7→9 with an audit fix; unused @react-email/ui dropped. Billing server no longer crashes on boot when STRIPE_SECRET_KEY is absent. Semver-safe bumps across the webapp.
Mobile dock + task-row action drawer
Mobile bottom dock reorganized around a Do-first affordance with Today folded in. Task rows now open an action drawer on tap instead of navigating, keeping you in context. Logbook rows tightened.
E2E suite rebuild + dev worktrees
The Playwright suite was rebuilt around cross-layer invariants (trimmed 60→18, repaired against the refactored triage/planning UI). A general-purpose dev-worktree tool landed for parallel feature development with teardown and sync helpers.
Planning surfaces unified
A design pass aligned Today, Upcoming, Logbook, and Someday to a shared surface scale and empty-state treatment. Inbox and triage preparation were refined, overdue tasks gained an unschedule recovery, and task edits now return to their originating view.
Focus mobile + breadcrumb navigation
Focus mode went genuinely mobile: hold-to-complete, an action bar with Pause and Not-now, and pause-on-exit. Breadcrumbs were wired into every detail page through a route model, and Settings became reachable on mobile.
Brand identity + production billing
A canonical brand kit, Attention Engine, was applied across the landing hero, Founding 100 page, and About, with a solid token-teal favicon and logo. Stripe production billing was verified end-to-end: a webhook gap was found and fixed, and live checkout confirmed.
Blog, social meta, transactional email
A two-lane blog with a rotating featured zone and inline line illustrations for the three core essays, plus per-post Open Graph image and Twitter/LinkedIn cards. Transactional emails migrated to react-email and moved to the Resend HTTP API after Railway proved unable to reach SMTP.
Astro marketing site
Landing, roadmap, about, privacy, and terms ported to a standalone Astro site on Cloudflare Pages, split out of the Wasp app. A public Founding 100 status endpoint, landing teaser, and llms.txt replaced the old in-app marketing routes.
Focus redesign + task page
The focus screen rebuilt around a margin clock (live session, running total), summoned composer, and confirm-on-complete. Task permalinks and full-field chip editing landed, with a shared property-chips editor across triage and the task page.
Task notes + completion log
Tasks gained a notes thread and a timestamped completion log via a kind discriminator on TaskUpdate (NOTE | COMPLETED), surfaced in focus mode, triage, and task rows. Focus segments are now accounted through a TaskSession model.
Upcoming + design tokens
Upcoming promoted to a top-level Plan nav item as a single surface with cross-links. The type scale, line-heights, and weights migrated to design tokens across the whole UI.
Planning + triage polish
Goals and projects gained calmer lifecycle controls, shared record surfaces, and better task-row composition. Triage now starts with Classify and uses a resolved Project as the visible destination.
Capture grammar + roadmap cleanup
Inline project autocomplete landed: first # is a project hint, later # tokens are tags, @ is time, and [[lens]] handles cross-lens capture.
Entitlements + custom lenses
Free-tier caps enforced server-side and surfaced as calm Pro moments. Lenses became first-class: kinds, identity colors, Pro CRUD, adaptive switcher.
Capture polish + lens theming
Rapid-fire capture with token parsing, per-lens identity color across the shell, mobile thumb-zone dock, in-app feedback, and signup CTAs on the landing page.
First-run, auth, friction cleanup
Onboarding routes new users to a magic moment; OAuth-ready legal pages; the real 'why this?' line under Next; Someday promote, Goal detail, Today's Done section.
Project detail + triage wizard
A project page to work its tasks inline. Triage became a co-author wizard with lossless Archive; nothing is ever silently deleted.
Founding 100 + test suite
Capped lifetime tier with live Stripe checkout and a real spots-remaining count. Vitest + Playwright stood up; the suite went green and stayed green.
Foundation
Design system, the full core loop (capture → triage → Next → Today → Logbook), deploy to Railway on a custom domain, and the polished landing page.

No countdowns, no launch dates until the numbers say go. When the funnel earns it, this page is where the next phase opens.

Become a Founding Member →