Submersion Dive Log
Scuba Dive Log
Free
Submersion is a comprehensive, open-source dive log for recreational and technical divers. Track dives, manage gear, analyze trends, and export to open formats. No subscriptions, no proprietary lock-in, no cost.
COMPLETE DIVE LOGGING
• Log unlimited dives with depth, duration, temperature, and conditions
• Track entry/exit times with automatic surface interval calculation
• Rate dives, add notes, and organize with custom tags
• Record visibility, current, waves, weather, and water type
• Support for 20+ dive types including night, wreck, cave, and technical
DIVE COMPUTER INTEGRATION
• Connect via Bluetooth or USB to well known dive computer models
• Import dive profiles with one tap—no cables to your computer needed
• Smart duplicate detection prevents importing the same dive twice
• Supported brands: Shearwater, Suunto, Mares, Aqualung, Garmin, Oceanic, and many more
ADVANCED PROFILE ANALYSIS
• Interactive depth/temperature charts with zoom and pan
• Bühlmann ZH-L16C decompression algorithm with gradient factors
• Real-time NDL, ceiling, and tissue loading visualization
• Ascent rate monitoring with color-coded warnings
• O₂ toxicity tracking (CNS%, OTU, ppO₂) for nitrox and trimix divers
• SAC/RMV calculation and trend analysis
TECHNICAL DIVING READY
• Multi-tank support with unlimited cylinders per dive
• Full gas mix tracking: Air, Nitrox, Trimix, and pure O₂
• Gas switch markers on dive profiles
• MOD, END, and EAD calculations built-in
• Tank presets for quick logging (AL80, HP100, Steel 12L, and more)
GEAR & EQUIPMENT MANAGEMENT
• Track all your gear: regulators, BCDs, computers, suits, and more
• Service history with reminders when maintenance is due
• Create equipment sets for different diving configurations
• Weight calculator based on exposure suit and conditions
DIVE SITES & MAPS
• Build your personal dive site database with GPS coordinates
• Interactive map with clustered markers showing all your sites
• Capture location from your phone or pick from the map
• Automatic reverse geocoding fills in country and region
• Track site details: depth range, difficulty, hazards, and access notes
MARINE LIFE TRACKING
• Log species sightings with counts on each dive
• Pre-loaded database with common species
• Build your personal life list over time
BUDDIES & CERTIFICATIONS
• Manage your dive buddy list with certification levels
• Track your own certifications with expiry reminders
• Associate buddies and instructors with each dive
• Log dive centers and boat names
STATISTICS & INSIGHTS
• Total dives, bottom time, and depth records
• SAC trends over months and years
• Temperature preferences by season
• Dive frequency charts and gas mix distribution
• Deepest, longest, coldest, and warmest dive records
CLOUD SYNC & BACKUP
• Sync across all your devices via iCloud or Google Drive
• Local-first design works completely offline
• Export to UDDF, CSV, or PDF
• Import from other dive log apps
PRIVACY FOCUSED
• No account required—start logging immediately
• Your data stays on your device (unless you enable cloud sync)
• No ads, no tracking, no subscriptions
• Open source: inspect the code yourself on GitHub
Whether you're a new diver logging your first open water dives or a technical diver tracking complex trimix profiles, Submersion adapts to your needs. Join the growing group of divers who trust Submersion to preserve their dive information.
Questions or feedback? Visit our GitHub repository.
more Finally! A full-featured, modern dive log app. Submersion has everything I’ve ever wanted in a dive log app and more I didn’t even think about. It’s amazing that this is free, open-source, and completely private. There are a few rough edges, but nothing that would stop me from recommending this app to other divers. I’m still trying to figure out importing all my dives and locations, and syncing between my devices. This isn’t on the developer, but the version here on the App Store is behind what is available as a direct download.
Finally! A full-featured, modern dive log app. Submersion has everything I’ve ever wanted in a dive log app and more I didn’t even think about. It’s amazing that this is free, open-source, and completely private. There are a few rough edges, but nothing that would stop me from recommending this app to other divers. I’m still trying to figure out importing all my dives and locations, and syncing between my devices. This isn’t on the developer, but the version here on the App Store is behind what is available as a direct download.
I love my Shearwater but their logging applications for both mobile and PC are terrible. So glad I found Submersion it’s everything that I could ever want from a dive log app. So many tools and ways to analyze your dive data, track gear maintenance, check tides, save dive sites, cert and insurance info and so much more. I particularly love how it has both an iOS and PC app that syncs over the cloud since I prefer to log on my PC but having all that data and dive history in your pocket is priceless. Great job!
I love my Shearwater but their logging applications for both mobile and PC are terrible. So glad I found Submersion it’s everything that I could ever want from a dive log app. So many tools and ways to analyze your dive data, track gear maintenance, check tides, save dive sites, cert and insurance info and so much more. I particularly love how it has both an iOS and PC app that syncs over the cloud since I prefer to log on my PC but having all that data and dive history in your pocket is priceless. Great job!
I find this app much more feature rich and useful than shearwater cloud or Subsurface. There are a few things I trace wise I found confusing and certain items that seemed Barrie’s and hard to find. I find inputting gps coordinates correctly to be challenging, usually trial and error and using ChatGPT to convert them correctly to get them to work.Seems like there are always new features which are nice and bug fixes are prompt.
I find this app much more feature rich and useful than shearwater cloud or Subsurface. There are a few things I trace wise I found confusing and certain items that seemed Barrie’s and hard to find. I find inputting gps coordinates correctly to be challenging, usually trial and error and using ChatGPT to convert them correctly to get them to work.Seems like there are always new features which are nice and bug fixes are prompt.
I started using Subsurface on Mac and built out my dive log and set it to backup on my iCloud . Downloaded the IOS app and there is no way to synch to the Mac back up. The app states I need to go to GitHub and download a file to update the app. Huh? Looks like this is an open source app and unless you have some tech experience and be willing to side load apps on your phone. After doing this I have not found a way to get the MacOs logs and the App logs to synch. Have to delete the log in the phone and the set it up again and select the backup from the desktop version anytime I make a change on the desktop version.
I started using Subsurface on Mac and built out my dive log and set it to backup on my iCloud . Downloaded the IOS app and there is no way to synch to the Mac back up. The app states I need to go to GitHub and download a file to update the app. Huh? Looks like this is an open source app and unless you have some tech experience and be willing to side load apps on your phone. After doing this I have not found a way to get the MacOs logs and the App logs to synch. Have to delete the log in the phone and the set it up again and select the backup from the desktop version anytime I make a change on the desktop version.
## 1.8.3 (2026-10-26)
### Features
- one Equipment entry per dive computer and transmitter (#3685)
- editable MOD per cylinder, and a card layout for saved cylinders (#3579)
- first run runs the set up steps (#3643)
- set up this device flow (#3620)
- stream large Git downloads to disk (#3617)
- share a trip or site with chosen profiles (#3612)
- add downloads to the dive computer's owner (#3611)
- tag photos, videos and documents (#3605)
- point to the logbook when the active profile is empty (#3601)
- Home, End, Page Up and Page Down in master lists (#3599)
- set up this device card (#3600)
- replace this device's library with the account's (#3572)
- show progress while photos are linked or downloaded (#3558)
- unify End control with Start's button+chips pattern (#3562)
- ask before leaving a running import (#3559)
- one Photos & videos page, set up through an account (#3547)
- scrubber for the dive list (#3534)
- offer to sync serial between registry and gear item (#3540)
- an explicit backup copy destination and a reordered Backups page (#3541)
- optional logbook rules for dives and sites (#3528)
- Git as a sync and backup backend for any Git host (#3515)
- one account model and one account sheet for Settings > Data (#3527)
- display-only media color correction (#3529)
- bucket Time Patterns dives by sunrise and sunset at the dive site (#3345)
- move/select modes, zoom buttons and corner handles in the region picker; map style button (#3262)
- bring Suunto journal dive details onto imported dives (#3512)
- remove members, including approved ones, from a shared site library (#3484)
- draw First Stage and Second Stage icons (#3486)
- make dive notes selectable (#3487)
- check CCR transmitter roles against when each tank was breathed (#3453)
- view and change a library's connection, and edit its details (#3452)
- export all documents as a password-protected ZIP (#3435)
- add a map style switcher on every map (#3433)
- infer tank role from dive history on cylinder pick (#3378)
- Safety hub with Decompression under Safety (#3429)
- tank configuration statistics on the Gas page (#3432)
- show each earned certification's card on the course page (#3431)
- cap the safety disclaimer dialog at 480dp wide (#3428)
- planning-first default order for Site Details cards (#3426)
- cache gallery thumbnails on disk and make the cache sizes settings (#3342)
- move Delete into the detail page's overflow menu (#3418)
- move Media to just above Documents (#3420)
### Bug Fixes
- stamp GPS from recorded tracks on every wizard import (#3709)
- find a Bluetooth computer saved on another device by make and model (#3713)
- put the trip Documents section last, under Notes (#3712)
- land the stuck rubygems security updates and cover other platforms in Dependabot (#3705)
- count tank VIP and hydro clocks from the entered inspection dates (#3697)
- leave rebreather dives out of SAC and RMV statistics (#3696)
- read real my.divessi.com CSV exports (#3695)
- shift local dive times by the offset at each dive (#3692)
- show and sync a diver's edits to built-in species (#3698)
- resolve metric steel tanks without a material and flag guessed materials (#3688)
- test that stored metric data sources survive the migration ladder (#3690)
- zoom and scroll every track map like the other maps (#3666)
- move the thumb and the list by the pixel, not a dive at a time (#3667)
- keep the count off the section switch's underline (#3671)
- give the engine Flutter's ICU data so text keeps its line breaks (#3640)
- play videos on report a failed load instead of spinning (#3614)
- refresh the Google Drive token silently in the background (#3607)
- stop bonding Cressi adapters and log why a characteristic read fails (#3591)
- explain blank Min Gas and Turn Gas, fill saved-tank start pressure (#3609)
- switch gases at their MOD in the plan's water (#3597)
- remove a chart wayp
1.8.3 2d ago
## 1.8.2 (2026-10-14)
### Features
- private notes, signed edits, encryption and backups (#3332)
- file documents anywhere, gear paperwork in Documents, full-page PDFs, reclaim space (#3335)
- private shared dive-site library synced apart from the personal log (#3324)
- replace server-type presets with a single WebDAV address (#3330)
- Add multi-select when adding equipment to a dive (#3318)
- several courses per dive and certifications per course (#3320)
- cylinder fills, passport ids and service clocks in UDDF backups (#3325)
- remember which tagged cylinder a tank came from and count its dives (#3316)
- let each diver choose the Equipment list's default view (#3319)
- build sighting species from the UDDF species section (#3310)
- mark trips a cylinder is already packed for in the trip picker (#3309)
- show identifiers in an assembly's component rows (#3308)
- shortcuts to deep pages on the main nav (#3305)
- keep the Suunto route quality fields with an imported route (#3306)
- always a way back from items linked to a dive and from show-dives lists (#3303)
- choose custom colours for dive profile metrics (#3299)
- add body-of-water grouping to the Dive Sites list (#3273)
- add Runtime to Dive focus and a Runtime Trend chart (#3294)
- accept a focal length range for zoom lenses (#3293)
- move the Near-miss log to the Diver Profile hub (#3291)
- combine the Data Sources provenance lists into the comparison table (#3283)
- collapse long gaps in diving into a hatched break on trend charts (#3258)
- redesign the Dive focus page so the finding leads (#3257)
- interactive timeline slider beside the Play button (#3254)
- refuse retired, sold and lost gear in dive and trip scans (#3249)
- add WebDAV as a sync, backup and media storage backend (#3246)
- import DiveMate databases as their own format (#3245)
- one dive computer, several download connections (#3239)
- declutter the Data Sources section on the dive detail page (#3250)
- scrollbars, pointer-tracking resize and column/cell filter menus in the dive table (#3244)
- offer a visibility range alongside the precise number (#3238)
- highlight today on an active trip and show more on the day cards (#3242)
- add a Socks equipment type (#3241)
- documents store for insurance, medical, certification and other papers (#3240)
- display options, alternative layouts and views, and node dragging (#3237)
- weather and conditions statistics on the Conditions tab (#3233)
- show and edit a dive's boat, captain, operator and surface conditions (#3236)
- NFC tags, QR labels and passports for every piece of gear (#3235)
- add a Vest equipment type (#3234)
- proxy support (system proxy, manual HTTP and SOCKS5) (#3228)
- save the slate PDF and plan file to a folder (#3231)
- optional note on Backup Now and Export Backup (#3206)
- clone a piece of equipment (#3187)
- add ICD calculator for isobaric counterdiffusion (#3125)
- edge diver figure gear that blends into the page (#3188)
- give TDI its own certification structure (#3081)
- assign a course to several dives at once in bulk edit (#3040)
- track where gear is stored, serviced or lent (#3043)
- several roles per person on a dive (#3010)
- certification currency and renewal warnings (#3020)
- name each weight on a dive and in weight presets (#2999)
- import the Suunto DiveRoute as an underwater route (#3019)
- hide built-in dive types, roles, site types, service types and checklists (#3007)
- read cylinder volume and working pressure from the diver's own gear (#2945)
- custom certification agencies and levels, plus ACUC and DAN (#3011)
- site attachment categories and large view (#3001)
- save cert/course view modes and sync pSCR ratio and viewport choice (#2991)
- derived observations on the Insights landing (#3009)
- add a Wanted status for gear you plan to buy (#3002)
- chart navigation and Dive focus (#3008)
- the story: insights, highlight
1.8.2 Oct 15
## 1.8.1 (2026-10-04)
### Features
- save the whole search, recent searches and suggestions in the search row (#2890)
- Ask in the search row, Explore retired (3 of 4) (#2857)
- flag the same gear on two profiles' overlapping dives (#2885)
- tabs on every trip, a Prepare overview, one gear list and a map per story day (#2869)
- transfer gear between profiles and keep in-use gear when a profile is deleted (#2867)
- one Tracks nav entry for GPS and underwater tracks (#2840)
- generate the dive computer catalog and add a report form (#2846)
- one Refine panel for every dive filter (2 of 4) (#2807)
- one search bar for the Dives list (1 of 4) (#2789)
- link underwater routes from dive edit, reach routes from Settings > Manage (#2804)
- pack a whole equipment set from the trip Gear card (#2800)
- replace the Media section's desktop sidebar with app bar tabs (#2798)
- make the Details tab readable and space its buttons (#2799)
- move "Select items" into the overflow menu on every nav list (#2783)
- group the import preferences under an Import header on Settings > Data (#2781)
- record the data source each tank row came from (#2721)
- show the entry count under every entity list's title (#2683)
- phase 3, search sites, gear, buddies, species, trips and centers (#2674)
- the trip's gas record (#2325) (#2668)
- entity query language, PR 5: Explore on the shared registry and one name index (#2589)
- DPV mission canvas, part 2: the mission's failure-scenario results (#2626)
- pack gear for a trip, shown on the passport and the trip page (#2585)
- fills in their own Submersion CSV (#2631)
- fill forecast for the trip's cylinders (#2325) (#2630)
- phase 2, SAC, final-stop and safety-finding fields on the query registry (#2579)
- link dive tanks to trip cylinders (#2325, PR 3 of 5) (#2578)
- DPV mission canvas, part 1: editing a mission (#2576)
- the newest fill on the NFC tag, and the blender's cylinder (#2574)
- entity query language, PR 4: buddies, centers, certifications, courses and species (#2572)
- scroll the world maps across the date line and open on your dives (#2549)
- the trip cylinder board (#2325, PR 2 of 5) (#2451)
- DPV mission persistence and sync (PR 2 of 3) (#2538)
- on-device natural-language search, phase 1 (core plus dives) (#2196)
- entity query language, PR 3: sites, equipment and trips on the query engine (#2541)
- default every metric source to the dive computer (#1859) (#1860)
- the Connections explorer (#2454)
- entity query language, PR 2: query editor, chips and saved queries (#2443)
- choose the language a PDF export prints in (#2484)
- bring in Connect notes, weight and dives with no FIT (#2471)
- fold service and scrubber alerts into one collapsible panel (#2469)
- sweep dead rows from the local cache database (#2435)
- share gear between diver profiles and show its history (#2411)
- download the Seac Tablet over BLE with a read-poll transport (#2419)
- show set-aside restore copies in Backups (#2432)
- trip cylinder slots, ledger and dive tank link (phase 1 data and sync) (#2331)
- Rec / OC Tec / CCR Tec modes in the MOD calculator (#2387)
- entity query language, PR 1: core engine and dives (#2391)
- DPV mission planner domain and calculation engine (#2138)
- import a divelogs.de logbook (#2390)
- rename the Statistics section to Insights (#2385)
- move Display options into the overflow menu; add Delete to embedded Edit Site (#2383)
- add a line as a free amount or a priced gas fill (#2310)
- consolidate 3D Maps and Offline Maps into one Offline Maps page (#2355)
- move Equipment condition under Settings > Safety (#2357)
- drop the date under the dashboard greeting on desktop (#2353)
- hide individual built-in tank presets from the pickers (#2315)
- add a gas density calculator for OC and CCR (#2340)
### Bug Fixes
- keep the cylinder card's drag handle inside it, drop the dashes (#2958)
- order a peer de
1.8.1 Oct 5
## 1.8.0 (2026-09-24)
### Features
- replace the story's stacked map and day header with one band (#2233)
- copy each Play beta onto the closed testing track (#2290)
- plot each CCR O2 cell as its own curve (#854) (#2277)
- Diving Log / DiveLogDT relational tables (phase 2) (#2247)
- send betas to the open testing track (#2273)
- one gear service chip per severity, opening a filtered list (#2259)
- log a dive for a buddy's profile and fill planned dives from a download (#2040)
- media log category, peer device names and the media health report (#2150)
- zoom-dependent level of detail for bathymetry 3D terrain (#2167)
- replace country/region filters with searchable dropdowns (#2147)
- Diving Log / DiveLogDT SQLite logbook import (phase 1) (#2198)
- classify a Subsurface cave dive as a cave dive (#2205)
- drop the personal stat fields and difficulty from site list cards (#2199)
- open Site Details on the map and the site's name (#2183)
- name rail items in a tooltip while labels are hidden (#2170)
- drop Retire/Reactivate from the detail overflow menu (#2155)
- favorite a buddy from the Dive Partners list and detail page (#2146)
- narrow service type list, cap history, show used value (#2142)
- remember what worked with an operator's rental gear (#2087)
- drop the trip header stripe and let a trip collapse while its dive is open (#2043)
- tell identical gear apart in every list (#2052)
- carry equipment tags through UDDF and CSV (equipment tags 4/4) (#1966)
- move the profile image export into the Export sheet (#2011)
- edit, show, filter, search and bulk-edit equipment tags (equipment tags 3/4) (#1965)
- schema v219, equipment tag scope and sync (equipment tags 2/4) (#1964)
- switch diver profiles from the hero header avatar (#1994)
- remove the View Site chip from the dive details hero card (#1992)
- drop the replan icon from the profile chart header (#1975)
- make the schema-mismatch screen readable (#1946)
### Bug Fixes
- make the list header title the Equipment/Sets switcher (#2257)
- a gallery miss is notFound only on the device that linked it (#2296)
- deleting a diver cascades their media like the single-entity deletes (#2289)
- thinner profile chart lines, cursor-following tooltip, dynamic axis scaling (#2251)
- a Diving Log dive that loses its site says so (#2295)
- the Diving Log mappers satisfy the site location contract (#2293)
- keep a dive's location when it has no named site (#2264)
- a failed transfer says what the provider actually said (#2246)
- quiet verification, and the enrichment a dive deletion takes with it (#2239)
- show the tint a tag displays, in the app and in Settings (#2270)
- merge pending rows, guard stale media copies, and clock media's facts (#2171)
- keep the solid light fill for alert only (#2284)
- show a tag in its own colour, not a tint of it (#2255)
- label Tomorrow by calendar date, not 24 elapsed hours (#2243)
- suppress the end-pressure check the series cannot corroborate (#2238)
- match the ice dive type keyword as a word (#2236)
- stop flagging pressure endpoints the surfacing tail already explains (#2225)
- count trip days as calendar days, not elapsed hours (#2217)
- scale the 3D site terrain's depth realistically, with a per-site override (#2165)
- stop the total service cost from showing its currency twice (#2227)
- remove automatic deco-based dive type classification (#2226)
- refresh dive counts when a buddy is linked via dive_buddies alone (#2168)
- keep a dive type the importers do not recognise (#2215)
- localise the next-trip card countdown (#2219)
- carry site features through UDDF and fix the lossy sites CSV (#2206)
- read the dive site a pre-4.5 Subsurface export keeps inline (#2208)
- declare READ_CONTACTS so contact import can run (#2192)
- follow the playback cursor in the fullscreen readout (#2182)
- offer real ways back in when the dive log cannot be read (#2181)
1.8.0 Sep 24
## 1.7.10 (2026-09-14)
### Features
- tidy About and copy more of the log in diagnostics (#1943)
- add search bar and brand filter for USB computers (#1740)
- retype gear that earlier imports stored as Other (#1939)
- recognize a re-downloaded segment already merged into an existing dive (#1852)
- send each MacDive diver's dives to their own profile (#1893) (#1925)
- average SAC and bottom time per water-temperature band (#1928)
- replace the setup sliders with number boxes (#1896) (#1897)
- delete a tag from its edit dialog (#1898)
- configurable site detail cards and layout (#1899)
- bring imported suits in as wetsuit or drysuit gear (#1824) (#1869)
- link legacy buddy text to buddy records (#1831) (#1862)
- add Tank Band, Weight Pocket and Gear Pocket types (#1892)
- dive site types and tags (#1765) (#1849)
- add shift-click multi-select (#1739)
- replan a logged dive in the planner (#1637) (#1639)
- unit-aware CSV export with a full re-import round trip (#1813) (#1847)
- keep an error log without debug mode, add Open log folder (#1843)
- show dives by water-temperature band (#1841)
- open a tag's dives from Manage Tags and dive tag chips (#1842)
- hose type field and equipment attribute filters (#1805) (#1817)
- add a Spare status kept out of the dive gear pickers (#1803) (#1812)
- show hose and SMB length in cm or inches (#1810)
- show parent assemblies on a component's detail page (#1791)
- carry participants, roles and gear in the dives-only export (#1799)
- let divers turn off auto-tagging dive computer imports (#1753)
- show "Installed in" on a part's detail page (#1795)
- rank sensorless CCR bailout gases against each other (#1752)
- badges, trip scrubber margin, pre-dive and statistics (condition intelligence phase 4b) (#1730)
- item page condition section (condition intelligence phase 4a) (#1724)
- add subreddit banners for Reddit's desktop and app slots (#1782)
- condition engine, findings and toggles (condition intelligence phase 3b) (#1723)
- generate the social card, banners and logo mark from code (#1780)
- pair Cylinders with gas consumption by segment on wide panes (#1776)
- group the Equipment list by type, one Sort sheet for gear (#1771)
- gear check-ins, incident item link and observation exports (condition intelligence phase 3a) (#1722)
- per-dive sensor summaries, sweep and chart divergence bands (condition intelligence phase 2) (#1719)
### Bug Fixes
- keep mass attributes to two decimal places (#1911)
- stop gallery scans re-importing photos linked on another device (#1936)
- name sites as well as dives in tag delete and merge messages (#1933)
- show the clock sync switch in Transfers (#1927)
- apply the buddyId filter in the map views (#1919) (#1920)
- reload buddy-filtered lists on buddy-only writes (#1915) (#1918)
- never delete a .pre-restore that may be the only copy of the database (#1916)
- make restore's temp-file cleanup resilient to locked files (#1856)
- report a failed tag save and keep the dialog open (#1909)
- semantic status colors for gear due/overdue chips (#1891)
- keep Manage Tags rows from navigating (#1887) (#1888)
- print linked buddies and dive masters in CSV, Excel and PADI (#1861) (#1872)
- don't wipe tank pressure on an empty reparse (#1854)
- show parser warnings in the import summary (#1881)
- type CSV suits from their name so re-imports match (#1885)
- link skipped gear duplicates and match unclassified gear by name (#1882)
- classify MacDive XML gear types (#1871)
- carry recorded profiles and tank pressures in UDDF exports (#1875)
- read day-first and two-digit CSV dates, report skipped rows (#1846)
- link CSV tags to their dives and keep the suit in notes (#1848)
- write custom dive types under their own names (#1834) (#1845)
- import MySSI sites and buddies as linked records (#1838)
- stop the table profile panel previewing a filtered-out dive (#1868)
- stop the Detai
1.7.10 Sep 14
## 1.7.9 (2026-09-10)
### Bug Fixes
- bulk Use Set keeps the set's items, and the confirmation names every change (#1754) (#1755)
### Documentation
- add v1.7.8.8156 release notes (#1749)
### Tests
- wait for the result, not a fixed pump count, after keyslot steps (#1743)
### CI/CD
- raise the other platforms build timeout from 30 to 45 minutes (#1748)
### Chores
- bump version to 1.7.9+126
1.7.9 Sep 11
## 1.7.7 (2026-09-06)
Lots of bug fixes
1.7.7 Sep 7
## 1.7.6 (2026-08-28)
### Features
- per-type visibility toggles for dive type badges (schema v172)
- show dive type badges in the dive list, matching header sizing
- show dive type badges in the dive detail header
- list the dives where a species was seen on its detail page
- link the Marine Life tab to the Species page and localize the ranking
- serve the Species page at /species and move the catalog manager to /species/manage
- add the Species page
- add the SeenSpeciesTile row
- add Species page, sightings section and statistics strings
- add seen species and species sightings providers
- rebuild the detailed buddy card and add a compact buddy card driven by slot configs
- drive the compact site card from its slot config and localize the dive count
- enrich the detailed site card with configurable slots, stats and feature chips
- add EntityCardStat and EntityCardExtraFields slot renderers
- persist site and buddy card slot configs per diver
- add persisted EntityCardConfigNotifier
- add lastDive field and format certifications by display name
- add depthRange, lastDived and maxDepthReached site fields
- batch last dive together and usual role per buddy
- batch last-dived, max depth reached and feature types per site
- add SeenSpeciesRepository.getSightingsForSpecies
- add SeenSpeciesRepository.getSeenSpecies
- add the pure search and sort for seen species
- add SeenSpecies and SpeciesSightingRecord entities
- represent SAC and RMV as separate quantities (#354, #803)
- add GasConsumptionDisplay and GasConsumptionLane
- show a dive computer's linked gear item on its detail page
- seed gear twins from the imported-computer self-heal
- backfill dive computer gear twins at v169
- link the gear twin when a dive source is replaced
- attach dive computer gear twins at the import seams
- seed a gear twin when a dive computer is registered
- add dive_computers.equipment_id gear-twin bridge at v169
- deterministic gear-twin identity for dive computers
- Z-axis picker, framed chrome, tooltip and readout on the dive page
- shared readout rows, hover tooltip, richer readout panel
- add HoverPicker with grid and path implementations
- Z axis input in display units and a Z-aware geometry key
- add dive axis frame, tick helpers, and labels
- build the single-dive scene as a Z-metric path
- curtain and markers follow the path Z
- turn the deco ceiling into a margin sheet on the path
- add ShadowBuilder for wall shadows and drop lines
- add PathBuilder tube and shared stripIndices
- resample Z metric series with gap interpolation
- add ZAxisSpec with nice-number range and Z mapping
- add tts metric and Z-capable metric set
- fetch conditions for every dive that is missing them
- add the European chamber rows to the directory
- curate the hyperbaric chamber directory
- explain why a file matched no dive and give it a way in
- show distance and capability, add the chamber directory
- add a live capture-time offset control to the Files review pane
- map-first desktop layout, summary strip, and empty state
- hold a session capture-time offset in the Files tab state
- parse chamber leads from the national registries
- add bulk dismiss for safety review findings
- read trip day weather from the database
- add a capture-time offset and failure reasons to DivePhotoMatcher
- add the chamber harvester with validation gates
- add per-file unmatched diagnostics to MatchedSelection
- fetch and store trip day weather once
- order chambers by capability band then distance
- record which cascade tier produced a capture time
- decide which trip days need a weather lookup
- replicate trip day weather
- add capability and provenance fields to EmergencyChamber
- add TripDayWeatherRepository
- add trip_day_weather table at schema v168
- pair Surface GPS with Tide, Cylinders with Weights
- make the master-detail pane divider user-resizable
- attach Subsurface-ref
1.7.6 Aug 29
## 1.7.5 (2026-08-24)
### Features
- show a thumbnail for every pre-import review row
- run the unlinked-media sweep on every launch
- fold Unlinked and Missing into the Library
- manifest import and polling insert linked rows only
- URL tab resolves metadata before inserting
- shared link resolution for network imports
- add resolve/insertResolved to the network pipeline
- review library imports before any row is written
- add the shared pre-import review page
- add DiveLinkMatcher, the one timestamp-to-dive answer
- replace the library filter chip row with a toolbar and sheet
- add the active filter chip strip
- add the library filter bottom sheet
- reload the library when the sort changes
- sort library pages by date, name, or size
- add library sort field enum and persisted sort provider
- unlinking media from a dive removes it from the library
- show where every thumbnail is served from
- edit buddy roles from the bulk editor
- add My role to the bulk dive editor
- add a check-all-media action to Media Sources
- sweep every source type, not just local files
- persist orphan state discovered while serving a tile
- add a narrow verified-state write
- add the orphan reconciliation decision function
- a running bill for a whole blending session
- add Ratio Computers XML file import
- show dive mode badge across dive detail and list views
- hydrate saved blender preferences on open
- cost a fill at the fill station's prices
- reusable target mix templates
- report fill amounts in bar, not litres
- fill temperature, settled temperature and gas model
- persist templates, prices and blending conditions
- price a fill procedure per 100 litres of gas
- solve on molar density with fill and settled temperatures
- three-model equation of state on molar density
- credit contributors in the stable release notes
- browse previously used tags when editing a dive (#1171)
- let the user retry a still-loading tile by tapping it
- add a recoverable still-loading placeholder state
- manage service types from Settings > Manage
- ask for one service type when logging service
- choose a default category per service type
- resolve a service type's default category
- rename service_type to service_category (v159)
- add default_category to service types (v159)
- move the main database to WAL journal mode
- selectable ideal/real gas model, and fix the SAC unit mismatch (#828)
- offer an entry/exit method fill from dive history (#1104)
- derive an entry/exit suggestion from dives at the site (#1104)
- show entry and exit method on the site detail page (#1104)
- Excel maintenance log entry points (#829)
- merge-mode cycling for entry and exit method (#1104)
- edit entry and exit method in the access section (#1104)
- snap entry/exit method from the assigned site (#1104)
- add the site entry/exit snap rule (#1104)
- Maintenance Log Excel sheet builder (#829)
- carry entry/exit method through the site entity and repository (#1104)
- compute deco classification via the dive analysis
- add local cache for computed deco classification
- default service price on kind and schedule (#829)
- add dive_sites entry_method and exit_method (v154, #1104)
- resolve default service cost, schedule before kind (#829)
- update tank specs in place, keeping pressures (#797)
- carry default service cost through entities and repos (#829)
- default service cost columns, schema v154 (#829)
- filter maintenance history by task, type and year (#829)
- maintenance history filter model (#829)
- name the maintenance task in service history (#829)
- localize ServiceType labels (#829)
- recognise reprogrammed dive-cable USB IDs on other platforms (#732)
- request the USB device entitlement for raw-USB cables (#732)
- fall back to raw-USB cables when no serial port answers (#732)
- libdivecomputer iostream over raw-USB FTDI cables (#732)
- IOUSBLib shim for unclaimed FTDI dive cables (
1.7.5 Aug 27
Many bug fixes
1.7.1 Jul 31
v1.7.0 introduces a ton of new features. Big logbooks that had become painfully slow are now fast. Your photos and videos can live in cloud storage you own and appear on every one of your devices. There is a new post-dive safety suite, a review inbox that finds suspicious imported data, 3D views of your dives, a weight planner that learns from your own history, optional password protection for both sync and backups, and a planner that finally uses the whole window. There is also a redesigned home dashboard and an app-wide display zoom that lets you trade size for density on any screen. Around those headliners are deeper equipment and certification tracking, a new import path for Aqualung DiverLog users, Shearwater Perdix 3 downloads, and a long list of fixes. Everything upgrades automatically the first time you open the app.
1.7.0 Jul 26
v1.6.0's centerpiece is a completely rebuilt dive planner: a live profile canvas that recomputes your schedule as you edit, real closed-circuit planning with a worst-case bailout solver, contingency and lost-gas plans, turn pressure and rock-bottom checks, and plans that save, sync, share, and print. Around it, this release adds three new ways to get dives into your logbook: scan a paper logbook page with your camera, import a whole folder of dive files at once, and record a surface GPS track on your phone that positions dives your computer couldn't. It also gives you a way out of a stuck sync, unifies the cylinder information on the dive detail page into one card, and fixes the reason large Shearwater logbooks could never finish downloading.
1.6.0 Jul 9
v1.5.9's centerpiece is full support for a single dive logged by more than one dive computer that lets you import from every unit you carried on a dive, consolidate them into one dive, and switch between (or overlay) each computer's data on a new sources bar. Alongside that, this release sharpens Submersion's decompression modeling for technical divers, adds Dropbox as a cloud-sync option, rebuilds the fullscreen dive profile into something more useful, and brings a wave of new logging features: custom dive names, photos pinned to your profile, buddy credentials, upcoming-trip checklists, and a fully filterable Statistics tab.
1.5.9 Jul 6
v1.5.8 builds on the bulk-editing and Garmin work from v1.5.6. A dive can now carry more than one dive type at once (ex. a single dive can be recreational and shore). It also makes your air-consumption numbers more accurate by accounting for real-gas compressibility, finishes Garmin FIT import by recovering cylinder size, makes the dive-profile chart noticeably faster to draw, and clears a stack of reported issues. Most importantly, it eliminates a multi-second stutter with flickering detail cards during sync, stalled OSTC nano and serial downloads, and an OTU statistic that counted dives it shouldn't have. Under the hood, the app moves to Flutter 3.44.
1.5.8 Jun 30
v1.5.6 is a fast follow-up to v1.5.5, led by the single most-requested community feature: editing many dives at once. It also turns Garmin FIT import into a full-fidelity importer (air integration, gas, deco, GPS, time zone), finally makes the dive-profile Ascent Rate toggle actually draw a curve, and clears a batch of reported bugs - most importantly a download crash on some devices, plus fixes for disappearing SAC graphs, reverted dive-site locations, and a stale Home tab after import or sync.
1.5.6 Jun 24
v1.5.5 is a feature release focused on getting your dives off your dive computer and into Submersion accurately. It fixes the USB-serial download path, fixes identification and download for several Bluetooth models, brings proper rebreather (CCR/SCR) handling to imports and oxygen-exposure math, and makes the dive profile chart far nicer to zoom and pan on every kind of device. Dive sites gain City / Island / Body of Water fields, Android gets reliable backup folders, and large-library sync no longer runs out of memory on memory-constrained devices.
1.5.5 Jun 22
- Multi-device cloud sync (iCloud and S3-compatible storage)
- Redesigned dive edit form
- Prior dive experience and career totals
- Safer backup restore
- Lots of bug fixes
1.5.1 Jun 16
Shearwater surface GPS entry and exit coordinates are now correct.
Other small bug fixes.
1.4.9 May 29
Automatic dive-site matching from GPS
1.4.8 May 28
This release adds dive media from sources beyond the photo library - local files and folders, web URLs, and synced shared albums, alongside MacDive logbook import, Shearwater Swift surface GPS entry and exit points with an interactive map, and gas-aware decompression analysis of imported profiles.
1.4.7 May 26
This release introduces new personalization controls, cross-profile data sharing, expanded map options, and substantial improvements to Subsurface import fidelity and dive computer data retention.
1.4.5 Apr 21
Last-visited highlight across all list views
Tap an item in Dives, Sites, Trips, Buddies, Equipment, Dive Centers, Certifications, or Courses, open detail, and swipe back, your last-visited card is now tinted so you can see where you left off. Works in both detailed and compact views; the highlight persists until you tap another item or leave the tab. Previously this only worked in desktop/tablet master-detail layouts; now it's consistent on phone too.
Re-import all dives from your dive computer
New "Re-import all dives" button on the dive computer detail page lets you pull every dive from your computer again, bypassing the fingerprint filter that normally skips already-imported dives. Use it when you've deleted a dive by accident or aborted an earlier import. Each already-logged dive is flagged as a pending duplicate in the import wizard, so you get Skip, Import as New, or Consolidate (coming soon) choices per dive. (#206 / #216)
Explicit choice required on duplicate imports
Duplicate-detection no longer silently merges or skips. When the importer finds a likely duplicate, you must explicitly pick Skip, Import as New, or Consolidate (coming soon) before the import proceeds. Prevents accidental data loss when re-importing overlapping sessions from different computers. (#200 / #209)
Database backup before migrations
First-run of a version that contains a schema migration now snapshots the database to a safe location before applying changes. If anything goes wrong on upgrade day, your previous state is recoverable. (#210)
Cleaner Statistics charts
Dives Per Year: 4-digit years automatically compact to '24, '25, etc. when the chart is crowded; full 4-digit years display when there's room. (#174)
Time at Depth Ranges: units (m, min) now render once as axis labels instead of repeating on every tick, y-axis is right-aligned, and long values like 1200 min no longer truncate. (#175)
All stat bar charts: y-axis count values are right-aligned in a consistent column across all charts.
Dive card polish
Detailed card "Stat 2" defaults to Runtime for new users: bottom time → runtime as the more useful default.
Show/hide tags toggle on detailed dive cards to keep cards compact when you don't need tags visible.
Splash screen dissolves into the app instead of a hard swap at launch.
1.4.4 Apr 15
## 1.8.3 (2026-10-26)
### Features
- one Equipment entry per dive computer and transmitter (#3685)
- editable MOD per cylinder, and a card layout for saved cylinders (#3579)
- first run runs the set up steps (#3643)
- set up this device flow (#3620)
- stream large Git downloads to disk (#3617)
- share a trip or site with chosen profiles (#3612)
- add downloads to the dive computer's owner (#3611)
- tag photos, videos and documents (#3605)
- point to the logbook when the active profile is empty (#3601)
- Home, End, Page Up and Page Down in master lists (#3599)
- set up this device card (#3600)
- replace this device's library with the account's (#3572)
- show progress while photos are linked or downloaded (#3558)
- unify End control with Start's button+chips pattern (#3562)
- ask before leaving a running import (#3559)
- one Photos & videos page, set up through an account (#3547)
- scrubber for the dive list (#3534)
- offer to sync serial between registry and gear item (#3540)
- an explicit backup copy destination and a reordered Backups page (#3541)
- optional logbook rules for dives and sites (#3528)
- Git as a sync and backup backend for any Git host (#3515)
- one account model and one account sheet for Settings > Data (#3527)
- display-only media color correction (#3529)
- bucket Time Patterns dives by sunrise and sunset at the dive site (#3345)
- move/select modes, zoom buttons and corner handles in the region picker; map style button (#3262)
- bring Suunto journal dive details onto imported dives (#3512)
- remove members, including approved ones, from a shared site library (#3484)
- draw First Stage and Second Stage icons (#3486)
- make dive notes selectable (#3487)
- check CCR transmitter roles against when each tank was breathed (#3453)
- view and change a library's connection, and edit its details (#3452)
- export all documents as a password-protected ZIP (#3435)
- add a map style switcher on every map (#3433)
- infer tank role from dive history on cylinder pick (#3378)
- Safety hub with Decompression under Safety (#3429)
- tank configuration statistics on the Gas page (#3432)
- show each earned certification's card on the course page (#3431)
- cap the safety disclaimer dialog at 480dp wide (#3428)
- planning-first default order for Site Details cards (#3426)
- cache gallery thumbnails on disk and make the cache sizes settings (#3342)
- move Delete into the detail page's overflow menu (#3418)
- move Media to just above Documents (#3420)
### Bug Fixes
- stamp GPS from recorded tracks on every wizard import (#3709)
- find a Bluetooth computer saved on another device by make and model (#3713)
- put the trip Documents section last, under Notes (#3712)
- land the stuck rubygems security updates and cover other platforms in Dependabot (#3705)
- count tank VIP and hydro clocks from the entered inspection dates (#3697)
- leave rebreather dives out of SAC and RMV statistics (#3696)
- read real my.divessi.com CSV exports (#3695)
- shift local dive times by the offset at each dive (#3692)
- show and sync a diver's edits to built-in species (#3698)
- resolve metric steel tanks without a material and flag guessed materials (#3688)
- test that stored metric data sources survive the migration ladder (#3690)
- zoom and scroll every track map like the other maps (#3666)
- move the thumb and the list by the pixel, not a dive at a time (#3667)
- keep the count off the section switch's underline (#3671)
- give the engine Flutter's ICU data so text keeps its line breaks (#3640)
- play videos on report a failed load instead of spinning (#3614)
- refresh the Google Drive token silently in the background (#3607)
- stop bonding Cressi adapters and log why a characteristic read fails (#3591)
- explain blank Min Gas and Turn Gas, fill saved-tank start pressure (#3609)
- switch gases at their MOD in the plan's water (#3597)
- remove a chart wayp
more Version 1.8.3 2d ago
Data Not Collected The developer does not collect any data from this app.