Looming Deadlines – Devlog 004

Adding a focus mode to hide visionOS window controls, ornaments, and menus.

Most of my work since the last update has been on the iPhone version of the app. Here is a breakdown of what I’ve done.

  • Stubbed in a settings screen
  • Added floating action button to create new records from the list view
  • Added a context menu to cards on the list
  • Added a menu to the app root view
    • Sort records
      • Deadline ascending and descending
      • Title ascending and descending
    • Open app settings
    • More menu options coming later:
      • Root view layout options (show as countdown, dates, titles only, etc)
      • Filter records by date, date range, etc.
  • Detail screen
    • Tap the deadline card to view it full screen
    • Edit sheet now reached all the way to the bottom of the deadline card
iOS app as if May 17, 2025. This version does not contain the new app menu or floating action button.

There is a lot yet to do on the iPhone version and the iPad UI needs even more work. I think I’m going to wait until WWDC though. There are rumors of big iOS UI changes this year and I don’t want to spend too much time on the design until I see what those changes entail.

Today I shifted my focus back to the visionOS app. I ported over several of the features listed above. I also added a neat feature (tentatively called “Focus Mode”). This mode will hide all the visionOS window feature and just present the current content of the grid view.

  • Hide window drag controls with persistentSystemOverlays
  • Hide all ornaments
  • Hide navigation bar
  • Hide app menu
  • Deactivate hover effects on the cards in the grid

A user can tap anywhere on this window to deactivate this mode.

Video demo of Focus Mode

I have a few things to figure out about this mode. For example, can I scroll or resize the window so that I always fit complete deadline cards? I can’t guarantee to show them all–there may be too many records. But I’d like to make sure what is presented is whole cards without them being clipped by the available space. I also can’t seem to use .windowStyle(.plain) on this window. It is set, but the glass background is still there. It may have something to do with the NavigationStack or something further down the hierarchy.

I’m really enjoying the process of creating this app. I’m doing my best to make each version of the UI feel at home on the OS/Device. There is a lot of work to do, but I’m having a blast doing it.

Questions or feedback?