Changelog
Fixed
Fixed schedule not appearing for a new project in the Timeline (beta)
Fixed schedule not appearing for a new project in the Timeline (beta)
Added the ability to move and resize workloads by dragging in the Timeline (beta)
After taking a couple weeks off to move into our new home, I’m back in the saddle with creating and editing workloads.
Added the ability to create, edit, and delete workloads in the Timeline (beta)
To continue reaching feature parity with the existing schedule view, I added vacations to the new timeline.
Added vacations to Timeline (beta)
Added the ability to delete a project in the Timeline (beta)
Over the weekend, I ate the broccoli and built a nested drawer system, but ended up with a delightful parallax effect.
Added the ability to create a client inline when creating or editing a project in the Timeline (beta)
Improved tooltips to show relevant time-tracking, estimated time, and availability in the Timeline (beta)
The full circle journey of designing a tooltip that’s both simple and useful.
Holding shift or cmd while hovering the timeline now widens or narrows the date range (beta)
Added project notes to the Timeline (beta)
Added total estimated time to the past for comparison in the timeline (beta)
Projects in the new timeline are now sorted by activity (beta)
After visualizing tracked time, I jumped from the past and into the future to visualize estimated workloads.
Fixed invoice list coloring when an invoice is overdue (thanks, Brian!)
Workloads in the Schedule timeline (beta)
Fixed timezone issue in the timeline beta with tracked time in the evening (beta)
Now that Cushion can visualize tracked time, the next step is to combine tracked time and highlight when you overworked yourself.
Added total tracked time visual to the schedule timeline with highlighting for when you overworked yourself (beta)
Added tooltips for tracked time
Fixed date pickers to respect week start day preference
Added “Date Paid” to paid invoice template
After being close to launching tracked time in the schedule timeline beta, I decide to spend an extra week adding lazy loading.
Tracked time visualized in Schedule timeline (beta)
Straying from the plan to bring the timeline to 1:1 feature parity with the existing timeline, I visualize tracked time.
I take a short break from the timeline beta to launch the ability to duplicate an invoice. No big deal.
Added budget and track sections to project form in Schedule timeline (beta)
Added the ability to duplicate invoices
Fixed budget graph nav for users with a custom fiscal year to load correct initial year (thanks, Jake!)
Project actions in the Schedule timeline for “Start”, “Finish”, and “Cancel” now show an auto-populated form with the current date, relevant list to move to, and the option to archive (beta)
On the new path of pursuing a list-based layout, I group the projects by list and add an archive filter.
Added archive filter to Schedule timeline (beta)
Added archiving to project menu in the Schedule timeline (beta)
Group projects by list in Schedule timeline (beta)
Fixed setting a project color for the first time in the Schedule timeline (beta)
Added view filter to schedule timeline for showing all, active, or archived projects (beta)
Redesigned schedule timeline to include project list (beta)
Foreseeing a problematic future with the stacking layout, I rethink the direction and end up down a better path.
Fixed clicking zoom options in Firefox in Schedule timeline (beta)
Fixed clicking labels sometimes dragging in Firefox in Schedule timeline (beta)
Fixed vertical alignment of axis in Firefox in Schedule timeline (beta)
After adding the ability to add and edit projects in the Schedule timeline, I implement more detailed interactions with project actions.
Added project actions for starting, finishing, and canceling projects in the new Schedule timeline (beta)
Default a new project’s color to the client color in the new Schedule timeline (beta)
Fixed client & list dropdowns to auto-select project’s client & list when editing in the new Schedule timeline (beta)
Fixed client dropdown when project’s client is archived in the new Schedule timeline (beta)
Creating and editing projects in the Schedule timeline (beta)
Back to working on the app, I take the leap into creating projects, but via form first instead of click & drag.
I spend my holiday break bringing more fun to the Cushion homepage with a new design, full of illustrations and animations.
Improved Schedule timeline performance in Safari (beta)
Fixed Schedule timeline sizing in Safari (beta)
After launching the Schedule timeline beta, I’m able to easily launch a handful of smaller releases to keep progress going.
Added touch support to Schedule timeline (beta)
Rule labels in Schedule timeline are now sticky (beta)
Improved “Today” marker design in Schedule timeline (beta)
Added week start day preference to the Schedule timeline (beta)
Project dates are now centered in the Schedule timeline (beta)
Fixed several edge-cases with projects in the Schedule timeline (beta)
To get folks to start testing the new Schedule timeline early, I released the initial beta this weekend.
Launched the Schedule timeline (beta)
With the schedule timeline nearing a beta launch, I take a couple more weeks to sneak zooming into the feature set.
In an unexpected moment, I decide to try vertically flipping the new schedule timeline, so projects stack from the top.
Determined to always display labels on the new schedule timeline, I detail all the edge cases I’ve gotten myself into.
Now that I have a canvas for the new schedule timeline, I need to fill it with projects.
After thinking through a modern schedule timeline, I start by enlarging the timeline to full-page and adding freeform scrolling.
Added workday settings to project form
Taking a break from the Clients section, I get a burst of inspiration thinking about scheduling.
Continuing work on the new Clients section, I revisit client notes, but with a few UX improvements.
The “Period” field in the Clients section now has “This fiscal year” and “Last fiscal year” options, using the fiscal start date preference (beta)
Table columns in the Clients section can now be clicked to sort by column (beta)
Improving a upon the overflow shadows in Cushion, I replace scroll events with the Intersection Observer API.
Added hover states to buttons (beta)
Improved input placeholder style (beta)
Auto-focus client name input when creating a new client (beta)
The escape key now unfocuses input fields and closes modals (beta)
Improved random color button to include icon (beta)
Fixed order of clients and projects in workload form to sort alphabetically
After rolling out the new Client section to a few dozen beta users, I start applying their feedback.
Reduced height of rows in Clients section (beta)
Removed vertical lines in Clients section table (beta)
Clients table is now horizontally scrollable on narrow screens in Clients section (beta)
While making forward progress with the new Clients section, I take a break to upgrade the new codebase to Vue 3.
An already stressful time is made even more stressful by a Safari performance issue with nested grids.
Separated totals by currency when multiple currencies exist in the Clients section (Thanks, Tommy!)
Fixed a performance issue with nested grids in the Clients section (Thanks, Tommy!)
Fixed sidebar nav to collapse on mobile (Thanks, Manu!)
With the Clients section beta up and running, I launch my first incremental update.
A video call with a friend provides some interesting insight into a potential direction for restructuring the app.
After a heads-down week, I managed to reach the first milestone in releasing the new Clients section—private beta.
Greatly improved load times of schedule view (Thanks for testing, Daryl!)
Fixed chat button to open messages instead of start a new message each time (Thanks, Evan!)
Fixed “Invoices” link on the invoice page (Thanks, Chris!)
In an update of the database memory saga, I discover pgbouncer, which puts a stop to the constantly climbing memory woes.
Database memory improvements
Improved overall navigation, including a wider sidebar and subsections listed in the sidebar nav
With the sidebar navigation ready to deploy this weekend, I get an early start on the top-level “Clients” section.
After regretting, but living with, the skinny sidebar nav of obscure icons, I finally set a course to improve its UX.
Following up on the initial proof of concept, I build the complete system to send journal posts as emails.
In an effort to grow readership, while also prototyping an idea, I start building a system to email my posts.
Putting the final touches on the invoice form, I apply a sticky behavior to the line item totals.
I spend extra time getting a little detail right by tying shadows to whether the underlying content has overflow.
With the last remaining to-do on my list for the new invoice form, I tackle the flow for importing tracked time.
With the inline forms behind me, I spend a week cleaning up the codebase with a focus on Cushion’s form states.
After detailing how I planned to build inline forms in Cushion, I went ahead and built the first one for creating clients inline.
In between big tasks, I distract myself with smaller tasks until I’m ready to finally face it—inline forms.
Chopping away at the new invoice form, I designed and built a new component for breadcrumbs.
Fixed availability badge to be 1:1 with schedule availability (Thanks, Shane!)
Aggravated by people signing up with no real intention to use Cushion leads me to consider a “test mode” where they can try the app without signing up.
While redesigning the invoice form, I share the decision-making behind the design of the new line item footer.
Frustrated with Heroku, I start migrating away from it, beginning with continuous integration.
Upgrading Cushion’s database leads to a week of troubleshooting performance issues.
Fine-tuned database queries across scheduling and invoicing, resulting in a 10x speed improvement in some areas
After receiving an email from Heroku to upgrade Cushion’s database, I upgrade Cushion’s database.
Upgraded database
Printed invoices and PDF invoices now avoid page breaks within the total amount (thanks, Huynh+Black!)
With Cushion reaching the 7-year mark, I reflect on its life and plot a course for its future.
At the fork in the road, I choose the invoice form as the next step in renovating Cushion, including a long-awaited list of improvements.
With a couple big launches behind me, I think about what to tackle next or whether I need to pick a direction just yet.
Numbered lists and bulleted lists are now supported in invoice detail Markdown
Fixed invoice page’s detail Markdown styling
After launching Cushion’s new invoice page last week, I launch the new account page this week with a ton of other goodies.
- Re-added sign out button to Account page
Rebuilt the Account section from scratch using Cushion’s new component system
Subscriptions and billing are now fully managed by Stripe, which brings support for 2-factor payment methods and Apple Pay
Upgraded web server and other infrastructure improvements