Expose a deliberate one-shot SOS action compatible with the official client's alarm=sos transport.
Scope
Add a differentiated Send SOS action with a brief confirmation before acquisition/transmission.
Obtain a position using the agreed official behaviour, attach alarm=sos, and use the same direct transport as manual sending.
Display Sending, Accepted by receiver, or Could not send. Acceptance is HTTP 2xx, not proof that a person received or acknowledged an alert.
Allow an explicit manual retry after failure. Do not enqueue SOS, retry it automatically on reconnect, drain the ordinary queue or enable continuous tracking.
Display the actual date and accuracy of the position used; a last-known fix must not be labelled as newly captured.
Acceptance criteria
Cancelling confirmation performs no acquisition or network request.
Failure or lack of a position is visible and does not produce a success state.
SOS works as a one-shot while paused and preserves the continuous-tracking setting.
Offline/relaunch/reconnect never sends a deferred SOS automatically.
UI wording does not claim contact with emergency services or successful human notification.
Validation
Use synthetic data and the local receiver for confirmation, 2xx, failure, cancellation and retry. Never trigger a real alarm on an external Traccar server as an unattended test.
Add or extend this feature's meaningful deterministic tests in the CI workflow from PROTO-002 as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual.
References
Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS.
Originally created by @jayanezj on GitHub (Oct 23, 2026).
Original GitHub issue: https://github.com/jayanezj/traccar-client-macos/issues/7
## Goal
Expose a deliberate one-shot SOS action compatible with the official client's `alarm=sos` transport.
## Scope
- Add a differentiated Send SOS action with a brief confirmation before acquisition/transmission.
- Obtain a position using the agreed official behaviour, attach `alarm=sos`, and use the same direct transport as manual sending.
- Display Sending, Accepted by receiver, or Could not send. Acceptance is HTTP 2xx, not proof that a person received or acknowledged an alert.
- Allow an explicit manual retry after failure. Do not enqueue SOS, retry it automatically on reconnect, drain the ordinary queue or enable continuous tracking.
- Display the actual date and accuracy of the position used; a last-known fix must not be labelled as newly captured.
## Acceptance criteria
- [ ] Cancelling confirmation performs no acquisition or network request.
- [ ] Confirming produces one request containing `alarm=sos`; repeated clicks cannot create concurrent duplicate requests.
- [ ] Failure or lack of a position is visible and does not produce a success state.
- [ ] SOS works as a one-shot while paused and preserves the continuous-tracking setting.
- [ ] Offline/relaunch/reconnect never sends a deferred SOS automatically.
- [ ] UI wording does not claim contact with emergency services or successful human notification.
## Validation
Use synthetic data and the local receiver for confirmation, 2xx, failure, cancellation and retry. Never trigger a real alarm on an external Traccar server as an unattended test.
Add or extend this feature's meaningful deterministic tests in the CI workflow from [PROTO-002](https://github.com/jayanezj/traccar-client-macos/issues/2) as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual.
## References
Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS.
- [Official source 1](https://github.com/traccar/traccar-client/blob/c189d52f0bf464d18bebaff48b0fac15fc8cd1e2/lib/main_screen.dart)
- [Official source 2](https://github.com/traccar/traccar-client-sdk/blob/a297767642e98193eb7939cbb4d54c101ff23610/core/src/commonMain/kotlin/org/traccar/client/Tracker.kt)
- [Official source 3](https://github.com/traccar/traccar-client-sdk/blob/a297767642e98193eb7939cbb4d54c101ff23610/core/src/commonMain/kotlin/org/traccar/client/HttpUploader.kt)
## Dependencies
- [PROTO-006](https://github.com/jayanezj/traccar-client-macos/issues/6)
<!-- planning-id: PROTO-007 -->
jayanezj
added this to the M3 - Transport and SOS milestone 2026-10-23 18:09:15 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @jayanezj on GitHub (Oct 23, 2026).
Original GitHub issue: https://github.com/jayanezj/traccar-client-macos/issues/7
Goal
Expose a deliberate one-shot SOS action compatible with the official client's
alarm=sostransport.Scope
alarm=sos, and use the same direct transport as manual sending.Acceptance criteria
alarm=sos; repeated clicks cannot create concurrent duplicate requests.Validation
Use synthetic data and the local receiver for confirmation, 2xx, failure, cancellation and retry. Never trigger a real alarm on an external Traccar server as an unattended test.
Add or extend this feature's meaningful deterministic tests in the CI workflow from PROTO-002 as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual.
References
Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS.
Dependencies