Support Setup guide and troubleshooting

Get connected, then keep working.

Setup steps, the permissions DevPulse needs, and what to check when something looks wrong.

On this page
  1. Requirements
  2. Connect an organization
  3. Connection profiles
  4. Reading a run
  5. Work items
  6. Widgets
  7. iCloud settings
  8. Common problems
  9. Report a problem

Requirements

  • An Apple silicon Mac running macOS 27 or later for the Mac app. The iPhone and iPad apps require iOS 27 or iPadOS 27. The unfolded iPhone Duo layout has been verified in the iOS 27.1 simulator for Work Items browsing and item details with personal access token sign-in.
  • An Azure DevOps Services organization. Azure DevOps Server is not supported.
  • Internet access, and permission to view the project you select.

DevPulse is being prepared for the Mac App Store and is not yet publicly available there.

Connect an organization

DevPulse supports two ways of authenticating. The personal access token route needs no setup on Microsoft's side, so it is the fastest way to try the app.

With a personal access token

  1. Open Settings › Connection.
  2. Choose Personal access token, enter your organization name and the token, then Save.
  3. DevPulse checks access and lists your projects. Select the project to work in.

The token needs these scopes:

Personal access token scopes
ScopeNeeded for
Build (Read)Pipeline folders, definitions, runs and stage logs
Project and Team (Read)Listing projects, teams and boards
Work Items (Read)Browsing work items and boards
Work Items (Read & Write)Saving edits, attachments and relationships. Only needed for editing.

Do not grant write access just to monitor pipelines. A read-only connection stays useful, and DevPulse never upgrades a credential on its own.

With Microsoft Entra ID

Entra sign-in needs an application registration, which is a one-time setup for whoever distributes the app. Register a Mobile and desktop applications platform with the redirect URI msauth.dev.psychicgiggle.PipelineMonitor://auth, and add the delegated Azure DevOps permissions vso.profile, vso.build and vso.work. Add vso.work_write only if you want editing.

There is no client secret and no confidential client. DevPulse cannot discover an existing app registration, and it never reads browser cookies or reuses the Azure DevOps web client's session.

Connection profiles

Profiles let you keep several connections and switch between them without signing out. Several profiles can use the same organization with different accounts.

  1. Open the Change organization menu in the main window and choose Add Profile….
  2. Connection settings open for the new profile. Save it with its own personal access token or Microsoft Entra account. Existing credentials stay on the device.
  3. Switch profiles from the same menu at any time. Switching clears unsaved credential input in the connection form.

Edit the active profile's name and accent color in Settings › Connection › Profiles. The accent applies to native controls across the app. Pipeline status colors keep their meaning.

Profile names, organization names and accent colors synchronize through iCloud. The active profile, authentication settings, account identifiers and credentials stay local, so a profile received on another device needs its connection set up there. Sign Out removes the active profile's local credential; switching profiles keeps it. Expired tokens and Entra policies can still require you to sign in again.

Reading a run

  • Pick a pipeline in the sidebar, then a run in Recent Runs. The execution graph appears in the inspector.
  • Stage order follows the compiled YAML of that exact run, so parallel branches are placed the way they executed. If the definition cannot be read, the graph falls back to timeline order and says so.
  • Only stages that have a log expose Open Logs. Log windows are independent, so you can keep one open while you look at something else.
  • Logs load in chunks of 500 lines. Load More Lines continues from the current offset, and Check for New Lines reads from where you left off.
  • Auto Refresh checks every 30 seconds while the window is active and pauses in the background.

Work items

  • In Work Items, choose a team, then a board or All Work Items.
  • Filters for people, types and states run on the server. Clear Filters restores the selected scope.
  • Search matches part of a title, or an exact ID written as 12345 or #12345.
  • Editing is always explicit. Save checks the baseline revision first, so a conflict is reported before anything is overwritten.
  • Board counts describe what has been loaded, not the whole board. Use the paging controls, including Load Terminal Items, to read further.

Widgets

On the Mac, right-click a pipeline and choose Show in Desktop Widget for the single-pipeline status widget, or right-click an entry in Recent Runs and choose Add Run to Large Widget to track up to six exact executions. On iPhone and iPad, long-press a pipeline or run instead.

Add the widget through the desktop's Edit Widgets menu, or from the widget gallery on iPhone and iPad. The Mac app refreshes selected runs while it is running, including with every window closed. On iPhone and iPad, widget snapshots refresh while the app is active and when you return to it.

WidgetKit decides when the widget actually redraws, so the refresh interval is not a guarantee of a visible change. The cached age is shown on the widget, and a widget reading stale data is marked Cached.

iCloud settings

Selected preferences, scoped pins, Work Items defaults, your organization and project choice, and profile names and accent colors can synchronize through your Apple Account. Credentials, MSAL tokens, authentication settings, widget data, window state, loaded results and editor drafts stay on the device.

Synchronization depends on your Apple Account and Apple's service availability. Saving locally does not confirm that another device has received the change, and there is no guaranteed delivery interval. Failures are reported in Settings › Connection › iCloud Settings, where Retry Local Changes sends them explicitly.

Common problems

Authentication failed

Check the organization name, the token expiry and the scopes. Never send a token to a support request.

Permission denied

Ask your organization's administrator to confirm project and area access. Refreshing does not change permissions, and DevPulse cannot grant them.

A profile from another device asks to connect

Only the profile's name, organization and accent color arrive through iCloud. Set up the connection with a token or Entra account on this device.

The widget shows old data

Keep DevPulse running, confirm the connection, and use Refresh Runs in the widget settings. The widget displays the age of its cache, and the operating system decides when to redraw it.

A save was rejected

Your draft is kept. Reload the work item explicitly, then reapply the change and save again. Azure DevOps rules and field permissions remain authoritative.

The board looks incomplete

Loaded counts and notices on the board describe the current read. Use the paging controls to extend it. Treat loaded counts as a snapshot, never as the complete server result.

Report a problem

Use the GitHub issue forms for bugs, feature requests and support questions. A GitHub account is required, and issues are public.

Include the app version, your macOS, iOS or iPadOS version, what you did, and what happened instead. A small example with non-sensitive data helps.

Never include a personal access token, an access token, an authorization header, private task logs, or unredacted organization data.

For a security concern, use GitHub's private vulnerability reporting instead of a public issue.