> For the complete documentation index, see [llms.txt](https://codifi-fdm.gitbook.io/codifi-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codifi-fdm.gitbook.io/codifi-docs/release-notes/v3.1/v3.1.5.md).

# v3.1.5

**Release Date:** April 24, 2026

A field-driven update focused on smoother map tracking, better external GPS reliability, and faster workflows for coordinate entry, measurements, and transects. Every change in this release came directly from surveyor feedback.

***

## Features

#### Smoother Map Position Updates **`Mobile`**

We bumped the map update frequency back up to one second. It had been dialed back to prioritize battery life in the larger 3.1 GPS rework, but that turned out to be a bit over-aggressive — tracking felt choppy, and surveyors were driving past resources before the puck caught up. One-second updates with smoothed motion track where you actually are, and the map now only re-centers when your puck approaches the edge of the screen, so it stops micro-panning while you stand still. [Learn more →](/codifi-docs/mobile-app/mapping-locations/gps-and-live-data.md)

#### Tap Coordinates in the Nearby Features Sheet **`Mobile`**

Long-press anywhere on the map to open the **Nearby Features** sheet, then tap the coordinate readout at the top of the sheet to cycle between **Decimal Degrees**, **Degrees/Minutes/Seconds**, and **UTM** — the same behavior the Live Data Bar has had since 3.1. Your chosen format applies everywhere coordinates are shown and persists across sessions.

#### Type a Coordinate to Drop a Target **`Mobile`**

A new keyboard button on the map opens a **Type a Coordinate** sheet where you can enter — or paste — a latitude/longitude or UTM coordinate and drop a target on the map at that exact position. Pick your source datum (**WGS84**, **NAD83**, or **NAD27**) and Codifi converts it internally so the target lands where it should. In Draw Mode, the coordinate entry button lives right in the draw controls and automatically switches capture to **Manual** so your next vertex lands exactly where you typed.

GIS-heavy users can dive into the conversion math, CONUS accuracy budgets, and the trade-offs behind the 3-parameter NAD27 fallback in the [GPS Technical Reference](/codifi-docs/mobile-app/mapping-locations/gps-and-live-data/gps-technical-reference.md#typed-coordinate-entry).

> **Screenshot placeholder:** *The "Type a Coordinate" sheet with a UTM value entered and the WGS84/NAD83/NAD27 datum selector visible.*

#### Bearing on the Measurement Tool **`Mobile`**

Live measurements now show **bearing** alongside distance, so a line gives you total length, segment length, and heading in one glance. [Learn more →](/codifi-docs/mobile-app/mapping-locations/annotation-and-measurement-tools.md)

#### Convert a Measurement into an Annotation **`Mobile`**

Finish a measurement and tap **Use as Annotation** to keep it on the map as a persistent, labeled annotation — no need to redraw it. Converted measurements are grouped under a single auto-managed **Measurement** layer so your layer list stays clean.

> **Screenshot placeholder:** *A finished line measurement with the "Use as Annotation" button visible above the measurement dock.*

#### Last Created Annotation as a Widget Target **`Mobile`**

GPS Widgets that reference a line or polygon (Offset from Line, Distance to Record, Inside/Outside) can now target **Last Created Annotation**. Draw a new transect and your Offset-from-Line widget re-points to it automatically — no reconfiguration between transects. Each widget only follows the geometry type it needs, so drawing an unrelated polygon won't break a distance-to-line widget. [Learn more →](/codifi-docs/mobile-app/mapping-locations/gps-and-live-data/live-data-bar-and-widgets.md)

#### Read-Only and Ripple-Powered Record Titles **`Mobile`**

Records with a **read-only title** — including titles computed by a Ripple formula — can now be created on mobile. Previously the empty-title check blocked creation because a read-only field couldn't be typed in, and a Ripple-computed title hadn't evaluated yet. The title is now filled in by the formula (or the read-only default) after the Record is created, matching the web behavior. [Learn more →](/codifi-docs/mobile-app/creating-records/the-record-creation-screen.md)

***

## Enhancements

* **`Mobile`** **Favorited external GPS devices stay connected** — Long-press any device in the **External Devices** sheet to mark it as your **favorite**. Favorites now stay assigned through brief data gaps (e.g. a Geode in your pocket briefly losing accuracy) instead of silently falling back to the iPhone's internal GPS. If a favorited device disconnects or is power-cycled, Codifi automatically reconnects within about 15 seconds of it becoming discoverable again — no need to reopen the External Devices sheet.
* **`Mobile`** **Measurement controls follow your drag cursor** — The bottom measurement bar now tracks the drag cursor, so the **Save as Annotation** and measurement readouts stay visible while you're reshaping a measurement.
* **`Mobile`** **Auto-named annotation labels** — Converted measurements come in with a clean default label, and measurement conversions now support lines created by GPS widgets.
* **`Mobile`** **Cleaner target indicator** — Restored the white border on the on-map target so it's easier to see against satellite imagery.

***

## Bug Fixes

### Mobile

* Fixed **LiveTrack crashes** that could occur when the GPS source changed mid-track — invalid coordinates are now filtered before they reach the drawing pipeline.
* Fixed the **Offset from Line** widget arrow pointing the wrong way relative to the target line.
* Fixed the **Distance to Line** widget not working against annotations (it only responded to Record geometry previously).
* Fixed a camera-framing glitch when dropping a target via typed coordinates on iPhone.
* Fixed small heading updates interrupting other in-progress map animations.
* Fixed annotation-mode draws landing in the Measurement layer.
