Starting 6.7, the code generator has the following line:
header('newparams:showclient&clientid='.$clientid);
This is necessary to support the "tab refresh" feature. Double-clicking on any active tab will reload the current tab. On mobile devices, there is a "refresh view" button on top of each tab view.
By default, when a tab is opened with "addtab", the tab remembers "how it is opened". Refreshing the tab simply replays the command.
addtab('client_123', 'Client Name', 'showclient&clientid=123');
In the above example, "showclient&clientid=123" is reused during refresh.
The reloadtab function actively ignores the replay parameters because the function is usually associated with updating the database. For example, updating, or creating records.
Before icl/addclient.inc.php is reached, two tab functions are called in the front end:
addtab('client_new','New Client','newclient');
reloadtab('client_new',null,'addclient&...');
After the record is created, the tab key will be upgraded to, say, client_124, if the auto increment ID is 124. This is a key change, which was introduced in 3.2 as the rekey option. The new tab content is effectively the same as showclient&clientid=124. But it is not registered the replay params. Double clicking on the tab will replay "newclient", reopening, incorrectly, the record form.
To prevent this error, tabs.js actively checks the "newkey" header and ensures that "newparams" is also supplied.
Also in the past, tab titles are separately set in reloadtab before sending the server request. Now the parameter can be an empty string, and the "newtitle" header on the server side will update the new tab title.