Redesign the app with native macOS styling #7

Merged
oss merged 11 commits from feat/native-macos-redesign into main 2026-10-21 09:46:04 +02:00
Owner

What changed

Builds the Claude Design handoff "Tempo Hours Redesign": the app now looks and behaves like a native macOS 26 app instead of the custom teal glass look.

  • Window: one main window with a NavigationSplitView sidebar (this week's days, hours bars with a target tick, status badges, the overtime card) and a unified toolbar (week navigation, Day/Week, overtime pill in week mode, refresh, notifications, Settings, Log Time). It follows the system appearance (light or dark) and accent colour.
  • Timeline: blocks coloured per issue from a six-hue palette with light and dark values, dashed calendar events, a now line with a time capsule, hover actions in a glass capsule, context menus (Edit, Duplicate, Delete), a dashed drag-to-log preview, and a week view with column headers and an all-day lane.
  • Sheets: Log Time, Submit Timesheet and Review Vacation Days are grouped forms. Log Time lists suggestions from your calendar, recent worklogs and Jira issues assigned to you, and the inspector shows status, type, project, assignee, estimate and logged time.
  • Settings moved into a Settings window (⌘,) with General and Calendars tabs. Text fields save when editing ends (Return, leaving the field, closing the window), so a half-typed keyword or work item never reaches Personio auto-booking. Switches, pickers and steppers save right after a change. The window can also test the Tempo and Jira credentials.
  • Undo and menus: changes show a glass toast with Undo, which is also registered for Edit ▸ Undo (⌘Z). Delete no longer asks for confirmation and offers Undo instead. Menus: File ▸ Log Time ⌘N / Refresh ⌘R, Go ▸ Previous/Next Week ⌘[ ⌘] / Today ⌘T.
  • Debug only: a -demo launch argument (add -dark for dark mode) shows a sample week without accounts. It uses its own absence-ledger key and never saves settings.

Deviations from the mockups

  • Week mode has a title bar with the week's totals and Submit Timesheet, because the sidebar that holds them is hidden.
  • Personio stays a Google-calendar picker (the mockup shows an iCal URL), with one keyword list (the mockup splits vacation and sick-day keywords).
  • Start and End stay smart-parsed text fields (930 → 09:30) instead of time pickers.

Verification

  • Debug and Release builds succeed (** BUILD SUCCEEDED **). There are no automated tests in this project.
  • Checked in the Tart VM with the demo week, light and dark: day view, week view, the overtime and notification popovers, Log Time (empty, and opened from a calendar event), Submit Timesheet, Review Vacation Days, and Settings General and Calendars.
  • Independent code reviews of every commit, plus a visual review of the screenshots against the mockups. The findings they raised are fixed: the timesheet lock in the context menu, delete failures, edit-mode issue switching, Settings saving half-typed values, the balance parser, and the Log Time sheet growing taller than the screen.
  • Not checked: real Tempo, Jira and Google accounts. The VM has no credentials, so please test with your accounts before merging.

🤖 Generated with Claude Code

## What changed Builds the Claude Design handoff "Tempo Hours Redesign": the app now looks and behaves like a native macOS 26 app instead of the custom teal glass look. - **Window:** one main window with a `NavigationSplitView` sidebar (this week's days, hours bars with a target tick, status badges, the overtime card) and a unified toolbar (week navigation, Day/Week, overtime pill in week mode, refresh, notifications, Settings, Log Time). It follows the system appearance (light or dark) and accent colour. - **Timeline:** blocks coloured per issue from a six-hue palette with light and dark values, dashed calendar events, a now line with a time capsule, hover actions in a glass capsule, context menus (Edit, Duplicate, Delete), a dashed drag-to-log preview, and a week view with column headers and an all-day lane. - **Sheets:** Log Time, Submit Timesheet and Review Vacation Days are grouped forms. Log Time lists suggestions from your calendar, recent worklogs and Jira issues assigned to you, and the inspector shows status, type, project, assignee, estimate and logged time. - **Settings** moved into a Settings window (⌘,) with General and Calendars tabs. Text fields save when editing ends (Return, leaving the field, closing the window), so a half-typed keyword or work item never reaches Personio auto-booking. Switches, pickers and steppers save right after a change. The window can also test the Tempo and Jira credentials. - **Undo and menus:** changes show a glass toast with Undo, which is also registered for Edit ▸ Undo (⌘Z). Delete no longer asks for confirmation and offers Undo instead. Menus: File ▸ Log Time ⌘N / Refresh ⌘R, Go ▸ Previous/Next Week ⌘[ ⌘] / Today ⌘T. - **Debug only:** a `-demo` launch argument (add `-dark` for dark mode) shows a sample week without accounts. It uses its own absence-ledger key and never saves settings. ## Deviations from the mockups - Week mode has a title bar with the week's totals and Submit Timesheet, because the sidebar that holds them is hidden. - Personio stays a Google-calendar picker (the mockup shows an iCal URL), with one keyword list (the mockup splits vacation and sick-day keywords). - Start and End stay smart-parsed text fields (`930` → 09:30) instead of time pickers. ## Verification - Debug and Release builds succeed (`** BUILD SUCCEEDED **`). There are no automated tests in this project. - Checked in the Tart VM with the demo week, light and dark: day view, week view, the overtime and notification popovers, Log Time (empty, and opened from a calendar event), Submit Timesheet, Review Vacation Days, and Settings General and Calendars. - Independent code reviews of every commit, plus a visual review of the screenshots against the mockups. The findings they raised are fixed: the timesheet lock in the context menu, delete failures, edit-mode issue switching, Settings saving half-typed values, the balance parser, and the Log Time sheet growing taller than the screen. - Not checked: real Tempo, Jira and Google accounts. The VM has no credentials, so please test with your accounts before merging. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Replace the custom teal glass shell with a NavigationSplitView and a unified
toolbar, follow the system appearance and accent, and restyle the sidebar,
timeline and Log Time sheet after the Tempo Hours redesign handoff.
Rebuild the Submit Timesheet and Review Vacation Days sheets and the
notifications popover as grouped forms, and move Settings into a Settings
window with General and Calendars tabs that save as you go. Respect the
timesheet lock in the block context menu, report failed deletes, and keep
the edit sheet from switching issues on Return.
The Log Time sheet now lists calendar events around the logged time,
mapped to the work item last logged under the event's title, and open
Jira issues assigned to you. The issue inspector shows status, type,
project, assignee, estimate and logged time.
Half-typed Personio keywords or work items could reach auto-booking while
typing; text fields now hand over their value on Return, focus loss or
closing. Bound the starting balance parser, write only changed tokens,
ignore stale connection tests, and tidy the suggestion lookup.
Save Settings after fields commit when the window closes, keep stepper
changes while the balance field has focus, end editing before testing
the connection, and bound the overtime start. Let the Log Time form
scroll under pinned actions, keep the preselected suggestion until the
pointer moves, and use one detail level for all week column headers.
Pin the Log Time error under the scrolling form, scroll to the
highlighted suggestion and let typing take the highlight back from the
pointer, cap the inspector, keep half-typed overtime years from saving,
give the connection test time to see the last edit, and scroll the
overtime popover once it outgrows 600 points.
Personio and booking changes now apply together when Settings closes, so
detection can't auto-book on a half-finished setup. Undoing a creation
or a one-click booking reports failed deletes and keeps the vacation
ledger records of worklogs that are still there.
Quitting with Settings open now commits the focused field and saves the
Personio and booking group before the app terminates. A silent refresh
clears only an error a refresh showed, so Undo and other change errors
stay until their banner times out.
oss merged commit d24cbc36a6 into main 2026-10-21 09:46:04 +02:00
oss deleted branch feat/native-macos-redesign 2026-10-21 09:46:04 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
oss/TEMPO-UI!7
No description provided.