Only a call OFFER was marked time-critical, so only an offer got the VoIP push that reaches a locked, suspended phone. Hanging up sent the end as ordinary traffic, which a sleeping phone does not wake for, so it went on ringing for a caller who had already gone. The end of a call is as time-critical as its start, and both clients now say so.
A second push orphaned the first call
A push arriving for a call already on screen overwrote the id of the ringing call. Nothing held that id afterwards, so nothing could end it. PushKit still demands a reported call out of that handler, so it now reports a throwaway and closes it in the same breath.
"Calling" outlasted the answer
Answering told this account's other devices before it told the caller, putting a key fetch for every one of them in front of the answer on the same actor. The caller sat on "Calling" through all of it. The answer goes first now.
Tests
VoIPCallTests asked whether a call signal was recognisable from its bytes. It now asks the rule what it decides: an offer rings, an end rings, an answer and a reaction do not, and a message never does. Same on Android, where the rule moved to the companion so a test can reach it.
And two things on screen
The sign-in screen showed a letter in a box where the app has a mark of its own. It now shows the artwork and the navy the launcher icon uses, so the screen someone lands on matches the icon they tapped.
Setting up Files asked for the passphrase twice. A second box saying "type it again" is how you confirm a secret somebody is inventing on that screen; this is the passphrase they already sign in with, which the paragraph above the box says in as many words. Asking twice only suggested it was a different one. iOS asks once.
Found while testing an Android call to an iPhone.
## The ring would not stop
Only a call OFFER was marked time-critical, so only an offer got the VoIP push that reaches a locked, suspended phone. Hanging up sent the end as ordinary traffic, which a sleeping phone does not wake for, so it went on ringing for a caller who had already gone. The end of a call is as time-critical as its start, and both clients now say so.
## A second push orphaned the first call
A push arriving for a call already on screen overwrote the id of the ringing call. Nothing held that id afterwards, so nothing could end it. PushKit still demands a reported call out of that handler, so it now reports a throwaway and closes it in the same breath.
## "Calling" outlasted the answer
Answering told this account's other devices before it told the caller, putting a key fetch for every one of them in front of the answer on the same actor. The caller sat on "Calling" through all of it. The answer goes first now.
## Tests
`VoIPCallTests` asked whether a call signal was recognisable from its bytes. It now asks the rule what it decides: an offer rings, an end rings, an answer and a reaction do not, and a message never does. Same on Android, where the rule moved to the companion so a test can reach it.
## And two things on screen
The sign-in screen showed a letter in a box where the app has a mark of its own. It now shows the artwork and the navy the launcher icon uses, so the screen someone lands on matches the icon they tapped.
Setting up Files asked for the passphrase twice. A second box saying "type it again" is how you confirm a secret somebody is inventing on that screen; this is the passphrase they already sign in with, which the paragraph above the box says in as many words. Asking twice only suggested it was a different one. iOS asks once.
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.
Found while testing an Android call to an iPhone.
The ring would not stop
Only a call OFFER was marked time-critical, so only an offer got the VoIP push that reaches a locked, suspended phone. Hanging up sent the end as ordinary traffic, which a sleeping phone does not wake for, so it went on ringing for a caller who had already gone. The end of a call is as time-critical as its start, and both clients now say so.
A second push orphaned the first call
A push arriving for a call already on screen overwrote the id of the ringing call. Nothing held that id afterwards, so nothing could end it. PushKit still demands a reported call out of that handler, so it now reports a throwaway and closes it in the same breath.
"Calling" outlasted the answer
Answering told this account's other devices before it told the caller, putting a key fetch for every one of them in front of the answer on the same actor. The caller sat on "Calling" through all of it. The answer goes first now.
Tests
VoIPCallTestsasked whether a call signal was recognisable from its bytes. It now asks the rule what it decides: an offer rings, an end rings, an answer and a reaction do not, and a message never does. Same on Android, where the rule moved to the companion so a test can reach it.And two things on screen
The sign-in screen showed a letter in a box where the app has a mark of its own. It now shows the artwork and the navy the launcher icon uses, so the screen someone lands on matches the icon they tapped.
Setting up Files asked for the passphrase twice. A second box saying "type it again" is how you confirm a secret somebody is inventing on that screen; this is the passphrase they already sign in with, which the paragraph above the box says in as many words. Asking twice only suggested it was a different one. iOS asks once.
changed the description
mentioned in commit
ca720ce04d