Version History
CapeSoft Logo

CapeSoft NetTalk
Version History

Download Latest Version
Installed Version Latest Version

NetTalk Version History

Major Version Upgrade Documents

Version 14

  • 14.19 - 26 February 2024
    Fix: Some examples were missing

    Add: id to Sub Menus
    Remove: Built-in custom css for various browsers removed.
    Remove: Duplicated #Embed point (%CustomValidateEnd)
    Change: x-tabid in headers now overrides cookie value
    JavaScript: Menu: Works better for multiple levels deep in desktop mode.

  • 14.18 - 19 February 2024
    Fix: Duplicate declaration in SmppConnection object.

    Docs: updated docs for NetWebSource Watch tab. Added support for JavaScript function.
    Change: WebSockets calls JavaScript function in addition to updating element, not instead of.
    Move: Wizard: Call to SetSessionLoggedIn (In LoginForm procedure) moved from GenerateForm to InitForm routine.
    Fix: Some layouts on Form were not correct (refactor in 14.17)
    Fix: Partial Save button code got generated into every field on the form.
    HOST: The Host app has been updated to support PropogateDeleteSession (which gpf'd).

  • 14.17 - 8 February 2024 - Note this build updates CLANET.DLL
    NetSimple: Added ContextOptions property. This can be set to Net:Context:Allow_Unsafe_Legacy_Renegotiation when connecting to servers, using TLS, where the server does not support Secure Renegotiation. If the site is a web site it can be tested for this issue using SSLLabs. Server owners should be encouraged to enable secure renegoatiation, as not doing so is considered a security problem. the NetDemo app has been updated so this option can be set on the Secure HTTPS Options tab, for the WebClient window.

    Add: NetWebForm: Button Type Partial Save. This saves the record (assuming validation passes) but leaves the form open for the user to continue.
    Add: NetWebYear: Calendar's that do not have a form attached will pass clicks back to the server for processing in the ClickOnDay method.
    Add: WebServer procedure, Global defaults for Forms, Span Prompt / Value / Comment, Prompt / Value and Value / Comment
    Add: Browse Menu Items, SendClick to Server. Triggers 'menuitem' event in browse TakeEvent routine.
    Refactor: Form Cell Start / end code
    Fix: Some API's did not set the filter correctly.

    iNetSessions Interface
    Add: New method: _UpdateSessionsQueue (sorry)

  • 14.16 - 17 January 2024
    Fix: Prevent recursive call to Sendfile from NetWebPage / File.

  • 14.15 - 15 January 2024
    Add: NetWebForm:  iFrame Form Field Type.
    Add: NetWebForm:  Raw to Display type.
    Fix: StoreMem tried to default value LIKE variables to initial value.
    Fix: Clear data-do in browses if action not set.
    Fix: SecwinCtrlsDisplayProcedureName default value was not ideal.
    Fix: Some Login requirements on reports tweaked.
    Fix: NetWebServer process makes parent call.
    Fix: inline calls to LoadTagFile
    Tweak: Deprecated Secwin Control Groups Template field changed from @n3 to @s3

    Add: NetWebBrowse: Support for OnClick Procedure to Non-Button fields.

  • 14.14 - 18 December 2023
    Email: NetEmailSend, checks net.encoding before re-encoding string.

    Add: Support for / in template "pagename" setting.
    Fix: NetWebBrowse: "Must be logged in" at field took "default" from the _global_ setting, not the procedure setting.

  • 14.13 - 14 November 2023
    Fix: NetWebServiceMethod: Setting Table fields as read-only in Parameter settings suppressed them from parameter description, but not examples.
    Fix: Export to XML could fail
    Fix: nt-location.js was not added to all.js

  • 14.12 - 2 November 2023
    Add: Image field type on a browse now supports the onclick options.
    Change: Locator Placeholder value passed through Translate method.
    Fix: Host Exe could generate an ASSERT error if a request came in for a DLL that had failed to load.
    Fix: Locator Placeholder now passes through Translate method.

    Fix: Signature field in disconnected mode did not draw from the database correctly when form was opened.

  • 14.11 - 26 October 2023
    Change: SetBrowseQueue Width parameter changed to omittable.

  • 14.10 - 25 October 2023
    Fix: Emails to would fail to connect.

    Change: Default CSS value for Column Width changed from "auto" to blank.
    Fix: Excel Export for Data Stored as urf-8 would have the wrong encoding text in the xml header.
    Fix: NetSessionsQueue Class : Wait and Release methods were not Virtual.
    Add: NetSessionsQueue: Method to set SessionDataQueue pointer.

    Fix: Desktop sync could fail if Allow Client compression on the server was set to False.
  • 14.09 - 19 October 2023
    Fix: ServerNameIndication could get lost when doing a SSL Client Open.

    Fix: Export to Excel button in Browser was not working
  • 14.08 - 18 October 2023
    Change: LDAPParametersGroupType gets pTLS, pIgnoreCARoot, pIgnoreCertName, pFamily components.
    Change: Active Directory TXA's updated to include new settings.
    Examples: LDAP Examples updated to support settings for TLS, Ignore Certs, Ignore CA Root and Family.

    On-Screen-Keyboard tweaks.
    Fix: Web-Cam files upload, and save to the Uploads folder, had stopped working
    Fix: Don't generate HTML Routines where there is no routine name.
    Fix: Add PUT, PATCH and QUERY to OPTIONS reply
    Fix: ShortSOAPAction called FileNameOnly, instead of URLFileOnly.

    Add: Support for onclick JavaScript on a field in a browse to disconnected apps.
  • 14.07 - 9 October 2023
    Fix: Version number mismatch in build files.

  • 14.06 - 6 October 2023
    Fix: LIB mode supported again

    Add: Better support for Array fields in NetWebServiceMethod
    Change: Set:AcmeChallenge from Byte to Long
    Change: SaveFile, SaveImage Methods assumes filename is in utf-8 format and supports unicode chars in names.
    Fix: NetWebServiceMethod could refuse to open in embeditor

    Improvement to Wizard when generating a PWA

  • 14.04 - Sept 4 2023

    Add: Support for Insert-On-Save added to popup forms
    Add: HTML Language and Site Description options to WebServer / General tab
    Add: Include Location script option
    Add: DisplayNotification method to WebServer
    Add: AskForNotificationPermission method to handler.
    Add: ecec.dll to output folder
    Add: Webcam Button actions: Start, Stop, Switch cameras.
    Add: Contents of photo can be sent to another field on the form.
    Change: ID of webcam field change to include -camera. Custom CSS on Webcam field will likely need updating.
    Change: NetWebPage goes through CommonHeader, not direct to w3Header
    Change: CommonHeader includes
    Default: Map provider set to ESRI
    Fix: Possible ASSERT when using ThreadPool windows.
    Fix: Form RowId could contain a colon.
    Fix: Typo in GzipAll.bat, when including nt-labels.css
    Fix: Add support for vw and vh units to CreateMapDiv method
    Fix: NetWebServiceMethod: Could GPF if StringTheory parameter was parsed.
    Fix: Gauge field would not draw if hidden when the page populated.
    Fix: SetEntryWidth could discard contents of pMergeTo
    Update: Quagga.js upgraded to Quagga2

    Add: Support for gauges to nt-form-ls
    Add: Gauge fields can be reset from other fields.
    Add: Support for SetNotificationEndPoint
    Add: OnDetected, OnScanned JavaScript fields for Scanner (Barcode) fields.
    Add: File Upload field can upload to blob in IndexedDb
    Add: Support for delayed priming of Map fields.
    Add: Notifications tab to global extension
    Add: Support for Binary attribute on blob fields in dictionary
    Change: onChangeField in nt-form-ls, new value passed as parameter.
    Moved: Icon declaration before ntmap declaration in nt-maps.js
    Fix: Could be issues if Camera or Scanner Use Equates contained  a colon.
  • 14.03 - August 26 2023
    Lib mode compiles fixed.

    Add: Extension Form Field Type
    Add: Browses add image field to VIEW if in table.
    Add: GetValue into BLOB method.
    Add: Ability to (automatically) serve images (PNG, JPG, GIF, SVG, WEBP, TIFF  from Blob in binary, base64, or image/data format
    Change: Images on browse rows no longer limited to 100K image/data
    Change: Global Extension Template : packet name, and options name, moved to Other tab

    Add: Generate manifest.json from the app
    Add: database.js : OnSyncCommsStart function
    Add: database.js : Built-in support for nt-comms-busy and nt-comms-off images and #lastsyncdate
    Add: database.js : binary property for tables to list BLOB fields with BINARY attribute
    Add: WebCam field type can save photo to local Blob
    Sync API - Streamlined file for Devices table.
  • 14.02 - August 18 2023
    Fix: Clear Content Encoding if GZip turned off

    Fix: NetWebServiceMethod skipped some required routines if procedure was set as Private

    Updated all Apps examples to NT14, adding jFiles and Reflection extensions.
    Add: Support for client-side compression to NetSync class.
    Fix: Apps level could generate FirstInCell instead of loc:FirstInCell

  • 14.01 - August 16 2023
    Updated all Web examples to NT14, adding jFiles and Reflection extensions.
    CLANET DLL signed.

    Fix: Oddjob code in NetWeb.clw
    Remove: "Max Blob Size" setting (which does nothing.)

  • 14.00 - August 11 2023
    Initial release - see NetTalk 12 to NetTalk 14

    Notes: This build does not include all the themes, and not all the web examples have been updated to the new control templates, or had Reflection added. These items will be completed within the next couple of builds.

Version 12

  • 12.62 -  19 June 2023
    NetLDAP: Support for email-domain UPN's. (If required re-import the ActiveDirectory procedures from the new TXA's) (courtesy of Jane Fleming)
    Extra field for custom data added to NetMapMarkerQueueType structure.

    Add: enableClose, disableClose functions in ntForm
    Add: _ParseCookiesForSessionId
    Fix: _GetSessionHost could return 0 instead of ''.
    Improvement: reload of page triggered after response to NewTabId. Allows session values in headers, session values in menu options, and so on.

  • 12.61 -  24 May 2023
    Fix: Typo in _DivHeader made all Div headers int <div>. (Thanks to Jane Fleming)

  • 12.60 -  22 May 2023
    Fix: WebClient. Digest Authentication could set VERB property too early.
    Fix: WebClient: Defaults caroot.pem file to Exe folder if path not specified.
    Fix: Webclient : ResetPage : Call ThisPage.Start instead of ThisPage.Free
    Add: Email: handle embedded graphics that are of the form src="data:

    Fix: In some cases, when returning from a popup-form, after insert, the inserted record was not selected.
    Fix: Better handling of blank parameters in SetDomains, CreateButton, _DivHeader, _DivFooter
  • 12.59 - 5 May 2023
    Requires StringTheory 3.56 or later
    Fix: Setting Host Values, or Session Values via WebSocket connections could truncate data if the value contained " characters.
  • 12.58 - 25 April 2023
    Change: New HERE API server did not like trailing & in URL

  • 12.57 - 11 April 2023
    Fix: NetAcme: Call to Init after server pointer set.

  • 12.56 - 7 April 2023
    Email: EmailReceive: Tweak to cater for email servers that reply + instead of just +OK.
    Active Directory: TXA's updated. ActiveDirectory_UserInGroup returns net:AdminSettingsBad if there's a problem with the LDAP parameters. Other possible return values are net:UserInInGroup and net:UserNotInGroup.

    IMPORTANT UPDATE: ACME Client (aka LetsEncrypt Client) could fail if Finalize returned "processing".
    Add: Start, TimerOn, TimerOff methods for NetAcme object.
    Add: togglePasswordField(id) function to netweb.js
    Add: NetWebServerMethod: Apility to set prefixes for XML/JSON independently
    Fix: Prevent Popup Form from trying to Upload Files when form cancelled.
    Fix: Plan Headers column number could be 0.
    Fix: _jsok; respect dont for Ampersand encoded.

  • 12.55 - 13 February 2023
    OpenSSL updated to version (1.1.1t)

    Email: Add: pToken and pUserDataString properties to EmailParametersGroup.
    Email Change: pOAuth property is deprecated - use pToken property instead. (Easier to use when starting a new thread.)
    Email: Change: SendEmailControls template. OAuthToken field entered. Defaults to pEmail.pToken.

    Add: Support for Forms (as wizards) to be nested inside a form (as wizard).
    Add: Embed points, before GET and POST displayed on screen
    Add: Global CSS option for Text fields.
    Fix: WebServer._utfdecode had a bug in the decoder.
    Fix: CreateImage method did not detect jpegs in blobs correctly.
    Fix: BLOB fields on Forms could not be set to "required".
    Fix: CreateMedia method did not use pExtra parameter

  • 12.54 - 10 January 2023
    Fix: NetEmailReceive - was marking the port as closed prematurely.

    Fix: Menus calling forms in Change mode could end up calling the form in Copy mode (and vice versa).

  • 12.53 - 29 December 2022
    Fix: Menu in Mobile mode did not stay open when the hamburger icon was clicked.
    Fix: SetEntryWidth

  • 12.52 - 9 December 2022
    NetSimple / NetEmail: Fix: GPF added in 12.51

    Fix: childupdated event didn't always generate code in Browse.

  • 12.51 - 7 December 2022
    NetSimple: Add Free method.
    WebClient: Start and Free methods added to NetWebHttp class.
    WebClient: Start, Free and ClearProxy methods added to WebClient class.

    Add: embed after call to SaveFieldInRecord
    Change: Logout and Form Close buttons can work without being in a <form>
    Change: Updating parent browse (whole browse)
    Update: jQueryUI version updated from 1.12.1 to 1.13.2 (tweaked)
    Fix: Possible template error - unknown variable %NetRefreshWebServer
    Fix: SetEntryWidth method merges into Style attribute if it already exists.
    Fix: Custom browse options saved and restored.
    Refactor: CreateMenuItem method, to allow for longer answer string.

  • 12.50 - 28 November 2022
    Email: Allow password field to be blank when logging in via token.

    Clicking on "now Records found" in an empty browse, generated a row-selected event.
    Update: OpenSSL DLL's updated to (1.1.1s). Recommended update.
    Update: Security update to NetAcme support.
    Update: Updated CAROOT.PEM file (Certificate data from Mozilla as of: Tue Oct 11 03:12:05 2022 GMT)
    Update: NetAcme class updated to match NT12.50

  • 12.49 - 21 November 2022
    Add: Option to suppress <form> tag if AutoSave on the form is on.
    Change: Naked radio and naked checkboxes now visually different if disabled.
    Fix: ParentSeparator was not used in parent/children context
    Internal: Browse AlertParent routine now makes use of AlertParent method.

  • 12.48 - 9 November 2022
    IMPORTANT : If using xFiles for ServiceMethods, requires xFiles 4.05 (or later).
    This build is not compatible with xFiles 3. There may be a future build that is, but at this time I can't be sure.

    LDAP: Group membership test could fail if SAMAccount and UPN were different for the user. (fix courtesy of Sean Hennessy)

    Add: Client-Side session manager communicates between tabs.
    Add: NetWebServiceMethod: More support for xFilesTree class.
    Add: ColorPicker now works on single click on color block.
    Change: Template: NetWebYear: Move Generated CSS to its own tab.
    Change: Various minor template cosmetic updates
    Fix: Multiple-select drop boxes on forms did not allow multi-select. Reverted to native HTML multi-select list control.
    Fix: Remove template enable setting Autocomplete setting and value.
    Fix: Insert in Place refresh

  • 12.47 - 10 October 2022
    IMPORTANT : If using xFiles for ServiceMethods, requires xFiles 3.27 or 4.05 (or later).

    Add: Support for InitVector parameter to EncryptString and DecryptString methods.
    Add: OAuthLogin and UploadToCloud procedures to Global Extension.
    Add: WebClient: SetValue, supports Net:Base64 option
    Add: (WIP): token property to NetEmail, and AuthToken to NetEmailSend. XOAUTH2 Authentication support.
    Add: Encryption screen to NetDemo program
    Fix: WebClient: SOAPAction property cleared on call to Start().
    Fix: NetMakeHash: Did not return correct value when using net:CALG_NOHASH

    Wizard: Add Locator options to NetWebBrowse (and general) wizard.
    Add: NetWebServiceMethod: Option to call OpenFiles and CloseFiles (default is on).
    Add: NetWebServiceMethod: Add NewPointer method embed points to built-in JSON object
    Change: NetWebService Method. compatible with xFiles 3 and xFiles 4. (xFiles 3 must be on 3.27 or later, xFiles 4 on 4.05 or later.)
    Change: Defaults to Popup Open and Close Animations (for new apps)
    Change: NetWebBrowse template options - fields move to their own tab.
    Change: SetHostValue, GroupToSessionQueue, SessionQueueToGroup tweaked to support extended attributes (by removing them).
    Fix: ParentProc value had separator removed with PlainText call.

  • 12.46 - 1 September 2022
    Add: NetWebClient: If blank name passed to SetValue(name,group) then group fields are added as-is, without a prefix.
    Add: WebClient: GetCookie method.
    Change: NetWebClient: SetValue(name,group) - anything after and including the | symbol in the external name is removed.
    Change: NetWebClient: Default UserAgent header changed from Firefox 3.6 to NetTalk nn.nn

    Add: Clarion to Syntax and Theme template options for ACE editor.
    Change: Small improvement to Web API docs (Date and Time parameters can be inferred from the picture.)
    Fix: GetHeaderField does not require header to end in :
  • 12.45 - 5 August 2022
    Fix: Email: MessageId could end in >>
    Add: webmanifest file extension to GetContentType

    Change: ASLR and DET turned on for CLANET.DLL when build using versions of Clarion that support that.
    Change: Support for WatchSessionValue turned back on.
    Fix: JsonList : regression in refactor of Buildrow
    Fix: Critical section of iSessions, and WebServer could overlap.
    Remove: WebPage, Advanced Tab, <HTML Manifest> option is obsolete.

  • 12.44 - July 15, 2022
    Fix: NetWebServiceMethod: Could generate compile errors in some apps, in OpenFiles routines.

  • 12.43 - July 14, 2022
    Add: HandleOptionsHeader method - for embedding custom headers to be used in Handle Options replies.
    Fix: AutoTab wasn't working correctly.
    Fix: Regression in translate method.  (Fix: Translate method can take strings > 16k.)
    Fix: In NetWebServiceMethod, Generate Open/Close routines was never called
    Fix: NetWebServiceMethod could generate DISPOSE code in FreeQueue:MethodTable incorrectly.
    Mostly Fixed: SetPopupDialogHeading can now contain ' or " characters (but not both.)
    Removed: Template options to Generate Open/Close Routines. Always generated now.

  • 12.42 - July 6, 2022
    Add: GetExeFolder to _Netall class. Available from all objects. Better than using PATH for locating things.
    Add: pUserId and pOAuth to Email ParametersGroup
    Change: Default location for CaRoot.Pem is Exe Folder not "current folder".
    Change: netOauth; allow callback URLS which include sub-folders.

    Add: StoreDataAs: Simplified Chinese option added.
    Add: StoreDataAs: Custom option added.
    Add: Save File to Blob option added to Form; FormField type WebCam
    Add: More embed points to routines in Browse
    Add: Version of SetValue that takes a StringTheory object
    Add: HandleOptions sets AccessControlMaxAge to 24 hours.
    Change: Browse template options, Nav Button Position moved to Options tab.
    Change: Call Form only if Logged In, moved to Security tab.
    Change: Removed "certificates" from list of text not allowed in a URL
    Change: CreateImage method can now take a filename, or raw png/jpg data.
    Change: NetAcme notes missing CaRoot.Pem, and adds that to the log
    Fix: When displaying an Image type on a form, with no text.
    Fix: Signature Clear button if no Icon or Text specified.
    Fix: Wizard Tab type, if Save/Cancel button suppressed.
    Fix: For Procedure field types, IsInvalid was using the procedure name, not the use equate.
    Fix: NetWebServiceMethod: For outgoing Json, respect StoreDataAs setting.
    Fix: Translate method can take strings > 16k.
    Fix: Call to SetSessionLoggedIn did not respect self.SessionCookieSameSite.

  • 12.41 - May 14, 2022
    NetLdap: Fix: Set ParseAttributes filter to "Set of" not "set".

    Add: NetWebServiceMethod, AllowList option for Views.
    Change: WebServer procedure: Default HTML Editor script now defaults to none for new apps.
    Change: UtfToAscii and AsciiToUtf methods now allow any StringTheory CodePage equate to be used in
    Fix: GenericPageFooterProc was not bring used correctly.
    Fix: NetWebServiceMethod: Incoming Queue is now empty if no record specified.
    Fix: NetWebServiceMethod, Example fields CSS more consistent.
    Fix: In the absence of a service being set, Docs did not include examples.
    Wizard: tidied up use of % and %ServerOptionsTab
    Wizard: Added Allow records List to Service Method initial options.d
    Wizard: Updated to use the new PageHeaderProc, and PageFooterProc settings.

  • 12.40 - May 2, 2022
    Add: OAuthParametersGroup: Added pLoginHint and pDomainHint fields
    Add: Version property added to all classes. Returns current NetTalk version.
    Add: NetWebClient: Add support for SetValue if first parameter is blank.
    Change: UPD option equates (SO_DEBUG etc) prefixed with Net: to avoid duplicate warnings with SV Winsock.
    Change: NetMaps:  AutoComplete unzip updated (courtesy of John Hickey)
    Fix: NetWebClient, cleared self.verb AFTER PageReceived. Should do it before PageReceived.
    Refactor: NetWebClient, MakePostString

    Add: Clarion Language syntax coloring to ACE Editor, courtesy of Mark Sarson.
    Add: Numeric On-Screen-Keyboard type.
    Add: Inline option to On-Screen-Keyboard.  Documented use of AutoHide, and conditions for that feature.
    Add: Icon option to Drop fields so drop-down-icon can be customized.
    Change: WebServer template, SessionTimeout, Charset and StoreData As setting moved from Advanced tab to General tab.
    Change: PageHeaderTab, and PageFooterTag settings in WebServer template, changed to Procedures, not tags, moved to Advanced tab.
    Change: NetWebForm: TabStyle setting moved to Fields tab.
    Fix: NetWebForm: HTML Editor did not notice if the form was called in ViewRecord action.
    Fix: EIP checkboxes in browses, if no icons were set, caused JavaScript error in console.
    Fix: EIP checkboxes in browses, if the true and false icons were the same, the caret-1-n icon was displayed.
    Fix: When doing an Insert via a popup browse then the browse did not locate to the new record.
    Fix: ACE field was returning extra request.
    Fix: Fix performance measuring bug if request/response spans midnight
    Tweak: StyleWidth method optimized.

  • 12.39 - 5 April 2022
    OpenSSL binaries updated to version 1.1.1n

    Fix: Maps: GetLocation method did not URLEncode search text.

    Refactor: InitTinyMCE method renamed (from _InitTinyMce) and refactored to work like InitRedactor and InitCkEditor and InitAceEditorAdd: CSS options for Media form field type. IMPORTANT : Check WebHandler for orphaned Embeds if using TinyMCE.
    Add: AllowAutoComplete checkbox to browse EIP options.
    Add: NetWebReportGeneric extension template. Use in reports with an unsupported PDF engine.
    Add: some more embed points to NetWebServiceMethod
    Change: All HTML editors now send Immediate Validation when the user tabs off the field (whether there were any changes or not.)
    Change: Formatted template lists narrowed to work better on Clarion 10 and earlier skinny windows.
    Change: Prompt column added to Fields list in template.
    Change: autocomplete="off" attribute generated, not random value.
    Fix: File Upload field type suppressed if form is in ViewOnly mode.
    Fix: JSON List did not update text area unless last action was EIP
    Fix: netweb.js FieldValue generated JavaScript error if called on a <div>
    Fix: Disabling the Insert button on a browse applied to inline, not above/below buttons.

  • 12.38 - 17 March 2022
    WebClient: Added variations of SetValue to take a StringTheory object, or *String for performance.
    WebClient: Added various flavors to pOptions parameter. (net:AsText, net:AsFile, net:NoUrlEncoded

    WebSockets: Add close method to JavaScript
    WebSockets: Allow websockets to receive non-JSON data
    WebSockets: Allow to send JavaScript objects
    WebSockets: Allow onOpen and onMessage functions to be null.
    Add: SendToSocket, ReplyToSocket methods
    Add: WebSocket opening and closing connections added to WebLog
    Add: NetWebForm, JSONList form field, now has ability to set truevalue and falsevalue
    Add: Ability of widgets to stop widget recreation using _dontrefreshvalue_
    Change: Some tab types, if no header exists, don't generate blank header. (Carousel, Rounded, Plain)
    Change: NetAcme class treats .local,.intranet,.internal,.private,.corp,.home, .lan and .test tld's, and any direct IP address,  as "local domains".
    Cosmetic: Improvements to Wizard. Support for OddJob removed from wizard.
    Fix: WebCam - TakePhoto button did not display photo immediately in Display field.
    Fix: WebCam - When taking multiple photos, the first photo was resent.
    Fix: Auto-lookup on Insert.
    Fix: Graceful Close button caused server to hang when compiled under build 11.1.13768 or later

  • 12.37 - 24 February 2022
    Add: when validating a form with subforms, validation now cascades down to the subforms.
    Fix: when a form was inside a form, Formstate referred to the inner, not outer form
    Add: Doc for "Old Clarion". In Clarion 8, 9 and 9.1 you'll get an "Invalid Use of Private Data" message.

  • 12.36 - 23 February 2022
    Add: "Refresh all fields when Tab refreshed".
    Add: Keyboard Form Field type, example in Themer app.
    Add: CSS added to YouTube form field type.
    Add: Security option added to Tabs on form.
    Add: NetWebForm: Auto Save in Change Mode
    Add: Insert option for Browses: "Insert in Place"
    Add: Embed to NetWebServiceMethod for custom login checks
    Change: Default Browse Layout Default method changed to Grid (new apps only).
    Change: _LoadRecord method renamed to LoadRecord
    Fix: AddFile method call changed from Insert to TryInsert
    Fix: PrimeFile calls tryInsert if the table does not have any AutoInc keys and ForceWrite is true
    Fix: Validating Radio fields did not set all validation fields.
    Fix: Auto-incrementing forms did not set %Procedure_CurrentAction
    Fix: Child updating Row, if order field changed then whole browse refresh is required.
    Refactor: Button Onclick code

  • 12.35 - 24 January 2022
    FTP: Implemented support for FEAT feature detection, and then using MLSD in place of LIST.
    OAuth: Added Nonce to GetAuthorizationURL requests.

    Regression Fix: Missing > from Redirect call in baby web server. (Important)
    Fix: Combine method removes colons in class names.
    Fix: vTip would open even if the tip was blank.
    Fix: Default tooltip "Click here to sort by" remained even if the column was set to "No Sorting".

  • 12.34 - 11 January 2022
    LDAP: Renamed NetLDAP:GetDistinguishedName to NetLDAP:GetDistinguishedNameForGroup
    LDAP: Added GetUserActive method
    LDAP: Added net:UserNotFound equate
    LDAP: Added pDontValidatePassword to LDAPParametersGroup
    LDAP: Added AccountExpires, LockoutTime, UserAccountControl properties to object.
    LDAP: Added ValidateUser method that can take an LDAPParmetersGroup as a parameter.
    LDAP: Added GetUserActive method.
    WebClient: Refactor DIGEST authentication to allow for methods other than GET.
    Email: Added support for embedded files using file:// prefix.

    Add: HTML Editor as possible EIP on browses
    Change: Redirect packet from baby web server expanded to include content-length and connection headers.
    Fix: Add support for non-latin characters in filenames (like images etc.)
    Fix: Wizard treated this.options.minHeight as boolean, not value.
    Fix: Drop options from Table got translated even if option was off.
    Themes: Aristo updated to new theme framework.

  • 12.33 - 21 December 2021
    Update: jQuery updated to 3.60. and jQuery UI to 1.13.0
    Fix: Checkbox buttons as EIP on browses did not cycle to the "off" icon, but instead used icon-blank.
    Fix: &apos; could appear in browse text.
    Fix: Default Wizard pointOfNoReturn was set to 1.
    Fix: StoreMem routine worked different for Memory forms, and Table Forms.
    Fix: Missing calls to p_web.NoColon meant that colons in equates for some field types caused errors (especially with web sockets).

  • 12.32 - 17 December 2021
    Maps: Change: Code on event NewSelection improved - will now use Lat/Long if it exists, Address otherwise.
    Maps: Legacy: Fix: didn't refresh map on Browse NewSelection
    Maps: Fix: If zoom field was not set wrong GetMap was called.

    Fix: Regression: Line missing from jquery.nt-form.js
    Fix: Grid mode forms did not span rows of columns correct.
    Fix: SetAttribute method did not quote when splitting.

  • 12.31 - 16 December 2021
    Add: If user is logged in, then Session countdown shows on home page.
    Add: pointOfNoReturn option to Wizard widget
    Add: some more template lists converted to formatted lists.
    Change: Fields list on form moved into tabs to reduce height.
    Change: If File upload field is excluded or readonly then SaveFile:: routine is not called.
    Change: ContentSecurityPolicy header string extended from 256 to 1024 bytes long.
    Fix: Other buttons on a form did not set _parentProc_ parameter.
    Fix: Wizard caused JavaScript error thanks to missing break.
    Fix: Height calculation of wizards was inconsistent between table mode and grid mode.

  • 12.30 - 13 December 2021
    Add: pUserData field to EmailParametersGroup, FTPParametersGroup, SMSParametersGroup, CloudParametersGroup and OAuthParametersGroup
    Add: MaybeEncodeString calls to email attachment names.

    Fix: DropLists did not work well with local variables, and initial values etc.

  • 12.29 - 30 November 2021
    Add: Option to specify browse column type when exporting to Excel.
    Add: Option to Calendar "Allow Zoom". Allows zoom functionality to be disabled.
    Update: Some inline lists in the template formatted (courtesy of Alejandro Elias and John Hickey)
    Update: Small tweaks to calendar and menu css to make them more responsive.
    Fix: Time fields on form could cause popup forms to not display
    CSS: Tweak to Carousel Width
    Themes: UI-Darkness, Whales, Smoothness updated to new theme framework.

  • 12.28 - 29 November 2021
    Add: Breadcrumbs form field type.
    Add: Allow Custom Value not in Lookup Table to Auto-Complete formfield options.
    Add: Allow xHTML option in (custom) browse totals.
    Change: Some default Calendar Styles. Toggle the "reset to defaults" on and off on the WebServer window.
    Calendar: Content was not displaying when in zoomed in mode.
    Calendar: Switched calendar layout CSS to Grid.
    Fix: Scrolling in calendar was broken
    Fix: Next button in wizard could sometimes fail
    Themes: All themes updated to support Calendar and Planner procedures.
    Themes: MetroOrange and MetroBlue updated to new theme framework

  • 12.27 - 24 November 2021
    FTP: Added property boolean Ignore426 for use with vsftp server over TLS.
    Add: Embeds around NetAuto SendShutdown call
    Add: WebClient: Options method.
    Change: WebClient forces BasicAuthentication Base64Encode to be NoWrap.
    Change: NetDriveGoogle class updated to force netOAuth:UseLocalBrowser

    Add: SessionLocation property. Can be set to a combination of net:incookie, net:InPostData, net:InUrl to limit allowed sessionid's
    Add: "Origin" to default "AccessControlAllowHeaders".
    Add: If URL contains /appbroker/exec/ then server serves default page for the site.
    Add: Step attribute to Time fields.
    Change: when server is busy it returns a 503, not a 500 response
    Change: MetaHeaders property increased in size from 2k to 8k
    Fix: embed code in NetWebForm, Set jQuery TaskPanel Options was being duplicated.
    Fix: Time fields on form were not setting picture correctly.
    Fix: NetWebServiceMethod: docs: some formatting of return fields was not accurate.
    Fix: NetAcme Class must not set -config or -extfile when doing MakePFX.
    Fix: NetWebServiceMethod: docs: some fields were being uppercased.

  • 12.26 - 16 September 2021
    Fix: Wizard / Breadcrumbs - didn't like Next button after breadcrumb selection.
    Fix: When opening date picker, current-selected-day did not have a theme set
    Fix: Priority of ParentCall generation of WebHandler Authenticate method.
    Fix: loc:VorderNumber was not always set before calls to SetVorder routine.
    Fix: External procedures not allowed for in CanCallParms
    Update: SignaturePad.Js updated from version 2.5.0 to 2.5.2
    Theme: Bottle, Redmond, Sunny themes updated. Some visual improvements, and converted to new theme system.

  • 12.25 - 31 August 2021 (beta)
    Fix: In NetWebBrowse ThisView is not always null on procedure entry. (Affects XML Export).

  • 12.24 - 30 August 2021 (beta)
    Updated OpenSSL to version

    Add: addMarkers to route method added to maps JavaScript courtesy of Alberto Michelis
    Add: Wizard sets nt-left on footer copyright message.
    Update: Description in Store-As field
    Fix: Validation on Radio fields which are conditionally read-only
    Fix: UtfToAscii uses Windows-1252 instead of ISO 8859-1
  • 12.23 - 18 August 2021 (beta)
    Use Testing Server expression added as template option to local maps object.

    Add: Support for Secwin 7.18 (bubbling across multiple DLL's)
    Fix: Syntax error in generated code - ntMap(addMarkersToCluster)

  • 12.22 - 17 August 2021 (beta)
    Use Testing Server expression added as template option to local maps object.

    Add: access-yes and access-no icons.
    Add: Resource Version template option.
    Add: Some auto-checking for required Secwin extensions in WebServer and WebHandler  when Secwin support is ticked on.
    Add: Some new embed points.
    Change: Access control icons are colored red and green.
    Change: Parameters passed to widget methods don't need double quotes.
    Fix: WSDL Generation used External Name
    Fix: WSDL did not like blobs.
    Fix: Combined mode with Tree scripts was not correct.
    Fix: Tree graphics were not updated in \web\images folder
    Fix: When in combined mode, tree graphics used wrong \images folder.
    Fix: Bubbling support for small Delete button used wrong button name.
    Fix: Maps Home setting.
    Fix: Set &View in Validate:: routines in browse.
    Fix: Read-Only text fields, which contain plain text, stays in text-box, not Display field.

    Desktop program: Sync Client: Add template options to Include and Exclude tables.
  • 12.21 - 29 June (beta) - Internal Experimental Build
    All: Critical Section in DLL and Classes refactored.

  • 12.20 - 24 June 2021 (beta)
    NetSimple: More packet types sent to .Process method. NET:SimpleSocketClosedPacket1, NET:SimpleSocketClosedPacket2, NET:SimpleAsyncOpenFailed, NET:SimpleNoConnection
    NetMaps: New properties, InfoDescriptionWrapAt, InfoDescriptionWrapKeepBreaks
    NetOAuth: Correct case for ChallengeMethod (S256)
    NetOAuth: S256 CodeVersifier Base64 encoded, with no wrapping.

    Add: setTabHeadingIcon and setTabHeadingText method to javascript nt-form widget.
    Add: Some convenience methods to the ntBrowse and ntForm widgets.
    Add: Icon/Images for Tabs supported for Accordion, Taskpanel
    Change: Tab name text placed inside div.
    Change: Browse, ThisView changed to &View (pointing to View:Primary). Opens the door to multiple view structures per browse.
    Change: NetWebServiceMethod: If MethodReturnName = '' and MethodReturnType = JSON, then MethodReturnName is not defaulted.
    Change: muted, and playsinline attribute added to CreateWebcam
    Fix: Wizard style form. If a hidden tab is active, then the next available tab is displayed.
    Fix: Regression - File Upload did not like it if a drop-zone was _not_ set.
    Fix: NetWebService, SORT attribute removed from Methods list.
    Fix: NetWebService, if XML not supported then WSDL not generated for docs.
    Fix: Menu - Alone menus, text in a Div.
    Docs: Added docs for ntForm widget methods, ntBrowse widget methods, tWiz widget methods

  • 12.19 - 1 June 2021 (beta)
    Add: Drop HTML Element setting to File Upload field type (defaults to whole page)
    Add: ntfileupload JavaScript support for setting the dropZone.
    Add: Locator "table" uses same layout as Browse (ie Table / Div)
    Fix: Highlighting selected record when using position locators was broken
    Fix: In GRID mode, and browses "backfilling" the backfill would be at the bottom not the top.
    Fix: Added &apos; to _jsok.
    Fix: SetPopupDialogHeading routes heading through Translate method
    Fix: Calling p_web.ntform('showtab',x) was not working for jQuery UI tabs.
    Fix: JavaScript: FormatDate for clarion date values (ie < 100000) did not take local time into account.
    Fix: Multi-Site Host example updated to version 12.1. Fixes a problem where it would not start as a service.

  • 12.18 - 25 May 2021 (beta)
    First build for Clarion 11.1

    LDAP: Added UserError property to give more information on why a login may have failed. Re-import of ActiveDirectory_ValidateUser is recommended.
    Fix: NetWholePacket.CheckForHole was using .SLICE when it should have been using .SUB

    Fix: made Fields list on Form shorter.
    Fix: Breadcrumbs take not-included tabs into account.
    Fix: If browse was set as Single-Click-Select and the user double-clicked, then two POST requests were made.
    Fix: Added support for html letter entities to _jsok
    Themesupdated: Material17, Seven

  • 12.17 - 28 April 2021 (beta)
    Add: New icons; contract, expand, group, group-yes, group-no, default-es, default-no
    Add: Menu option: Must be Logged Out
    Change: Tree field type converted to using built-in icons
    Change: Memory forms call OpenFiles when net:web:generate
    Example: Secwin (51) example updated to support Secwin 7 (Secwin 7.11 or later)

  • 12.16 - 26 April 2021 (beta)
    Fix: Regression: Server was looking for client-side certificates.

  • 12.15 - 23 April 2021 (beta)
    Fix: NetEncryptStringAES and NetEncryptString had incorrect prototype in

    Add: Template setting for Form Password fields, "Prevent Browser Password Autocomplete".

    Fix: Two global JavaScript embeds had the same description

  • 12.14 - 20 April 2021 (beta)
    Add: Tab Heading Item CSS template option
    Add: NetTalk version added to Caption of WebServer window.
    Add: NetWebServiceMethod:  |Stringtheory added to name attribute for memos and blobs.
    Change: Setting Dont options to true in server removed.
    Change: ?c= parameter changed to nettalk version, not 1. Should improve cache refreshes in browsers.
    Fix: NetWebServiceMethod: MaxPrefixLengthInXML set, and MaxPrefixLengthInJSON for Table parameters.
    Fix:  CanCall was putting quotes around the levels.
    Fix: Single-Click select on lookup in Page mode did not work.

  • 12.13 - 8 April 2021 (beta)
    Change: netwww - default TLSDon'tVerifies changed to false.
    Change: netmaps, netacme, netDrive (OneDrive) - DontVerify removed.
    Internal: , Net:SimpleSSLCertificateOptionsType Group, Type added HostPassedOk
    Internal: netsimp.clw HostPassedOk defaults to 0, verifyCertificate tests HostPassedOk

    Add: Blob support to browses and Browse SendTo
    Add: Blobs (87) example
    Add: p_web.SetSessionTimeout, p_web.GetSessionTimeout methods
    Fix: CKEditor fields on popup forms did not save
    Fix: New themes: Footer did not stay at the bottom.
    Fix: Form sets with width to 100% if no default, and no specific, width set.
    Fix: Browse: Last on Line implies Last in Cell.
    Fix: Span columns in browse for Grid layout.
    Wizard: Reduced template height to fit on Nx768 monitors
    Wizard: Sets default form width to 100% or 95%

    NetSync: Called BeforeUpdateFileRecord when meant to AfterUpdateFileRecord.

  • 12.12 - 29 March 2021 (beta)
    Updated: OpenSSL version updated to 1.1.1k ( - This update is strongly recommended.

    Maps: Support for color:none on InfoBackgroundColor property.

    Add: setTimeOut method to client-side session manager widget
    Add: Embed to end of SetPics routine
    Add: _jsok method for Blobs.
    Change: updated openssl-self.cnf to avoid ERR_SSL_KEY_USAGE_INCOMPATIBLE problem in Chrome with self-signed certificates
    Change: self-signed certificates expire after 365 days, not 93 days.
    Example: File Upload (26) example form changed to show Card layout.
    Fix: File lists in wizard shortened for people with small laptop screens
    Fix: Lookup buttons in browses could be oversized.
    Fix: CRLF property was too short.
    Refactor: _UnEscape method to use StringTheory (faster, especially for large HTML Editor fields).
    Refactor: MakeFilter method to use StringTheory for unlimited length strings. (maxparts increased from 10 to 100)
  • 12.11 - 23 March 2021 (beta)

    : Added support for PKCE flow
    NetOAuth: Support for External Browser (same machine) and External Browser (remote machine). (Re import of OAuthLogin window required)
    NetOAuth: Support for token_access_type (courtesy of Rick Martin)
    NetOAuth: Support for Dropbox short-lived tokens (long-lived token support on Dropbox will expire mid 2021). (courtesy of Rick Martin)
    NotOAuth: Support for tokens that reply with expires_in_sec (like Zoho) (courtesy of Rick Martin)
    NetDrive: Added support for Dropbox Refresh Tokens (courtesy of Rick Martin)
    NetWebClient: Size of Authorization and ProxyAuthorization properties changed to net:oAuthSize
    NetSimple: Added template options for NetSimple Server object
    Global Template: Advanced tab: NetAuto: Options to set MaxInstances and Base Ports
    Global Template: Advanced Tab: Removed: Settings for Clarionet

  • 12.10 -   15 March 2021 (beta)
    (Note see NetTalk 11 to NetTalk 12 - additional major items mentioned there.)

    Add: Embed in WebHandler _SendFile after Case Statement.
    Change: Standard button classes added to Signature-Clear button, and File upload buttons.
    Change: Carousel does better when width and height are not entered.
    Change: Client-Side Session Manager changed End Session button from Cancel to Delete button classes.
    Change: DDM - Down - takes menu radius into account when positioning.
    Change: YouTube control adds mute=1 to AutoPlay option (if not there, the video will not play).
    Change: YouTube control adds playlist to Loop option. (if not there, won't loop).
    Update: Themer Example updated with new tabs Site, and Dialog. Also default button on buttons tab.
    Fix: Wizard - %IncludeSessionManager
    Themes: More small tweaks to themes: Palmtree, Base, Ui-Lightness, Shoestrap1/2/3
    Themes: New theme : Morris
    Internal: NetWeb.js : Add getPixels function.

  • 12.09 -  23 February 2021 (beta)
    (Note see NetTalk 11 to NetTalk 12 - additional major items mentioned there.)

    Add: Import SendEmail (web) button to global procedures tab
    Add: nt-button-with-icon and nt-button-without-icon css classes
    Add: defer attribute to script files
    Change: Default value for new forms, Cancel, Delete buttons, "Yes" text.
    Fix; NetAcme class specifies -config setting to all calls to OpenSSL.exe
    Fix: JsonList string input fields were not full width
    Fix: JsonList Insert added to all JsonLists if there were multiple on a form.
    Fix: Signature fields did not have correct height
    Fix: Action was not set in all cases on menu items (where action was specified in the template settings)
    Themes: More small tweaks to themes: Palmtree, Base, Ui-Lightness, Shoestrap1/2/3

  • 12.08 -  15 February 2021 (beta)
    (Note see NetTalk 11 to NetTalk 12 - additional major items mentioned there.)
    jFiles version recommendation increased to build 2.20

    Add: Server apps using Secwin have to set a checkbox on the Global Extension, WebApps tab
    Add: Template settings for JsonList form-field-type
    Add: New buttons: SmallMoveUp and SmallMoveDown
    Add: Form Field Priming Tab supports BLOB fields.
    Add: Sync service methods force Prefix OFF for VIEW returns
    Fix: RowStarted not cleared in StartRowHTML

    Fix: Regression 12.07, InsertFileRecord / UpdatefileRecord removed. Replaced with BeforeInsertFileRecord, AfterInsertFileRecord, BeforeUpdateFileRecord, AfterUpdateFileRecord
    Fix: nt-idb, return parameters not null in idbCheckRecord and idbCheckTable

  • 12.07 -  3 February 2021 (beta)
    (Note see NetTalk 11 to NetTalk 12 - additional major items mentioned there.)

    Change: Experimental: NetSimple.TakeEvent generates extra events to catch packets lost because of lost events.

    Add: Palmtree theme to Wizard selection. Wizard limited to updated themes.
    Add: ui-lightness theme converted.
    change: JavaScript formatDate function supports alternate separators (.-`_ as per clarion Date Pictures)
    Fix: Header Back Button template setting drop was misaligned.
    Fix: Compile error regression on browses with "include empty rows" set.
    Fix: NetServiceMethod did not format values in Queues.
    Fix: NetWebServiceMethod - did not strip extended attributes in all cases.
    Fix: MultiSiteHost ignores blank domain names.
    Fix: SetDomains method removes blank lines.

    Added InsertFileRecord and UpdateFileRecord methods (embed points) to netsync (Disconnected Desktop Client) class.

  • 12.06 -  28 January 2021 (alpha)
    Change: OAuth: rToken, rCode and rRefreshToken sizes increased.
    Change: Updated NetDriveMicrosoft to allow for alternative file hashes
    Fix: Very long OAuth values saved in INI file correctly.

    Add: Icon: back-w
    Add: support for back button to use and icon.
    Add: \web\icons\nt-icons-grey-777.svg
    Add: Layout Method: Div-Grid
    Add: Default CSS to differentiate button Check and plain Check fields.
    Add: Tab container CSS setting
    Add: Tab Suppress Comments option
    Add: Disable Template to Menu extension.
    Add: GetSessionNames method to iNetSessions interface
    Change: Date Input fields automatically add B to the date picture.
    Moved: Popup defaults moved to their own tab
    Moved: iNetSessions Declaration moved to NetWebSessionsInterface.Inc
    Removed: Height and Width option from DROP controls. (Use CSS instead).
    Removed: Default values from local Window Width and Window Top Offset - global defaults used instead.
    Fix: WizNext and WizPrevious buttons stopped working in some cases.
    Fix: New NetWebForm procedures default prototype uses p_stage not p_action
    Fix: Pictures with quotes could generate compile errors
    Themes Updated: Palmtree, Base, Shoestrap1, ShoeStrap2, ShoeStrap3
    Icons: Arrows tweaked.

  • 12.05 - 15 January 2021 (alpha)
    Add: NetWebSessionsInterface.Inc file
    Add: iNetSessions._GetSessionNames
    Fix: Build installed icon files into \web\fonts (you can delete them from there.)
    Removed: nt-width-100 from EIP browse cells.

    Fix: Custom Values set via the template in the Desktop-Disconnected-Client generated invalid code.

  • 12.04 - 14 January 2021 (alpha)
    Add: New Icon framework.
    Add: Wizard-Tab breadcrumbs now clickable (optional)
    Add: nt-select-height to DROP fields
    Add: WebServerMethod: ValidateRecord and ValidateUpdateRecord embed point methods to XML object.
    Add: option on menus to set "hamburger" icon to use on small screens.
    Add: Debug option to NetWebSource procedures
    Change: Performance tab "Web" and "Debug" buttons renamed to "Deployment" and "Development" respectively.
    Change: Default Icon for "View" button changed from "minus" to "search".
    Change: When building complex div names, the separator between procedures has changed from an underscore (_) to a hyphen (-)
    Remove: All buttons are now "styled" - the template option is removed.
    Fix: Non-ASCII characters did not display correctly on Session Manager buttons.
    Fix: Span Prompt/Value/Comment did not always work in DIV mode
    Fix: loc:displayed was not being applied to all button types
    Fix: jsonList, AutoComplete did not use %gOptions
    Fix: ACE editor on popups fixed.
    Themes: Palmtree, ShoeStrap1 themes refined. ShoeStrap2 theme converted to new theme.
    Themes: Mobile theme removed
    Themes: All "old" style themes updated as per docs.

  • 12.03 - 24 December 2020 (alpha)
    Add: Breadcrumbs on Wizards are now (optionally) clickable.
    Add: WebSocket support to Host.Exe example. (Need to turn it on, on the Scripts tab, if desired)
    Update: Palmtree theme refined. ShoeStrap1 theme converted to new theme.
    Update: Themer app example tweaked.
    Fix: Decimal fields on forms would have incorrect Initial value set in StoreMem routine.
    Fix: Embedded procedures could be blanked after return from another popup.
    Fix: Checkbox values (on forms) could behave badly if not set to traditional true/false values.
    Fix: nt-theme.css was not being added to combined file.
    Fix: HTML Editors did not respect read-only settings.
    Fix: ntWatch did not pass Scope correctly to
  • 12.02 - 11 December 2020 (alpha)
    Add: SetAllHeadersDefault method to NetMaps class

    Includes changes from 11.48
    Add: Set footer height on PageFooterTag procedure
    Add: Condition and JavaScript callback to Watch option on NetWebSource procedures.
    Add: When watching fields on a  form via web sockets, can set specific Host/Session field name.
    Add: new method Save(*String pSessionId) to iNetSessions interface
    Improvement: Support for massively more watched variables over web-sockets.
    Fix: Load/Save Server state was not being called
    Fix: Browse ParentUpdated event was not refreshing browse widget.

  • 12.01 - 17 November 2020 (alpha)
    Includes changes from  11.47

    Remove: NetMD5 function has been removed. Use NetMakeHash instead.

    Add: TaskPanel Tab Type
    Add: client-side session manager widget - template options to follow.
    Add: XML Filename option to Export-button on Browse
    Revert: jQuery version 3.5.1 to 3.4.1
    Fix: Misplaced END in PopulateData for Tree control.

  • 12.00 - 20 October 2020 (alpha)
    See NetTalk 11 to NetTalk 12

Version 11

  • 11.48 - 3 December 2020
    Urgent / Important update to NetAcme class. If you have made a WebServer, using LetsEncrypt certificates, then this update needs to be applied before your certificate expires. (Note: Another update to NetTalk 11 will be coming for other LE changes, but this one is critical in the short term.)

  • 11.47 - 17 November 2020
    NetMaps: Added pSearchTextEncoding property to GetAutoComplete, GetLocation and GetSearch methods.
    NetMaps: Added AntiAlias property for Route lines. On by default, but can be turned off for better performance.
    NetMaps: Internal optimization to reduce number of calls to RefreshExtras
    Email: Support AuthUser and AuthPassword properties that are longer than 60 chars

    Carousel FormField. Better auto-scaling using CSS. (Remove template specified width and height for best results.)

    Tweak to browse-ls (courtesy of Alejandro Elias)

  • 11.46 - 1 Oct 2020
    WebClient: Added ServerNameIndication property. Allows the SNI value in the connection to be set explicitly. Can be useful in some cases where proxy servers are used.
    NetMaps: Extended CommandQueue.URLParameters String to 8K long.
    NetMaps: Added MaxUrlLength parameter - defaults to 8K - warns when a longer parameter is used.
    NetMaps: ClientInit method added. Allows embed code to be added when initializing the WebClients used by the Maps class.
    NetMaps: ThrowError method parses the Json error to get more data from the provider and make a more meaningful error to the user.
    NetMaps: Fix: MakeWayPointsFor optimize could end up with 2 start points.
    NetMaps: Fix: MakeWayPointsforCalc - addresses etc need to be URL encoded.

    Fix: Web Form Prompt Div CSS setting was not used
    Fix: Call to ntAlert passes button text (OK) through translate method.

  • 11.45 - 29 Sept 2020
    Add: ServerIndicationName property to NetSimple Clients. Allows you to override the name used for Server Name Indication (SNI) when connecting over TLS. Not usually used, but can be useful when connecting via a proxy.
    Fix: Removed orphan embeds from NetDrive examples.

    Fix: Multiple signature fields on the same form was not supported.

  • 11.44 - 8 Sept 2020
    Change NetMaps class to use DrawClass instead of Draw to be compatible with Draw version 4.22 (to be compatible with Clarion 11.0.13622)

  • 11.43 - 1 Sept 2020
    Fix: Disable Save Button IF did not work if Save button was Below form.
    Fix: data-true and data-false for checkboxes caused compile error if values were strings
    Fix: Updated call to JFiles SetColumnType to match new prototype there.
    Fix: non-jquery-checkboxes stopped working.

  • 11.42 - 24 Aug 2020
    Change: Handle blank button names
    Change: data-true and data-false generated for form check boxes.
    Fix: In SPA mode, A double-click on a browse could cause a JavaScript error if the browse was not in Select mode.
    Fix: Appending map data from a queue did not generate correctly.
    Fix: AutoComplete attribute on Forms, Date Fields, were not being generated.
    Fix: Custom Text set in the template was not being applied to Browse Close buttons.

    Add: New embed point to database.js (Document Ready)
    Fix: Headers on browses, when in wide-screen mode, could not get generated if empty.

  • 11.41 - 21 July 2020
    DLL: Added new Utility functions, EncryptString, DecryptString, EncryptStringAES, DecryptStringAES
    DLL: Added support for NET:CALG_NOHASH to NetMakeHash
    Encoding and CodePage properties moved up to _NetAll class.
    NetMaps: Added Language property to class. Used to set language property for APIGetRoute.
    NetMaps: Instructions from GetRoute are automatically decoded based on value in self.encoding property.

  • 11.40 - 14 July 2020
    Email: Made image loaded from web case insensitive. And extended support to background: url() settings.
    Maps: Made NetMapCommandQueueType.Waypoints bigger
    Maps: _DrawRoute filters on pId correctly.

    Fix: NetWebBrowse: If the last column in the browse was not marked as "last in cell" then  the header could go weird.
    Refactor: _UnEscape method refactored to use StringTheory. Dramatic speed improvement for large url-endoded strings. (when used with StringTheory 3.27 or later)

    Fix: Settings Key template setting was misnamed.
  • 11.39 - 8 July 2020
    Email: Images loaded from web were being blanked. ie <img src="https://etc">
  • 11.38 - 6 July 2020
    Email: net:StdEmailToSize equate increased from 1K to 4K.
    WebClient: Authorization and Proxy-Authorization properties increased from 2K to 4K
    WebClient: Fix: Domain parameter sanitised.
    NotOAuthClient: access_token and refresh_token properties increased from 2K to 4K
    NetOAuthclient: Fix: access_type used pPrompt parameter not pAccessType parameter

    Add: Custom Autocomplete value added to Form fields
    Add: Set Attachment Name and Content Type when Form Field Progress at 100%
    Add: Validation tab for CheckBoxes with "required" option. (No backsies).
    Add: Value Cell Class CSS option for most Form Field Types
    Add: New embeds to ValidateUpdate routine
    Change: Multiple columns in the same cell suppressed headers in other columns in same cell. Now all headers are included
    Fix: Auto-complete options added to Date Form Field type.
    Fix: Drag-And-Drop file uploads were not working
    Fix: Form Lookups & Drops - If prop:order was a single numeric field it was being UPPERed.
    Fix: Service Method, Required parameters, Error now reports External name not Field name
  • 11.37 - 1 June 2020
    Change: Chrome version 83 changes the ability to an Ajax POST on <form>s that contain a file-upload field.
    Fix: Map Data loop used x without declaring x.
  • 11.36 -21 May 2020
    Add: Procedures tab to Global Extension, for rapid importing of common desktop procedures.
    Add: _NT_  and _NT11_ conditional compile symbols
    Add: Net:WebBearerAuthentication to CreateAuthorizationString method
    Add: CookieJar property, LoadCookies & SaveCookies to NetWebClient.
    Add: NetShowSend and NetShowReceive properties to NetSimple class.
    Remove: _Trace method. Use Trace method instead.

    Add: Popup Text when progress completes.
    Add: More embeds to ValidateRecord routine in form.
    Add: More embeds to ExportToExcel, BrowseRow, Validate::nField routines in browse.
    Add: More embeds to NetWebServiceMethod, GenerateDescription routine.
    Add: NetWebServiceMethod :when creating View, auto populate list of fields for selection.
    Change: Progress Bar CSS prompts tweaked.
    Change: Autocomplete="off" changed to Autocomplete="random"
    Change: Row number in Export to excel incremented, not set to fixed value.
    Change: Random Report names have increased randomness. (now random strings, not numbers)
    Improve: Support for BLOB fields on NetWebForm.
    Fix: Empty browse could break xHTML
    Fix: Packets ending with <13> could break text control on WebServer window.

    Use Prop:name, not TableLabel when constructing prop:SQL in netsync method.
    Bind View fields for better filtering.

  • 11.35 -10 April 2020
    Fix: More-Of-Same-Regression (11.33) : Email: If multiple images with the same tag name were in the email, only the first was included.

  • 11.34 - 8 April 2020
    Fix: Regression (11.33) : Email: If EmbedImages was called multiple times, the embedded graphics would show as attachments.
  • 11.33 - 6 April 2020
    Removed "Missing Ecec.Dll" Debugview message  from the program startup.
    Refactor of NetEmailSend.EmbedImages method to use StringTheory

    Add: Support for HERE's APIKEY authentication added.
    Add: PostWrite routine in Forms. Called before PostInsert, PostUpdate and PostCopy. Good for embedding.
    Add: Data embeds in PostInsert, PostCopy
    Change: If Color-Entry-Field on a form is invisible, then popup attaches to the button, not the top-corner of the screen.
    Fix: If WebServer took a parameter, NOT pServer, then unnecessary code was generated.
    Fix: Legacy apps generate ShortInit code for all objects
    Fix: Redactor editor was missing auti-include for plugins for alignment, fontfamily, fontcolor and fontsize.
    Fix: Server could GPF if not the main app procedure, called, ended and called again
  • 11.32 - 30 March 2020
    NetMaps: Support for HERE's APIKEY authentication added.
    NetMaps: Communication now only uses TLS connections. See Deploying a TLS Client or Server

    s_web not set correctly if the App was Legacy template based.
    new Template option: Lookup on field click
  • 11.31 - 24 March 2020
    NetOAuth: rToken, rTokenSecret, rAuthVerifier fields in oAuthParametersGroup made bigger
    Webclient: support for case-insensitive set-cookie header.
    WebClient: add: Read cookies on redirect response, even if not following the redirect.
    Email: LoadAttachmentFile method added to allow embed override of loading the attachment file.
    Email: Added DoNotSend property (can be set to true in AfterBuildFromParts or AfterBuildFromWhole to suppress actual sending.)
    NetWebSocketClient: If the server was not running at the moment of the first connect, then the object did not automatically reconnect, and could spawn multiple error messages. This is fixed, and the doc updated to be explicit as to expected behaviour.

    Add: Embed point before filter assigned.
    Add: Store as Chinese (Big 5) to store-as list
    Change: Lower, and mixed case HTTP VERB's supported.
    Fix: NetWebServiceMethod. Return Values. Individual fields. Picture not applied in JSON output.
    Fix: Take case in _jsok where &xxxx; is truncated at the end of a string.
    Fix: File upload would not work if picture was set for field.
    Fix: CreateSortHeader did not pass pMethod to BrowseTableCellEnd

    Better check for immediate return in JavaScript.
  • 11.30 - 22 February 2020
    Add: LDAP - Support for Extensible Matches (:= operator) (Requires Active Directory on Window 2003 R2 or later).
    Add: LDAP - New methods - SetAuthUser, SetUser, MessageDone
    Add: new properties in LDAP ParametersGroup
    Change: LDAP: UserInGroup method, parameter list
    Change: Error about missing CARoot.Pem includes full path to file.
    Update: Maps - support for map pins to be '~' and linked into the app.
    Fix: Email - embeds with spaces in their names did not get included in the email correctly.
    Fix: LDAP - did not wait for one message to complete before sending the next. (Some servers don't like this.)

    Add: Text fields on a Form can use a BLOB field.l
    Add: Security options (login required etc) to Report procedures.
    Change: Access-Control-Allow-Origin in HandleOptions.d
    Fix: NetWebServiceMethod - if multiple views returned, Filter was not being cleared between views for xml.
    Fix: NetWebServiceMethod Documentation - fields inside groups and queues would generate the same custom field descriptor as for the group or queue itself.
    Fix: pKey parameter renamed to prevent duplicate identifier warning.
  • 11.29 - 3 February 2020
    Update: Documentation on LDAP, Added section on common filters.
    New equate: NET:StdEmailToSize created (defaults to 1024). Used in EmailParametersGroup.
    Update: EmailParametersGroup makes better use of existing, and new, equates for string lengths.
    Fix: NetWebSocketClientNetWebServer did not wrap values with double quotes in SetHostValue method.

    Add: HTML Tab Index option to form fields.
    Add: "Copy" to list of actions when clicking on Browse Other Button.
    Updated Carousel script (slick.js) to version 1.8.1 (
    Change: Allow-Origin header now supports a space-separated list.
    Fix: Tweaked Carousel script to generate unique id's on cloned elements.
    Fix: suppress Carousel cloned elements from POST when saving a form.
    Tweak: Some Prompts with (Clarion) or (JavaScript) suffixes would not be visible on Clarion10 and earlier because of the narrow template screen. These are now prefixed with C and J as short-hand for older versions of Clarion.
    Missing: The \examples\NetTalk\WebClient folder was missing from the Server Level install.
  • 11.28 - 19 December 2019
    Add: Prompt and AccessType properties to OAuth Group.

    Fix: jcanvas.js was not included in all.js
    Fix: Some form buttons stopped working after doing a cancel.
  • 11.27 - 29 November 2019
    Add: NetWebServiceMethod: Returns: New template option - No Boundary in XML/JSON for Table, View, Queue, Group.
    Fix: Remove jquery.corners.js
    Fix: Remove call to upload in jquery.nt-browse.js
  • 11.26 - 14 November 2019
    Update: jQuery core updated from version 1.12.4 to 3.4.1
    Change: SSLMethod NET:SSLMethodTLS_PCI now specifies TLS 1.2 or higher, not 1.1 or higher.
  • 11.25 - 12 November 2019
    Add: More embeds to Comment routines
    Add: Cookie Attribute, SameSite, defaults to Strict.
    Add: NetWebServiceMethod - supports content type "application/xml"
    Change: loc:Comment made longer to 1024 chars.
    Fix: Conditions on Counting total didn't work.
    Fix: WebServiceMethod, ViewFields, Didn't always format correctly.
  • 11.24 - 29 October 2019
    Add: pEmailImagePath field to EmailParametersGroup
    Add: NetOAuth. Prompt and AccessType parameters to refresh token call.
    Fix: NetOAuth. Preserve RefreshToken where possible.
    Fix: WebSocketClient could slow down timer on window.

    Important Update: Added support for ACME Version 2 protocol. Let's Encrypt has already started deprecating some aspects of the Version 1 protocol, so an update to this NetTalk version, or to NetTalk version 10.40 (if you're still on NetTalk 10) is urgent.

    Add: SetRedactorFileName method to WebHandler to override images names being uploaded in Redactor.
    Change: Report and NetWebSource procedures added to types that don't have to be declared global.
    Fix: Barcode Scanner control did not call Begin in some cases.
    Fix: Tidy up for File Uploading file name code.
    Fix: Setting custom text on Export button resulted in compile error.

    Refactor of some NetSync methods to make overriding and ErrorTrapping easier. (Courtesy of Alejandro)
  • 11.23 - 11 October 2019
    Add: Version number to CLANET.DLL

    Add: Embed point to validateValue routine in form.
    Fix: Loc:filename wasn't being generated for file uploads.
    Fix: Missing comma in custom text for Change Buttons on form
    Fix: Refactor of SSLMethod for server side to support OpenSSL 1.1.1
    Fix: Refactor of Radio buttons (change layout settings to CSS).
    Fix: Unresolved External NetSignToken when compiling in LIB mode

    Add: Name property to relations in database.js
    Change: Relations to Alias in database.js
  • 11.22 - 17 September 2019
    Image in the header now reloads the page if clicked.

    Add: Gradients option to Form-Field-Color Lookup "Live Update" field. (On by default).
    Add: On Scanned (JavaScript) option on Barcode Scanner form field.
    Add: Image type to Browse field.
    Add: NetWebBrowse: ResetBrowseOptions routine.
    Add: <noscript> tag, link rel="icon" and link rel="apple-touch-icon" for page header
    Change: Method list in NetWebService procedure is alphabetically sorted.
    Change: New apps default to DIV mode.
    Change: Reordered some tabs in NetWebServiceMethod Returns
    Change: NetWebServerWorker, FileToSessionQueue, Supports Blobs.
    Change: Create Hyperlink returns nothing if text is blank.
    Fix: s_web was being set too late in INIT method of WebServer resulting in Paths not being set correctly when running under multi-site host.
    Fix: Custom highlight and selected styles would bleed onto other Browses on the page.
    Fix: File Upload fields did not set %FormField correctly.
    Fix: Color Lookup button in DIV mode.
    Fix: Browse Time fields did not have %nFieldEquate:IsInvalid

    Maps: Add ability to move the home marker.
    idb: Add idbGetBy function
    idb: Add outer field to idbSelect options to allow for "outer join" like functionality.
    ntd.getRow function added to get ID of currently selected row
    netweb.js: new function localtime() - returns local date/time in unix millisecond format.
    netweb.js: formatDate function updated to support unix time values. Added support for @D1, @D3, @D4, @D5, @D8, @D9, @D11, @D12, @D13, @D14, @D15, @D16
    netweb.js: formatDate function updated to support unix time values.
    netweb.js: format function returns parameter if parameter is a string.
    netweb.js: format function supports @U pictures.

    Add: Checkbox and Image to supported special form types.
    Add: refresh function to FormLS options
    Fix: Make database.js more tolerant of Settings Table fields not set.
    Fix: Various browse and Form refreshing improvements.

    11.21 - 3 September 2019
    Change: Default values for all button sets now set to 'nt-flex'

    Removed Right-margin from (small) lookup buttons.
    Moved nt-form-value and nt-value setting width:100% into small screen only.
    Added: flex to nt-form-grid-cell for large screens.

    Change: Camera started and stopped when popup form with WebCam field opened and closed.
  • 11.20 - 2 September 2019
    Add: NetMakeHash option
    Fix: NetOAuth could return an incorrect message about "No URL passed to NetOAuth.HandleRedirectURL".

    App Wizard: Output now defaults to Div mode.
    App Wizard: Default Entry Width now set to 100%.
    App Wizard: Browse buttons generated into the same cell.
    App Wizard: Now treats fields of type DATE as a date and TIME as a time. (not just @D and @T pictures.)
    Add: Form Field Type "Time".
    Add: Browse column Type "Time".
    Add: property - set to true if generating the app in disconnected mode.
    Add: Template defaults for map width and height.
    Add: Map source can now be Table, Queue or JavaScript.
    Add: Form buttons - can now override Text for button in template.
    Add: Browse automatically translates value into desc if Validation INLIST Choices exist in the dictionary. Applies to Excel Export as well.
    Add: More Embeds in SetVorder routine.
    Change: CSS: Global Entry-Div-Class changed from nt-value to nt-form-value
    Change: nt-checkbox and nt-radio default CSS added to checkbox and radio fields.
    Change: Form, SaveButtonSet only generated now if previous, next, save, delete, cancel or logout button exists.
    Change: If the last column in a browse is not marked as LastInCell, then the cell now ends automatically.
    Change: NetWebServiceMethod: Parameters: "Fields" tab renamed to "Private".
    Change: NetWebServiceMethod: Returns: Fields to return moved to "Overrides" tab. New Fields tab to select fields to return.
    Fix: Date Lookup in NetWebServiceMethod "try it now".
    Fix: PicLength = allow extra space for hh:mm am
    Fix: Incoming authentication header was not clipped.

    nettalk-grid.css: Still fiddling with Lookup buttons - hopefully got it right now.
    nettalk-grid.css: Locator prompt automatically hidden if screen width < 1024px.
    nettalk-grid.css: Entry fields should default to 100%.
    nettalk-grid.css: nt-embedded procedure only floats left if screen > 1024px wide.
    netweb.css: All common widths set to !important.
    netweb.css: Added nt-header-back-image, nt-comms-off, nt-comms-busy
    nettalkui.css: Added small margin to right of nt-small button.
    nettalkui.css: Added nt-radio width 100 for windows < 640 px wide.

    jquery.nt-form: Calls maps resize.
    jquery.nt-maps: Added options.populate, populate, resize methods
    netweb.js: Added more formatting functions and options.
    jquery.nt-browse: EIP method called for Other buttons.
    jquery.nt-browse-ls: new options, id, showHeadings, proc, headerRowClass, onBrowseOpen
    jquery.nt-browse-ls: click button and click row methods set ParentRowId and load record respectivly.
    jquery.nt-form-ls: Add options.onFormClose, onFormClose.
    jquery.nt-form-ls: Show memory forms that don't have an action set.
    jquery.nt-form-ls: Radio buttons were not working right.
    jquery.nt-dialog: Refresh various regardless if form or browse.
    nt-idb: updated to support database.options
    nt-idb: Add idbCheckRecord, idbClearRecord

    Add: Template setting /styles/site/Sync Off Image
    Add: Global Template, Apps Tab, Purge Deleted Records on Client.
    Add: Global Template, Settings Table, User Guid field, Device ID Key, Last Sync and Sync in Progress Text.
    Add: If in disconnected mode, SyncOffImage included.
    Add: Header Back Button option added to Browses and Forms
    Add: Browse column "Display" setting now exists as Display (Clarion) and Display (JavaScript)
    Add: Browse column "Column Condition" setting now exists as Column Condition (Clarion) and Column Condition (JavaScript)
    Add: Browse CSS, Apps: JavaScript calcClass setting now exists for Cell as well as Content.
    Add: NetWebServiceMethod: option (if a sync procedure) This is the Settings Table
    Add: OnCommsSuccess, everything with CSS class .nt-comms-off is hidden.
    Add: OnCommsError, everything with CSS class .nt-comms-off is shown.
    Change: If in disconnected mode, busy image changed to sync-busy.png
    Breaking Change: in Database.js - all database properties moved from to This will likely break your custom JavaScript, so review custom.js for changes. For example database.version becomes database.options.version. Applies to name, version,error,errorcode,synchost, synctimer, deviceid, user,  password, token, status, syncdate.
    Add: in database.js, database.options.  userguid, purgeclient.
    When Syncing: id="lastsyncdate" is set to Sync Progress Text, Last Sync Date.
    Fix: Unrelated fields in keys could break JavaScript.
  • 11.19 - 8 August 2019
    Add: div, with class "nt-locator-prompt" added around Locator Prompt text.
    Change: Lookup buttons, and DateLookup buttons suppress text if icon is set.
    Fix: EIP size settings on browse checkboxes.
    Fix: Menu's with direct calls to pages, didn't pass Action parameter.
    Fix: Style setting for CreateImage was missing a leading space.
    Fix: AlertParent was setting parentpath if i was 0.
  • 11.18 - 26 July 2019
    Fix: Regression with DoubleDrop menus that call procedures directly.
    Fix: Auto-Locating Description key in lookups could fail.
  • 11.17 - 25 July 2019
    Fix: Webclient: If ProxyServer and ProxyPort properties manually set, then OptionsDontUseSSLOverHTTPProxy setting is applied.

    Add: CreateImage from Blob field method added.
    Change: Set Min Height of Wizard to make each tab contract to its minimum height.
    Fix: File Upload field did not send _parentProc_ with file upload.
    Fix: Css on Column headers was not being set right.
    Fix: Double-Drop Menu - menus of different physical height
    Fix: Double Drop Menu - was staying open when in burger mode, but now visible on top of popups.
    Fix: Date Lookup buttons with Text and Icon were "vertical" not "horizontal".
  • 11.16 -  18 July 2019
    Add: (Client side only) Options for SSLMethod - NET:SSLMethodTLS_MIN1_1, NET:SSLMethodTLS_MIN1_2, NET:SSLMethodTLS_MIN1_3
    Add: More embed points in generated NetTalk Object Declarations.
    Change: Speedup in NetSimpleClient on systems that have very good bandwidth.
    Fix: When a desktop client was set to only use TLS 1.3, then a GPF occurred.
    Fix: Progress Control for Webclient uploads could fail in some cases.
    Fix: Possible "stall" in Webclient if events get lost.

    Add: NetWebForm - Barcode Scanner Form field Type added for scanning barcodes and QR codes.
    Add: WebServer Scripts Tab, options to include support for Barcode and QRCode scanners.
    Add:WebServer Scripts Tab, options to include support for Notifications. (Currently Desktop Only)
    Add: property.
    Add: NetWebServiceMethod - Documentation - Allow Unsafe xHTML in Description option.
    Add: p_web.GetSessionWebSockets method.
    Add: p_web.DisplayNotification method.
    Add: GetSessionValue(name,blob) and SetSessionValue(name,blob) methods.
    Change: NetWebServiceMethod - If Method is Private then code to create documentation is not generated.
    Change: NetWebServiceMethod - Generates length of strings in documentation.
    Wizard: Change: Countdown in footer goes to DefaultPage, not LoginPage, and does an explicit Logout.
    Change: WebServer Log - PUT requests moved from "Get" side to "POST" side.
    Change: Filter out requests with .cgi in the path.
    Improvement: Better error handling in NetAcme to prevent endless retries.
    Improvement: Better handing of Blob fields on a NetWebForm.
    Fix: SqlFilter property was not being set when method returned XML.
    Example: WebCam (79) example updated to include barcode scanning.

    Add: Embed points to NetWebServiceMethods when Syncing.
    Change: Client sets MaxPrefixLengthInJson to prefix length, not 999.
    Improvement: sync Client: uses a Prop:Sql rather than Previous for SQL tables.
    Fix: sync Client, for SQL, update statement fixed.
  • 11.15 - 25 June 2019
    Fix: NetWebClient: did not set busy property to true when connecting to HTTPS site via a Proxy which does a SwitchToSSL.

    Add: New Embed points in NetWebServiceMethod
    Add: If multi-tab support on, then data-tabid attribute added to hyperlinks in CreateHyperLink.
    Change: _nw no longer uses 5 char app prefix, now uses full appname_nw
    Updated: Redactor script updated to version 3.2.0 (from 3.1.4)
    Wizard: Was setting Host Names to LocalHost instead of set:domains
    Fix: DTS=Null (added to NT10.36) was not included in NT11 release.
  • 11.14 - 20 June 2019
    Add: Use Camera option to WebCam form field type.
    Add: Sub menu settings (icon and position) for double drop menu type.
    Add: Sub menu overrides (icon and position) for double drop menu type.
    Fix: Handle case where Dictionary Validation, True and False values in the dict have quotes around them.
    Fix: All.js was not being created. Only all.fat.js and all.js.gz
    Fix: NetWebService: Document Methods template option default value was invalid.
  • 11.13 - 10 June 2019
    Same as 11.12, just a release naming error.
  • 11.12 - 10 June 2019
    Add: Span Columns template option added to form field. Currently "exact" - the value put in here is added to spancols.
    Add: File Upload Field Type, Allow Capture from Local Device, supports USER and BACKGROUND cameras.
    Change: When immediate locating there is a small delay after a keypress to see if there's another keypress.
    Change: Site of loc:extra extended to ExtraStringsize.
    Change: Buttons on a form  trigger server side code if URL exists (but is blank).
    Fix: Form field spanning Rows was not correct.
    Fix: Width of Date field set for EIP in browser
    Fix: Better CSS for various Secwin buttons
    Fix: WSDL ReflectFieldToDoc used local documentation over data pad if it exists
    Fix: Display(button) fields, changed to buttons, lost css template options for prompt and comment
    Fix: Button on form, with no <form> tag, sends an _event_=accepted to server.
  • 11.11 -  23 May 2019
    Add: WebClient: SetValue method which takes a group parameter
    Fix: WebClient: removed trailing & from AuthMD5URI
    Fix: NetMaps: Omitted SETCURSOR statement for Clarion 8.
    Fix: SmsClient uses stringTheory DeformatValue instead of clarion DEFORMAT.

    New: Example Realtime (85)
    Add: Some new embeds
    Add: NetWebServiceMethod - Set ParmListTag to - (a hyphen) to suppress group name from form encoded parameters.
    Change: JavaScript ntPlay function tweaked to create <audio> element.
    Fix: Events cascade better to parents that also have parents.
    Fix: Meta Description moved up into header.

  • 11.10 - 2 May 2019
    Note: Update jFiles to 1.76 or later.

    Digest Authentication: Allow for longer Nonce values.
    Digest Authentication: Change: suppress opaque attribute if blank.
    Digest Authentication: ParseAuthenticateHeader was not parsing correctly.
    NetMaps: Added PostalCode to NetMapAddressQueueType
    NetMaps: Added experimental property "quickmove".

    Add: Automatically refresh browses on forms on gotFocusBack event.
    Add: Generate gotFocusBack on Form/Close and Form/Cancel as well as Form/Save.
  • 11.09 -   25 April 2019
    Add: Support for PlainText OAuth1 authentication string.

    Add: FormField: Progress: Auto Follow Hyperlink when process completes
    Add: Menu: CSS for individual Menus added.
    Add: FormField: Radio: Image: CSS field
    Add: if-small CSS class.
    Fix: FormField: Radio: Image moved into <label> tag.
    Fix: NetWebServiceMethod: SessionID passed in XML was not parsed correctly.

    Add: Support for GotFocusBack to Forms
    Fix: Basic Mobile app was a bit out of date
    Fix: Mobile app forms were not allowing records to be inserted.
  • 11.08 -   16 April 2019
    Change: NetMaps: Add ID, Color, Icon parameters to OptimizeRoute.
    Change: NetLDAP: _split method gets NoRecursion parameter.
    Fix: Maps: %ABCBaseClass template error in Legacy
    Fix: Removed i64 code because not supported in Clarion 8
    Fix: WebClient: Busy property was not always reset correctly.
    Fix: NetMaps: Don't create Region control if already created.
    Fix: NetMaps: If Zoom control is a SPIN support NewSelection event.
    Fix: NetMaps: Update self.LatitudeC and self.LongitudeC in GetMap (bottom, top) method.
    Fix: NetMaps: Legacy support: various omitted parameters being blank.

    Add: NetRefresh support to NetWebServiceMethod
    Add: NetWebForm Field Validation, check Validation IF template setting.
    Add: Various new embeds
    Add: loc:RecordsCount counter added to browse
    Add: NetWebService and NetWebService Method, Documentation tab, Document formats and methods added.
    Add: NetWebServiceMethod, auto documentations, contract examples buttons added.
    Add: CSS Tabs for individual menus and individual menu items.
    Update: WebCam field now uses mediaDevices.GetUserMedia
    Fix: NetWebServiceMethod - Guid / ts / sts / dts fields respect | ReadOnly setting in dict.
    Fix: CheckForDuplicates ignores | ReadOnly fields.
    Fix: Form Field, Display Field type, CSS, use Combine, not Clip.
    Fix: Conditional Tab for Browse Buttons return.
    Fix: Column Span on Browse Headers would generate invalid XML.
    Fix: showInfo and HideInfo methods were not set as ,Virtual
    Fix: Empty reports opening in a new tab did not popup message correctly.
    Internal: All calls to RANDOM passed through to StringTheory

    Add: Support for memory forms, called from forms.
    Add: Security Tab (Basic Authentication) added to Desktop Sync Client template
  • 11.07 - 27 February 2019
    Add: LDAP: Support for wildcard * in Search Filters.

    Add: OpenedWebSocketConnection and ClosedWebSocketConnection methods to Server class as places to embed code.
    Add: Standard Button settings to embed HTML code before and after the Image / Text on the button.
    Add: SetTableValue and SetTableValues methods.
    Updated: Smoothness theme
    Fix: Allow for multiple Signature fields on same form.
    Fix: Allow multiple order fields in Form Lookup procedure.
    Fix: Custom Column style was applied to Column header (which it should not be.)
    Fix: Number of WebSocket connections in Server was not being updated correctly.
    Fix: In WSDL, Groups and Queues, numeric types were xs:int, and did not allow for xs:float or xs:decimal.

    Fix: Handle case where server is sending ts, sts and dts to web browser as strings, not numbers.
    Fix: Handle dts in browser indexedDB store as string, not number.
  • 11.06 - 15 February 2019
    Add: Global Default CSS options for Checkbox and Radio controls.
    Add: NetWebServiceMethods; Parameters; Queues and Groups; Override JSON "type" for fields.
    Add: NetWebServiceMethods; Add embed to ExampleJsonRequest routine.
    Add: Menu: Accordion Open and Accordion Closed Icon settings.
    Add: SessionID Changed method for embedding into.
    Change: ContentBody setting defaults to off, not on, for new apps.
    Change: New defaults for Menu CSS settings. (Recommend Reset to Defaults)
    Fix: With multiple browses on a page, parent browses could become unresponsive when child browses were updated.
    Fix: Popup forms center horizontally on a page when opened.
    Temporary Fix: NetWebServiceMethods, LIKE changed to STRING for documentation purposes.
    Update: MetroOrange and MetroBlue themes updated.
  • 11.05 - 31 January 2019
    WebClient: Work started on support NTLM authentication. Not yet working.
    WebClient: Fix: SavePage method could fail to save the file.
    WebClient: Fix: Start method clears the Fields Queue.
    NetMaps: Add Metric parameter to GetRoute and OptimizeRoute methods.
    NetMaps: Fix: Calls to calculateRoute could contain leading spaces on GPS coordinates.
    NetMaps: Fix: Instruction length in route was limited to 255 bytes per line - now 2K.
    NetDrive: Fix: Sometimes downloaded files would not save locally.

    Add: p_web.WebServer property points to parent server object.
    Add: Memory driver hides it's embed points, so one exposed so that filenames can be set before the mem table is loaded.
    Add: Row Class CSS setting in NetWebForm
    Add: Reset to defaults for menu CSS settings. (recommended)
    Change: mFormat method renamed to FormatValue. dFormat method renamed to DeformatValue.
    Change: NetWebServiceMethod. If field (not group), and tag case set to upper or lower, then external tag name auto conforms to case setting.
    Change: Using AfterGeneratedApplication rather than AfterClosingExports embed point.
    Fix: calling Year procedure from Form in GotFocusBack did not set _parentProc_
    Fix: Menu [No Action]
    Fix: Wizard: Added too many tables to Others section of data pad.
    Fix: nettalk-grid.css file belongs before theme files.
    Fix: Inline date lookup did not work in all cases.
    Fix: Child layouts could get a bit weird
    Fix: NetWebServiceMethod: when exporting to Json, default errors gets ServiceErrors object name for ServiceErrorQueue and ServiceResults object name for ServiceResultQueue.
    Refactored: ColorWeb and ColorClarion methods to use StringTheory 3.
    Refactored: mFormat and dFormat to use StringTheory 3

    Wizard: Some tweaks to the wizard when creating SyncMethod procedures.
    Add: Support for time stamp field names to be different  in NetSyncClient when constructing the filter.
    Add: NetSyncClient respects NOSYNC setting in dictionary.
    Add: Embed for database.js - extra dictionary properties.
    Fix: DeformatValue method in Sync makes use of StringDeformat class.
    Fix: Template error, Undeclared %Outname
    Fix: ClientSyncClass did not set self.skip back to 0 when complete.
  • 11.04 - 22 November 2018
    Fix: API Server could leak memory with JSON because of PTSS 42786 - works around that problem.
    Fix: Menu Items had a trailing & in the URL
  • 11.03 - 20 November 2018
    Change: Menu Items settings moved onto tabs.
    Fix: Rubberband works on Firefox
    Fix: Menu Action got reset on generate.
    Fix: WebServiceMethod added field names to Group

    Fix: mBuild handles URL's with single quotes as well as double quotes.
  • 11.02 - 19 November 2018
    Add: pNoRedirectOnRefresh and pRefreshTokenGET parameters to oAuthParametersGroup
    Fix: NetOAuth Class, Init method prototype changed to *oauthParametersGroup
    Fix: NetOAuth: GetAccessToken, did not pass user and password fields if in POST mode.

    Add: Options for rubberband functions in browse.
    Add: Base theme to wizard. (This is the new default)
    Change: Wizard, default logo is logo.png not logo.jpg
    WebServiceMethod: Renamed "description" to "documentation".
    WIP: WebServiceMethod: Extending Private field to Group, and Returns
    WIP:WebServiceMethod: Improving documentation
    Fix: Busy graphic, multi-tab, and screensize support got lost in removal of mobile code.
    Fix: Remove reference to mobile text in Wizard.
    Fix: Remove reference to %sNoUrl
    Fix: Spinner buttons were sized wrong in some themes
  • 11.01 - 9 November 2018
    Fix: Set email login back to AUTO LOGIN not AUTH LOGIN PLAIN

    Add: Themecolor
    Add: PWA tab to global extension
    Add: Generate ServiceWorker
    Add: Link manifest.json if it exists.
    Add: Embed to override Server State filename.
    Add: Page Meta Description option to all procedure templates
    Fix: Calendar inline generated incorrect HTML.
    Fix: Missing Hamburger graphic for menu when it contracts.
    Fix: Remove MSVCR120 from Ship list and Solution.
    Fix: Service method with a LOT of parameters could overflow the line length for the compiler.
    Fix: Make sure StringContinuation breaks does not break between two '' characters.
    Fix: Reference to _DivFooter in graph template.

    mBuild updated to version
  • 11.00 - 2 November 2018
    Main Upgrade notes in NetTalk 10 to NetTalk 11. Other (minor) changes listed here.

    Email: AUTO LOGIN command changed to AUTO LOGIN PLAIN

    Add: Reset to Defaults to WebServer / Styles / Tables.
    Add: Various embed points
    Add: Can suppress child completely if condition fails.
    Add: NetWebServiceMethod, Add Picture to Returns of Type Field.
    Add: NetWebServiceMethod, AutoformatField option to Returns of Type Group.
    Add: ColorWeb accepts any "web" color name (eg pinksalmon) and converts it to the # notation.
    TidyUp: Various tweaks to styles on web service method documentation page.
    Fix: Problem with %FirstWebServer in non-web apps.
    Fix: ColorWeb clips returned result
    Refactor: CreateImage uses StringTheory.
    Refactor: ClarionTimePicture, ClarionDatePicture uses StringTheory.

Version 10

  • 10.40 - 29 October 2019
    Server & Apps
    Add: Support for ACME 2 protocol. ACME 1 has been deprecated by Lets Encrypt, so this update is necessary for any server using Lets Encrypt certificates.
    Add: Versioning information to CLANET DLL.
  • 10.39 - 11 October 2019
    Server & Apps
    Change: Update for JFiles 2 support
  • 10.38 15 Jan 2019

  • 10.37 - 22 Nov 2018
    Fix: API Server could leak memory with JSON because of PTSS 42786 - works around that problem.
  • 10.36 - 26 Oct 2018
    Add: Support for Client-Side CipherList control.
    Ftp: Add 451 as possible result code for Abort, Noop commands.
    Fix: Ftp: Wasn't reseting bytesLeftToSend correct, which broke progress bar.

    Add: Each cell in the browse has it's own ID.
    Fix: Saving state could cause problems with long session values that oscillated between long and short values.
    Fix: Image Upload for redactor

    Fix: Added "or NULL" to automatic filter filtering out deleted records.

  • 10.35 - 20 Sept 2018
    Change: Email: hyphens not allowed in HELO name.
    Fix: Email: incoming From and To addresses were parsed incorrectly.
    Fix: WebSocketClient: Loops to empty buffer in _HandleReceivedPacket

    Add: data-elem to browse body in table mode
    Add: ValidateRecord embed to JSON object in WebServiceMethod
    Change: WebServiceMethod - AnyCase rather than CaseAsIs used for incoming %table_Action parameter
    Fix: If ForceNoCache property set, then don't send 304 response.
    Fix: WebSocketServer.Remove called in ErrorTrap for the wrong SockID
    Internal Change: browse.js uses data-elem not tag name

    Fix: Generate onSyncCommsSuccess and onSyncCommsError even if embeds empty.

  • 10.34 - 13 Sept 2018
    Add: Clarion 11 to install.
    ClarionToUnixDate, UnixToClarionDate, UnixToClarionTime methods moved from NetWebServer to _NetAll.
    Update OpenSSL to version 1.1.0i

    Change: MAXTRIES and NUMCLIENTS renamed to Net:MAXTRIES and Net:MAXCLIENTS in netmaps.
    Fix: WholePacket Destruct could GPF
    Fix: WholePacket Free could enter endless loop.

    Change: SessionID values _have_ to conform to the desired length.
    Fix: Browse row styles could be duplicated.
    Fix: Browse Footers in Div mode.
    Fix: NetWebServerMethod - set tableAction to Change instead of update.
    Fix: NetWebServerMethod - deleteRecord method gets identifier consistent with Insert and Update.
    Fix: NetAcme client, when used in Multi-host, Baby web server parses Host header.
    Fix: Children table use different classes for table / div mode.

    Add: Ability for custom JavaScript function for setting browse field styles.
    Add: Ability for JavaScript filter function on browses.
    Add: Embed points for JavaScript: onSyncCommsSuccess and onSyncCommsError
    Add: Embed points for JavaScript: Before database is Syncd, After database is sycd Success, After database is syncd Error.
    Add: Embed point for JavaScript: document ready, before call if idbOne.
    Add: Priming From Location on a form, allows you to populate an on-screen field with the result. (mobile only)
    Add: idbSync POST includes local time zone offset.
    Fix: Database.js was being added to scripts list when files were combined.
    Fix: BrowseLSSortToJs should remove prefixes. And should join with Always-Quotes.
    Fix: BrowsLS: Support for multi-component sort orders.

  • 10.33 - 27 Aug 2018
    Change: Width (rel) settings for browses now allow for relatives < 1 - specifically 0.1 through 0.9, 0.33, 0.66, 0.25 and 0.75.
    Updates: Various small tweaks to CSS classes for better DIV layout support.
    Updates: Base, Theme and Shoestrap 3 themes updated for better DIV mode support.
    Fix: global footer styles should be set with leading space.
    Fix: fast styles should be combined with leading space
    Fix: ChildrenTableCellStart used form layout method, not Children layout method.

    Updated: Shipping Apps examples
    Documentation: New section in docs for upgrading existing apps.
    Fix: Headers being generated into browses in DIV mode.

  • 10.32 - 23 Aug 2018
    Fix NetAcme.IsLocal - always returned true. (regression in 10.31)

  • 10.31 - 22 Aug 2018
    Change: Event:Hide and Event:Unhide renamed to Event:ntHide and Event:ntUnhide to avoid clash with SV Graph.
    Fix: NetMaps was not returning the Time in Routes correctly.

    Add: onchange [js] option to Validation tab for various form fields.
    Add: NetWebServiceMethod: Added debug option to Send Result filter to Debugview.
    Change: If a form field has a JavaScript Hide Condition, then the class nt-row-hide is added to the row. This hides fields by default, rather then then being on the form then disappearing.
    Change: Certificate Support: domains with a numeric tld are considered to be local. eg
    Fix: Global classes sent to Child blocks.
    Fix: Added Drop & Color fields to form field size options.
    Fix: Calendar field sends an event to the parent page when 'gainfocus' is received.
    Fix: EIP browse fields always get a width set.
    Fix: Browses in DIV mode would get the footer at the top of the browse.
    Fix: Checking version of web folder did not use global folder setting.
    Fix: Turning on HTML on for header could cause a problem.
    Refactor: NormailzeURL method.

    Add: data-nt-lut attribute to lookup fields.
    Add: New options for ntBrowseLS javascript: bodyClass, messageIfEmpty, messageIfEmptyClass,
    Add: Support for Joined fields in Browses in disconnected web apps.
    Add: Generic support for priming lookups in disconnected apps.
    Add: OnFormOpen method to nt-form-ls.js
    Add: Methods to exclude files from database.js
    Add: Template option to control short-delay on load.
    Change: In database.js, under Relations, property "table" renamed to "tableName".
    Change: database.table.view method returns results in ts order, not guid order.
    Change: Apps browses are populated by Row, not with the whole result set.
    Change: Apps browses changed to DIV mode.
    Fix: NetWebServiceMethod: was excluding Deleted records even if Loc:RemoveDeletedRecords was false.
    Add: nt-idb: idbCheckTable: allows table name to be passed where table is expected.
    Add: idbJoin function.
    Change: nt-idb: added join parameter to idbSelect.
    Change: nt-idb: New tables created in onupgradeneeded, but ignored if already exist
    Change: nt-idb: New indexes created in onupgradeneeded but ignored if already exist.
    Change: nt-idb: Errors sent to console.log by default.
    Change: nt-idb:deviceid sent with each syncpost

  • 10.30 - 13 Aug 2018

    UPGRADE NOTE:  Make sure you are using xFiles 3.06 or later

    Fix: Email sent to Outlook did not format correctly

    Add: id option to .ntform widget
    Add: Hide Condition (J-Script) option to form fields.
    Change: Procedures called from menus generate an absolute URL not a relative URL - starting with /
    Fix: Custom JavaScript was not added correctly to Display fields on a form.
    Refactor: Removed ExtValueSize field from NetWebServerSessionDataQueueType. Fixes weird cropping bug with large text fields when save-server-state is on.

    Add: data-nt-desc attribute to lookup fields.
    Add: After Sync JavaScript embed point (per table)
    Add: After Get Settings JavaScript embed point.
    Add: Support for last-in-cell to apps-browses.
    Change: When calling a browse, from a form button, Action is set to net:browse
    Change: Disconnected Browses populate in DIV mode not Table mode.
    Fix: Set DeletedTimeStamp to current time, even if TimeStamp/ServertimeStamp are set.
    Fix: KeyNames had extra quotes in the name.
    Fix: Lookups in apps mode now working.

  • 10.29 - 7 Aug 2018

    Fix: Regression. Email Attachments no longer worked.
    Fix: Regression. Email embeds changed the case of the file name - some clients are case sensitive.

    FIX: Webserver procedure: Added nt-small-button class to DateLookupButton. Delete button from list to get new defaults.
    Add: Form, Field, Priming, From Location: Added On Copy and OnChange options.
    Add: new JavaScript function getUTCTime() added to netweb.js. Returns UTC time in thousandths of a second.
    Add: mFormat pictures, @U1 through @U6 - displays Unix timestamp as Date Time. Date pics follow @d1 through @d6.
    Change: On forms, Width(chars) setting changed to any CSS value allowed. (defaults to chars if no unit.)
    Change: AsciiToUtf function uses Windows 1252 instead of ISO_8859. Better conversion of Euro character.
    Fix: Global form field size applied to date fields.
    Fix: HTML Headers in popup windows did not work.
    Fix: Prime on Save did not respect "Only if not set" setting.
    Fix: Child filters didn't work if parent was already a child of something else.
    Improved: NetAcme sends an error to log if OpenSSL.Exe is missing.

    Add: primeField and assignField functions added to jquery.nt-form-ls.js.
    Add: event object passed to onerror, and more console.log debugging when things go wrong.
    Add: idbGet primes ta    ble.record values with result values.
    Add: Global Embed point, JavaScript | database.js | After SyncAll
    Add: database.syncDate property.
    Update: Wizard generated apps prime JavaScript dates
    Fix: Prime-on-update, Prime-on-Copy, Assign on Save, support added.
    Fix: this.options.database was not being set to database object.
    Fix: idbOne did not call oncomplete if it did not need to add a record.
    Fix: idbOne missed a parameter calling idbAdd.
    Fix: idbSyncAll did not call oncomplete
    Fix: idbSummary could report records as being deleted when they weren't.
    Refactor: database.js ready function - get settings record moved to dbGet_tablename method.

  • 10.28 - 30 July 2018
    Fix: Webclient: Adding multiple File Uploads to a single POST set the filename in the POST wrong.
    Fix: Email: If EmbedList was set manually, did not include the images correctly.

    Change: Template changed to allow any class starting with the name NetWebServer_ to be used as the web server class.
    Change: ServerState XML reduced in size by setting DontSaveBlanks to true.
    Fix: CSS for Table-based Browse, Row Header was broken.
    Fix: condition-based Insert procedures (per row) tweaked to add leading space.
    Fix: CreateTextArea did not add a closing " to the name attribute.

  • 10.27 - 26 July 2018

    UPGRADE NOTE:  This build moves the generation of conditional compiles to their respective products. (Cryptonite, Draw, jFiles and Oddjob). If you use any of these you should update them at this time as well. Apart from that this build uses new features in jFiles and xFiles, so make sure you have the current builds of those as well.

    Add: _NT10_ define added to Multi-Proj support
    Change: SendEmail: duplicate entries removed from EmbedListQ.
    Fix: Current values in email.embedlist not overwritten by automatic call to ProcessImagesforHTML
    Fix: NetOAuth Client: If RefreshTokenURL was not set AccessTokenURL was not used (it should be used as a fallback.)
    Refactor: SendEmail: ProcessEmbedList to use StringTheory.

    Add: nt-noprint css style.
    Add: Browse Event : selectRange
    Add: nt-value as default css to Entry Div
    Add: cs for embedded procedures (nt-embedded-procedure)
    Add: New Embeds in Prompt:: routines
    Add: Only 1 Button to Inline-small-Insert in Browse.
    Add: Browse, Options, Show Column Prompts setting.
    Add: Browse, Options, Rubberband feature.
    Add: Browse Options, Body Flow setting.
    Add: Embed into Cell Routine, for each field.
    Add: Embeds into CallClicked routine.
    Add: Column Width (rel) setting for Tables in DIV mode.
    Add: NetWebServiceMethod: Added support for External Name to non-list parameters.
    Add: NetWebServiceMethod: Added JSON as possible JSON return type. Allows already-formatted-JSON to be injected into the result.
    Add: Automatic detection of fields called login, and password, passed to Authenticate method.
    Add: url JSON parameter when doing redactorImageUpload
    Add: DeleteCertificates method to NetAcme class
    Add: New Procedure Wizard for generating File Handling WebServiceMethods.
    Add: Wizard: Support for MaxRecords and SkipRecords to NetWebServiceMethods.
    Add: Wizard: Support for  and SkipRecords to NetWebServiceMethods.
    Moved: Column Width (pixels) setting from Column tab to CSS tab.
    Change: Moving Text fields from row/column sizing to use CSS field sizing.
    Change: LetsEncrypt Support/ Server Settings template. When unticking Use Testing Server checkbox, existing certificates are deleted.
    Change: Removed code to generate project defines called _ODDJOB_,  _CRYPTONITE_, _DRAW_ and _JFILES_.
    Fix: File Upload, local MaxSize setting, did not multiply to change MB to B.
    Fix: View Field Names were case sensitive when looking at template fields.
    Fix: When returning an error a SessionCookie could be sent.
    Fix: Characters permissible in Cookies enforced.
    Fix: ClarionTimePicture method could GPF if not passed a valid time picture.
    Fix: WebServer would not automatically restart after fetching new certificates.
    Fix: nt-browse.js, serverPost, was not sending all the parameters.
    Internal: Changed %Guid to %Guidfield to avoid conflict with other templates.
    Internal: LEFT removed from Combine method - allows nested Combine calls.
    Refactor: _GenSessionId method changed to use StringTheory.
    Refactor: _MakeURL method refactored to use StringTheory - no longer length limited.

    Add: Sync can now do a "page" of data at a time, ratehr than all records in one go. This reduces the memory usage on the server and the client. See Upgrading to 10.27 and beyond and Template Options.
    Add: Max Records option to Desktop Client template.
    Change: NetWebSynClient, added property MaxRecords.
    Change: Start method added to NetWebSyncClient class.
    Change: Desktop client uses the session cookie to reduce the number of sessions on the server.
    Fix: Client-side Sync Window did not respect timer setting on Extension.

  • 10.26 - 3 July 2018
    Add: Sending Email automatically calls ProcessHTMLForImages.
    Fix: Email Headers required an extra space after colon. (Important update).
    Fix: Better formatting of email lists that did not contain a description part.

    Wizard: Secure and Insecure port prompts removed from wizard (these are now set at runtime on the settings template.)
    Wizard: Session Timeout set to set:SessionTimeout
    Change: WebServer, Advanced Tab, SessionTimeout setting now unformatted expression. (90000 = 15 mins.)
    Change: When including html snippets, <!-- Net:f:... --> the server checks to see if the encoding of the snippet can be guessed.
    Fix: Modules with only graphs or reports added to Inc list in WebHandler.
  • 10.25 - 21 June 2018
    Add: CustomHeader (StringTheory) property to NetEmail.
    Add: ChangeHeader (pure virtual) method added so embed code can alter contents of outgoing email headers.
    Change: codepage property, and SetCodePage method, moved up to _Netall class (from NetEmail class).
    Change: NetEmail. Various option strings lengthened from string(40) to string(100).
    Change: Maps: ParseAutoCompleteReply automatically converts incoming (unicode) suggestions to ANSI using the codepage property.
    Examples: Maps client example updated with new HERE credentials.

    Add: data-elem attribute to browse divs.
    Add: Browses, in Div mode, get a "body" div. Makes scroll bars on the body part easier.
    Change: removed use of size attribute in entry fields. Behaved differently on different browsers. CSS Width property now used exclusivly.
    Fix: Browses in Div mode, especially Div coupled with single-cell records, did not identify column on click well.
    Fix: Upload File buttons did not like being set to not-have an icon.
    Fix: Force Object Name in WebHandler to be p_web.
    Fix: LocalMaps automatically disabled in Legacy programs.
    Fix: Removed call to do AssignFileKey in InsertAfterSave mode too late.
    Fix: GetDescription clears NewValue at start.
    Fix: .ico extension added to GetContentType
    Fix: Reference to /images/layers.png in css no longer relative to css file.
  • 10.24 - 13 June 2018
    Fix: Regression in Email sending caused machine to lockup on send.

    Add: Entry Default width, template option, for Browses and Forms.
    Fix: Problem with loc:parent caused children of forms not to be updated.
    Fix: If Application Options / Generation tab / Create Local Maps option was OFF then compile errors ensued.
    Fix: Better support for click, and double-click on DIV based browses.
    Change: loc:RowExtra local variable in browse renamed to loc:RecordExtra, and type changed to StringTheory.
    Change: loc:RowClicked local variable in browse renamed to loc:RecordClicked, and type changed to StringTheory.
  • 10.23 - 8 June 2018
    Fix: Busy graphic did not disappear when browses were loaded.
    Fix: Totals row would appear under all browses (even if browse was empty, or there were no totals.)
    Fix: Web OAuth did not support new "state" parameter correctly
    Fix: Web OAuth did not use template setting Scope correctly.
    Fix: OpenWindow would pass the URL through jsok, which caused re-encoding of & in parameters.
  • 10.22 - 7 June 2018
    Update: Requires StringTheory build 2.79 or later.
    Change: (Major Change): Email classes have been somewhat refactored. See Upgrade documentation.
    Add: Documentation on non-ASCII characters added to Email Documentation.
    Add: NET:SETCIPHERS, NET:GETOUTWAITING and NET:GETDLLTHREAD options for NetOptions procedure.
    Add: Construct, Destruct, Start, SetCodePage methods added to NetEmail class.
    Add: pState, pAuthMethod, rRealmId fields to oAuthParametersGroup.
    Add: NetOAuth: Support for BASIC authentication in addition to POST authentication.
    Change: WebClient, and Server: CR/LF characters removed from cookies.
    Change: NetOAuth sets, and checks, pState field between requests.
    Fix: IMAP attachments could be corrupted if base64 overflowed the line by a single character.
    Fix: FTP could remain in a BUSY state if login to server failed.
    Fix: FTP did not set the local name of 0 length files when downloading.
    Fix: OAuth Client: Do not call .save and .done if no token is returned from the server.
    Fix: OAuth Client: Display warning message at runtime if jFiles is not included in the app.
    Internal: GetHeaderField moved from NetWebRoot class to NetSimpleHeaders(NetSimple) class.
    Internal: NetEmail now derived from NetSimpleHeaders not NetSimple.
    Internal: NetEmail deprecated methods; _ProcessResizeWholeMessage, _ProcessSetSizes, _GetLineEntry, SetRequiredMessageSize, Free, _GetHeaderField.

    Change: (Major Change): _parent_ and loc:parent are now accumulative, meaning that it contains the whole parent chain, not just the immediate parent. This affects the name of the wrapping <div>. It's unlikely to affect existing apps unless the specific wrapper div name was targeted in embed, or css, code.
    Change: (Major Change): Under the hood the mechanism to support multi-dll apps has changed. This should not require any change to your program though. The template will take care of it. The change removes the SegDef error incurred when WebHandler gets too big. As a side-effect it removes the requirement to constantly recompile the WebHandler app when the other DLL's change.
    Add: Template option to Display Form Fields onGenerate - allows for custom JavaScript to be entered when field is generated.
    Add: Template options to File Upload form fields to allow control over all the various buttons settings used for the upload control. Use this to override global settings for these buttons.
    Add: Template option to set maximum file size allowed by File Upload field.
    Add: After calls to p_web .OpenFile, .AddFile, .UpdateFile, .GetFile, .DeleteFile the .SetErrors method is called to update the properties lastError, lastErrorCode, lastFileError and lastFileErrorCode. Errors can be retrieved using pweb .Error, .Errorcode, .FileError and .FileErrorCode.
    Add: View Button to list of actions set for browse Other button.
    Add: Embed point for each field inside Export to Excel loop.
    Add: RedirectURL property in NetBabyWebServer to allow for custom redirection from insecure port.
    Add: NotifyServer method to WebServer and WebHandler. Allows for custom code to be written in the WebServer procedure and triggered by code in WebHandler (or below WebHandler.)
    Change: In WebService Methods, ServiceError message uses lastError properties in error message.
    Change: Automatic inclusion of VARY header caused an error with some portals. Header can be set (typically to 'Accept-Encoding') but is not included by default.
    Change: p_web.ColorWeb method allows for web-color-names, not just Clarion color or WebColor(#123456) values.
    Fix: Problems when drawing Web Map data points from a queue.
    Fix: Problem with AutoComplete form field using FormField instead of FieldID.
    Fix: Return at the end of CloseFiles routine.
    Removed: NetWebSetSessionPics, NetWebSetPics procedures.

  • 10.21 - 10 May 2018
    Add: NET:GETDLLTHREAD option to NetOptions procedure.
    Fix: OAuth Login: Better support for expires in return value from OAuth servers.
    Fix: Remove TRACE declaration in (affects Legacy apps)
    Fix: Remove * from *StringTheory prototype in

    Add: Locator Type "None" to Browses and Browse Columns.
    Add: Form field type Button/OAuth Login
    Add: Return value option for procedure called when button clicked.
    Add: Conditional to override Form auto-start buttons in code.
    Add: Template setting for Select URL on Browse (in lookup mode) distinct from Cancel URL.
    Add: Vary header field in server header details. Defaults to 'Accept-Encoding'.
    Add: CustomHeader header field in server header details.
    Fix: Spin buttons in Base theme did not display correctly.
    Fix: If a form opens in view-only mode, then that view-only mode cascades down to procedure fields. This applies especially to double-clicking on the row.
    Internal: CreateDateInput - some tidy up...
  • 10.20 - 26 April 2018
    Add: jsonapi type to Content types: returns application/vnd.api+json
    Change: WebClient: URLLENGTH equate made bigger to 4096 bytes.
    Fix: HELO in NetEmail sanitized to remove _ characters.
    Fix: FTP Did not set Data.Openflag to false when connection closed.
    Fix: WebSocketClient: state changed to closed when Close method called.
    Fix: FTP. If downloading 2 files in the same procedure, the first could be prepended to the second.

    Add: Web Maps - HERE Traffic Map type added.
    Add: Graceful Close control template added to WebServer created by Wizard.
    Add: <!-- File Tag --> As option for Form Field display type of what to display.
    Add: CSS settings for Form, Procedure Field Type, Wrapper Div, now settable.
    Add: NetWebForm: Embed points to PreInsert, PreCopy, PreDelete
    Add: NetWebServiceMethod: Embed points to BuildResultFields
    Add: pEmailFileNameList field to EmailParametersGroup.
    Add: Slow requests (> 5 seconds) to log.
    Add: Title parameter to p_web.popup method.
    Add: Settings to NetWebServerSettings control template for Multi-Host support.
    Add: FilterRequest method to WebServer.
    Add: More Error reporting and debugging to Acme class.
    Change: Web Maps - Nokia renamed to HERE
    Change: MapId_Nokia_AppId and MapId_Nokia_AppCode properties renamed to MapId_HERE_AppId etc.
    Change: Can now change from Insert to Change mode just by setting ANS, %Procedure:Primed not required anymore.
    Change: If Signature field is in Read-Only mode then Clear button is suppressed.
    Removed: Web Maps: Cloudmade provider (no longer does maps.)
    Fix: WebHandler did not route PageName for NetWebForm.
    Fix: Web Maps - HERE API 2.1 supported.
    Fix: New Settings controls added to WebServer created by Wizard.
    Fix: Update to nettalk-ui.css, min-width set for small buttons - solves skinny lookup button issue in firefox.

    MultiSite Host
    Add: Host Domain Name to settings on Settings tab. Use this for getting to the "host" interface.
    Add: Simpler support for LetsEncrypt with multiple domains.
    Change: Port number dropped from server name when comparing host to domains.
    Change: Certificates tab, Domains list, Read Only. Calculated from Host Domain Name and names of Sites in Sites list.
    Change: Certificates Tab: Acme Web Folder setting hidden - not applicable in Host program.

    Add: Properties to the NetWebSyncClient class, importing and exporting. So derived code can know what's happening.
    Add: SetFilter method to NetSync class
    Add: ValidateRecord method to NetSync class
  • 10.19 - 20 March 2018
    Add: CloudParametersGroupType
    Add: ReturnPath header to Sending Email
    Add: File not Found and Path not Found errors to InterpretError
    Add: MakePFX, ImportPFX and ImportAllPFX methods to NetAcme class. (requires Cryptonite.)
    Change: GetContent Type for JSON changed from application/json to application/json; charset=utf-8
    Fix: myEmail and myDesc parameters in NetEmailSend increased from 80 chars to Net:StdEmailListSize.
    Fix: NetWebSocketClient: Added Host header to http upgrade request.
    Fix: NetOAuth Init did not update pParms group after Load when TokenOk.
    Change: NetDrive classes updated to use latest Drive API's (GoogleDrive v3 and
    Change: NetDrive classes manage command sequences, and are able to terminate the whole sequence if part fails.
    Change: NetDriveGoogle class updated to auto-get ID's.
    Change: NetDriveMicrosoft updated to support multi-part file uploading.
    Change: NetDriveMicrosoft changed from to
    Refactor: NetDrive classes tidied up for consistency.

    Fix: JSON output from NetWebServiceMethod could end up being encoded twice.
    Fix: WebServiceMethod - if only SQLFilter was set, not filter, then AutoFilter could be set.
    Fix: When CSS was combined nettalk-grid needs to be after nettalk-ui
    Documentation: How to make Secure Apps document updated.

  • 10.18 - 7 March 2018
    OAuth: Added client_credentials support to OAuth class.
    OAuth: _GetAccessToken method renamed to GetAccessToken.
    IMAP: Suppressed IMAP_INVALID_STATUS error message.
    IMAP: Suppressed IMAP_INVALID_FETCH error message.
    FTP: Added PUTFILE method option to allow sending of a StringTheory object instead of a disk file.
    FTP: Refactored classes to use StringTheory for loading and saving files instead of DOS driver.
    FTP: Added START method to NetFTPClientControl class.

    Note: Repopulate of Settings Control Template is required.

    Add: Content-Security-Policy, Content-Security-Policy-Report-Only, and Referrer-Policy template options to WebServer Security tab.
    Add: XContentTypeOptions (defaults to nosniff)and XXssProtection (defaults to 1; mode=block) fields to NetWebServerHeaderDetailsType.
    Add: Support for Basic Authentication suggestion to Browse and Form procedures.
    Add: Embed point added to menu to more easily override menu settings in code.
    Add: Server Headers group to Settings Control template. Allows various server security headers to be set at runtime.
    Change: Loc:Filter (string) in NetWebYear procedures changed to loc:FilterA (stringTheory).
    Change: Parameters to NetWebServer._CreateHeader method changed - new first parameter pHost.
    Fix: loc:Filter in browse EIP drop down renamed to loc:FilterA
    Fix: errant use of %tCase
    Fix: SendFile did not lower formname.
    Fix: Sendfile did not set loc:done in some places.
    Fix: Possible GPF on server when web socket client disconnects.
    Fix: NetAcme: remove blank domain names from list.
    Update: example updated.
  • 10.17 - 1 March 2018
    Maps: Add: Address AutoComplete suggestions.
    Maps: Add: Searching.
    Maps: Add: New methods, SetRoute, DeleteRoute, DrawRoutesRefresh and RefreshExtras.
    Maps: Add: When auto-zooming GetMap methods are called, allow for boundaries on zooming.
    Maps: Add:  Support for description and image with markers.
    Maps: Add: Global template option to use production server or test server.
    Maps: Naming Change: SetIcon, DeleteIcon, DrawIcon, DrawIcons methods renamed to SetMarker etc.
    Maps: Naming Change. Property CIT renamed to TestServer.
    Maps: Fix: Not all Get methods used URL Parameters correctly
    Maps: Fix: Not all GTE methods used TestServer URL correctly.
    Maps: Example updated.
    WebClient: Change: added st:php to URLEncode for Post Data SetValue fields.
    NetImap: Fix: Suppressed Too Few Responses error when getting data from an empty mailbox.
    NetSMS: Fix: included, needed to include

    Fix: Color Picker did not send changes immediately to server.
    Fix: Color fields did not save correctly if field type was LONG.
    Fix: ColorClarion method had test for # backwards.
    Fix: Filter on Deleted records could fail.
    Theme: Base theme continues to evolve.
    Example: example was missing from Server Level install.
  • 10.16 - 15 February 2018
    Template: Ship List file set correctly.
    Add: SMSParametersGroup : pCountryDialingCode field.
    Add: New document for adding SMS to an app.
    Fix: WebClient, Post, Data string was not always clipped.
    Refactor: Email: attachments no longer use DOS driver. Now use StringTheory.

    Add: Embed point to PostUpdate routine for adding Data.
    Add: Template option for browse columns to Include in Export. Allows columns to be suppressed from Export to Excel.
    Add: Template option in browses to set case sensitivity of Range Limit values. Defaults to best key.
    Add: Browse ranges take the case of the key into account to generate the best filter.
    Add: Template options for icons, images and CSS on Tab headings (Tab type only.)
    Add: Template option, Browse Form tab, Call form only if level >= ...
    Add: Template option for menus, Allow menu type change at runtime.
    Add: Deleted Row global CSS and Deleted Row local CSS settings.
    Change:  _checkParseHeader checks for <!-- NetWebServer --> without the trailing CRLF. Better handling for files created with just LF or CR line endings.
    Change: Tab Headings can contain HTML.
    Change: When adding procedures to forms, the Use Equate is set automatically.
    Change: Improvements to Duplicate error message.
    Change: Template settings for Browse column, Sort tab, are allowed even if the user cannot select this column to sort.
    Change: WebServiceMethod: uses file prefix length to set MaxPrefixLengthInJson.
    Change: Refactor of SendFileGroupRoutines to reduce the number of routines. Also a speed improvement. Helps to avoid SegDef errors when WebHandler gets too big.
    Change: Maximum number of certificates per server increased from 10 to 100.
    Change: Additional information sent to Log window. (Listening / Not Listening, Errors etc)
    Change: _MakeServerCookies refactored to use StringTheory.
    Change: Accept-ranges set to none for temp ($$$) files.
    Fix: Reports could be generated twice by some browsers.
    Fix: Lookup buttons used %FormField instead of use Equate (%FieldId)
    Fix: Locators did not change correctly when CSL was used but the type for the column was different.
    Fix: In some browse cases a single-click could act as a double-click.
    Fix: WebServiceMethod: Parsing group components from URL encoded used Label not Name.
    Fix: _MakeCookies method in WebServerWorker renamed to _MakeServerCookies
    Fix: Probably fix to some calendar buttons appearing as both a calendar icon and a button.

    Add: Optionally Client-side-sync can now purge (client-side) deleted records when they are sync'd. Incoming new records, with dts set, are not written.
    Add: Web apps now filter out all records with DeletedTimeStamp set from every VIEW by default. Can display deleted records by setting p_web.RemoveDeletedRecords = false.
    Change: Client Side Sync, deformats all fields, including numbers now.
  • 10.15 - 14 December 2017
    Add: SSL Support to NetsimpleMultiClient class.
    Examples: Maps example updated

    Add: Date Lookup new setting "Lookup Inline".
    Fix: NetwebServiceMethod, sets MaxPrefixLengthInJSON for incoming tables to actual table prefix length.
  • 10.14 - 14 December 2017 (Internal)
  • 10.13 - 12 December 2017 -- NOTE Upgrade to jFiles 1.57 required
    Add: NetMaps class, Optimize Route and Get Route Instructions functionality.
    Add: Variation to SetIcon method.
    Change: NetMapsBase.GetLocation, LocationFound methods, getmap parameter changed name.
    Change: NetMapsBase.GetAddress method, pMode parameter added.
    Internal: Net:GetLocation, Net:GetAddress and Net:GetRoute equates changed to allow for command chaining.
    Documentation: Maps documentation is growing.

    Change: NetWebServiceMethod. Converts all incoming JSON (which _should_ be utf-8) to ANSI (based on Store-Data-As setting in WebServer procedure.) Clients should be sure they are sending utf-8 text, not ANSI text. This change only affects non-english characters.
    Change: NetWebServiceRecord: Changed parameter setting prompt from "xml tag" to "Record Boundary".
    Fix: WSDL did not generate correctly for all combinations of file, and record boundaries.
    Fix: NetWebServiceMethod: Outgoing JSON converted to utf-8 before sending (based on Store-Data-As setting.)
    Internal: Added AsciiToUtf that takes StirngTheory parameter.
  • 10.12 - 29 November 2017 -- NOTE Upgrade to StringTheory 2.67 required
    Add: NetMaps class, new properties ThisPage, CacheExpiryDays, LockPosition and LockZoom.
    Add: NetMaps class, new methods: MapClicked, GetMouseLatitude and GetMouseLongitude.
    Change: NetMaps class, GetMap(Lat,Long,Zoom) method now Zoom parameter is NOT optional. (Important)
    Fix: NetMaps class, drawing could fail if ForceNoCache was on.
    Documentation: Maps documentation is growing.

    Change: ServerSettings.xml name changed to ExeName.ServerSettings.Xml. This allows for multiple exes to live in the same folder and not interfere with each other.
    Change: NetAcme, TLSChallenge and HTTPChallenge return values if they succeeded or failed.
    Fix: Lets Encrypt support did not use Acme Folder setting correctly, if loaded from Settings.xml
    Fix: When generating WSDL, Tables, if the Name and Type were different the WSDL could be wrong.
    Internal: Some refactoring in CreateImage method.

    Add: Sync Set Time Fields extension template. Allows for actual delete of records if syncing is not actually being done. ie if the extension is only used to update time stamp fields.
  • 10.11 - 20 November 2017
    Add: NetMaps class - new method CommandQueueChanged called when records are added, or deleted, from the CommandQueue.
    Change: (Internal) SendEmail method refactored to separate out BuildMail method. BuildMail adds to the dataqueue, so if called independently you may need to remove the record from the data queue.

    Add: NetWebServiceMethod: FieldName case "Any" to parameters.
    Add: NetWebServiceMethod: More data output via trace when debugging incoming parameters.
    Add: Some more tests, and logging, in LetsEncrypt support.
    Change: Forms, when children of a browse, default to Change mode.
    Change: DateLookup button now uses DateLookupButton settings, not Lookup Button settings.
    Change: LetsEncrypt (NetAcme class) - no longer uses fixed value for terms of service URL.
    Fix: NetWebServiceMethod. Had a problem with prefixes when data was XML.
    Fix: NetWebServiceMethod. Did not always take Case into account correctly.
    Work-Around: MsSql driver, blobs could get lost if WebServiceMethod found a duplicate record. (Thanks to Rick Martin.)
    Example: Update to MultiSite Host example.
  • 10.10 10 November 2017
    Change: NetOAUTH - Scope field changed from 256 bytes to 4096 bytes.

    Add: Thread number added to Log file.
    Add: NetWebServiceMethod: FilesErrorOnOpen StringTheory - contains a list of files that failed to open.
    Add: Header Cell CSS template option for Browse columns.
    Add: NetWebServiceMethod: SQLFilter template option for RETURN VIEW.
    Add: NetWebServer Graceful Close Button Control template
    Add: Delete Session threads added to the log
    Add: cgi-bin added to list of text rejected by ValidatefileName method.
    Change: Allow Close button on Table forms.
    Change: CreateSortHeader prototype.
    Change: AddLog method changed - <request> wrapper moved up to caller.
    Fix: NetWebServiceMethod: Caching headers set to Don't cache when returning from API call.
    Fix: SendError did not construct Error text correctly.
    Fix: CSS DatePciker did not always stay on top
    Fix: Calendar CSS made bad small months.
    Example: Added Settings Control template to MultiSite example

    Add: SetJsonProperties method to NetWebSyncClient class
  • 10.09 25 October 2017
    Change: Web Sockets: NetOpCodeIncomplete equate removed. NetOpCodeIncompleteFrame and NetOpCodeIncompleteMsg added.
    Fix: WebSocketClient: Large incoming packets did not get smooshed together into a message correctly. (Thanks to Tom Halagić )
    Fix: WebSocketClient: Large incoming packets could get the MessageType lost. (Thanks to Tom Halagić )
    Fix: WebSocketClient: ParseJsonReceived only allowed packets up to 1024 bytes. (now no limit.) (Thanks to Tom Halagić )

    Change: When thread pools on, all record buffers are cleared on return from WebHandler to thread pool window
    Change: NetAcme class (LetsEncryt) Log Output sent to Debugview as well
    Change: NetAcme class, whole error response sent to Debugview if errortrap called
    Fix: Multi-Tab settings for custom buttons could be applied even if Multi-Tab support was not active.
    Fix: Hand-coded buttons using the <input> tag did not get multi-tab code attached to them.
    Fix: Empty browse code could generate an extra bracket
    Fix: WebSocketServer, Multiple calls to AddWatch for the same variable added multiple items to the watch queue
    Fix: NetAcme class, Exists makes sure length of file is not 0.
    Fix: NetAcme class, prevent loop if the Dates cannot be read from the file
    Fix: NetAcme class, extra CR/LF added to certificate file.

  • 10.08 4 October 2017
    Add: WebServer / Defaults / Form - Global settings for Popup Top Offset and Popup Width
    Add: WebServer - Option on Security tab to Allow Websockets
    Add: if-medium and if-large CSS classes.
    Add: if-medium and if-large to drop-down options for browse columns.
    Add: embed in StartRowHTML routine, allows code between the end of one row and the start of the next.
    Add: embed, After Sending Report
    Change: ProcessWebSocketCommand method gets a Type parameter
    Refactor: ProcessWebSocketCommand method
    Change: Other ProcessWebSocketCommand method renamed to ProcessNetWebSocketCommand.
    Change: Refetch of LetsEncrypt cert changed from 59 days to go to 33 days to go.
    Fix: RightJustify CSS did not work in Chrome.
    Fix: CopyAll and GZipAll did not run if Control Settings template was used.
    Fix: Web Socket handling clipped incoming binary data (Thanks to Dries Driessen)
    Fix: Text-Area had height set, changed to min-height.
    Fix: Various tweaks to themes

    Fix: Wizard could GPF IDE if it generated both database API and Sync API in same server.
  • 10.07 22 September 2017
    Improved: Maps Control template to allow for controls to be cleared.
    NetMaps: Added GetMap method for NetMapWaypointsQueueType.
    NetMaps: Added DeleteIcon method.
    NetMaps: Better handling of objects where there is no visual control.
    Webclient: Improved refactor of TextOnly method.
    NetOAuth: Added pResource to parameters group (thanks to Darin Richardson.)
    WebSockets: Moved: Cookie and Customer header properties from NetWebClient to NetWebHttp
    WebSockets: Moved: _Makecookies method from NetWebClient to NetWebHttp
    WebSockets: Change: NetWebSocketsBase derives from NetWebHttp instead of NetWebRoot
    WebSocket Client: Renamed: UpgradeRequestCustomHeaders in NetWebSocketClient renamed to CustomHeader
    WebSocket Client: Added string versions of SendText and SendBinary
    WebSocket Client: _ReceiveValue method renamed to ParseJsonReceived
    WebSocket Client: Added support for Authorization header and Cookie header.

    Add: Settings Control Template. Added settings for ACME Folder and SessionTimeout
    Add: Settings Control Template - will save and resore settings even if xFiles not available.
    Add: CSS name matching procedure name added to Browse Div.
    Add: nt-radio CSS class for non-jQuery radio options
    Add: UserAccessRights field to SessionDataQueue type
    Change: Global Browse CSS: Div now nt-browse not nt-left
    Change: loc:Silent variable added to Form.
    Fix: API server did not generate single variable parameter name correctly in JSON example.
    Fix: Settings Control template - BindToIpAddress and Testing settings did not apply correctly.
    Fix: Multi-Tab support on Page Forms could fail if browse was Ajax updated, with in-row buttons.
    Fix: NetAcme object sets SuppressErrorMsg property same as server.
    Fix: NetAcme - Intermediate certificate was bad.
    Fix: NetAcme - abort process if failed to get LE directory.

    Updated: Manifest settings for new apps
    Add: Settings Template
    Improved: Embed code example in WebHandler Authenticate method
  • 10.06 - 11 September 2017
    Email: Added check on Server Certificate name after connection has changed to TLS via StartTLS.

    Add: Testing checkbox and Bind to IP address to Settings Control Template. (Control template will need to be re-populated).
    Change: Improved method docs when calling a method with JSON parameters
    Change: Error -34 and Error -40 removed from Log (common, harmless errors.)
    Fix: Issue with xFiles / Jfiles on/off when generating method docs
    Fix: Filter in some Planners did not get applied.
    Fix: NetWholePacket template settings did not let you set server or client
    Fix: NetWholePacket did not crop correctly after receiving a packet.
  • 10.05 - 5 September 2017
    Fix: NetSimple.Send(string) method did not send string correctly.

    Wizard: Index Page options removed from Wizard
    Wizard: Height of wizard interface reduced.
    Wizard: Include Session Timer in Footer now on by default.
    Wizard: Code in WebHandler, Authenticate method now uncommented by default.
    Wizard:Fix: Hostnames default now includes quotes.
    Add: More embeds in NetWebServiceMethod.
    Add: If the web server is unable to open a port because it is held by another program then it will retry opening at 5 second intervals.
    Add: Messages that flow through Server ErrorTrap appear in the web server log.
    Change: Net:SSLListStringsize changed from 260 bytes to 4K. This means the new CLANET DLL MUST be deployed.
    Change: Tweak to GzipAll.Bat so type is only called if file exists.
    Change: ServerState.xml name changed to ExeName.State.Xml. This allows for multiple exes to live in the same folder and not interfere with each other.
    Fix: Default Button option did not work.
    Fix: If Required Session Level was set, but Required Session Level max was not set then Level test was not generated.
    Fix: ID for DisplayText fields could contain a colon.
    Fix: WebSockets, JavaScript client side did not parse new JSON response correctly.
    Updated: Performance procedure in Calculator (34) and \WebSockets\Server examples. (Note the embed code in WebServer proc)
    Fix: Calendar, Horizontal Planner, Right columns did not allow HTML in header.
  • 10.04 - 22 August 2017
    Wizard: Updated wizard to set new Port and Hostname settings.
    Add: Settings Control Template: Added WebFolder setting.
    Change: Web Server Logging control template tweaked for size to fit bigger window.
    Fix: ServiceMethod: Individual Strings for XML could parse poorly if the XML tag contained attributes.
    Fix: Settings Control Template allowed Certificates folder to be set, but server didn't see that setting.
    Fix: NetWebForm: Fields in same cell did not appear next to each other.
  • 10.03 - 18 August 2017
    Note: Upgrade document has been updated. Please read Web Server for important information.

    NetOAuth: Fixed example for FaceBook login (had a wrong URL).
    NetOAuth: Added pAccessTokenGET to oAuthParametersGroup.

    Added: Warning message on Startup if Secure Port is set, but Domain List is empty.
    Fix: jcanvas.js was not included in all.js when combining files.
  • 10.02 - 15 August 2017
    Add: _NT10_ Conditional compile. This allows code to know if this is version 10, or an earlier version of NetTalk and have different versions of code.
    Add: NetLDAP: SearchPrefix property gives more control over searches. (Thanks to Sean Hennessy)
    Change: NetLDAP, ReqSearch method name changed to Search.
    Change: NetOAuth: rCode field length in oauthParameters group set to 2K.
    Fix: Email: ParseEML method didn't load
    Fix: NetOauth truncated UserLogin URLs > 256 bytes

    Deprecated: Support for jQuery Mobile. Support is turned off by default, if you need it turn it on on Global Extension, WebApps tab.
    Add: Default Layout Method choices for browses and forms
    Add: Support for automatic generation of Intranet Self-Signed certificates
    Add: Support for LetsEncrypt automatic Internet certificates.
    Add: NetWebServer Controls Control template
    Add: Secure server can listen on a insecure port and do automatic redirections.
    Add: embed, After Duplicate Detected
    Add: embed, WebServiceMethod, after dup detected on insert
    Add: CertificatesPath property
    Change: global certificate/key settings removed. Use "required" naming convention.
    Change: Global CSS settings, for tables/divs moved to their own tab.
    Change: Some Android does not like files that start with $$$. Auto-delete prefix changed to @@@ or $$$. Generated files (like reports) changed to generate @@@.
    OpenSSL.Exe added to copy to release folder, and added to distribution requirements.
    Change: Host Names, and Ports moved to template General tab. Class sets secure and insecure ports at the same time.
    Moved: Option for Pinch-Zoom moved to global, WebApps tab. Default now on (for new apps.)
    Remove: _alwaysRedirect and _RedirectToHttpsPort properties
    Internal: property renamed to
    Fix: Regression in 10.0 release, browse-row-highlighting stopped working.
    Fix: HandleOptions was returning a blank packet.

    Updated Login procedure to call p_web.Authenticate

    Add: File User Option (in dict) NOSYNC to prevent a table from being generated into database.js
    Fix: Client Sync template code to use ThisPage
    Fix: table ID not unique enough for SPA's
  • 10.01
    Internal only, not released.
  • 10.00 - 28 July 2017
    Initial public release of NetTalk 10
    Add: NetWebSocket client .
    Add: NetOAuth Client
    Add: NetLDAP Client
    Add: NetMaps Desktop
    Add: NetDrive
    Add: New Method, CreateFolder added to _NetAll class.
    Add: New Method, Start to classes.
    Add: NetMakeHMAC to Utility Functions.
    Add: NetShowSend and NetShowReceive conditional compiles to all NetSimple classes.
    Add: NetWebHTTP Class, CreateAuthorisationStringOAuth1 method.
    Add: ProgressControl property to NetWebClient class (uploading and downloading.) See Progress.
    Add: NetWebClient methods, RemoveHeader, SetProgress
    Upgrade: OpenSSL to version 1.1. New DLL names. See Deploying a TLS Client or Server.
    Change: NetWholePacket support moved into new class from NetSimple. See NetSimple Upgrade details.
    Change: Major Refactor to NetWebClient. See NetWebClient Upgrade notes.
    Add: Global Extension, Options tab, Maps Tab.
    Change: Values of equates Net:Ok and Net:NotOk swapped to match other products. Should have no impact on code.
    Change: Value of equate net:proxy changed from 1 to 2.
    Removed: Deprecated method _GetContentType - Use GetContentType instead.
    Deprecated: EncodeWebString and EncodeWebStringLength methods.
    Deprecated: CreateGMTDate method. Use CreateUTCDate instead.
    Deprecated: Net:SimpleWholeDataPacket equate. See NetSimple Upgrade details.
    Deprecated: NET:SSLMethod3TLS, NetSSLMethodSSLv3, NetSSLMethodSSLv23,NetSSLMethodSSLv2. See NetTalk 10 Upgrade notes.

    Add: Support for Range header in requests.
    Renamed:, renamed to
    Moved: WebServer : Default Form Tab Type to Defaults\form tab from \Styles\Form tab.
    Add: Webserver procedure: Styles\Tables
    Add: NetWebForm: Support for Partial saves. (ie Save and keep form open.)
    Add: nt-lookup-entry class added to Lookup buttons (browses and forms)
    Add: nt-lookup-entry class added to Date Lookup buttons
    Add: WebServiceMethod, specify if return should be formatted for compactness or readbility.
    Add: RefreshCache button to WebServerPerfomance control template.
    Add: SetHostValue can take a Group as a second parameter. Same as calling SetHostValue for all the fields inside the group.
    Add: WebSocket data added to Log with WS "verb".
    Add: WebSockets Queue updated when SessionID is changed.
    Improvement: NetWebServerMethod handles Private fields if a Group is selected.
    Change: DatePicker lookup changed to match lookup button.
    Change: _GetContentType method renamed to GetContentType
    Change: WebServer, FormMethod property now .site.FormLayoutMethod; ChildrenMethod property now .site.ChildrenLayoutMethod
    Change: Removed trailing <13,10> from test for NetWebServer at top of Static pages.
    Removed: NetWebSockets no longer requires Cryptonite.
    Refactor: CreateImage, CreateDateInput, Escape, to use StringTheory.


Version 9

  • 9.31 beta 12 July 2017
    Add: embed point after setting loc:TabStyle on a form
    Fix: NetWebRequestMethod. When using a Table for a parameter, and incoming is XML then xml.PrefixChar needs to be a _.
    Fix: CSS z-index bug in date selector popup.

  • 9.30 beta 28 June 2017
    Fix: Issue with save button having no text, or styling.
    Change: Extended list of supported methods in HandleOPTIONS.

  • 9.29 beta 27 June 2017
    Add: Content types, 'form', 'multipart', 'soap11', 'soap12' to known content types.
    Fix: WebClient: Could close connection before data received.
    Fix: WebClient: Handles multiple cookie headers when getting a REDIRECT response.
    Fix: Imap - placeholder for empty parameter list
    Fix: FTP - Some servers drop the trailing ) when opening a Passive Data Connection

    Add: NetWebServiceMethod: embed point in PrimeParameters after ReturnType is set.
    Add: AccessControlExploseHeaders field to HeaderDetails.
    Change: InactiveTimeout set to 0 for web server.
    Fix: NetWebServiceMethod: bug in template if return table is not the same as parameters table.

    Change: NetTalkClientSync template. Update TimeStamp and UpdateServerTimeStamp changed from checkboxes to expressions.
    Change: Inactivetimeout set to 0 to allow for long processing on server side.

  • 9.28 beta  8 May 2017
    Add: Utility Functions document updated.

    Fix: FTP: Trailing spaces from commands removed.

    Add: NetWebServiceMethod: If a parameter maps to a local GROUP, then a non-xml/non-json request can make a simple data request with just the components of the group.Change: NewWebBrowse: Setting ActualSelection to DefaultSelection is now done in SetSelection routine on a browse.
    Add: StringTheory form of GetHeaderField added to NetWebRoot class.
    Change: NetWebServiceMethod: Setting Method Return name to ! means the json will be constructed with no response name.
    Fix: NetWebServiceMethod: Setting JSON type on Returns Tab for FIELD and STRINGTHEORY types had incorrect drop-down string.
    Fix: NetWebServerBase.AddStyle did not check for https.
    Fix: Some fixes to jquery.nt-osk.js for cycling keyboards.
  • 9.27 beta  8 May 2017

    NOTE: If Using jFiles then an update to Build 1.41 is required.

    Fix: NetWebClient.CheckIfChunkComplete did not calculate the end of the chunk correctly.
    Change: NetWebClient: default value for CARootFile set to 'caroot.pem'
    Add: FTPClient : _HandleGetDirListingReplies allows for return code 250 (used by OS/400)

    Add: Allow-Origin Header template setting.
    Add: NetWebServiceMethod : Template setting for JSON type on FIELD and STRINGTHEORY return values.
    Work-Around: PTSS 42444. Added Template Setting for Blobs in View. (on by default.)
    Fix: If form has default action, then don't repeat default setup on event "gainfocus".

    Add: Error managing improvements to Client Sync Window
    Add: Client Sync Windows sets jsonClass.ExportBlobsWithView property.
  • 9.26 beta  20 April 2017
    Add: Start method to NetAll, NetSimple (currently empty).
    Fix: Regresssion in Webclient parsing content-length in reply header.

    Change: ColorWeb returns a blankstring, not #000, if p_color is blank.
    Change: GetHeaderField moved up to NetWebRoot class from NetHTTP class.
    Fix: Fixed regression in introduced in 9.25.
  • 9.25 beta 13 April 2017
    WebClient: _PageContentLen property changed to PageContentLen
    WebClient: Incoming page now set to completed when chunked block length 0
    WebClient: New method Start() to reset object to virgin state.

    All: Updated NetDemo example to reflect property name change from  _PageContentLen to PageContentLen

    Add: Added code to to set default for media with no extension, or unrecognized extension to be treated as HTML.
    Change: Loc:FilterWas extended from 1024 chars to 4096 chars
    Fix: The workaround to jQuery no longer allowing HTML in headers failed on the second form open.
    Update: Updated file to version 0.99 from 0.96
  • 9.24 beta 4 April 2017

    NOTE: If Using jFiles then an update to Build 1.39 is required.


    Change: The SessionID Cookie Name is now different for secure and insecure sites.
    Fix: NetWebServiceMethod: PrimeRecord routine when xml=0 and json=0, did not handle array values.
    Fix: ErrorPage example updated - WebHandler embed got orphaned.
    Fix: Items in Drop lists with a (specifically set) blank description displayed the value field.
    Documentation Update: Mixing Secure and Insecure parts of the web site.

    Code generated into ClientSync code did not work well with Formatted Arrays.
  • 9.23 beta 30 March 2017
    Add: Example : WebSockets (82)
    Fix: CSS issue in Accordion / Taskpanel header.
    Tweaks to the NT Wizard.
  • 9.22 beta 28 March 2017
    Add: NetWebHttp: New Method DontSendCookie to "not send" a cookie - ie remove it from the local Cookie queue.
    Fix: Email: EmbedImages method didn't filter out https:\\ images, only http:\\ images.

    Add: Delete Session Immediately option added to NetWebService and NetWebServiceMethod.
    Add: Include ServiceResultQueue option to NetWebServiceMethod.
    Add: Refresh Header on Save / Refresh Footer on save settings.
    Add: Assorted embeds to NetWebServiceMethod
    Change: APIs called with insufficient credentials can get a 401 error instead of a blank return.
    Change: Performance Monitoring Control Template updated to include counter for WebSocket connections.
    Update: navigator.mozGetUserMedia has been replaced by navigator.mediaDevices.getUserMedia
    Fix: WebSockets didn't like watching multiple things on an already open connection.
    Fix: WebSocket fields on popup forms did not refresh when the form was opened.
    Fix: Legacy problem in WebHandler when all derived methods generated.
  • 9.21 beta 2 March 2017
    Change: WebClient: Length of Authorization, and ProxyAuthorization properties lengthened from 1024 to 2048.

    New: SSLMethod Equate, SSLMethodMaxOnly.
    Add: SetSessionHost, GetSessionHost methods. Sessions now restricted to same Host.
    Updated: jQuery version from 1.11.0 to 1.12.4
    Change: p_web.SqlSync now triggers call to p_web.SqlWait, p_web.SqlRelease allowing for local override of Sql sync strategies.
    Change: HTTP responses no longer include Server or Version in the header.
    Add: Dictionary Field Option, NETAPI

    Fix: NetSyncClient - was not deformatting fields correctly.
  • 9.20 beta 27 February 2017
    Change: Default for NetWebClient changed from HTTP/1.0 to HTTP/1.1
    Change: Email Template. Email tab. New option (on by default). "Embed Local Images". If on then the HTML part of the mail will be parsed before sending. If it contains any "local" images, then those images are automatically "embedded" into the email for you.
    Change: NetWebClient - did not respect keep-alive from server.
    Change: SMSParametersGroup extended pMessageText field from String(170) to string(1000)
    Add: NetMakeHash function.

    Add: Net:NoAction equate which can be used in form when setting ans value.
    Add: NetWebServiceMethod: New embed point above localdata.
    Change: "Use TLS to make Web Server Secure" setting in WebServer procedure is now an expression so can be set at runtime.
    Change: NetWebServiceMethod - when returning Queues hand-coded queue names can be entered.
    Change: NetWebServiceMethod - Token overrides session value even if SessionID already set.
    Change: Garbage collector does not consume all threads if lots of sessions are waiting to be deleted.
    Fix: Projecting Groups into VIEWS could result in bad rows for END.
    Fix: Watch scope setting in NetWebSource procedure had a typo.
    Fix: Browse Footers, on browses with multiple lines per record, generated extra cells.
    Fix: Critical section moved in NetWebServer._SetSessionLoggedIn
    Fix: Browse settings and web socket queues not moved when SessionID changes on Login/out.
  • 9.19 beta 2 February 2017
    Change: NetWebServiceMethod: When doing a sync ServiceResult Queue is not sent back.
    Fix: NetWebServerMethod: Some properties were being set for json not jsonresults.
    Fix: NetWebServiceMethod: When doing a sync prefix is forced off, even if template setting is set with it on.
    Fix: NetWebServiceMethod: WSDL used the same response tag for all methods in the service.
  • 9.18 beta 25 January 2017

    Important Note: New file dh2048.pem added to general server distribution.

    CAROOT.PEM file updated.
    WebClient: Cookie Value length extended from 1024 bytes to 8192 bytes.

    Add: When sending a 401 response, because login is required, suggest Basic or Digest authentication required.
    Add: All External resources must be HTTPS template option.
    Add: (DLL) Support for DH and ECDH Ciphers. DH Requires dh2048.pem file.
    Add: Work-around for filter assignment bug in IP Driver. New method .AssignFilter used to assign filter strings.
    Add: Set of rules for determining the ideal response format (XML or JSON) when replying to an API.
    Change: No longer send a 401 when SSL is required to serve a page. Rather just close the connection.
    Fix: Default form behavior for actions not requiring values (Insert/Copy)
    Fix: Call json.start() at beginning of BuildResults routine. (NetWebServiceMethod).
    Fix: WebServer Digest Authentication removes trailing / from GET to match Webclient approach.
    Upgraded: Default Server Cipher List updated to


    Fix: Disconnected Web, JavaScript had problems with Insert which caused a knock-on effect into form behavior.
    Updated (internal): nt-idb JavaScript changed to put results in a parameter, not the database structure.
    Updated (internal): jquery.nt-form-ls JavaScript changed to use local record option, instead of database.record.
  • 9.17 beta 13 January 2017

    Recommend upgrading: StringTheory, xFiles and jFiles  (if you have them.)
    IMPORTANT Recommended Reading: NetWebServiceMethods : API Updates

    Upgraded: OpenSSL DLL's updated to 1.0.2j (

    Add: NetSimple.WholePacketSend which takes a StringTheory parameter instead of a String & Length.
    Add: pSSLMethod field to EmailParametersGroup
    Add: pSSLMethod added to FTPParametersGroup
    Email Examples: \Email\Demo and \Demo\NetDemo apps updated to set SSLMethod

    Add: NetWebForm, Button Onclick, setting for Table ID Value.
    Add: NetWebServerMethod. Parameter validation is now done based on the Action. So fields can be required, or optional, depending on the request being a READ or a WRITE.
    Add: NetWebServiceMethod: New embed point "Before Generate Help Parameters".
    Add: NetWebServiceMethod: For Table fields declared in the Dictionary with a Date or Time picture, but not a STRING data type, automatic conversion to/from text when importing/exporting table fields.
    Add: AccessControlAllowHeaders field to NetWebServerHeaderDetailsType.
    Add: Support for HTTP OPTIONS verb. (CORS support)
    Add: NetWebServiceMethod - Ability to set fields as "Private" for parameters extended to Queues.
    Change: NetWebServiceMethod: Default for Include Field Prefixes, for new parameters and return values, changed from true to false.
    Change: WebServiceMethods, Sync Return VIEWS Project all fields (including Memos and Blobs.)
    Change: NetWebServiceMethod: Support for XML and JSON can be controlled globally and locally.
    Change: NetWebServiceMethod: uses Loc:ReturnType to determine the format of the response, rather than p_web.RequestJson. Typical values are return:json and return:xml. The default is return:xml.
    Change: NetWebServiceMethod supports MEMOs and BLOBS (currently JSON only.)
    Change: Rearrangement of Tabs and Options on Second GlobalExtension.
    Change: NetWebServiceMethod: XML and JSON objects call START() before use.
    Change: NetWebServiceMethod: Simple requests format changed from double underscore to single underscore.
    Improvement: General improvements to NetWebServiceMethod automatic Documentation.
    Improvments: mFormat method gets pFlag parameter. Can prevent numbers turning into ##.##
    Fix: ID for table rows in NetWebForm could contain colons. Replaced with __.
    Fix: NetWebPage: Sets Content Type header if File set to OTHER.
    Fix: _BrowseIDQueue was not emptied when a session ended. Effectively leaked memory away.
    Fix: Remove double _UnEscape of incoming URL.
    Fix: In Reports, prevent progress value from being set to < 1.
    Fix: WebSockets: Multiple watch statements, done at the same time, could interfere with each other.
    Fix: Forms with a default action / default key fields, did not initialize correctly.
    Internal: NetWSDLClass added START method.

    Add: database.js: new properties: synctimer, deviceid.
    Add: database.js: new JavaScript functions: syncDatabase(), syncTimerOn(), syncTimerOff(),
    Add: If site is set to "auto sync on startup" then a 5 second delay occurs before the sync.
    Add: Simple support for a SingleRecordTable settings file.
    Change: Disconnected Desktop Apps support Auto-Formatting.
    Change: Disconnected web apps can sync to a different URL than the page server.
    Change: AccessControlAllowOrigin header defaults to * for apps generated in disconnected mode.
    Change: NetWebSync Client supports MEMOs and BLOBs.
    Change: database,js, version set to 1 not 0 if it does not exist. Some browsers do not like Version 0.
    Change: database.js: LONG's with a Date or Time picture in the Dict are set as String Fields, not numerics in the JavaScript.
    Change: database.js, new shortcut to record and resultset properties of each table.
    Fix: Couple of places where %Field was being used instead of %FormId
  • 9.16 beta 24 November 2016

    Added 'msg' to list of known content types.

    Change: Image Width and Height fields changed from longs to strings to allow for unit to be set as well.
    Change: Action after insert (return to form, insert again) now settable at runtime.
    Change: NetWebServerHeaderDetailsType, Location field expanded from 1024 to 2048 bytes.
    Fix: Insert after Save on forms not always reliable.
    Internal: Loc:FormOnSave

    Change: NetWebServiceMethod: defaults return view to TimeStamp order.
  • 9.15 beta 25 October 2016
    Email: (Regression 9.14) Hotmail email server choked on MessageID header not being clipped. Caused all emails going to a hotmail address to bounce.
    Add: Web Client: Get, Delete, Put, Patch and Post methods all accept a StringTheory object as the second parameter.
  • 9.14 beta 14 October 2016
    Email: Add MessageID property to sending emails. Added CreateMessageID method.
    SNMP: Added variations on LoadMIB method parameters. LoadMIB refactored.

    Add: Support for multi-valued keys to NetWebYear planner, data link to parent
    Add: Embeds Before Generate Help Description and after Generate Help Description in WebServiceMethod
    Add: SessionIDName property to WebHandler - let's you override name of SessionID cookie.
    Add: ReplyResponseString property. Like ReplyResponseNumber.
    Add: NetWebServiceDocs - Accept and Content-type header to all examples
    Fix: Really long sets of parameters could choke the compiler when generating method help docs.
    Fix: Headers for non-sortable browses did not get a tip.
    Fix: jsParm method did not handle     CR/LF.
    Fix: Browse Locators could fail in SQL if the fields being checked were too long.
    Rename: _SendMemory method to SendMemory. Add StringTheory variant of SendMemory.
    Update: Server-From-Blob example (File Download (40)) Updated with new code.

    Wizard: Add ClientSync extension to SyncServer app.
    Fix: Was possible for TimeStamp and ServerTimeStamp to be different (by 1) on Server
  • 9.13 beta 14 September 2016
    Add: SSLMethod option. NET:SSLMethodTLS_PCI . Limits the connection to those allowed by PCI requirement , currently TL1.1 and TLS 1.2.
    Fix: GetElapsedTimeUTC method used local date (not utc date) in calculation

    WebClient: New method, CreateGMTDate(clarionlocaldate,clarionlocaltime)
    WebClient: Fix: SOAPAction header was missing the : separator.
    WebClient: Change: ContentLength header included, even if it is 0

    Add: AppKey to MapQuest provider settings.
    Add: p_web.ReplyResponseNumber to allow specific numbers to be used (not just 200)
    Improvement: WebColor method accepts abreviated web color format (#FFF)
    Change: CreateImage will now generate even if src is blank.
    Change: The expiry date & time for a cookie is now automatically converted to GMT.
    Change: When using the net:f tag to inject a file, the file is automatically converted to utf-8 if the charset for the app is utf-8.
    Fix: Displaying an image, from a webcam, on the window was broken if no existing image existed.
    Fix: Parent, ParentRid, Refresh are preserved when multiple browses being updated on a form.
    Fix: WebService method Parameter problem if Rest parameter was a StringTheory object.
    Fix: WSDL didn't exclude prefixes even when parameters did
    Fix: Sending a Zero Length file when doing a file upload could cause problems.
    Fix: When using the net:f tag to inject a file into the HTML, the Byte-Order-Mark (if any exists) in the file is removed.
    Internal: ColorWeb, ColorClarion refactored to use StringTheory

    Add: ClientSyncControls template (ie desktop sync client) has template settings for Custom Fields.
    Change: Records in FileSync are sorted by timestamp
    Fix: Do not generate ALIAS's into database.js
  • 9.12 beta 20 July 2016
    Email: EmailParametersGroup extended with pSmtpUser and pPassword
    Email: New property, OptionsConvertHTMLToWeb. New Method ConvertHTMLToWeb.
    Email: New method, ProcessHTMLForImages
    WebClient: New version of ProcessEML method to take a StringTheory parameter.
    SMPP: Dobind method had an extra Return at the top.
    SMPP: Changed command_id property from Long to ULong.

    Add: Option to NetWebSource to make div wrapper optional.
    Add: Browse EIP option to set behavior of field when it is not editable.
    Add: WebServicesMethod, new embed point inside GenerateHelp Parameter and ReturnValue Loops.
    Change: Extended maximum row HTML from 16K to 100K.
    Change: Move "Turn off Pinch-to-zoom" option.
    Change: WebHandler PerfEndThreadTime method returns time taken, for easier logging in derived methods.
    Fix: Spinner field type on form and browse did not send an event to the server if the arrow was pressed, until the field was completed.
    Fix: WebServicesMethod, If Numeric Parameters had a default value that would be applied if the incoming value was 0.
    Fix: WSDL Generation did not respect new ReturnWrapper for XML.
    Fix: Incoming File Names, via Form File Upload type, could not contain a % in the name.

    Fix: Desktop Sync tried to Sync Alias files.
    Fix: Group fields generated bad javascript.js
    Fix: Handles Dictionary External Names which contain a | character.
    Fix: NetWebSyncClient method changed to use json.SetTagCase not just set the property.
  • 9.11 beta 17 June 2016
    Add: XForwardedProto property to p_web. Populated from incoming header.
    Change: p_web._ParseRequestHeader method renamed to ParseRequestHeader, now returns a long. If returns  Net:NotOk then request immediately terminated.
    Fix regression: loc:formname was not lower-cased (affects NetTalk Server)
    Fix regression: javascript error in database.js (affects NetTalk Apps)

    9.10 beta 16 June 2016

    WebClient: Automatically handle 401 response with Digest Authentication, parse Www-authenticate and re-submit request.
    WebClient: Added AuthUser and Password properties.
    NetSimple: Added method .Send(String) (handles strings of any length.)

    Security Update: CR/LF removed from incoming cookies.
    Add: Wizard to generate WebServiceMethods and WebService procedures.
    Add: Form Priming Tab: "From Location" section. Allows to prime fields from browser location settings.
    Change: Form template, Button settings moved from Layout Tab to new Buttons tab.
    Add: Form Buttons tab, added Text option to override default button text.
    Add: Form Table Row CSS template setting.
    Add: Methods to generate table, tr, and td boundaries for Forms and Browse Children containers. (or use div's instead).
    Add: Support for full hostname in the URL
    Fix: When map set to home to current location, home marker not displayed there.
    Fix: Form field, if JavaScript for onFocus and onBlur were both set, then onFocus was not called.
    Fix: on Browse loc:found now defaulted to one on some events.
    Fix: WebSockets would fail if payload was 126 bytes long.
    Fix: WSDL generator now treats pipe symbol the same as a ! (useful for field properties like | ReadOnly )
    Fix: If GenerateFormTag was off, but Form set back to Table, then loc:Formname generated incorrectly.
    Fix: If GenerateFormTag was off, but Form set back to Table, then the <form> tag did not generate.
    Fix: Prevent multiple entries being added to the SessionQueue with the same SessionID.
    Fix: Better parsing of SessionId / TabID (thanks to Matthew)
    WIP: Added p_web.FormMethod, and p_web.ChildrenMethod to choose between table and div layout.

    Add: Form Priming Tab, option to prime the field in JavaScript (for disconnected apps).
    Add: JavaScript utility functions today() and clock() (Helpful for JavaScript priming.)
    Add: Form Priming Tab: "From Location" section. Allows to prime fields from browser location settings.
    Fix: Generating database.js, sometimes doesn't find ts and sts fields.
    Change: in database.js, syncproc setting is now forced to lower case.
    Add: view and empty methods for each table, for easier debugging.
  • 9.09 beta 23 May 2016 
    Fix: WebClient, Digest Authentication, added an extra \ to the URI

    Add: JSON Wrapper and XML Wrapper options added to NetWebServerMethod, Returns tab. (instead of fixed value %procedure_response)
    Fix: Bug in Calendar JavaScript Widget would not show entries in planer other than first date.
    Fix: DisplaySessionValue for WebSockets needed quote chars added in template.
    Fix: If colon used in Display field name then HTML ID of the field contained a colon.
    Fix: Readonly on SPIN field now removes spin boxes from the field.
    WIP: ChannelValues for WebSockets, Chat form field type.
  • 9.08 beta 29 April 2016 
    Add: pServer, pPort and pReplyTo to EmailParametersGroup,
    Add: Email template support for pReplyTo
    Internal: Updates to NetWebHttp.EncodeWebStringLength


    Add: New embed points to ValidateInsert, ValidateCopy and ValidateChange.
    Add: WebServiceMethod procedure supports BLOB and MEMO fields.
    Fix: DUPLICATE on SQL driver tables clears BLOB fields.
    Fix: Refactored SSV routine in _SendFile to allow for JavaScript SetSessionValue to send values > 255 chars long.
    Internal: Added string parameter to CallDebug method.
  • 9.07 beta 18 April 2016 
    Change: Content type fox .xlsx files updated.
    Change: Email class parses headers where there is on <10> or <13> not the correct <13,10>.
    Change: If email Subject contains <13> or <10> then these are removed as not allowed.
    Fix: NetMem class, class definition, LinkMode and DLLMode were incorrect.

    Add: Template switch: Allow xHtml in Alert Message
    Change: Include Browse Updated buttons in 'parentnewselection' event.
    Change: Use COUNTA function not COUNT when exporting to Excel.
    Change: Use DivHeader and DivFooter to construct button set div's.
    Change: Spelling mistake in ErrorRecommendation field in ServiceErrorQueueType
    Change: _HttpHeaderSent property changed to HttpHeaderSent

    Fix: Browse EIP did not allow a + sign to be entered in string values.
    Fix: Drop Option view on form did not generate View relation correctly.
    Fix: Better allowed for Lookup Button IF setting containing a comparitive expression.
    Fix: Blob 0 based, not 1 based.
    Fix: Planner View - add key fields to view so they can be used in code.
    Fix: Planner with not-dates-on-top, but time on the left, did not handle extended slots well.
    Fix: NetWebServiceMethod could call InsertRecord:Tablename routine if sync was on but Insert was off.
    Fix: Suppress HTTP header in NetWebPage if Send Header set off.

    Add: NetWebSyncClient class properties: Token & CustomData
  • 9.06 beta 23 February 2016 -- Upgrade to jFiles 1.19 or later recommended
    Fix: SNI support for Web Client class fixed.

    Add: Tooltip support for menus and menu items.
    Change: NetWebPage: Moved security code checks to before files opened.
    Change: <meta> tag added in common header given a name attribute set to default.
    Fix: Session Values could be not-updated if value changed from very short to very long.

    Add: SyncErr Icon to ClientSyncControls template (Disconnected Desktop Sync Procedure)
    Change: All hand-code removed from sync procedure, now generated by template. (Disconnected Desktop Sync Procedure)
    Fix: addition of prefix_ to queue fields, for OVER support, caused jFiles to mis-match the fields.
    Examples: Disconnected Desktop Example, Desktop app, Sync Procedure updated
    Examples: Disconnected Desktop Example, Server app, Global Extension to set time stamps added
  • 9.05 beta 4 February 2016
    Examples: Apps examples back-ported to Clarion 8 so they can be opened in C8, C9 or C10.
    Add: NetWebServiceMethod: When BLOB field included in Sync procedure then it's declared as a String in the Queue, maximum size set on the Advanced Tab (default 1 meg).
    Fix: NetWebServiceMethod, when doing a sync, the VIEW being returned must always remove prefixes.
    Fix: NetWebServiceMethod, ReallyTheSame routine mis-assigned the time stamps.
    Fix: If dictionary version was not set then could result in a JavaScript error.

    Update: p_web.SqlSync property applied to Export button View, Browse EIP updates, NetWebServiceMethod,
    Update: Send Filter and Order to Debugview applied to Export button View.
    Fix: If NT9 Apps was installed, but jFiles was not installed, then compiling produced errors, even for plain web servers.
    Fix: Template was over aggressive adding .crt to certificate setting when the setting was a variable.
    Fix: When selecting the Export button from a child browse, the browse rid could be set incorrectly.
    Fix: Did not deformat months correctly when a month name was used.

    Fix: NetWebSocket.Inc and NetWebSocket.Clw files were not cleared in Desktop build.
  • 9.04 beta 19 January 2016
    Fix: _column_ parameter on browse row click had not been ported from NT8 to NT9
    Fix: Netweb.js file in 9.03 build was corrupt.
    Fix: In NetWebServiceRecord incoming queue for parameter did not handle OVER fields.
    Fix: NetWebService Method, generated documentation, did not show list boundary and record tags correctly.
    Change: NetWebServiceMethod, when packet coming in, on simple POST or GET, OVER fields could get cleared if last field was not set.
    Change (Internal): NetWebServiceMethod, in queue declaration prefix record separator changed from : to _
  • 9.03 beta 27 January 2016
    Add: Watch tab to NewWebPage template settings
    Add: HostValue and Socket support for Form String & Display Fields
    Add: ntWatch method to class
    Improvement: SetSessionValue doesn't change the value if changing to the same value.
    Fix: PreCopy routine called the Prime expression twice instead of using just one value.
    Fix: [regression] Sessions would time out within a minute regardless of session timeout setting.
  • 9.02 beta 7 Jan 2016
    (includes updates from NetTalk 8.70 through 8.71 - see separate release notes below)
    Add: Support for Banned connections.
    Add: pHide property in EmailParametersGroup
    Add: SOAPAction header property to Webclient class.
    Improvement: Copes with the custom header better if it has a trailing <13,10>.
    Fix: Email: _ExtractHeaderPart could return an incorrect value if the attribute did not exist.
    Refactor: NetWebClient._CreateRequestHeader refactored with StringTheory.

    Add: Support for Host Values.
    Add: Support for WebSockets. [WIP]
    Add: Support for custom JavaScript and CSS for the Edge browser.
    Add: ServerThread property to NetWebServer object.
    Add: WebServiceMethod, Setting to include Field Prefixes in Parameters and return structures.
    Change: UserAgent property set to 'edge' for Edge browser.
    Change: Formatting of date and time in Web Logs (including Log file name) now includes leading zeros.
    Change: Ban button added to Logging control template, Unban button and list added to Performance control template.
    Improvement: Performance variables are updated for display on the screen more immediately.
    Cosmetic: WebServer procedure, Scripts tab, new layout.
    Fix: Secure apps upgrading from NT8 would not have the new field "Private Keys" set correctly.
    Fix: Better handling of OVER when creating Queues from tables in WebServiceMethod.
    Fix: Web Log had a spurious , after the <result> tag.
    Fix: loc:Scaleoptions for map did not clear correctly.
    Fix: loc:Options was not cleared before a Slider control, some Date controls, and some HTML Editor controls were created.
    Fix: TableAction was set incorrectly in UpdateRecord:table routine
    Fix: NetWebServiceMethod: incorrectly tried to add a record if update failed when action <> sync.
    Fix: _PerfEndThreadtime could get an index out of range at _exactly_ midnight.
    Fix: Redactor dialogs (add link, add image etc) did not work correctly when on a popup.
  • 9.01 beta 9 December 2015
    (includes updates from NetTalk 8.66 through 8.69 - see separate release notes below)

    Add: Form Popup Open Animation - Global and local settings.
    Add: Form Popup Close Animation - Global and local settings.
    Add: Browse Popup Open Animation - Global and local settings.
    Add: ntPlanner method for interacting with the ntPlanner widget.
    Add: Browse Popup Close Animation - Global and local settings.
    Add: NetWebService, Debug Option, Write WSDL file to disk when it's fetched by a client.
    Add: Mime types for .appcach, .apk, .ipa, .xap added
    Change: Form Layout Tab Popup Options, Window Width and Top Offset options no longer just in Pixels.
    Change: Browse Options tab Popup Options, Window Width and Top Offset options no longer just in Pixels.
    Change: NetWebYear template, Popup Options, Width and Top Offset options no longer just pixels.
    Fix: Calendar can be hidden or unhidden
    Fix: OnClick JavaScript for menu items was not generating correctly.
  • 9.00 alpha 3 (12 November 2015)
    (includes updates from NetTalk 8.62 through 8.65 - see separate release notes below)

    Add: Support for Server Name Indication.
    Add: Buttons on "Performance" tab for setting options quickly.
    Add: Support for Last In Cell option on Browses.
    Add: More embed points in Browses.
    Change: Code in ExportToExcel routine is not generated if Export is set to no for the browse.

    New Example: \examples\NetTalk\Apps\DisconnectedDesktop
    New Control template for Desktop Sync procedure (NetTalkClientSyncControls)
    New Global Extension template for ABC programs (Server and Client) acting in disconnected way to set TimeStamp fields.
    New modules, NetSync.Inc and NetSync.Clw (NetDesktopSyncClient and NetWebSyncClient classes)
  • 9.00 alpha 2 (18 September 2015)
    New Email Demo Example

    Wizard changes to support mobile apps and sync apps.
    JavaScript Apps files included in build.
  • 9.00 alpha 1 (16 September 2015)
    Alpha release of NT9
    Can set case of fields in complex structures when returning from NetWebMethod


Version 5.00
  • Added support for receiving of email with the HTML MIME part Base64 encoded.
  • Added: support for receiving email from mail clients that set the ContentID field for attachments (previously these would have been treated as embeds even if the Content-Disposition was not set to attachment).
  • Fixed a potential GPF when receiving email with encoded header fields.
  • Fixed embedding of images with spaces in the the file name for improved compatibility with Microsoft Outlook and other mail clients that do not allow this.
  • Added a new NetEmailSend.EmbedImages() method converts all links to local images in the message HTML to the correct form for embedding and builds the string containing the embedded file names automatically. Image embedding can now be handled with a single line of code:
        EmailSender.embedList = EmailSender.EmbedImage(messageHtml, True, '')
  • Optimized embed list parsing.
  • Added support Content-Types where the file extensions is more than three characters.
  • Added bounds checking for content type parsing.
  • Fixed: NetWebClient Post() allocating an additional 4 bytes when the posted data was larger than a single packet, resulting in an invalid Content-Length, and 4 bytes of additional data send (containing spaces).
  • Fixed: NetEmailReceive(): When receiving attachments where the mail client appended additional information to the Filename field, that additional information would be included in the file name. The most common instance of this was "; size=" being appended to the name of the attachment.
Version 4.37 (Gold) 10 August 2009
  • Fixed other-button error that affects IE users.
  • Fixed problem with form fields, containing + and % chars, on a form with a file upload field.
  • Fixed Multi-Proj support for Clarion 7 (library names.)
  • Fixed bug where there was a space char in unique key components, and children existed.
  • Added support to NetWebSource so if there's a timer, and the procedure is a child, then it'll update correctly.
  • Added no-cache header stuff to generated error page.
  • Added template extension for PDF-Tools report version 4.
  • Enabled template options to set classes for buttons in a browse.
  • Added optional Class parameter to CreateImage method
  • Fixed bug where connection was closed before sending browse click response.
  • Fixed support for spanning header columns with server-side sorting
  • Added width and span parameters to CreateSortHeader method

Version 4.36 (Gold) 9 July 2009
  • Cosmetic template bug for ABC-In-Legacy support fixed.
  • Added option to Close Apps control template to set INI name.
  • Added detection for MSIE 8 as distinct from MSIE 7.
  • Fixed bug where invalid xhtml characters were included in creation of JavaScript browse object.
  • Fixed error with selection-by-radio browse.
  • Set fields to clear alert_div even if auto-dict validation is off.
  • Added optional Class parameter to CreateImage method.

Version 4.35 (Gold) 22 June 2009
  • 'Buttons' class option on CSS tab for browse and form deprecated
  • Fix bug where CommentsClass on a form was overridden by global setting.
  • Added iphone as a recognized "mobile" agent.
  • Worked-around bug in IE7 and IE6 that does not set Referer: header when doing a
  • Fixed template bug on Other buttons where action set to "Use Button Name".

Version 4.34 (Gold) 16 June 2009

  • Fix for possible GPF in SSL close code.

Version 4.33 (Gold) 9 June 2009


  • Fixed bug when using a form embedded on a static page, and the form was submitted with invalid data multiple times.
  • Added optional CLASS parameter to CreateSortHeader method.
  • Added Capitalize method. This enforces CSS style text-transform capitalize. Not it does NOT LOWER any characters.
  • Added template setting to specify port which an unsecure object should redirect to.
  • Fixed bug with incorrect tab selected after form validation if hidden tabs exist.

Version 4.32 (Gold) 22 May 2009

Release build, and first gold build of NetTalk 4.

Version 4.31 (Beta)  15 May 2009



  • Note: The netweb.css file, and netweb.js file have been tweaked quite a bit in this release. If you have customized versions of these files you may want to compare the changes and apply where necessary to your files. The .JS changes are mandatory, the .CSS changes are, as usual, optional.
  • Updated: Example: Buttons (28) to show server side code on a button. Includes refreshing a cell, row or browse.
  • Add: New example: WScriptActiveX (45)
  • Add: New example: Timers (46)
  • Add: New example: Pages (47)
  • Add: New example: Tagging (48)
  • Add: New example: Locators (49)
  • Add: New example: MultiRow (50)
  • Add: New Example: Validation (53)
  • Updated Example 40 with Content-Disposition example.
  • Updated Example 47 with Form called directly from static page.
  • Updated example 20 (Multi-DLL) and extended docs.
  • Add: MouseOver feature in Browses. The row under the mouse is visually highlighted (as distinct from visual highlighting used for selections)
  • Add: Support for multi-lined browse records.
  • Add: Edit-In-Place on browse columns added.*** This may cause compile errors when upgrading. Please see note here.  [still todo : Lookup button functionality]
  • Add: 'Other' buttons in browses can now trigger server-side code.
  • Add: Support for browse headers to span multiple columns.
  • Add: Support for browse data to span multiple columns.
  • Add: Removed extra browse column 1.
  • Add: Small animated "busy" graphic when browse is doing an Ajax update. *** NOTE section below on "Headers" ***
  • Add: Copy button and SmallCopy button to browses. Does an "Insert" but using the highlighted record to prime the fields.
  • Add: SmallOtherButton property and template settings.
  • Add: ABC Class support to NetWebBrowse, NetWebForm and NetWebSource procedure types.
  • Add: Optionally allow xHtml in Browse headings and sub-headings.
  • Add: Page title on browse and form defaults to header if blank. *** This may cause compile errors when upgrading. Please see note here.
  • Add: Allow xHtml setting for Form "Display" fields.
  • Add: Option to suppress children if browse called as a lookup.
  • Add: Clear button to Locator options
  • Add: Ability to set the browse table width in pixels.
  • Add: Field Validation setting for DROP controls on forms.
  • Add: Ability for XP-TaskPanel menu, to specify if the template defaults to open, or closed.
  • Add: Security Level support has been extended to >= as well as <=.
  • Add: Form fields validation tab has a new setting; "Immediate Validation". You can turn this on, off, or leave as Default. The default for the form is set on the Advanced tab of the form (and is on by default.)
  • Add: CSV files set the Content-Type to Excel.
  • Add: New form-field-type "Button". Same as Form-Field-Type "Display" with "Button" ticked on.
  • Add: Checkbox to allow xHtml in Headings & SubHeadings on Forms.
  • Add: checkbox (on Advanced tab) to turn off "auto-comment-suggestions". (Setting is on by default.) You can suppress comments on a single field by setting the comment to ''.
  • Add: DEFER attribute added to all <script> sections. Kudo's to Brian Ekeland for researching this.
  • Add: Before </head> embed added to NetWebPage.
  • Add: Sounds for valid and invalid field entry supported.
  • Add: Focus is reset to field if field is invalid.
  • Add: Specific support for Google Chrome browser.
  • Add: Support for setting case (Upper / Lower / Capitalize) for entry fields on form.
  • Add: Allow Hot-Fields from related files on a dropdown. Value & Desc fields can also come from a related file.
  • Add: Read-Only condition to individual radio buttons.
  • Add: Condition to suppress forms, browses, pages etc.
  • Add: Support to suppress DET "Data" tables.
  • Add: Security tab added to browse column settings.
  • When doing an Insert, in SQL, the browse returns to the most recently added record.
  • Change: NoWrap attribute added to browse and form styles. This prevents text from wrapping. Feel  free to override in your own styles.
  • Change: Improved CSS for Browse table - including Image background for header bar.
  • Change: Optionally allow a read-only lookup field on a form to display the "description" instead of  the "Code".
  • Change: Properties ImageW and ImageH in NetWebButtonGroup changed to ImageWidth and ImageHeight respectively to avoid conflict with Pro-Scan.
  • Change: Embed points in NetWebBrowse better organised.
  • Change: Improved template support for Checkbox values.
  • Change: Deprecated "not in view" template option on browse.
  • Change: Re-arranged template settings for buttons on a form to make it neater.
  • Change: Forms embeded on static (or NetWeb) pages initialize correctly when the page is not called from a browse.
  • Change: Browse Submit buttons allow you to set the "Action", rather than just using the button name.
  • Change: Generated one routine per form tab. This allows for very large forms (current largest I've seen is 180+ fields).
  • Change: On a form, the Field Priming has moved to it's own tab.
  • Change: InitForm routine in Memory forms should always be called at least once.
  • Fix: Horizontal lines on forms in FireFox restored.
  • Fix: Width of Dropdown entry fields respects setting.
  • Fix: Lookups work when lookup procedure is a form containing a browse.
  • Fix: String fields, with Boolean validation in dictionary, generate correctly.
  • Fix: Field Priming expressions are only calculated once.
  • Fix: Fixed a bug that cause the browses to break when used by FireFox 3. You can retro apply this bugfix to older NetTalk programs without upgrading NetTalk. See here for details.
  • Fix: Style applied to comment in form, even if comment is Spanned.
  • Fix: Dynamic Form Fields, with formatted pictures, improved.
  • Fix: _jsok method can now be called safely multiple times on the same string.
  • Fix: Special characters in Form Field Type "Display" handled correctly.
  • Fix: When using SQL backends, the form often "forgot" where to return to in the browse.
  • Fix: ReadOnly on Text fields (when HTML) now works.
  • Fix: Work-around for frame borders not visible in IE.
  • Fix: After specific lookup sequence, old checkbox field values might be restored.
  • Fix: Contains and BeginsWith Locators were broken.
  • Fix: Browse columns conditional settings now allow URL to Form setting.
  • Fix: Radio options on a form have unique ID's.
  • Fix: XPTaksPanel menu items would appear even if must be logged in was set to 1.
  • Fix: Two drop-downs, for the same field, generated VIEW names that were not unique.
  • Fix: Decoding __ to : was being applied to field contents, not just the field name.
  • Fix: Added / to name of scripts and styles to make the location fixed, not relative. Allows for static pages in other folders below the web folder.
  • Fix: Unknown Variable %translate could appear in some legacy apps when going to embeds.
  • Fix: CheckForDuplicates method not called if record is already invalid.
  • Fix: Browse column widths weren't being set correctly.
  • Fix: bug setting TinyMCE widths.
  • Fix: A browse spans all the columns on a form, even if the form has more than 3 columns.
  • Internal: Parameters for CreateSortHeader method changed.
  • Internal: Parameter to CreateTextArea method added.
  • Internal: Parameter to _jsok method added.
  • Internal: StoreValue method takes optional ValueName parameter.
  • Internal: _CopyValueToSession method takes optional SessionValueName parameter.
  • Internal: New method, FormReady
  • Deprecated: "Maintain Sessions" on Menu and Frameset has been removed.




  • Add: NetBase64DecodeEx & NetBase64EncodeEx functions
  • Add: NetWebSMS Class, which allows SMS (Text) messages to be sent via an HTTP connection. Currently supports sending via Clickatell.
  • Add: NetWebSMS method: BuildSMS(), SendSMS() and PageReceived()
  • Change: WebClient.EncodeWebString method now takes optional length parameter.
  • Change: NetWebClient, _CallPageReceived method, checks for https and http.
  • Change: WebClient Cookie property extended to 4K.
  • Change: WebClient Referer property extended to 4K.
  • Fix: NetRefresh for Legacy apps.
  • Fix: FTP Control template sets passive mode flag correctly, and initalises ftp object correctly when in ftp mode.
  • Fix: NetWebClient.DecodeWebString method had limits to the length of string that could be decoded. (Thanks to Mark Goldberg for coding the fix.)
  Notes: Possible compile problems when upgrading to Version 4.31

1. Local Variables in the TITLE of a page

It's good for web pages to have a Title. But it's a pain to have to fill in the Title field for each browse and form. So starting with version 4.31, if the Title is blank, then the page "Header" setting will be copied into the title field for you. Alas, this can cause a problem if your Header is not a constant string, but is a variable. The Title field is generated into the WebHandler procedure, and if you have used an expression, such as a session value, or local variable, then you'll get a compile error when compiling the Web Handler procedure.

Solution 1: For the offending procedures, explicitly set the title different to the header. Set the title to a constant value, not using a local variable. At the very worst set it to '' (quote quote).

Solution 2: If your NetTalk Web Handler object (ie the NetTalk extension to your WebHandler procedure, has the This Object Name set to p_web rather than ThisNetWorker, then you can still use Session Variables in the title.

 This is the NetTalk extension in the WebHandler Procedure

2. Duplicate Use Equates for browse columns.

Browse columns, like FormFields, have a Use Equate setting. This setting should be unique for each column, however in earlier versions of NetTalk settings that were not unique did not cause a problem. In version 4.31 the setting must be unique. This mostly affects browses that have multiple "Other" buttons.

Solution: If a browse procedure generates a compile error then make sure all the columns in the browse have unique equates.

3. Menus Start Open

If you are using xpTaskPanel menus then there is a change you probably want to know about. Although not a compile error, it is sufficiently different that you'll notice it immediately. In version 4.30 and before the xpTaskPanel always opened the top menu, and the others started closed. There is now an option on the Menu template that lets you specify, for each menu, if the menu should start Open, or Closed. This defaults to ON so ALL menus start Open. Adjust the template settings if you want to change this.

4. Embed code for each browse row doesn't run everytime

In version 4.30 and earlier there are 2 embed points right next to each other in the Browse. These are called Validate Record, and SetQueueRecord. In theory, ValidateRecord is used to filter out records, and SetQueueRecord is used to prime calculated row variables, or perform other Row manipulations. However since they were together code which should have been in SetQueueRecord was in ValidateRecord and vice versa.

In 4.31, these embeds have move to different places in the code, so their meaning becomes important. If you have code in SetQueueRecord that should be in ValidateRecord, or vice versa, then you need to move it to the correct embed for it to work properly.

5. Busy Icon, and Alert messages on Browses

In Version 4.31 a small "busy" graphic has been added so that when the Browser asks for an asynchronous update from the server, there is a visual indication that the browser is waiting. In addition a variety of "entry input issues" can now trigger a message to the user (typically written in RED).

In order for these to work, some extra stuff has been added to the "generic page" when a Browse or Form is called. Typically a NetWebPage has a <!-- Net:SomeHeader --> tag in it. So NetWebSource procedures, which contain Headers, now also contain a setting
"This is a Header".

In short, go to your NetWebSource procedures, which are headers, and tick on this option.


Version 4.30 (Beta)  17 March 2008



  • Add: Memory Form Variables are automatically copied into the Session Queue when a form is "Save"ed
  • Add: New option when priming fields on a form, you can limit priming to cases where the SessionValue does not already exist. Useful for priming fields the first time they are encountered, but "remembered" thereafter.
  • Add: New Example: LegacyGraph (41)
  • Add: New Example: SOAPServer (42) - Requires xFiles version 1.61 or later
  • Add: New Example: AccessLevels (43)
  • Updated: Example: File Download (40) - Blobfile structure changed.
  • Updated: Doc for creating Secure web sites has been updated.
  • Add: FILE protocol to NetWebPage. Allows for serving static files, from outside the web folder, easily. Beware of security implications though.
  • Add: Support for extension templates (like XFiles) that generate objects in NetWebPage.
  • Add: Border width property for Framesets.
  • Add: Ability to suppress PressedButton parameter on browse buttons
  • Add: Support for arrays when generating field validation based on C6. (Arrays are only supported in C6)
  • Add: New method, p_web.GetSessionIP()
  • Add: Session now (optionally) locked to IP address.
  • Add: More embed points to Validate routines in the Form.
  • Add  LogPath and UploadsPath properties to server. (see Paths)
  • Add: SessionLevel property - use p_web.SetSessionLevel and p_web.GetSessionLevel.
  • Add: Template support for Session levels to Advanced tab of all templates.
  • Add: Support for ViewOnly to NetWebYear
  • Add: Embed points if "More Assignments" done after lookup.
  • Add: WebLogName property to NetWebServer class. Allows you to set first part of weblog file name.
  • Add: AddLog method added to WebServer class. This adds the logging on the window, and (optionally) onto disk. You can call this method from inside the WebServer class using NetWebServer.AddLog('whatever'), and you can also call it from inside one of the other procedures using p_web.AddLog('whatever')
  • Add: Packet variable in Forms adjusts to size of largest text field if text field > 15K.
  • Add: Smarter setting of SetFocus when tabs are conditionally excluded. Also JavaScript errors caused by incorrectly setting focus to fields that do not exist are suppressed.
  • Add: On Form, can now set the CSS class for TabHeading different to MainHeading.
  • Add: property. p_web._title property removed. Template setting for setting site-wide page title added to WebServer extension.
  • Add: If a browse on a form, set to "Send new value to server" then the unique ID of the browse is now automatically stored in the session queue.
  • Add: site.PromptClass property, defaults to FormPrompt, is the default CSS class for prompts.
  • Add: Content-Length is set for static files being sent.
  • Deprecated UploadsDir and LogDir properties.
  • Change: Hard coded settings of ReplyContentType not use _GetContentType method.
  • Change: Example 40 - Serve Document procedure now handles all file types.
  • Change: Re-arranged the validation of fields, based on dictionary settings, so the correct tab is chosen if a field fails.
  • Change: Validation of Auto-Numbered fields, if the form is not pre-auto-numbered, is suppressed.
  • Change: If a record-not-available message is generated when going to the form, the error now displays on the client, not the server.
  • Change: Browse navigation uses POST rather than GET to avoid GET length limit in IE.
  • Fix: Cancelling from a Lookup window could result in child-browses losing their Insert/Change & Delete buttons.
  • Fix: Handled & and % characters in strings sent asyncronously back to a form.
  • Fix: %Family was incorrectly set for NetRefresh in Legacy apps.
  • Fix: In some cases an unknown %Translate were possible.
  • Fix: If a form was embedded on a NetWebPage than many of the routines (InitForm etc) did not get called correctly.
  • Fix: Must-Be-In-List validation was not, but needs to be, Case Sensitive.
  • Fix: Template code handles dict setting for MustBeInList where no choices are provided.
  • Fix: Turned "Must Be In File" validation back on.
  • Fix: Moved SessionPic outside IF statement in SetPics routine
  • Fix: Better support for deformatting @P pictures.
  • Fix: Duplicate check while doing an auto-incrementing Insert suppressed.
  • Fix: Cascading Delete Restricted Parent against Child.
  • Fix: Checkboxes set as Read-Only (or hidden) could be cleared when the form is saved.
  • Fix: Improved Green baring on browses using the Radio button selection method. Note that the Greenbar option has been removed from the template, if you wish to suppress green baring then set the One-Color and Two-Color the same on the CSS Classes tab.
  • Fix: Other Buttons in a browse, that followed a disabled-other-button were also disabled.
  • Fix: On Insert, After initial validation fails, if a checkbox is changed fro 1 to 0 the change was forgotten.
  • Fix: Browse color overrides not set correctly if browse opened first with no records.
  • Fix: Added SSL code to legacy template.
  • Fix: Add Login Required code to NetWebYear template
  • Fix: Browse-Inline buttons didn't respect the "Only call form if user logged in" setting.
  • Fix: Example 31, Browse Invoices, Filter when a child of UpdateCustomers was incorrect.
  • Fix: Tips for the Browse header weren't being Xhmtl validated.
  • Fix: In an incoming GET / characters after the ? were being flipped to \.
  • Fix: XHTML embedded "inside <head>" did a SendPacket, before the HTTP header had been sent.
  • Fix: CreateText method no longer has limit on length of the field.
  • Fix: If "Allow XHtml" was on for a browse column, but the picture was set to something other than '' (quote quote) then the html would not be applied.
  • Fix: In IE hidden form fields now "compress" just like they do in FF.
  • Fix Some browses could get duplicate records visible in some circumstances.
  • Fix: The .StoreValue method now takes Value Picture, and SessionValue Picture into account when storing the value.
  • Deprecated: Force Browse to fetch whole page option.
  • Tweak: Extra GET removed from _LoadRecord method.
  • Internal: _ParseFileName method name changed to _ParseURL
  • Internal: _TouchSession no longer calls _NewSession




  • Add: Option on global extension, advanced tab, to suppress call to CloseCallbackWindow.
  • Change: NET:64BaseMaxDecodedLength and NET:64BaseMaxEncodedLength extended. Base64 functions can now take (unencoded) strings up to 16K large.
  • Change: WebClient class respects .ProxyServer and .ProxyPort properties.
  • Fix: Rare possibility of leaking socket handles.
  • Fix: NetAuto compatibility with Vista added.
  • Fix: If NetBase64Encode, or NetBase64Decode were called with illegal length parameters a GPF was possible. Now the function simply terminates when the maximum length is reached.

Version 4.29 (Beta)  5 September 2007)



NOTE: Pictures now apply to Display fields. If you have used long display fields, you may need to set the picture to '' to suppress it clipping the string.

  • Add: Support for GlobalErrors class (for those who use the Procedure name from there)
  • Add: new example 39 - integrating with CapeSoft MessageBox
  • Add: new example 40 - demonstrates serving static files from BLOB's. Also demonstrates serving static files from folders other than the web folder.
  • Add: read-only option to Drop controls.
  • Add: property for "required" comment, p_web.Site.requiredText.
  • Add: Support for Insight Graphs in Legacy web servers added.
  • Add: Support for "Send new value to server" added to "Display" Form fields (Buttons, Images and Hyperlinks) even if the form field also has a URL.
  • Add: Auto-Complete option added to String and Date Form fields. Auto-Complete is automatically disabled if the field is dynamic, or is a password. Auto-Complete is optional to the end user, who can turn it off in his browser.
  • Add: Report procedures can be called as functionname.pdf as well as just functionname.
  • Add: Dictionary validation (on the whole record) has been added to the ValidateRecord routine.
  • Add: Before doing an Insert, or Update, Non-Autonumbering Keys are checked to see if a Duplicate will be triggered.Change: Ability to set CSS class for Display fields on form (without having to fill in Display Text).
  • Change: Client-Side tab simplified a bit. Move "refresh: Prompt   Value  Server" into "Reset" list. Once done the options to specifically reset itself disappear.
  • Change: When the browse is called as a lookup, it's a lot smarter about what record it jumps to.
  • Change: All form elements (prompts, values, comments) are wrapped in a DIV which seems to solve some of the layout issues. In the past only dynamic form elements were enclosed in a DIV.
  • Change: Forms (containing a browse) can now be used as a Lookup URL. This allows for complex filtering on lookup browses. However note that none of the form fields on this lookup page should be a STRING with LOOKUP of it's own. In other words a lookup inside a lookup is not allowed.
  • Change: Hand-code HTML tabs changed to XHtml, since that's what it needs.
  • Added parameter to .RenameFile method, makes moving incoming files easier.
  • Fix: Browse Delete button could get invalid "Action" in some cases.
  • Fix: Add D06 and D02 to supported date pics (in addition to D2 and D6)
  • Fix: If a form field spans the prompt/value/comment columns then the prompt is top-aligned, not bottom-alligned.
  • Fix: Text fields can now be used dynamically (ie Send new value to server).
  • Fix: Before Div and After Div html embed points
  • Fix: Setting the Comments Class blank on a form could cause a compile error.
  • Fix: Headings, and Sub-headings can have special chars (eg <)
  • Fix: Translation added to Sub-heading on Browse.
  • Fix: If Allow Unfilled is on, then disabling of Next & Last buttons failed at end of file.
  • Fix: Disabling of buttons under IE just hid the graphic.
  • Fix: Blank, unfilled, lines did not take conditional columns into account.
  • Regression: fix use of %nFieldFile 
  • Regression: automatically format Display fields if picture set in dictionary.
  • Regression: a few examples needed a "touch" to compile correctly.

    to do: prime local variables when form set to memory.
    move local variables to session variables when form is "OK"d? 
    browse buttons



Version 4.28 (Beta)  9 July 2007)



  • Add: New method, GetHeaderField
  • Add: Div around Generated Form code.
  • Add: Ability to set Div name for Browse, and Form Procedures.
  • Regression: Locator on default sort order (when it has a picture set) corrected.
  • Regression: Issue with changing sort orders on browse fixed.

    to do: prime local variables when form set to memory.
    move local variables to session variables when form is "OK"d? 
    browse buttons

Version 4.27 (Beta)  6 July 2007)



  • New options in the NetEmailSend class: NetEmailSend.OptionsContentType  and NetEmailSend.OptionsMultiPartContent


  • Add: Support for Clarion's ABC translator, and the ADI Translation template, for
    Global button text, Form headings, Form prompts, Browse column headings,
    This work contributed by Ubaidullah Nubar
  • Add: This form called as Lookup option to Advanced tab of Browse. Use this when creating WebForms which contain a Browse, and the Browse must have a Select button. [work in progress]
  • Add: Thread number now displayed in DebugView if you use p_web._Trace()
  • Add: Can now set the "must be logged in" setting for multiple procedures from the WebHandler procedure settings.
  • Add new method p_web.StoreValue('name'). This copies the "name" variable in the Value Queue to the Session Queue, if (and only if) it exists in the Value queue.
  • Change: In Browse, Picture now applies to "Display" field (if set) or to "Field" (if set). Before Picture only applied to Field.
  • Change: Deprecated ProcessBrowse and ProcessForm methods.
  • Fix: Browse columns can now locate on non-string pictures
  • Fix: Previous button now disabled in more cases where no previous records exist.
  • Fix: Code to determine primary sort order (to see if it matches a column) is smarter.
  • Fix: Calendar code is now completely self contained (no startup code required) so calendar field can be shown/hidden dynamically and lookup still works.
  • Fix: Locator field could get lost if a range was set.
  • Fix: "Server Code" button added to Client-side tab for Browse fields in a form.
  • Fix: Regression with Chrome menu in IE 6 with Icons on the menu items

Version 4.26 (Beta)  June 2007)

Shameless Plug: John Hickey of Positive Software has launched NetTalk Central web forum where NetTalk users can hang out, swap tips and help each other. Although not affiliated to CapeSoft we support this venture and encourage users to check out the forum for themselves.


  •  "Smart Generate" option added to "Classes" tab for all Netsimple objects.
    This only applies to Legacy apps, and should only be ticked on in Clarion 6 or later. This option will make the generator generate the NetTalk object into newer (ABC) embed points, which means the generated code is smaller in Legacy projects.

    NOTE: If you are making a Web Server procedure, using the Legacy templates, then make sure this switch is ON in the WebHandler procedure.
1) NetWebServer
  • NOTE: the latest Web folder is installed to \clarion6\3rdparty\libsrc\netweb
    Copy this to your application folder after installing the NetTalk update.
  • Add: Support for Legacy report procedures, and (I think) CPCS report procedures. See example.
  • Add: Forms now have a variable, loc:act which is set to either InsertRecord, ChangeRecord or DeleteRecord. Expressions can use this to determine current form action.
  • Add: Ability to override CSS class for Prompt and Comment for individual form fields.
  • Change: Made blank tab headings more visible in list of tabs.
  • Change: .SetSessionPics, and .SetPics methods have been retired. Replaced with SetPics routine in form.
  • Add: Translation for the "Locate" prompt can be set in WebServer procedure, Advanced tab.
  • Add: Embed point into menu routine.
  • Add: New Short-hand method names, GSV and SSV for GetSessionValue and SetSessionValue respectively. Use either short, or long form.
  • Add: GetSessionValueLength method to return length of Session Value.
  • Add: GetValueLength method to return length of parameter in Value queue.
  • Add: New examples, 38 (Legacy) and 39 (LegacyReports) added.
  • Update: Chrome menu script updated to version 2.01
  • Reorganised docs a bit.
  • Fix: Could generate code for "SmallOtherButton"
  • Fix: "highlighted record" problem when Last or Previous pushed.
  • Fix: Values getting dropped when a lookup is done.
  • Fix: DATE and TIME data types were being treated as Alpha, not Numeric.
  • Fix: For time fields that were > 12:00, but didn't include am or pm.
  • Fix: Handled empty packets (with just a header) sent from a NetWebPage. Typically when sending a PDF or other static file from a NetWebPage.
    ** Those Who attended the World Tour, and added code to work around this issue can now remove the work around code **


Version 4.25 (Beta)  May 2007)

1) NetWebServer
  • NOTE: the latest Web folder is installed to \clarion6\3rdparty\libsrc\netweb
    Copy this to your application folder after installing the NetTalk update.

  • Add: New Page type "Other" added to NetWebPage template. Allows developer to set content type, HTTP header
  • Add: Option to override PageHeaderTag and PageFooterTag on Browse and Form templates.
  • Add: SetQueueRecord embed point to NetWebBrowse (same place as ValidateRecord embed.)
  • Add: Embeds to Menus, and MenuItems generated code.
  • Add: Fast-Style selection for Browse column totals.
  • Add: Span ability to Totals
  • Add: custom text ability to Totals.
  • Add: Various new embeds in Browse routines.
  • Add: Embed point in browse for overriding OnRowClick javascript.
  • Add: New example (36) which shows HTML editing.
  • Update: Example 4 updated to show variable URLs for FrameSet.
  • Update: Example 13 updated to show calling a report, from a browse, with the browse row acting as a filter.
  • Change: changed images\ in _CreateSortHeader to images/.
  • Change: Range fields are automatically added to the Sort order (if they aren't there already) to improve browse performance.
  • Regression fix: Auto-Lookup on Insert was broken.
  • Fix: 12:00AM now correctly translates to 0:00, not 12:00.
  • Fix: %AllowUnfilled error if web server is Legacy based.
  • Fix: Some buttons on IE did not disable correctly.
  • Fix: Tabbing issue in IE
  • Fix: Local variables on form could have an incorrect "size" parameter.
  • Fix: Added encoding to tool tips
  • Fix: Added encoding to sort header text
  • Fix: Problem with lookup loosing previously primed form fields.
  • Fix: Cancel button on form did not get correct JavaScript.
  • Fix: Position locator on descending sort orders.
  • Fix: When locating selected record was not always first row located.
  • Fix: If display field had a form field set, and text, then both were displayed. Now Text overrides form field.
  • Fix: JavaScript error which occurs in browse after resorting header.


  • Update: LinkPoint example to work with the current version of xFiles and ReadMe.txt updated.

Version 4.24 (Beta) 7 April 2007)

1) NetWebServer
  • NOTE: the latest Web folder is installed to \clarion6\3rdparty\libsrc\netweb
    Copy this to your application folder after installing the NetTalk update.

  • Add: Layout option to NetWebForm to suppress Prompt/Value/Comment columns.
  • Add: Option on individual Form Fields to "span" Prompt/Value/Comment fields.
  • Add: Ability to explicitly set form table width.
  • Change: Removed use of onLoad event, and swapped it for an embedded script, just before </body>. This removes the complications from using this event. However users of NetTalk in Static Pages should review the updated doc here.
  • Change: Example 25 extended to show browse, and child browse, inside NetWebForm. (Update Customers).
  • Change: Timer on NetWebSource template changed from 100'ths to 1000'ths to be consistent with browse.
  • Change: Extended MAXLENGTH for Time fields to always allow space for am/pm
  • Change: For time fields can use a / p instead of am/pm.
  • Change: All template prompts which are for a CSS Style name now say "CSS Class" rather than "Style".
  • Change: Form Field Styles "inherit" if they are entered with a leading space character.
  • Change: Internal change to way \ is encoded in _jsok method.
  • Fix: Removed ToolTip from calls to CreateStdButton
  • Fix: anArgs error in Javascript
  • Fix: Date Fields didn't generate Callback code correctly if only "Update Value on Server" was ticked.
  • Security Update: Larry Sands discovered this paper on JavaScript Hacking. NetTalk is currently NOT vulnerable because it is built on Rico. However to avoid the vulnerability from appearing in other code you might include, all Ajax requests MUST now include a SessionID cookie. This is done automatically, so there's nothing for you to do.


  • NetNewsReceive class updated to support XOVER command.

Version 4.23 (Beta) 26 March 2007)

1) NetWebServer
  • NOTE: the latest Web folder is installed to \clarion6\3rdparty\libsrc\netweb
    Copy this to your application folder after installing the NetTalk update.

  • Add: Support for tooltips (most of the work done by Chris Cordes.)
  • Change: Right-Justify option added to Form Field type "Date".
  • Update: To NetTalk Deployment document.
  • Change: Include Styles before Scripts when using <!-- Net:c:head --> tag.
  • Change: Show FormFieldType in list of form fields.
  • Change: Images are generated with AbsMiddle if the browser is Firefox.
  • Fix: Browser Timer was broken.
  • Fix: Lookup fields with a picture set was broken.
  • Fix: XSL files set content-type to text/xml
  • Fix: Div to allow embedded browses to update form.
  • Fix: Dynamic update of form fields where field equate <> form field name.
  • Fix: Removed $A is undefined error from prototype.js
  • Fix: Javascript Error when line-item in child browse clicked.
  • Fix: Added DocType to MakeErrorPage method.
  • Fix: If browse pages had an alternate name, they didn't work when set as children.


  • Install script tweaked to make it smaller.
  • FTP timeout support completed.
  • Added MSVCR71.DLL to the install set. This is required by the new SSL DLL's. If you get Error -73 "SSL Could Not Load SSL DLL's" then this file is probably missing from the machine.

Version 4.22 (Beta) 21 March 2007)

1) NetWebServer
  • NOTE: the latest Web folder is installed to \clarion6\3rdparty\libsrc\netweb
    Copy this to your application folder after installing the NetTalk update.
  • Add: More embed points
  • Fix: Regression with forms embedded on pages.
  • Fix: Added ; to bodyOnLoad.




  • SSL Libraries updated to v0.9.8e (built 23 Feb 2007)
  • Fix: Adjusted FTP code so that it doesn't timeout unnecessarily on large files.

Version 4.21 (Beta) 20 March 2007)

1) NetWebServer
  • NOTE: the latest Web folder is installed to \clarion6\3rdparty\libsrc\netweb
    Copy this to your application folder after installing the NetTalk update.
  • Add: "Right Justify" option for entry fields.
  • Add: Ability to override CSS class for form fields on an individual basis.
  • Add: "Server Code" button to template, just after the "Send value to Server" checkbox.
  • Add: Buttons on a form are automatically disabled and refreshed after being pressed (if "Send New Value to Server" is ticked on.)
  • Add: Various Embed points.
  • Add: Better handling of @N picture types on Form.
  • Change: (Internal) form class code is simplified by using class concatenation techniques.
  • Change: Calculator example to show more techniques.
  • Change: File Upload example to show network logging.
  • Update: Documentation of examples.
  • Fix: Drop-down menus regression.
  • Fix: Regression breaking browse buttons if page is back-filled (ie last page).
  • Fix: Height of Taskpanel border was not being correctly observed.
  • Fix: PageBody Css class was wrong case (css names are now case sensitive).
  • Fix: If form is not the parent then validation failure returns to the parent.
  • Fix: Regression if override ButtonClass not set.
  • Fix: Problem with CreateImage if URL contains backslashes before the ?.


Version 4.20 (Beta) 12 March 2007)

1) NetWebServer
  • NOTE: the latest Web folder is installed to \clarion6\3rdparty\libsrc\netweb
    Copy this to your application folder after installing the NetTalk update.
  • Include: Example 34, missing from version 4.19
  • Add: Example 35, showing time fields.
  • Add: Ability to override "onLoad" JavaScript for a net web page. (see advanced tab).
  • Add: Template overrides for inline Browse buttons.
  • Add: Ability to set browse colors globally (Web server procedure, styles tab.)
  • Add: Ability to set browse greenbar, and highlight colors (on Browse styles tab) - note these colors cascade onto children.
  • Change: Smart time reformatting on form fields.
  • Change: Made blank line after form & browse heading and sub-heading optional.
  • Change: In Chrome menu, allow developer to override div name.
  • Fix: Tiny_mce.js wasn't included properly in all.js
  • Fix: Regression. Returning from child-form, and child-browse contained incorrect filter.
  • Fix: Handled very long browse lines.
  • Fix: Dynamically hidden fields are no longer validated.
  • Fix: Regression where child browses displayed incorrectly as parent opened.


Version 4.19 (Beta) (8 March 2007)

1) NetWebClient
2) NetWebServer
  • Change: On a Form on the Date type. The option to Refresh Window When Date Changed has been deprecated. You should use the Client-Side tab instead. If you get a warning during the Generate then go to the form, and untick the option.
  • Add: New example 34, shows dynamic fields on a form for calculator type screens.
  • Add: Buttons on a form support "client-side" updates.
  • Add: Support for editing HTML on a form using the TinyMCE editor. (See HTML checkbox for Text fields).
  • Add: Escape method.
  • Add: Implemented MaxLength attribute for form fields.
  • Add: Pages are now more compliant with XHTML spec. (ie XHTML DocType)
    NOTE: Style names (CSS names) are now Case Sensitive.
  • Add: Implemented Green-baring on drop-down form fields.
  • TIP: Note that drop-down form fields have a HEIGHT option. If this is set then the drop-down appears as a single-column list box.
  • Add: Fixed Pitch as a common browse column style.
  • Add: Support for multiple form fields on the same row on a form.
  • Add: Form type "Wizard".
  • Add: Ability to hide, and unhide, form fields based on other form field values.
  • Add: Hot Fields to Form field type "Drop".
  • Add: Support for Multiple option in Select lists.
  • Change: Added a DocType to the generated pages.
  • Change: DSP function in JavaScript only disables submit buttons if target is set to self.
  • Change: Session, and Value queues now accept (and return) data of unlimited size.
  • Removed: Some obsolete, unused, methods.
  • Fix: Passing a + in the URL of a GET or in a cookie, was mis-decoded as a space.
  • Fix: Checked for nulls in the RemoveElement javascript function.
  • Fix: If auto-lookup fields on a form were not on the first tab, then in some cases code was not generated for them.
  • Fix: Extended packet size in RegisterDiv method.
  • Fix: Added more SendPacket calls to menu, allows for bigger menus.
  • Fix: Conditional Browse filters, when using a file relationship, with a String field.
  • Fix: Secure page redirect missing a parameter.

Version 4.18 (Beta) (19 Dec 2006)

1) General
  • Fix: Derived NetTalk methods had RETURN statement being generated below the Procedure Routines.
2) NetWebServer

My thanks go to Jens Eden, Marius Røksund and Ubaidullah Nubar who assisted tremendously with suggestions, and bug reports during the creation of this build. Thanks to my regular testing team remain, as always, a key part of making sure the WebServer functionality continues to grow at a fast pace.

  • Feature: Explicit support for mail & link buttons in browse, and on form. (See new example 29)
  • Feature: Implemented static-page-pre-compression support.
  • Feature: Added option to combine all common js and css files. (Means faster load time for first page.)
  • Feature: Added "Session Timeout" as a template option - WebServer procedure / Settings / Advanced tab.
  • Feature: Added Hyperlink-to-Form ability to browse columns. (See Example 30)
  • Feature: Added options on Form Layout tab to explicitly set form column widths.
  • Feature: Added option to Browse template to allow explicit setting of browse column width.
  • Feature: Added support for Timer to browse.
  • Feature: Added Horizontal Rule as an option for Form Field Display type. (tip:set equate to something like sep1)
  • Feature: Added "Text" as an option for Form Field Display type.
  • Feature: Added ability to span prompt/value/comment columns with Display field.
  • Feature: Added Charset as advanced option on WebServer procedure extension template.
  • Feature: Added PDF as Page Type option on NetWebPage.
  • Feature: New example 33 shows how to make a browse filtered by a related file drop-down.
  • Feature: Added "Must be logged in" and "Must be secure page" options to NetWebGraph extension.
  • Feature: Added "IF" option to Required fields on a form.
  • Change: Ajax turned on for Safari users.
  • Change: Some pre-defined browse column styles supported directly by template. (RightJustify et al.)
  • Change: Hyperlink properties for a browse column moved to new HyperLink tab
  • Change: Select buttons suppressed on child browses.
  • Change: Cancel & Close buttons suppressed on child browses.
  • Change: Question W24 added to docs to describe how to edit the standard error page. (See new Example 32)
  • Change: Changed "protocol" option on NetWebPage, to "Page Type".
  • Change: Added a option to Form Advanced tab, allowing View buttons to be visible even if Change buttons are also visible.
  • Change: File uploading now stores the short path to the uploaded file in the form field (after the form is submitted.) If the upload field is empty (ie nothing uploaded) then the existing file:field is not cleared. (See example 26)
  • Change: If a person enters a value into a lookup field, and presses Tab, then the focus skips over the lookup button and goes to the next input field.
  • Change: Uses TotalStyle, or BrowseFooterStyle in blank footer cells on browses.
  • Fix: Allowed lookups, from forms, to include child browse, which include the form file.
  • Fix: Better button support for Safari.
  • Fix: Enlarged loc:rowstyle variable
  • Fix: More Assignment after lookup, if destination field was not a field on the form.
  • Fix: Drop-list items handle special XML characters on refresh.
  • Fix: Allow styles to be set for Xp-Taskpanel menu via template.
  • Fix: Report "No records" popup message fixed.
  • Fix: XML header not being sent with NetWebPage in XML mode.
  • Fix: Small Select button, with a condition (generate error).
  • Fix: Field pictures could get lost doing multiple lookups on a form.
  • Fix: (regression) Radio buttons no longer read-only.
  • Fix: Removed excess " characters when generating META tag.
  • Fix: Better support for pictures on Form Fields.
  • Fix: June changed to Jun in _Splittime method.
  • Fix: bug in _SetUserAgent that incorrectly set the UserAgent if a form field called Opera exists.
  • Fix: declaration of CreateButton in too long for C5. Have shortened it.
  • Fix: In IE if an entry was typed into a lookup field the Focus got "lost".
  • Fix: Bug where "Bind to IP" didn't always work.
  • Fix: Program flow could get lost when multiple children, or children on forms, existed.
  • Fix: Greenbaring after ajax update of browse now applied.
  • Fix: Corrected problem where Browser sends excess CR/LF at the end of a POST.

Version 4.17 (Beta) (24 October 2006)

1) NetWebServer

Important: These changes may affect your program and stop it from compiling

  • Change: button.text field changed to button.textvalue to avoid clash with Clarions XML classes. If you get a compile error on a line like
    p_web.SaveButton.Text = 'Login'
    then change this to
    p_web.SaveButton.TextValue = 'Login'
  • The Javascript (JS) and Style (CSS) files have been changed. Some Images (PNG etc) have been added. Copy these from \Clarion6\3rdparty\LibSrc\NetWeb\Web folder into your Web folder.
  • The CSS Buttons classes have been consolidated somewhat. For your buttons I recommend using MainButton class for most buttons, use SmallButton for the SmallInsert etc and LookupButton class for the Lookup, and DateLookup buttons.

The following changes should not affect your existing program.

  • Feature: Added Children tab to Browse settings. See new Examples 25 & 31.
  • Feature: Horizontal layout of Radio Buttons
  • Feature: Files submitted via the "File Upload" form field type are saved in the "web\uploads" folder. See new Example 26.
  • Feature: Autonumbering on Insert, now (if there are child browses) does the ADD and jumps into CHANGE mode. As long as the user "Cancels" or "Saves" you're ok. However garbage collection recommended.
  • Feature: New tab style added - "XP-Tabs"
  • Feature: New tab style added - "None"
  • Feature: New Menu style added - XP-TaskPanel. See new Example 27.
  • Feature: (some) Submit buttons change to Disabled after being clicked.
  • Feature: "Protocol" option added to NetWebPage. HTML (default) and XML protocols available. See new Example 29.
  • Feature: Added ability to override the Sort field for Server-Side sorting.
  • Feature: Added ability to set height of Accordion on Menu, and Form templates. Style Sheet tab.
  • Feature: Filters tab added to Browse settings, includes Ranges and Conditional filters.
  • Feature: Display fields on forms can now have buttons, images and hyperlinks
  • Feature: Added optional button to Locator
  • Feature: Added ability to position Search button before View button on browses in Lookup mode.
  • Feature: Added loc:action to form to be (optionally) used in header.
  • Change: Renamed ImageWidth and ImageHeight members of NetWebButtonGroup to avoid clash with Clarion previewer.
  • Change: On a browse, if the "Message if Empty" is blank, then the whole table is not sent.
  • Change: Better support for IE7 (distinct from IE6)
  • Change: If browse has a Change button visible, then the View button is suppressed.
  • Fix: Bug in style (netweb.css) which caused Menu to appear slightly lower, and right, of where expected.
  • Fix: Bug setting Field Equate when field is not a field in the dictionary.
  • Fix: Bug setting duplicate field in Browse prop:order, when using MsSQL
  • Fix: Browse buttons that stopped working, if the browse was inside a form, and the browse had been refreshed after a form-field change.
  • Fix: Browse back-filled if Locator type is Position.
  • Fix: Corrected generation of Formtype=multipart
  • Fix: When doing a chained-login the whole URL is now preserved.
  • Fix: Resetting fields when a 'date' field is completed wasn't working.
  • Fix: When chaining through an unexpected Login form, in a Frame situation, the Target of the Login button could be set incorrectly.
  • Fix: Returning to multi-tab field after lookup returns to the correct tab.
  • Fix: Cancel buttons on lookups didn't always return to the Form correctly.
  • Fix: Browses without a header, or footer, suppress the <thead> and/or <tfoot> tags.
  • Fix: Reset field when date changed was not working.
  • Fix: Cookies not being set in IE correctly if it expires on a Friday, or Saturday. (Thanks Jono).
  • Fix: Fields primed on insert were being forgotten if a Lookup was done.
  • Fix Search, Cancel, Next, Previous, First, Last buttons all use the Button Position settings.
  • Docs: Added a new section called Using Browses And Forms on Static Pages to docs.
2) Email Receive
  • Fixed a bug with incoming partial packets. Specifically failed when working against a Dovecot server.

Version 4.16 (Beta) (13 Sept 2006)

1) NetWebServer

This build would not have been possible without the dedicated effort of a small group of alpha-testers. My thanks go to Chris Cordes, Bram Klootwijk, Marius Røksund, Johan de Klerk, Richard Lee, Wolfgang Orth and Patrick De Laet. If your update is smooth it will be thanks to them, if not, it will be my fault.

Important: These changes may affect your program and stop it from compiling

  • >> In the NetWebSource procedures the SendString routine has been renamed to SendPacket. This brings it in line with the other templates. If you have hand-coded any calls to do SendString then you will get a compile Error "Routine not Defined". Make a note of the module, go to that module, and edit your hand-code. 
  • >> A number of Properties of the WebHandler class have changed. If you have used properties in hand-code, or in template fields, then you may get errors.
    For most of the WebHandler properties, the change is the addition of the word .SITE in the name. For example
    p_web.allowajax has changed to
    Button text has an additional change, there's now a dot ( . ) between button and text. So
    p_web.savebuttontext changes to
  • >> In an effort to disconnect the WebServer class and the WebHandler class the use of or p_web.RequestData.WebServer.method is being discouraged.

    Where methods in the web server are useful we've added the method to the NetWebHandler class. For example
    p_web.RequestData.WebServer.AddStyle becomes p_web.AddStyle

    Where properties are being used those properties have been added to the site group. For example
    p_web.RequestDdata.WebServer.DatePicture becomes p_web.Site.DatePicture

The following changes should not affect your existing program.

  • Implemented new tag of the form <!-- Net:f:filename.ext --> where filename.ext is the name of a (text) file. This "includes" the specified file at that spot in the HTML page.
  • When parsing static, or dynamic pages, the <!-- NetWebServer --> tag is removed from the page
  • Site-Wide buttons support added. You can control button look from the WebServer procedure, Settings, Buttons tab.
  • Added "File Upload" as entry type for Forms.
  • NetWebSource procedures/tags can now be refreshed asynchronously from a timer.
  • HtmlCharset is now a property of the web server. Defaults to ISO-8859-1.
  • InitForm routine added to the generated form code. This allows for default UpdateFile, UpdateKey and KeyField parameters to be set in the form, and thus not passed by the link. See FAQ, W4 for changes.
  • Routines generated for all the form "cells" (ie all prompts, values and comments). This allows all cells to be updated asynchronously, triggered by the completion of any field on the form.
  • Parameters can be passed to Browses-Embedded-on-Forms (passed via the Value Queue).
  • Refresh Window when Date Changed is obsolete, and removed. Use "Reset fields" instead.
  • Date Lookup button uses standard Lookup button settings.
  • Ability to "reset" one field on a form when another is changed has been implemented. Especially useful for Dropdowns.
  • Dropdowns now have an "Order" field, so you can override the default order.
  • Dropdowns support INNER Joining on a "Linking" File.
  • Checkboxes on a form are no longer added to the Form as a HIDDEN field (to hold the False Value). The False value is set in the ValidateUpdate routine.
  • Lookups now display the "description" field in the comments column (if it's blank). If the user types in a code the description is updated automatically. TIP: If (in the dictionary) there's a key on the Description field in the lookup file, and the user types a Description into the code field, then the entry field, and comment fields are both updated.
  • Browses are "back-filled" by default.
  • Embedded HTML now defaults position if entered incorrectly.
  • Browses disable First / Previous / Next / Last buttons.
  • Added .LoginChanged method to NetWebHandler so there's a convenient embed point in the WebHandler procedure when a person logs in, or out.
  • Added DeleteSessionValue, and DeleteSession methods to NetWebWorker class.
  • If user has to be logged on to see a page, and hence is redirected to the Login page, then when pressing "Login" it now "chains" to original request (rather than going to the default first page).
  • Changed the CallForm generated procedure so that the URL is checked before the File handle when deciding which form to call. This allows for multiple Form procedures on the same File.
  • Form template layout simplified, and "flattened".
  • After doing an Insert or Update, the file fields are copied into the Value queue. This allows for fields set by a trigger (in the ABC code, for example an AutoNumber) to be used by subsequent procedures in the thread.
  • Hidden field "LookupFrom" has been changed to "FromForm"
  • Changed some equates in (the Form Stage equates) so they are all on their own "bit". Should have no impact on existing apps, unless you were depending on the value of the equate.
  • Server-side validation on form fields (REQ, Numeric etc) is only performed if the Field was visible to the user.
  • Corrected some internal code generating a double ?? when using some tags.
  • Corrected Browse bug where Next / Previous didn't work if sort column were all the same value.
  • Added URL support for conditional images in a browse.
  • Updated the explanation of Tags in the docs.
  • The documentation for Reports has been expanded considerably.
  • Fixed bug if Column Headings were turned off, and Sorting was set to "Server" or "Client".
  • Example 7 updated to show using Cookies to store the login & password in the browser.
  • Extended Examples 13 and 14 to show using an existing report that has "options" on the screen, and a "Pause" button.
  • Example 14 corrected to fix  some weird header formatting.
  • Example 23 added which shows how to do a browse on one table, but go to a form on a related table. (1-to-1 style relationship).
  • Example 24 added showing how to chain from one form to another.
  • An automatic re-direct now happens with a POST as well as with a FETCH.

Version 4.15 (Beta) (17 July 2006)

1) NetWebServer
  • The Open Files code in NetWebBrowse has been moved higher in the code so that you can include file fields in column headers etc.
  • Added optional routines for opening, closing, saving and restoring files in NetWebSource and NetWebPage procedures. Note that the Routines are generated (and called) in NetWebPage, and are generated, but not called in NetWebSource.
  • Translate Tab added to WebServer extension, Settings tab. Use this to change text for whole site.
  • Incorrect generate of %FormFieldTrue (for checkboxes on form) corrected.
  • Added new function to JavaScript file (NetWeb.Js) to automatically fix the transparent PNG bug in IE 5.5 and IE 6. Script was found by Carlos Gutiérrez (thanks Carlos.) Original script and explanation can be found here. FAQ, W21
    NOTE: To make use of this new script file copy it from one of the shipping examples to your \web\scripts folder.
  • The syntax for calling a form directly from a browse has been changed slightly. The FAQ, question W4 has been updated to reflect the new syntax.
  • Corrected template bug with generating Radio buttons "checked" attribute.
  • Fixed incorrect handling of key fields containing the word "GUID". If you are using Replicate GUID fields (or other Guid fields containing binary string data) then you must put the name in the webServer property _BinaryGuid. For example:
    ThisWebServer._BinaryGuid = 'guid'
  • Added CreateButton method to class to make code cleaner.
  • Added class (in CSS) for Lookup Buttons - default is LookupButton.
  • Added "More Assignments" button when doing a lookup (see FAQ, W21)
  • Added support for @D2 dates on Forms. See Basics doc for more info. NOTE The Calendar2.js script has been updated, Calendar1,js and Calendar3,js have been deprecated, and Calendar6.js has been added. Be sure to copy these into your application's web folder.
    If you get a Compile Error in your WebServer procedure, then go to the NetTalk Extension in the WebServer procedure, and reset the Date Picture to either dd/mm/yyyy or mm/dd/yyyy.
  • In Forms moved the call to StoreMem routine to the "Pre" calls to the form. This prevents "loc variables" (stored in the session queue) being overridden on return from a lookup or elsewhere.
  • Added support for NetWeb Procedures in other apps in a Multi-Dll situation. See Basics Doc, Multi-DLL section  for details.
  • Fixed support for Relational updates & Deletes.
  • On Browses the Unique, Unchanging Key field has moved from the Form tab to the General tab. This is because this key is used when the browse is used as a Lookup.
  • Fixed bug where View button (under browse) was not visible when Browse in lookup mode.
  • Browse in Form seems to be working pretty much 100% now. For now I don't recommend having more than 1 browse on a form, if the browses are page loaded.
2) Changed the FTP control template to use the specified progress control, rather than always using ?progress.

Version 4.14 (Beta) (29 May 2006)

1) NetWebServer
  • The introduction of cookies, and especially the Session cookie, has meant that some of the old ways of doing a logout (by deliberately resetting the Session) will no longer work.
    Question W17 has been added to the FAQ, and examples 3 and 4 have been updated to reflect the new, complete, logout techniques you can use.

Version 4.13 (Beta) (26 May 2006)

1) NetWebServer
  • Suppressed Windows style menu bar if person is not logged in, and all menu's require person to be logged in.
  • Added code to handle reports where there are no records. See example 13.
  • Fixed problem with OnLoads on NetWebPage
  • Allowed Style to be set on individual Row Buttons in a browse
  • Added Target to Cancel button URL
  • Added Target to Browse Row buttons
  • Fixed case where ProcessLink overridden in Webhandler leads to blank parameter.
  • Fixed descending numeric sorts on browses
  • Automatic detection of numeric browse columns leads to case sensitive sort.
  • Now generates Cancel code on lookup if Cancel button exists, even if Select button doesn't exist.
  • Clicking Cancel on lookup now returns to correct form.
  • Fixed problem where special buttons did not work if they had no text.
  • Fixed browse refresh when first record is added
  • Fixed browse refresh when last record is deleted
  • If a locator field exists, then it gets focus on the browse.
  • Fixed Focus selection on Forms.
  • Added support for cookies (see Basics doc)
  • Added a checkbox so that HTML can be included in browse columns (if desired.)
  • Fixed problem where form returned to home-page missing http:// part of URL.
  • Fixed bug with Browse that only has VIEW button, not Insert/Change/Delete.
  • Added ability to override message "no records" on reports.
  • Clicking LAST on page loaded browse with less than 1 page of data, now displays the data not "no records found".
  • Added "Close" button option to Browse.
  • Added "Select Item" example (19)
  • Added "Multi-DLL" example (20)

Version 4.12 (Beta) (2 May 2006)

1) NetFTP control templates
  • Fixed problem where template was expecting a pActive parameter as the seventh parameter. Older procedures didn't have this parameter, and so a compile error resulted. 

Version 4.11 (Beta) (21 April 2006)

1) NetWebServer
  • Changed browse position when returning from form. It now returns to the browse as it was before going to the form, rather than starting the browse page from the record just changed.
  • Fixed sort order getting lost when returning from Form.
  • Browse Locators on date columns now works.
  • Fixed URL generation on Auto-Lookups.
  • Added support for apps that don't have "Defer Opening Files Until Accessed" turned on.
    Tip: Turn on this switch if you can, otherwise performance may suffer.
  • Fixed PDF reports in Firefox browser
  • Fixed problem where locator was attached to no browse field .
  • Fixed problem where Last then Previous triggered "no records"
  • When sort orders change, Locator is cleared
  • Fixed a bug with Previous going back x-1 instead of x records.
  Notes: In 4.10 the behavior of the "read-only" checkbox, for Forms, for Dates and Lookups has changed. The Read-Only box now means that the field is Read-only and cannot be changed, either via typing, or by a lookup button. If you want the previous behavior (where the user could only change by using the lookup) then tick the new option "Force user to use lookup". Remember to un-check the Read-Only box.

Version 4.10 (Beta) (12 April 2006)

1) NetEmailReceive
  • Fixed an issue where an email with a single base64 encoded attachment could be missing up to the last 5 characters.
2) NetWebServer
  • Fixed bug where large white space could be sent if first item in HTML packet was a tag.
  • Fixed bug with Totaling where the column contained formatting.
  • Fixed bug with packet length when picture used in column header (could affect next/prev buttons and sort orders.)
  • Fixed possible GPF with badly formed "direct to form" link.
  • Fixed regression with Server-side sorting
  • Fixed some bugs in the examples.
  • added 'jump straight to lookup' option on forms.
  • added "Auto lookup on Insert" option on form fields.

Version 4.09 (Beta) (05 April 2006)

1) NetWebServer
  • Removed AUTO attribute that caused a problem in C5.5
  • Tweaked the template & class so that if the user is not logged in, but links to a page that requires a login, then it automatically redirects to the login page.
  • Added key fields to view of Browse
  • Added additional HTML embed points
  • Added support for 'Other' buttons in Browse
  • Fixed problem with 'next' button when Browse has no Form.
  • Changed Browse to use POSITION instead of key fields. More accurate paging on SQL Views.
  • Added URL option to browse columns.
  • Embeds of HTML 'after heading' and 'after sub heading' work even if headings are blank.
  • Sort parameter changed from 'Sort' to 'procedure_Sort' so that browses can be chained together.
  • Added "Display" as a field option for forms.
  • If date field is set to 'Read Only' then lookup button is suppressed.
  • Fixed application of button conditions if Insert/Change/Delete/View buttons not "in row".
  • Fixed bug when there was a pipe ( | ) in the external field name.
  • Added Example 13 and Example 14 (PDF reports)
  • Added 'Browse' as Form Field type. [ work in progress ]
2) FTP functions
  • The synchronous functions FtpUpload and FtpDownload functions now have an extra (optional) parameter that can specify to use Active or Passive mode. See 3rdParty\Examples\NetTalk\FTP Template for updated examples.

Version 4.08 (Beta) (24 Mar 2006)

1) NetWebServer
  • Fixed issue where IDE could GPF if there was a Drop-Down list box on a form, and you did a right-click source in the App tree.
  • Reactivated the Drop-down filter field which had gotton itself disabled.
  • Asynchronous browses re-instated
  • "Unique Key Name" now stored, and enforced.
  • Added support for Multi-Proj
  • Fixed a couple of template bugs in multi-records-on-one-row
  • View-Only forms have a "close" button not a "Cancel" button
  • View button added to Insert/Change/Delete above or below browse.
  • Changed prompt for lookup page from "Page" to "URL" for consistency sake.
  • Header & Footer of empty browses suppressed.
  • Fixed priming of drop-down value where value was a prefix, or suffix value.
  • Added conditions for Insert / Change / Delete / View buttons
  • Added support for pictures in form fields. (Pictures are not enforced during typing though.)

Version 4.06 (Beta) (16 Mar 2006)

New Features

1) NetWebServer
  • NetWeb.JS file has been updated - copy from any of the examples to your Scripts folder.
  • NetWebForm procedures : URL on Save/Cancel has been separated into URL on Save and URL on Cancel.
  • Browse column can be a URL or MailTo: clickable link.
  • Updated Example 3 to show various menu login and logout options (based on an example by Roberto Artigas)
  • Added "onClick" ability to Menus and Menu Items.
  • Fixed "maintain sessions" on Menus that went straight to a URL.
  • Beginnings of FAQ document added to documentation

Updates & fixes

1) Examples - Minor updates & tweaks
2) NetWebClient - Minor tweak to Proxy Connect code.
3) NetDemo - Put back a simple Web Server example.


Version 4.05 (Beta) (15 Mar 2006)

New Features

1) NetWebServer
  • Added support for Arrays. NOTE: Arrays are only supported in C6 or later.
  • Added support for unique key not being a Primary key
  • Corrected WebServer TXA included in install set
  • Added template support for filter on droplist View
  • Added support for NAME attribute on file fields.

Version 4.04 (Beta) (13 Mar 2006)

New Features

1) NetWebServer
  • Fixed template bug - initial sort order Case
  • Fixed regression - Position locator
  • Added option for server-side column sorts to be case sensitive, or case insensitive
  • Fixed inaccuracy in "count" total type
  • Added column formatting to browse totals
  • fixed bug with View Joins when relationship one-sided.
  • New Demo page available at:
2) SSL - Can switch a NetSimple Server connection from non-secure to secure, using the self._SSLSwitchToSSL() method.
3) NetWebClient - added new code to allow the Web client to connect to HTTP proxies, when requesting HTTPS pages. These then switch to Secure mode on the fly. For now you'll need to set self.CertificateOptions.DontVerifyRemoteCertificateCommonName = 1 and self.CertificateOptions.DontVerifyRemoteCertificateWithCARoot = 1 to use this feature.
3) NetWebClient - added self.ProxyAuthentication and added an example of using this in the NetDemo application.

Updates & fixes

1) NetWebClient - added new code to allow the Web client to connect to HTTP proxies, when requesting HTTPS pages. These then switch to Secure mode on the fly. For now you'll need to set self.CertificateOptions.DontVerifyRemoteCertificateCommonName = 1 and self.CertificateOptions.DontVerifyRemoteCertificateWithCARoot = 1 to use this feature.

Version 4.03 (Beta) (10 Mar 2006)

New Features

1) NetWebServer
  • Change requiring a change: The Default Sort Order for the browse has changed from an Entry field on the Options tab, to a button on the General tab. Unfortunately all settings on this field will need to be redone.
  • Fix to allow " in form field values.
  • Fix to Memory Forms called after File forms
  • Additional Embed points added to template
  • Allowed "contains" filter on browse used as a lookup.
  • Width & Height of Text fields now settable
  • Scroll bar on read-only text boxes working
  • Class added for <body> tag (NetWebPage settings.)
  • property added for generic page <Body> class, ".BodyClass".
  • netweb.css updated
  • Added SendEmailFromWebBrowser example
  • Removed duplicate META tag from header.
  • "View" button support added
  • "blank until locator" bug fixed
  • HTML tab expanded on NetWebPage and NetWebForm, and added to NetwebBrowse
  • Much of 'Layout' tab in NetWebForm now obsolete.
  • Added URL option to MENU. ie Click on Menu itself causes Page Load.
  • Removed old WebServer1 Template Utility.
  • Added WebPageName option to Browse and Form
  • Added RightJustify, CenterJustify and LeftJustify styles to CSS file. Use these for Browse Column Styles.
  • Added Browse Totaling. (Note total only totals what is visible to the user.)
  • "Smarter" behavior when moving from browses to forms, lookups, view etc.
  • Fixed issue where pressing enter could load the form page (when it's not wanted)
  • Added - focus on form fields improved - when form opens, and when returning from a lookup.
  • now allowed to suppress Select button below browse (if select button in row.)


Updates & fixes

1) None

Version 4.02 (Beta) (1 Mar 2006)

New Features

1) NetWebServer
  • All browse functionalities are now set as local variables in the Browse procedure, and can be edited in Embed code.
  • Contains Locator added to types of locator supported
  • Table Blank until Locator entered option added to browse
  • Template message while waiting for locator added
  • Added methods to prevent script injections
  • Added new "special" folder, default is 'LoggedIn', user must be logged in before static pages, or files, from this folder will be served.

Updates & fixes

1) NetWebServer
  • Lookup now working correctly.
  • Changed dynamic page type to html from xhtml
  • Server-Side sorts now case-insensitive
  • Default Locator field now generated correctly, if entered.

Version 4.01 (Beta) (24 Feb 2006) - the 117th release of NetTalk

New Features

1) FAQ G7 - Updated to included changes needed for moving from NetTalk 3 to NetTalk 4
2) SSL - Client and Server SSL support added with Remote Certificate Verification.
For NetSimple - see NetSimple.Open
Note: The default SSL options now include:
• Remote Certificate Common Name must match Server name
• Remote Certificate must be issued by an Issuer found in CARoot file (which defaults to '.\CARoot.pem'
This implies you must ship a CARoot file or change this option.
These options are configurable.
(See also FAQ G8)
3) SSL Examples - NetDemo updated to included SSL options for NetSimple Client, NetSimple Server, Email Sending (SMTP), Email Receiving (POP3), Web Client (HTTPS), Web Server (HTTPS Server).
4) Secure Email Sending (self.SecureEmail) has now been split into two properties:
self.SSL - Which is the setting you'll use to make the whole communication use SSL. Gmail uses this option on port 465.
self.SecureEmailStartTLS - This setting will use the STARTTLS option which switches to SSL after performing a non-secure connection but before username/password or email contents are sent.
5) Added multiple IP and/or multiple Network Interface Card (NIC) support to NetAuto.
This now means that the Auto Detection sends a broadcast for each subnet and results in NetAuto working on machines with multiple IP or multiple NICs.
6) Added multiple Network Interface Card (NIC) support to NetGetIPList()
7) Changed almost all the ulongs to longs which gives a speed improvement across all objects. Which can yield speed improvements of up to 20%.
(The only method to have changed is NetEmailSend.CalcEmailName which we don't think anyone will be deriving, as derived code will now be orphaned. There were a few other methods that use ulongs, but these were not changed, as people may be deriving them.)
8) New LinkPoint (Credit Card Processing) Example. Requires a LinkPoint account (or a trial one), a LinkPoint Certificate (real or trial) and CapeSoft's xFiles.
9) Improved Error Number Reporting in NetSimple. Now there's self.Error (the NetSimple Error), self.WinSockError and self.SSLError
10) Email Receive New Option to Leave a Copy of Message on Server (using self.OptionsUseDoneBeforeQ and self.OptionsDelete = false), which uses a queue to keep a list of the emails that have been done before.
Also added self.OptionsDeleteAfterHours - which works with self.OptionsUseDoneBeforeQ to delete old emails off the server.
11) Email Receive Example with the Don't Download Again (self.OptionsUseDoneBeforeQ), which is the same as the NetDemo's TestEmailReceive window, except that it uses xFiles to load and save the queue to an xml file.
12) FTP  - Added a new FTP Template for using FTP.
• Easy to use (added using a template)
• One procedure call to upload or download a file
• Can take a queue of files.
• Can work with wildcards
• New FTP Example
13) Another New NetSimple Client & Server Example.
14) Close Apps Client - Changed so that the Shutdown command can pass a message. Also updated the Control template, and added a new embed point before the Init call, so you can potentially change the Service name.
15) Web Server Templates - More details in the NetSimple - Web Server documentation.

Updates & Fixes

1) NetWebServer.Open() - Could lock up (deadlock) if it was the first NetTalk object to be called. Fixed.
2) NetEmailReceive() - Further tweaks for extended Mime decoding.
3) Dial Up - Fixed deadlock (only was in NetTalk for Clarion 6.x ) when pressing adding or editing Dial Up connection entries.
4) Updated SSL DLLs - NetTalk now shipping with SSL DLLs v0.9.8
5) SSL - SSL new default SSL Method (self.SSLMethod = NET:SSLMethodSSLv23) which means that the connection tries to connect in the following order TLS v1.0, SSL v3.0, SSL v2.0 (e.g. Most secure method first)
6) Renamed some of the exported NetTalk DLL functions, so that they conform to either NetSimple... or NetAuto... format. (This will require that the object and DLL use the same versions otherwise "Unresolved Externals" or "Unknown Function Labels"  will occur.)
7) FTP - Fix for Apache FTP Servers that require the TYPE A / TYPE I command to be capitalized.
8) General - NET:StdStringSize changed from 81 to 80. Max length of string to use should be NET:StdStringSize - 1
9) Email Send & Email Receive - Fixed some potential memory leaks.
10) Web Server - Fixed garbage collector.
11) Improved support for working as a Service. Added NetOption (NET:SetIAmAService) call (automatically called by SelfService) so NetTalk doesn't shutdown on Log Off.
12) NetEmailSend - fixed a double dot problem where a . could occasionally be incorrectly transformed into ..

Version 3.40 (Gold) (21 June  2005)

New Features

1) In NetWebClient object there's a new property:
self.CustomHeader   (string(4096)). Which is added to the request header in ._CreateRequestHeader()
Note - must not have trailing <13,10>

Updates & Fixes

1) NetWebClient.TextOnly() - Some of the code was Case Sensitive, when it should have been Case Insensitive.
2) Clarion 6.2 Fix. Slight tweak to Email and News Objects to remove compiler warning message "Warning: Field label is duplicated, first used: _ObjectType"
3) Clarion 6.2 Fix. Recompiled DLL in Clarion 6.2 9046 - which fixes a delete queue GPF issue which was present in 9045.
Requires Clarion 6.2 9046 if you are using this with Clarion 6.2.
4) Template Help Button Fixed. Also made slight tweaks to the install script.

Version 3.29 (Gold) (13 May  2005)

New Features

1) NetTalk objects (not NetSimple) have finally been renamed in the documentation to NetAuto objects to prevent further confusion. Similarly the NetTalk protocol has been renamed to the NetAuto protocol too.

Updates & Fixes

1) Changed NetTalk to use our own _NetCriticalSection, as the one in has private attributes which prevent it from being re-used and tweaked correctly. NetGetCriticalSection DLL function renamed to NetGet_NetCriticalSection. If you get compiler errors then see FAQ Article A3 and upgrade to NetTalk v3.29 or greater. (Also changed the DLL to use a reference to _NetCriticalSection)
2) NetAuto - DLL. ,static added to DLL CallBackWindowSrc's variable Static:LastTime used in CheckNotifier Routine
3) NetAuto - Added a work around for Windows Firewall, where the NetAuto objects could sometimes not receive incoming UDP packets at program start just after machine reboot. This resulted in other public instances not being "visible". The work around only gets run if the application starts within the first 5 minutes after boot up, and then it does NetSendBroadcast after 30 seconds, 60 seconds and 300 seconds, to ensure it can see all other instances.
4) NetAuto. Added a slight random delay before sending back a ICanDoBack packet after receiving a ICanDo packet. This improves the chances of not congesting a network with a flood of responses.
5) NetAuto & Template. A new method NetServer.Announce() allows the NetServer.Init(), NetServer.Kill() and NetClient.Init() and NetClient.Kill() to delay the broadcast of new services, so that one can Init all services before doing the Announce(). This drastically reduces the number of ICanDo and ICanDoBack packets during startup and shutdown of NetAuto objects. The template has been changed to accommodate these changes to. Also redundant ICanDo sending has been minimized in the DLL too.

Version 3.28 (Gold) (1 April 2005)

New Features

1) New Special Option in the Template "Fix all my bugs". Added 1 April 2005.
2) Added External Run-Time DLL support to the template. Please don't use this unless you know what you are doing otherwise you'll end up with Unresolved Link errors.

Updates & Fixes

1) NetAutoGetServers() - will now return -22 (ERROR:BadOptions) if it is passed a Queue which points to null.
2) Updated NetWeb.tpw & _NetWebServerWorker.FileToSessionQueue()
3) NetOptions now allows you to call SetMaxInstances after the DLL is active, although this won't have the full effect of allowing to have multiple instances on the current machine, but it will allow you to talk to multiple instances on other machines.
4) WinSock Listen function changed to use the WinSock2 SOMAXCONN value when WinSock2 is available. This leads to slight performance increases, and may reduce 10055 errors (WSANOBUFS).
5) DIP - template and examples updated to use - which is a server based in the States.
6) Web Client - Fix if the web server returns just "HTTP/1.1 302" instead of "HTTP/1.1 302 Moved Temporarily".
7) Email Receive - Fixed the code where it would sometime chop off the last five bytes of the text or html portion in a simple email with no multiparts.

Version 3.27 (Gold) (7 February 2005)

New Features

1) NetTalk DLL Source Code is now available for purchase. More information is available here.
(It may take a day or so until it's fully uploaded and can be ordered).
2) New Legacy Email example & new Legacy Multi-DLL example.

Updates & Fixes

1) NetWebClient. Fixed a bug in the _SendCommand() method which affects large POST operations that could cause Index out of Range.

Version 3.26 (Gold) (26 January 2005)

New Features

1) Added DLL Version information to the NetTalk DLLs.
2) Added new property to the NetEmailReceive object .OptionsIncludeTextAttachmentsInText which will store text attachments into the text portion of the email. Off by default. Previous versions of NetEmailReceive had this feature on by default, so if you want the feature on (most folk don't) then please set this property to 1.
3) NetEmailSend - Added self.OptionsAttachmentContentType property which lets you override the default Attachment Content Type of 'application/x-unknown'

Updates & Fixes

1) NetCloseApps. Changed the Warning and Shutdown window, so that they display centered, which fixes a bug (only in NetTalk for Clarion 6.1) where these windows were not visible on the second monitor
3) NetWebClient - Fix for some https sites.
4) NetWebClient - now sets the cookie into the cookie property on redirects unless you specify the new property self.OptionsDontSetCookieOnRedirect
5) NetWebServer - updated Web Server Control Template - so that you can optionally see the last transaction, and a log history. Very useful when you are developing a Web Server site.
6) NetWebClient - TextOnly() split into 3 methods. Also clears <script> and <style> HTML tags.
7) Template - #Application changed for NetRefresh (Thanks Arnor).
8) Inversed Index Ranges for String Slicing checked for and fixed in some places.
9) NetRefresh - Added new #At and new parameter to the NetRefresh.Send method. This adds support for the Dynamic Driver.
10) NetDip - Changed self.MyIPAddress from cstring(15) to cstring(16) as it was one character too short, and was loosing this last character in the IP address.
11) NetEmailReceive - Fix for email decoding where Content-Type: text/html & Content-Transfer-Encoding: base64
12) NetSimple - Minor tweaks to the Idle Timeout code.

Version 3.25 (Gold) (7 December 2004)

New Features

1) (none)

Updates & Fixes

1) Removed duplicate FTPError property from the NetFTPClientControl object.
2) Template Fix for EmailSend Control Template, which was causing a %NoThisObj error.
3) Added a ReParseSetting() method to the NetWebServerWorker object.

Version 3.24 (Gold) (15 November 2004)

New Features

1) (none)

Updates & Fixes

1) Fix to the WebServer Utility Template. Also included the images it uses.

Version 3.23 (Gold) (9 November 2004)

New Features

1) Critical Change - may impact your applications Added Useful information about upgrading from NetTalk version 2 to version 3.
Please read FAQ G7 - What's changed in NetSimple from version 2 to version 3
2) NetSimple. Renamed Net:SimpleDataPacket to Net:SimplePartialPacket
(but kept original for backward compatibility - for now. May remove it later)
3) NetSimple. WholePacket handling
Added methods and properties to allow you to send and receive Whole Packets.
This will also allow you to send data to your own applications and preserve the packet boundaries. See NetSimple Methods and Properties.  For example self.WholePacketUseLengthField and self.WholePacketSend
4) NetWebServer. Utility Template
Added a Utility template to import in the two Web Server procedures, which includes sample code.

Updates & Fixes

1) (none)

Version 3.22 (Gold) (4 November 2004)

New Features

1) (none)

Updates & Fixes

1) NetEmailReceive. _SplitParam and _SplitParam2 parameter change from (String p_String...) to (*String p_String)
2) NetEmailSend Control Template - Setting options to use or not use the Display() and Cursor commands. Also change the FileDialog command to restore path.
3) Template - Further cosmetic changes.
4) NetWebserver - Fixed bug in CreateHeader() where some fields had missing colons. e.g. Connection:

Version 3.21 (Gold) (20 October 2004)

New Features

1) (none)

Updates & Fixes

1) Fixed the v3.20 install
As a result of a corrupt file on our website the v3.20 install file was locking on during install of libssl32.dll (at 28%)
The new install file also removes any .tmp file (e.g. ~GLH0433.TMP) that the v3.20 install file created in your /3rdParty/bin folder.
2) Removed Stop from NetWebServer object. (Thanks Robbie).

Version 3.20 (Gold) (15 October 2004)

New Features

1) Gold Release.
2) NetWebClient - New Property self.CacheControl. Which can be used like the existing self.Pragma_ property.
3) NetWebClient - Unicode support for translating pages from Unicode to Ansi. New methods. Self.UnicodeToAnsi and self.AnsiToUnicode. (Also added a _NetUnicode class)

Updates & Fixes

1) (none)

Version 3.19 (Beta) (13 October 2004)

New Features

1) New Web Server example (there's also the one in Demonstrating in memory web page creation. This new example requires Clarion 6.1 and SelfService, WinEvent

Updates & Fixes

1) NetWebServer - Many tweaks, including a fix for passing "&".
2) NetWebServer - Optimized the Header responses, so that Web Browses can use their Cached pages, if the pages have not changed (304 Not Modified).

(NetWebServer documentation still on the cards).

Version 3.18 (Beta) (7 October 2004)

New Features

1) Template - Added Multi-Proj define compatibility.

Updates & Fixes

1) Object Method prototypes changed from (...),string to (...),STRING to prevent errors with multi-DLL apps.
2) NetWebClient - Fix for using HTTPS sites with IP addresses. e.g.
3) NetEmailReceive - Tweaks to some of the boundary checking.

Version 3.17 (Beta) (7 September 2004)

New Features

1) NetAutoCloseServer - The Process() method has been broken up into ProcessWarningRequest() and ProcessShutdownRequest(). Plus the CloseApp() method is what is called by ProcessShutdownRequest() when the application must be shutdown. See NetAutoClose
2) NetAutoCloseServer - New template option for Support with MessageBox 1.79 so that Messages are automatically closed down, when the application must be shut. (Previously open messages were preventing the application from shutting down). See NetAutoClose

Updates & Fixes

1) NetRefresh. Made the call to BRW.ResetFromBuffer and optional component in the Global Extensions NetRefresh on the Advanced tab. Folk using the ODBC Driver should turn this option on. See NetRefresh JumpStart.
2) NetDemo. Added Regions for the buttons so that they look better in Clarion 6.1

Version 3.16 (Beta) (31 August 2004)

New Features

1) NetWebServer. New property .DontSendFile

Updates & Fixes

1) NetOptions. NET:GETDGINSTANCE was not working. Fixed.
2) Installs. Some of the v3.15 builds didn't upload correctly. Re-uploaded in this version.
3) NetWebClient. Fixes the Request URI. This fixes both HTTP and HTTPS problems.
4) NetRefresh. Now works with ODBC driver. (Added call to ResetFromBuffer)

Version 3.15 (Beta) (27 August 2004)

New Features

1) NetWebServer and _NetWebServerWorker- New object for creating your own Web Server based applications. Preliminary testing phase begins.

Documentation will follow soon. (See NetDemo for a demonstration for now).

Note: If you were using the old Web Server example, in your applications you should now convert this code over to using the NetWebServer and _NetWebServerWorker objects. (This is particularly important for Clarion 6 apps, as the old Web Server example was not thread safe).
2) Split NetTalk.clw and into:
 (because it became too large for the compiler)

Updates & Fixes

1) NetWebClient. Added a call to FlushFileBuffers in the .SavePage method.
2) DIP. Fix in the template so you can rename your DIP object.
3) NetWebClient. Fixed a bug where ErrorTrap was sometimes being called twice.
4) NetSimple. Padded a check around most calls to self.Abort to check that the connection was either open (OpenFlag) or the connection was in the process of opening (AsyncOpenBusy) so that we are not calling Abort when the connection is in fact open.
5) NetEmailSend. Moved the automatic .Helo calculation code to below the BuildFromWhole. Also changed the default helo command (if it can't work it out from the From property) to 'helo_is_blank' (for more info see the Helo property in the NetEmailSend property section of the docs).
6) SendEmailControls Template. Removed the setcursor calls with this control template as it causes cursor unnecessary cursor flickering.
7) Logging - Improvements to the logging (DLL, Objects and Template). Including the addition of self.log to each NetAuto and NetSimple object.

Version 3.14 (Beta) (30 June 2004)

New Features

1) Added links in the docs to the NetSimple Jump Start.
2) Also look at the new features in v3.13 (which was not a public release)

Updates & Fixes

1) NetNewsReceive. Turned the _ZeroByteFixDisable property on by default. As this option should only be used in the Email objects (the News objects parent). Fixes problems if the news server doesn't send the article size in the XOVER response.
2) NetEmailReceive. Fix for UIDs fro COMCast, where they use 3 spaces as a separator. (Tweaked to the _SplitParam method so that it calls _SplitParams2).
3) Email. Increased the UID size from 40 to 80 (RFC says 70), so 80 should be more than enough.

Version 3.13 (Beta) (26 May 2004)

New Features

1) NetEmailSend - supports SSL. To use Secure Email simply set the self.SecureEmail = 1.
2) NetSimple - added self.SSLMethod and self._SSLDontConnectOnOpen (see NetSimple properties)

Updates & Fixes

1) Updated the NetDemo example, so that the Email Sending window can send emails to Secure Email Servers (tick on the Secure Email checkbox).

Version 3.12 (Beta) (21 May 2004)

New Features

1) First Public Build for Clarion 6.1 EA

Updates & Fixes

1) NetEmailSend. Fixed a bug where if you did not specify a HELO domain, and sent an email from " <>" the HELO property was being incorrectly set.

Version 3.11 (Beta) (14 May 2004)

New Features

1) (none)

Updates & Fixes

1) NetEmailSend. Fixed a bug where if you did not specify a HELO domain, but used a from address of 'Joe<>' the HELO property was being incorrectly set to '>'.

Version 3.10 (Beta) (11 May 2004)

New Features

1) First Internal Build for Clarion 6.1 EA

Updates & Fixes

1) NetSimple Server. Fixed a bug where after calling .close the qServerConnections queue was not updated.
2) NetSimple Server. Fixed a bug where after calling .close the NetTalk DLL to NetSimple Object Message processing could get out of sync.
3) NetSimple Client. Fixed a bug where the asynchronous DNS lookup (called on Open) might fail if there were two or more simultaneous opens. This only affected open calls with a hostname (i.e. It previously worked fine for opens with an IP address).
4) NetWebClient. Fix for POST operation, which needed the HTTP:// part included.
5) Template. Changed the priority for the object's TakeEvent calls in ThisWindow.TakeEvent from 6300 to 2550.

Version 3.09 (Beta) (28 April 2004)

New Features

1) Added SSL support to the NetSimple and NetWebClient object.
NetWebClient - You can now do a fetch on a HTTPS page (e.g. .Fetch('')).
NetSimple - Added a .SSL property that when set to 1, will use a SSL connection.
Please note: This implementation does not do certificate checking yet (we plan to add this later on), but it will allow you to communicate and download from secure sites.
Be sure to read about the SSL DLL Distribution also.


1) NetEmailReceive. Changed NetEmailReceive so that text attachments (sent for example from Mozilla Firefox) are recognized as both text and attachment.

Version 3.08 (Beta) (13 April 2004)

New Features

1)   NetEmailReceive. Added CharSet decoding for file attachments.
2)   Added a new NetOptions command (NET:SETNETAUTOLISTENINGPORTIP) that allows you to bind the NetAuto Objects Listening Ports to a specific IP address. This can be useful if you are running multiple network cards, but would only be used in rare situations. (If you look in the Frame of the NetDemo app, example code on how to call this is there - but commented out)
3)   Added a Template option to force the linker to include the ClarioNet compatible NetTalk lib file to be compiled with NetTalk. (See the Global Extension - Advanced Tab).
[Please note: NetTalk no longer works with ClarioNet]
4)  Critical Change - may impact your applications Added the .InactiveTimeout property to the NetSimpleMultiClient. Please note that if you were previously setting MultiClient.q._connections.InactiveTimeout you now need to use MultiClient.InactiveTimeout (before calling MultiClient.Open).


1) NetEmailReceive. Fix for downloading UIDL lists from PC LAN Suite mail server. (This doesn't affect most Email Servers - including the CapeSoft Email Server).
2) NetEmailReceive. Changed the order for determining the name of the file to save the attachments as. Previous order was Content-ID, filename, name now it's filename, Content-ID, name.
3) SNMP. Fix for the NetSNMP._EncodeObjectID which could GPF. Thanks Ludwig.
4) Template. Fixed the debug logging options in the Global Extension so they work with both Local Mode and Standalone builds.
5) NetSimple and NetAuto (DLL). The internal mechanisms in NetSimple and NetAuto have been honed. (This included the way the FD_CLOSE, FD_WRITE, and FD_READ are handled in the NetTalk DLL, and changed from using shutdown (SD_BOTH) to shutdown (SD_Send) in most cases). Also tidied up the logs and fixed the SO_DONTLINGER option.
6) Internal NetTalk (DLL). Changed the default NetAuto Connection Timeout and Resend Period from 20 seconds to 45 seconds. You can override these values with NetOptions. See the NetDemo for an example of settings that may be useful for slow Internet or WAN usage.
7) NetSimpleMultiClient.TakeEvent. Tweaked and improved. Now it only does one call to NetSimpleReceive (previously it was doing two).
8) NetSimple Client (DLL) - Follow up to the NetSimple GPF bug fix in v3.07 applied this fix to the NetSimple Client as well. (Fixed a bug in the NetTalk DLL regarding FD_READ, which could cause occasional GPFs in Clarion 6)

Version 3.07 (Beta) (26 March 2004)

New Features

1)  Critical Change - may impact your applications Very Important Change
NetSimple (including Email, FTP, Web, News) - Now uses self.AsyncOpenUse = 1 by default. This means they all use the Asynchronous Open. ie. You need to trap for the NET:SimpleAsyncOpenSuccessful in the .Process() before sending data. If you haven't coded your NetSimple objects to use Asynchronous Open then you will get errors.

This has two implications if you have not already switched over to Async Open.

The call to .Open() is now asynchronous. You'll need to:
a) Modify your code to wait for the Net:SimpleAsyncOpenSuccessful packet in .Process() or the NET:SimpleAsyncOpenFailed in .ErrorTrap() before sending data
b) or set .AsyncOpenUse = 0 after the call to the objects .Init() method. (This will still mean your object is using synchronous open). For more details see the NetSimple.Open() method.

Checking self.OpenFlag is not enough. You'll need to:
a) Check for self.AsyncOpenBusy which is set in calling .Open if the connection is trying to connect asynchronously.
2)  Critical Change - may impact your applications WebClient - added a new property called OptionFinishOnEndHTMLTag. This option (if set to 1) will cause .PageReceived to be called if the page we are receiving has no content-length, and the last 7 characters are </html>.
You should not need this on, but the previous versions of the NetWebClient behaved like this by default. This has now been turned off and moved to a configurable setting (which is off by default).
3)  Critical Change - may impact your applications WebClient - PageReceive is no longer called if self.PageLen = 0. Instead the .ErrorTrap() method is called with self.error = ERROR:NoDataReceived
4)  Critical Change - may impact your applications WebClient - Will now always either call .PageReceived() or .ErrorTrap(). Previously a call to .Fetch() or .Post() could return with self.error <> 0 (and .ErrorTrap was not being called).
In other words you no longer need to check the value of self.error after calling .Fetch() or .Post() as if an error occurs .ErrorTrap() will be called.
5)   WebClient - Added the .ServerResponse (long) property, which lets you know the server reponse. See NetWebClient Properties
6)  Critical Change - may impact your applications WebClient - Will now automatically redirect 3xx Server Reponses (e.g. 301 and 302) which have a Location: field in the header. (To disable this turn on .OptionDontRedirect).
e.g. Try the following URL which will redirect to
(If you run the NetDemo app - see the difference when you press Fetch or Header in the Web Client example with the URL)
7)   WebClient - Changed the Default .UserAgent property to be the same as Windows XP.
8)   NetSimple - Added extra error handling if you call .Open or .Send before the .Init has been called. You should not be doing this anyway. (ERROR:ObjectInitNotCalled -60)
9)  Critical Change - may impact your applications NetSimple - Added extra error handling which will call .ErrorTrap if you call .Open() and a connection is already open. (ERROR:AlreadyOpen -55)
10)   Logging - Added an extra command line switch /netnolog which forces all logging off. This is useful if you've added logging options with the Global Template and want to quickly run your app with no logging without having to go to the effort of recompiling.
11)   Web Poll Example - Has been updated and demonstrates how to force any proxy servers into not using their caches, but instead contacting the web server directly.


1) Web client - fix so that now the proxy server can be used in Asynchronous Open mode.
2) Web, FTP, Email, NetSimple - Important fix for a bug introduced in version 3.06, which could cause these objects not to work in Synchronous mode. (Basically Synchronous opens were being sent Net:SimpleAsyncOpenSuccessful packets - which (a) makes no sense as a synchronous open by definition is synchronous and so when the connection is made no notification needs to take place and  (b) it causes problems as extra packets arrive in the .Process()
3) WebClient added the Port number into the Header Host: field if it is not 80 or 0.
4) NetSimple Server (DLL) - Fixed a bug in the NetTalk DLL regarding FD_READ, which could cause occasional GPFs in Clarion 6.
5) Template Fix - Fix to the template that was breaking any custom made command line switches

Version 3.06 (Beta) (10  March 2004)

New Features

1) (none)


1) Important fix for Windows 2000. Sometimes the WinSock returns a Read notification before the Connect notification (FD_READ before FD_CONNECT) on Win2K OS. This will affect the NetSimple objects (In particular Email & FTP). This also sometimes manifested itself as a 220 Email error.

Version 3.05 (Beta) (9  March 2004)

New Features

1) Added options to turn on logging to the NetTalk Global Template. See Log Files.
2) Changed the NetEmailSend default HELO command. It now defaults to '' (blank), and if it's still blank when .SendMail() is called, it is set to the domain of the From address.
You can still set it yourself if you prefer.
3) Changed the NetEmailReceive object.
- Added the .EmailListQ and the .DoneListAll() and .DoneUIDLAll() methods. These are descriped in the .DoneListAll() method. This is an alternate way to downloading emails, in that you can now choose which emails to download/delete by setting the fields in the .EmailsListQ queue.
- The above changes also make downloading of emails faster (even if you don't use these new methods and properties). i.e. The conventional way of using the .Decide() method is still fully supported and works just the same as it used to (including the new speed improvements).


1) Added a FTP property called self._DelayAfterStore, which makes the FTP client work better in Clarion 5.5 with CesarFTP Server. (CesarFTP Server 0.99e was giving errors with the NetTalk client, and CesarFTP Server 0.99g was GPF'ing).
2) Fix in the Template for using NetDIP. Previously hung a window when closing the window. More noticeable in Clarion6.
3) Removed HyperActive from
4) Clarion 6 - the NetTalk v3.04 for Clarion6 build acted a bit strangely, which disappeared after the 3.05 build.
5) Include fix to correct some Win98 machines, that report a hostname that is not the same as the computer name.
6) Fixed the Multiple File FTP Upload example, so that it can put files into a subdirectory.

Version 3.04 (Beta) (28 January 2004)

New Features

1) Critical Change - may impact your applications NetEmailSend - replaced the ._AfterErrorTryNextMessage and ._NoMessageAddedYet properties with ._ErrorStatus and ._AfterErrorAction - see the NetEmailSend ErrorTrap method for more details. If you were using these old properties, please swop over to the new properties, which are far more informative.
NetEmailSend - now uses Asynchronous Open by default.
NetEmailReceive - now uses Asynchronous Open by default.
NetEmailReceive - Now has the ability to download emails in batches. This can be really handy if your connection dies half way through a download, so that you download less duplicates. See .OptionsNewBatchEveryXMessages and OptionsNewBatchEveryXBytes.
NetNewsSend - now uses Asynchronous Open by default.
NetNewsReceive - now uses Asynchronous Open by default.
NetWebClient - extended the return size of EncodeWebString from 8KB to 16KB
NetDemo - revamped look (see examples). (Also included HyperActive into this demo - but it will still run if you don't have HyperActive).
Internal changes: Exposed the NetTalk DLL Critical Section object via NetGetCriticalSection(),long and added ._Wait() and ._Release() to all the objects.
Renamed NetTalkInstance to NetTalk:gInstance


1) NetDemo example - removed the compiler link errors caused by c5asc library file.
2) NetNewsSend and NetNewsReceive - Fixed these objects that were previously failing on news servers like

Version 3.03 (Beta) (11 December 2003)

New Features

New Dial-Up Networking hand coded example.
New NetSimple Jump Start example.
Exposed the 168-bit DES encryption and decryption functions in the NetTalk DLL.
New NetSimple example which shows how to manage packet boundaries in NetSimple, and also demonstrates the NetDESencrypt and NetDESdecrypt functions.
Web Client - extended the size that you can send when you call the .Post() method. Was previously up to 16K including the headers. It's now dynamically allocated.


1) NetEmailSend - Clarion 6 fix for the 221 error that occasionally happened after sending an email.
2) NetEmailSend - fix for the 250 error that could occur when sending multiple emails to an SMTP server that requires authentication.
3) NetEmailSend - internal fix the self._AfterErrorTryNextMessage set to false in RaiseErrorAndTryNextMessage
4) NetSimple Client Open - Fixed a bug which could cause a connection not to report that it could not be opened. The bug did not happen that often but it has been fixed now.
5) NetSimple Multi Client  - Removed the unnecessary Dummy Service object. This should have been done ages ago, but somehow managed to remain unnoticed until now.
6) NetSimple Email Receive  - Allows for CharSet decoding to work on the full 8192 characters of the Email properties like the ToList, not just the first 1024 characters.

Version 3.02 (Beta) (14 November 2003)

New Features

All methods in the NetTalk objects have been made VIRTUAL, previously some methods like Init, Kill and TakeEvent were non-VIRTUAL. We've tested this and no embed points are orphaned as a result.


1) NetRefresh - Template fix for using NetRefresh in a Process.
2) Clarion 6 Dial-Up - Fix for Dial-Up Networking. Which previously never worked in Clarion 6 build.

Version 3.01 (Beta) (24 October 2003)

New Features

NetSimple - Added .LogDataBytes which logs up to this many bytes to DebugView, in the .Send() method, when the application is run with the /nettalklog command line parameter. (Default = 0 = off)
2) Critical Change - may impact your applications  ERROR:TimeOut equate has been renamed to ERROR:OpenTimeOut
Critical Change - may impact your applications
 FTP  - The FTP Object has been re-worked. The following is a summary of changes:
  • Every call to the asynchronous functions (e.g. GetDirListing, PutFile, GetFile etc). will either call the Done() or ErrorTrap() method.
  • These functions no longer return values. They used to have a prototype of (...),long,proc now it's just (...). This means any code you've placed in derived methods for these method will have been orphaned.
  • _SetDataRepType() method renamed to _SetType()
  • self._CommandInProcess has been renamed to self.Busy - you can use this flag property to see if a the FTP object is currently busy with a command.
  • NoOp is included in the above asynchronous functions, so you should first check the self.Busy flag before calling NoOp otherwise it will call ErrorTrap if the FTP object is busy with another command.
  • We now suggest you have a case statement in your ErrorTrap (like in the Done() method) should you wish to handle errors based on what command you were trying to issue.
  • Jump Start and examples updated.
  • Open is now using asynchronous open, although this should make no difference to your code, and will work asynchronously, which means no screen lockups on slow or non-existent sites.
  • New method .ProcessIdleConnection() which is called when a connection has been idle for the period specified in self.InActiveTimeout. See FTP methods for more info.

Internal change to the NetSimple object. Added the ._CallErrorTrap() method, but this should have no impact on anyone's application.


1) NetEmailReceive. Fix for 0 length emails that are in your email server mailbox.
2) NetEmailReceive. Another fix, for handling headers better.
3) Dial-Up. Dial-Up uses an internal timer in the DLL to detect new connections. This was only being initialised after you opened a connection. This has been fixed and the timer activates on the NetDUN.Init code now.
4) Dial-Up. Previously when you used Dial-Up and a connection was established, NetTalk would send it's UDP packets to the localhost. This now only happens if you are using the NetTalk objects. (i.e. No UDP packets are sent, if you are just using the NetSimple objects).

Version 3.00 (Beta) (3 October 2003)

New Features

1) New FTP Example - Multiple File Upload.


1) NetSimple FD_WRITE: New fix for large sends - up to 12% faster sending. Prevents NetSimple locking up when sending large amounts of data in a tight loop, and is more efficient.
2) Dial-Up Networking fix for Windows XP, where the code could loose track of a connection. This would result in either nothing being displayed in the Connections queue, and/or the Hangup button being greyed out. (Had to implement Critical Sections in C5 and C55 code).
3) Email Send. The HELO command was previously (by default) using HELO
Some email servers in an attempt to block spam are disallowing HELO so we've changed the self.HELO to, but it's best to put your own domain in here.

Version 2.93 (Gold) (19 September 2003)

New Features

1) (none)


1) NetTalk DLL based to 80 (IMAGE_BASE 13000000h). Now works for C5, C55 and C60.
2) Send Email beefed up the Message-ID when sending emails.
3) Updated FAQ article on SMTP and MAPI. Also added a CapeSoft Opinion page. Read more: FAQ H4.

Version 2.92 (Beta) (11 September 2003)

New Features

1) Added AutoChat Server (Arnold) to the Examples.


1) Email Receive. Fix for attachment only emails using Base64.
2) Email Receive. Fix for CharSet decoding (function completely re-written). CharSet encoding example:
To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <>
CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <>
Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=

Version 2.91 (Beta) (20 August 2003)

New Features

1) Added Asynchronous Open & the Idle Timeout functionality to the Web object
2) Three new Web examples. which polls to check websites are running. which shows how to loop through multiple websites. and Web Server example
3) Email Send. Added a new field embedlist to the self.DataQueue queue (Net:EmailDataQType).
4) (Advanced) FTP. Added self._IgnorePassiveFailure to get around FTP Servers that always run in Passive mode, but don't know about the PASV command
5) Added the NetSNMP Object for allowing your program to collect or deliver SNMP data. There may still be some changes to this object to treat it as early beta.


1) NetTalk DLL based to 80 (IMAGE_BASE 13000000h) - didn't get done for C55 and C60 - see version 2.93, where this was fixed in
2) Email Send, was not saving the attachmentlist in the self.DataQueue queue. Fixed
3) Email Receive, Quoted Printable decode function caused a Index out of Range error on one email. Fixed.

Version 2.90 (Beta) (4 August 2003)

New Features

1) Reformatted these documents so they can be printed in Portrait A4 or Letter.
2) Added a new DLL function NetGetIPInfo which lists the IP address details. Includes Subnet Masks, Broadcast address (although these don't look meaningful), Gateways, DHCP Servers, WINS servers, Adapter Name and Descriptions.


1) Fixed a bug where packets could be left stranded in the In Data queue for the NetSimple objects.
2) Fixed a where sending an email with a ";" as the CC would cause the email header to get split into the body.
3) Fixed Duplicate _ABCDllMode_ & _ABCLinkMode_ errors (in C55 and C6)

Version 2.81 (Gold) (23 July 2003)

New Features

1) (none)


1) Web client. Fixed a bug where if there we multiple proxy settings (ie One for HTTP, one of HTTPs, one for FTP etc), the Proxy settings would not be read out the registry correctly. Fixed.
Version 2.80 (Gold) (15 July 2003)

New Features

1) NetClient - Added Client side load balancing, so that if you don't specify a ToNetName a random server is picked. This allows you to add more servers (either running on more machines or the same machine) to balance out any work load. self.DefaultServerNetName has been removed and self.UseAnotherServer() has been modified.
2) NetGetFile / NetFilServer - No longer tries another server if the file does not exist on the server. If you want to do this, call self.UseAnotherServer() and then try again.
3) NetEmailReceive - added a .OptionsOnlyGetWholeMessage property, that prevents the object from splitting up the wholemessage data into text, HTML, subject, to etc. It takes away functionality, but it is faster.  Also added a .OptionsOnlyProcessHeader property that will process the header and then stop. This means if you want to store the email, but don't want the email split into Text and HTML it will be processed faster, but you can still see the from, to, subject etc.
4) Documentation improvements. (Like we've added menus at the top of each page - Improved Support section with Top 10 questions).


1) NetTalk DLL based to 73 (IMAGE_BASE 12300000h)
2) NetEmailReceive - fixed a bug where the receiving code sometimes thought an email had UUEncode in it when it didn't and it ended up in an infinite loop during download of emails.
3) NetEmailReceive - fixed a bug where a large email that arrives as only a small email (I know this sounds bizzare) would end up having no text in text, html or wholemessage. Changed in  _ProcessSetSize(). Also NET:EmailNewDifference set to 262140 (256K)
4) NetEmailReceive - fixed a bug a mime boundary with a ; was not being decoded correctly.
5) NetEmailSend - fixed a bug which could cause emails to be sent out in duplicates, when sending lots of emails.

Version 2.76 (Beta) (12 June 2003)

New Features

1) Documentation improvements started (not finished yet, but already enhanced).


1) NetEmailReceive fix - Some files were being corrupted, when they were being extracted from the email to disk.
2) NetEmailSend fix - Fixed the .CalcEmailName() method that was not handling email addresses like (notice comma in description):
"Smith, Fred" <>
This function is used to read the ToList, CCList, BCCList and From properties.

Version 2.75 (Beta) (14 May 2003)

New Features
1) First Clarion 6 build. Still in testing phase, but the netdemo application run with all it's features.

1) NetTalk DLL. CreateSendingSockets log info was reported wrong IP address ( if an error occurred. This has been fixed.
2) New build (c55netnl.lib and c60netnl.lib and template change) for ClarioNet 1.2 support. Previously generated winsock errors during compile. (Note: ClarioNet 1.1 Users - you may need to email us at and ask us for the WinSock.lib file if you get compiler errors).
[Please note: NetTalk no longer works with ClarioNet]
3) New template change for Family code.
4) NetTalk DLL CloseInActiveConnections() had a bug fix.
Version 2.74 (Beta) (5 May 2003)
New Features
1) The NetTalk DLL now disposes NetAuto packets that haven't been sent after 1 hour. You can change this value using NetOptions. The code for the WAN configuration has a new line (DeletePacketAfterThisLong) see the netdemo app for the code.

1) NetTalk DLL. Fixed a bug connected with receiving data for the NetAuto objects.
2) A whole host of fixes and tweaks to the NetTalk DLL for the C6 build:
WM converted to longs
Group OVER parameters changes
GROUP,Thread,Types changes.
3) FTP fix. A very small number of FTP Servers reports the file size of a download incorrectly. Added self.OnlyUseSizesInDirList which if set to 1 will ignore this and use the filesize of the file from the last directory listing.
4) FTP fix. Fixed a bug where if the FTP Server sent a blank line at the start of a directory listing, you would get an Unknown Directory Format error.
5) NetSimple Client fix. If you connected to an IP address using Synchronous Open and closed the connection without receiving anything from the server, this would generate a -20 Address Not Found error. This has been fixed.
6) NetEmail Receive fix. Some Emails that were produced in MS Office were not displaying the correct HTML format.

Version 2.73 (Beta) (8 April 2003)
New Features
1) (none)

1) Email Receive. Emails containing another .eml file as an attachment sent from AOL where not saving the attachments. Fixed.

Version 2.7b (Beta) (1 April 2003)
New Features
1) Idle timeouts implemented into NetEmailSend and NetEmailReceive. You just need to specify self.InActiveTimeout (in hs) and mail connections will drop if there is a period of InActivity.
2) Idle timeouts and Async Open implemented into NetDIP object. Also added a self.RefreshInterval property which will automatically call Addme every 60 minutes.
3) NetDIP template allows you to specify fixed strings (in quotes) or a variable. This will probably cause a compile the first time you compile your code with this change. Just open the procedure template and put single quotes (') around your room name.
4) NetSimple Server now supports listening on specific IP address. Some machines are configured with multiple IP addresses. You can now tell NetSimple to just listen on one of those IP addresses. (By default the NetSimple Server will still listen on all IP addresses on the machine). Simply call self.Open ('', 80) to listen on port 80 on IP
5) NetOptions : NET:SETRECOVERYOPTIONS. A new option to configure the NetAuto error recovery parameters. In the netdemo application there is a WAN configuration use of this. This may help optimise large WAN systems.

1) ERROR:WaitTimeOut renamed to ERROR:CallBackWindowTimeOut (Not to be confused with ERROR:TimeOut - which occurs when NetSimple Asynchronous connections timeout on the open phase).
2) NetEmailSend. Fix if the server sends back a multi-line reply.
3) NetEmailSend. Introduced a new property called self.Helo. This is the string that is passed with the HELO (or EHLO) command. Some Email Servers require a full domain name in here. It defaults to '' which seems to satisfy the servers.
4) FTP - changed the some of the numbers for the FTP equates - as they we the same numbers used by some of the other error equates.
5) NetSimple  - changes default Asynchronous Timeout to 9 seconds (was 6 seconds).
6) NetAuto  - tweak in the CreateSendingSockets() DLL function, to the algorithm that chooses the windows message number.
7) Email - changed some of the equates to handle longer From addresses:
  NET:StdEmailFromSize         equate(255)  
  NET:StdEmailStringSize        equate (255)
8) Email Sending - Changed the Quoted Printable encode function to encode a dot (.) if it is the first character on a line. The NetTalk sending object uses the dot transparency prescribed in RFC2821, but some Email Servers are not compliant and so sometimes they report what should be a single dot as a double dot. If you are using Quoted Printable encoding this will no longer occur as the dot will be converted to =2E, which will not cause any transparency problems with non-compliant Email Servers.
9) DUN Control Template. You can now specify the INI file used in the self.ControlTemplateINIFile property in your object's init method after the parent call.
10) FTP Jump Start example updated.
11) NetOptions NET:GETHOSTIPLIST changed. Previously this had to be called after WinSock was loaded (by using a NetAuto or NetSimple object). It can now be called anytime, as it will load WinSock if it's not already loaded.
12) Internal DLL change. Set Max number of connections for each of the following to 1000:
NetAuto TCP outgoing connections
NetAuto TCP incoming connections
NetSimple client connections
NetSimple server connections

Version 2.7a (Beta) (11 Feb 2003)
New Features
1) NetSimple now supports inactivity timeouts (idle timeouts). Set the self.InActiveTimeout to a value in hundredth of seconds and a packet of type NET:SimpleIdleConnection will be sent to .Process() if the timeout is exceeded

1) Email Sending. NET:EMAIL_MaxMailData was reduced to 8192 (was previously changed to 16384 on 16 Jan 2003) as the larger number was causing "Index out of Range" errors when emails had a large number of dots. Also tweaked NetEmailSend._ConvertDots().
2) FTP some dates where being reported as one year ahead of time, these have been fixed.

Version 2.7 (Beta) (27 Jan 2003)
New Features
1) Started working on Clarion 6.0 support, but it's not all finished yet.

1) Small statistics fix in DLL.
2) FTP some dates where being reported as one year ahead of time, these have been fixed.

Version 2.6 (Gold) (23 Jan 2003)
Gold Release

Version 2.5g (Beta) (16 Jan 2003)
New Features
1) NetRefresh - now has an advanced algorithm where by it only refreshes tables that need refreshing. There are also more options in both the Global Template and the local procedure templates.
2) NetEmailSend - have extended the size of the packet it was sending from 5120 bytes to 16384. This makes it a bit faster.

1) Minor changes to the template.
2) Some versions of NetTalk were producing -6 (ERROR:WaitTimeout) errors when the NetSimple Asynchronous client connections timed out. This has now been corrected to produce -53 (ERROR:Timeout) errors.

Version 2.5f (Beta) (10 Jan 2003)
New Features
1) NetSimpleMultipleClient - now supports Asynchronous Open too.
2) FTP object has a .CalcProgressOptimized() method, which as increased the speed of the FTP demo between 2 and 10 times faster on LANs.

1) Slight changes to the NetSimple Asynchronous Open Documentation. (see NetSimple.Open - which now includes a 4 step guide to using Asynchronous Open in your applications)

Version 2.5e (Beta) (27 Dec 2002)
New Features
1) New NetOptions call to retrieve a list of TCP/IP properties DNS Servers. See Net:GetDNSList
2) NetSimple Asynchronous Open code finished. Read more about this at the NetSimple.Open method. This is a huge improvement from synchronous open which could lead to your application locking up for between 45 to 90 seconds if the connection could not be established.

1) None

Version 2.5d (Beta) (20 Dec 2002) - not released publically

Version 2.5c (Beta) (17 Dec 2002)
New Features
1) (none)

1) NetTalk DLL - Changed ERROR:DllNotActive from -1 to -56. This is better as some functions return -1 (false for some OS calls), which was incorrectly reported as "NetTalk DLL not actively initiated"
2) NetSimple sometimes was dropping the last couple o incoming packets when the remote side closed the connection. This has been fixed. This affected the FTP code.

Version 2.5b (Beta) (6 Dec 2002)
New Features
1) Email Send - 3.5 times speed improvement to the queuing algorithm when using Quoted Printable encoding with.

1) Clarion 5 Install - was not registering template and was giving an ACCINI5 error. This has been fixed.
2) Windows NT 4.0 would report "DLL INITIALIZATION FAILED. Initialization of the dynamic link library C:\WinNT\System32\RasMan.DLL failed. The process is terminating abnormally." if Dial-Up functions where used and Dial-Up was not installed. Work around coded to tell Windows NT not to display this message.
3) Email Send - fixed a bug which sometimes caused spaces to disappear in either the text or html part of the email when using Quoted Printable encoding.

Version 2.5a (Beta) (3 Dec 2002)
New Features
1) NetSimple Asynchronous Open. Currently being worked on - not complete

1) A NetEmailReceive fix for some emails that weren't decoding correctly.
2) Important: Fixed Bug introduced in Version 2.5 beta where NetSimple (Client mode) could not open a connection to an IP address (e.g., worked fine with a hostname ( Fixed.

Version 2.5 (Beta) (22 Nov 2002) - (Please note this is not a stable version)
New Features
1) New method .SavePage(FileName) in Web object. This method will save the web page (less the headers) to the specified FileName.
2) NetSimple Asynchronous Open. Currently being worked on - not complete

1) Speed improvements to the NetSimple objects, and the examples.
Good tip! - If you are receiving large amounts of data make sure your window has auto-display off.
2) Turns off Registry writing error messages.
3) Fix to NetSimple Server mode. Where the list of servers may not have updated fully when not using the NETTALKLOG=>1 define. This has been fixed to work even when no logging is used.
4) FTP Fix for Novel FTP server (Novell NetWare v5.00 FTP server) that incorrectly reports back 200 after a file delete instead of 250.
5) Corrected some methods in the some of the objects to call self.send() and not parent.send() - functional the code remains the same, but this improves flexibility (for example to log sends).
6) Fixed a clash between NetRefresh and Brian Staff's Xplore template. (Event:User+46 changed to Event:User + 146)

Version 2.4 (Gold) (25 October 2002)
New Features
1) (None)

1) Email Receive object. Handles another variation of emails with base64.

Version 2.3g (Beta) (18 October 2002)
New Features   
1) have released a new version of Debug View. They also have a number of other cool products. (TCPView is also a handy product).

1) NetAuto object  Error correction algorithm changes. The connections that the NetAuto objects create are now closed automatically after 30-60 seconds. When data needs to be sent, new connections are opened. Also introduced some changes to the resending algorithm.
2) Internal DLL windows message numbers cycle.
3) Internal DLL changes to the NetAuto resending & acknowledging algorithm.
4) Renamed the external Windows and WinSock function in the DLL - this was causing some people problems when compiling their own apps that used the same names that were exported by the NetTalk DLL.
5) Email Sending. Fixed the problem with the file format returned by the clarion FileDialog.
6) Template change to the length of the DIP server address field from 20 to 80.

Version 2.3e (beta) (13 September 2002)
New Features   
1) (none)

1) Sending emails with recipients separated by commas were not working. This has been fixed. Both comma separated lists and semi-colon separated lists work.

Version 2.3d (beta) (6 September 2002)
New Features   
1) NetAuto objects have a new property that allow themselves to be seen by their same process. This is a bit of a new thing, so treat it with care. See the NetServer.Init method.

1) Internal DLL: the number of concurrent reading & writing sockets were increased, also the windows message numbers were changed and re-ordered.

Version 2.3c (beta) (30 August 2002)
New Features   
1) Ping command added to NetSimple. See the Ping method and the NetDemo example

1) News & Email Receive. Fixed bug where the code was failing to realise a message had been fully downloaded. This happened very seldomly, but has now been fixed.

Version 2.3b (beta) (16 August 2002)
New Features   
1) FTP Example in the Demo application now supports switching between the Passive & Active FTP modes.

1) Time Zone Information now works with Daylight saving. This fixes time zone information when sending emails.
2) FTP bug fixed where after the PASV command was issued the FTP server sometimes stopped responding.
3) FTP now ignores the '500 unrecognised command' reply for the TYPE A or TYPE I (ASCII or Binary) commands.

Version 2.3a (beta) (2 August 2002)
New Features   
1) DIP Server example updated. The DIP server now stores the entries in a text file, so that if the server is restarted the previous entries are loaded. This example is shipped as a APP file in your clarion/3rdParty/Examples/NetTalk folder as well as an EXE - see the NetTalk download page at


Added a new method to the NetEmailSend object called AfterBuildPartsFromParts(). This method is very similar to the AfterBuildFromWhole() method. This method is called if you are using the NET:EMailMadeFromPartsMode option with SendMail() method. It allows you to change two things:

1) If you have created your own DataQueue structure, you can set any new fields that you've added to the DataQueue in this method. (Existing fields will be overwritten by the rest of the code in .SendMail() )

2) The following properties:
self.ToList (NetEmailSend only)
self.CCList (NetEmailSend only)
self.Newsgroups - (NetNewsSend only)


New FTP object properties.

Set self.
ProgressAllowLoading = 1 if you want the progress bar to move while a PUT file operation is loading the file and sending it to the NetTalk DLL.

self.TransferState = is set to one of the following during file transfers.
'Loading' - while the file is loaded from disk to the NetTalk DLL. (before the file is sent to the FTP server).
'Uploading' - while the file is uploaded to the FTP Server
'Downloading' - while the file is downloaded from the FTP Server
New FTP object method.
Internal method self._CallDone added.

1) Template change, so that the self.SuppressErrorMsg = 1 is controlled correctly from the extension template option.
2) Fix for the FTP objects, so that if while downloading a file the connection dies, the transfer stops correctly after the ErrorTrap() method is called. Previously it was continuously trying to download the file and creating a hodge-podge of a downloaded file on the local side.
3) Template fix, for the new class routine section. Code is now saved correctly.
4) Email Sending. Made dots transparent. Resolves "500 unrecognised" errors after an email is sent.
5) Pasive mode FTP. Passive downloads and uploads where not specifying either Binary or Ascii type. This meant sometimes Binary files where downloaded in Ascii mode. This has been corrected.

Version 2.3 (beta) (12 July 2002)
New Features   
1) Template change. Added a Routine Embed section for New Class Methods and Derived Class Methods. This allows you to add routines at the end of your class methods.

1) Email Sending Object. Fix made to code that joins lines together if a response is split into two packets.
2) Internal Change. Email Sending Object. Fixes made to ._GetHeaderField() method. Prototype also changed from (string p_Header),STRING to (string p_Header,long p_count),STRING
3) Internal Change. Email Sending Object. Fixes made to .CalcEmailName() method.
4) Internal Changes:
Left(Clip(...)) changed to Clip(Left(...)) in DLL functions: NetCharSet()
And in Email objects: NetEmailReceive._ProcessMimeDesc
5) Email Receive Object:
Fixes to the ._ProcessCopyBinData function so that packets which end with <13,10>.<13,10> don't get treated as end of email.
6) Email Sending Object. loc:FileName extended from 80 to NET:StdEmailPathSize (255). The Full File Path remains at 255 characters long.

Version 2.2 (Gold) (5 July 2002)
New Features   
1) None

1) FTP object - closes files in parent ErrorTrap method, if they are open.
2) FTP object - progress of how many bytes to receive fixed if a connection is closed.

Version 2.1c (beta) (28 June 2002)
New Features   
1) New EmailReceive properties: self.TextCharSet & self.HTMLCharSet which contain the content Character Set properties. e.g. "iso-8859-1" or "windows-1251" or "Windows-1252"
2) New internal DLL function. NetAutoSetNotifier

1) Email Receive Object. Internal fixes in the ._GetHeaderField() and .CalcEmailName() methods. Also .CalcEmailName() changed from private to public.
2) Legacy. Capitalised the prototypes (e.g. (...),string to (...),STRING) of the following methods:
2) FTP. Changed the PASSIVE command from 'PASV <13,10>' to 'PASV<13,10> (note the space) - which was causing the FTP to fail on some systems.
3) Changes to the template so that any new Net objects you create don't have the service name field in the template options.
4) Passive FTP. Fixed so that you can download zero sized files.
5) Internal changes the template so that new objects that are created don't have to have a ServiceName in the init() method.

Version 2.1b (beta) (14 June 2002)
New Features
1) 4 new methods for the NetWebClient object for processing web strings like:
see the NetWebClient properties section for details.

1) Email and News objects now handle receiving command packets that are split up into 2 (or more) in transit.

Version 2.1a (beta) (7 June 2002)
New Features
1) NetEmailSend object's .EmbedList and .AttachmentList now support double quotes to separate filenames. This means you can supply attachment lists in any of the following 3 formats:
C:\||file with spaces, and commas.txt (Clarion FileDialog Format)
file1.txt, file2.txt
(Normal comma separated)
"file with spaces.txt", "anotherfile.txt"
(Comma and quote separated)

Version 2.1 (beta) (23 May 2002)
New Features
1) Option in NetOptions to allow you to set the encryption key for your applications. Use NetOptions with the NET:SETENCRYPTIONKEY equate.
2) From now on, encryption only encrypts your data part of the packet and not the majority of the packet.
Important: This means any new application you build with v2.1 onwards will not be able to talk with older versions of NetAuto if you are using encryption.
3) Important: Internal DLL changes. Increased some security issues in the DLL in the NetAuto objects. For this reason we recommend that all your applications run this version or better. The downside of this fix is that some packets (NetAuto protocol packets) from older NetTalk versions may be regarded as corrupt. The following errors are generated in the logs. "n_acceptCanDoTypePacket() : Error. Received a corrupt data packet. Another application may have sent this data or if the packet was decrypted the key may have been wrong. Bytes received = x".
4) Exposed the NETUUDecode() DLL function.
5) Added a property to the NetNewsReceive object - self.NoPosting which is set to 1 if the News Server does not allow posting. This fix also removes a 201 error which was occurring when trying to read the Newsgroups. Also in NetNewsSend if you send to a News Server which does not allow posting self.error = ERROR:NoPostingAllowed in self.ErrorTrap().
6) New example of how to download all the files in the directory using the FTP object.

1) Changed the Registry functions in the NetTalk DLL to handle SubKey names up to 1024 chars long and Values up to 4096 chars long.
2) FTP - Fixed a bug where FTP files which reported dates like "May 11 03:51" would report as files of year 2000 and not the current year.
3) NetEmailReceive. CharSet encoding fixes. Works properly now. (e.g. decoding ?Windows-1252?Q?Jono_=28hotm=E0il=29=22_?=)

Version 2.0 (Gold) (2 May 2002)
New Features
1) NetTalk goes Gold! Version 2 released. (Incidentally this is the 50th release of NetTalk over the last two and half years.)
2) Icons in the NetTalk example applications have been updated.
3) Added two new queues to the NetEmailReceive (and NetNewsReceive) object. self.AttachmentListQ and self.EmbedListQ are queue structures containing the information in the comma separated lists self.AttachmentList and self.EmbedList respectively.

1) Fixed the FTP object so that you can download more that 256 files at a time. The fix involved calling the self.abort() instead of calling self.close() in NetFTPClientControl._CommandPrelim()
2) Changed the NetTalk DLL to allow 1000 concurrent server listening ports, 1000 sever connections, 1000 client connections. If you need more than this please contact 

Version 1.0 beta 17i (25 April 2002)
1) Fixed a bug in NetWebClient where NetTalk sometimes called the self.PageReceived() before the whole page was receive.
2) Sending Email in a Process Example has been updated.

Version 1.0 beta 17h (18 April 2002)
1) NetEmailSend - ToList, CCList & BCCList now can be both semicolon or comma separated lists. (Previously they had to be separated by commas).
2) NetServer.Kill was previously setting self.service.Thread = 0 before the call to NetAutoSetService. Moved this to after the call as NetAutoSetService was unable to unload the NetAuto service.
3) DLL bug. NetAuto services were not being deleted from the DLL queue. This has been fixed.
4) NetClient.Init calls self.ServersChanged if there are already services in the DLL queue.
5) NetEmailReceive now handle attachments which don't just have alphanumeric names.

Version 1.0 beta 17g (4 April 2002)
1) New Web Builder example.
2) Advanced Programming:
You can now specify the line break characters in the FTP objects by adjusting the value in self._LineBreak, which defaults to '<13,10>'. See the FTP Properties section.
3) Fixed NetEmailReceive to also decode MIME email that have attachments encoded using UUDecode. Previously attachments were processed fine if they were either MIME or UUencode, but not both. 
4) Internal property NET:EmailEstimatedHeaderSize renamed to NET:EmailEstimatedExtraWholeMessageSize and increased from 1200 to 8192, this previously caused some embedded attachments not to display correctly. There were also some small code changes with the resizing of the Email that is made up from parts when Quoted Printable encoding was used.
5) The compiled (EXE) of the DIP Server is now available for download for those who don't have WinEvent and therefore could not build the DIP Server APP file. Available from the NetTalk Download Page on
6) Fixes to NetEmailReceive so that it can break apart email messages that don't end in a "<13,10>.<13,10>"

Version 1.0 beta 17f (21 March 2002)
1) Updated the DIP Server code in the example folders, to include the new WhoAmI functionality.
2) New NetAuto File Get and Put example code. This shows you how you can use the NetFileGet and NetFileServer objects to PUT files, as well as getting files.
3) Changes to the FTP Directory Listing Code. Fixed the directory listing so it now recognises files with spaces in the filename.
4) Advanced Programming:
Changes to the FTP Directory Listing Code. Restructured the methods so that programmers can more easily override methods that deal with the various different types of directory formats returned from FTP servers. See more details about the FigureOutDirFormat() method.

Version 1.0 beta 17e (14 March 2002)
1) Autoclose server now restores your application if it was minimised before displaying the warning or closing down messages.
2) Allow the InactiveTimer time to be set right at the start of the program. Previously it could only be set after the DLL was all loaded up and ready.
3) Minor fix to NetSimpleMultiClient, when the close() method is called. Omitted to put a "put (self.q)" in the code. Fixed now.
4) Fixed the progress bar indicator when using FTP in Passive mode.
4) New method for the NetDIP. NetDIP.WhoAmI() can be used to find out your IP address as seen by a DIP server.

Version 1.0 beta 17d (21 Feb 2002)
1) Fixed some of the UDP log file entries, that were displaying incorrect information.

Version 1.0 beta 17c (7 Feb 2002)
1) Added a new property to all the objects. self.UseThisThread is a advanced programming option allowing you to manually specify which thread will receive the DLL to Object events. For more details see the object properties sections for either NetServer, NetSimple, NetSimpleMultiClient or NetDUN objects.
2) Renamed the Registry Equates so they don't conflict with other peoples applications/temlates. e.g.
  Was: HKEY_CLASSES_ROOT          long(80000000H)
  Now: NET:HKEY_CLASSES_ROOT      long(80000000H)
3) Fixed a bug in the NetSimple Server, where the server was unable to reply back to connected clients. This also caused the DIP Server application running at to fail. This is fixed now.

Version 1.0 beta 17b (31 Jan 2002)
1) Minor bug fix to NetEmailReceive regarding saving attachments of some types of emails.
2) Important.
Introduced a new property to the NetSimple objects. self.DontErrorTrapInSendIfConnectionClosed indicates that you want to handle a the error response after calling the Send() method if the connection you were trying to send data on has closed. Some applications that re-use connections very quickly were getting 10038 errors. These were being caused by the object not yet knowing that a connection has closed. For more details on how to use this new property see the NetSimple Property section.

Version 1.0 beta 17a (17 January 2002)
1) Changes in the DLL concerning the way the NetSimple Client Connections are closed.
2) NetRefresh Global Extension allows you to set a minimum time to wait after each refresh before refreshing again. This is useful for busy networks as if lots of people are making changes the other machines tend to slow down with all the NetRefreshs

Version 1.0 beta 17 (10 January 2002)


SMTP Authorised Login - NetEmailSend now supports AUTH LOGIN, the same AUTH method supported by Outlook Express 5.x. This allows you to login to SMTP servers using NetTalk. Two new properties added: self.AuthUser and self.AuthPassword.
2) NetAuto objects now support 168-bit DES encryption. Simply set self.packet.encrypt = 1 and your packet data will be encrypted with 168-bit DES encryption.
3) Emails may now be sent to only a BCC list. Previously you had to have a least one email address in the TO or CC list.
4) Changes in the DLL concerning the way the NetSimple Server Connections are closed. This fixes an error with the PUT FTP functionality.

Version 1.0 beta 16a (28 December 2001)


NetCloseApps - improvements to the Refresh functionality.
2) Internal DLL issue - With the NetAuto objects, if the connection dies the DLL tries again, this is done repeatedly on a sliding scale starting at every 8 seconds and now increasing 50% each time until it reaches 1 hour. (e.g. 8 seconds interval the first time, then 12 seconds, then 18 seconds etc.)
3) Fixed a DLL bug that was introduced in version 1 beta 16. The error recovery mechanism for when sockets are closed by the remote machine when using the NetAuto objects had a bug that caused -20 and -12 errors in NetTalk. This has been fixed.

Version 1.0 beta 16 (20 December 2001)


Web Authentication now supported. See the Web Authorization section for an example of how to use this.
2) FTP clients starts now starts using a random listening port number, which ranges from 1792 to 4400.
3) Documentation explaining how to email PDF reports using Tracker Software's PDFXChange and NetTalk. See the PDFXChange section. There is also an example application.
4) Changes to the way the NetSimple and NetAuto objects close down the socket connections. This should prevent 10055 (WSAENOBUFS) and minimise the number of FIN_WAIT2 and TIME_WAIT states that are reported by "netstat -a".
5) Fixed the way the sockets close down so that the NetSimple connection can be "re-used". This means that there is no longer a limit of 256 times a connection can be opened and closed. This was causing problems in the Email sending from inside a process.
6) The queue of the connections that are connected to a listening NetSimple (Server Mode), qSeverConnections, is now automatically updated. This means you don't have to call self.GetInfo() before using qServerConnections. 
7) Fixes to Dial Up Networking Objects. This includes: 
a) List of Dial Up Networking connections available no longer missing one connection.
b) Server IP in the connection status no longer missing first digit.
c) Dial Up works for Windows XP. 
8) Important: v1 beta 16 requires that both the object and DLL are using the same version otherwise your application will GPF. 

Version 1.0 beta 15e (28 November 2001)


Email receive object handles more CharSet decoding (including "windows-1250").
2) New example of using NetSimple objects to implement a proxy application. This is a very useful tool for developing network applications as it can be used to view the the network traffic between 2 network applications.
3) FTP objects improved. Bugs fixed associated with not always receiving a full directory listing or missing the last packet of a "get' file. 
Some people worked around this bug by waiting for two Done() method calls. Please note that this bug fix means that the full directory listing is available after the first (and only) Done() method call.
4) FTP Progress bar now also works with the PUT file command. (See the example for the code on how to display the progress bar).
5) Changes to the parameters passed in the NetSimple.GetInfo() method. If you put code in this virtual method, please find it in the orphaned embed section.

Version 1.0 beta 15d (8 November 2001)


Fixes to the email objects - a few more emails did not split correctly into text & html. And a few attachments were not saving.

Version 1.0 beta 15c (25 October 2001)


Increased stability to Email objects.


Email receive object now handles iso-8859-1?Q and iso-8859-1?B header encoding.


(Advanced topic) Moved some byte and long initialisation (e.g. DefaultDownloadFlag byte (1) )  from the variable definition area of the objects into the Init() method. This now means you can NEW all the NetTalk objects.


Email receive object now handles an email with the same filename in the same email. 

Version 1.0 beta 15b (11 October 2001)


 HOT  Passive FTP now supported.


FTP bug fixed, where FTP was hanging when an FTP was open, closed, and then opened again.

Version 1.0 beta 15a (2 October 2001)


Bug fixed in NetSimple Server. Sometimes the server was closing itself down. This was noticeable in the NetDIP server, which sometimes stopped responding.


We've also updated the DIP server running at (see the demo example or the DIP docs for more details on how to use this). If you are using a DIP server yourself and you need the new EXE build please email (If you have WinEvent you can build your own DIPServer - you'll find the code in the NetTalk example folder).


 HOT  New example of sending email from inside a process.


Template tweak to allow one to use the "CallABCMethod" ABC template option.

Version 1.0 beta 15 (13 September 2001)


Added UUEncode functionality to the NetEmailReceive objects. This now means that NetTalk can read emails that have attachments encoded with UUEncode. (NetTalk continues to read MIME.)


More tweaks to the NetEmailReceive for improvements to reading emails and attachments.

Version 1.0 beta 14i (30 August 2001)


Added a new method to the NetEmailReceive object called DecideToDelete(). This method allows one to selectively choose which emails should be deleted. This method is called after each email is downloaded, and gives you the option to set self.OptionsDelete = true if you want to delete the email, after looking at the contents of it. If you want to delete all email just set self.OptionsDelete = true before starting to download the emails.


More FTP object fixes. 


Added a new method to the NetEmailSend object called AfterBuildPartsFromWhole().  This method is called if you are using the NET:EmailWholeMessageMode option with SendMail(0 method. It allows you to change the following properties after they have been extracted from the whole message:
self.Newsgroups - (NetNewsSend only)

Version 1.0 beta 14h (23 August 2001)


Added the documentation for the NetAutoSendBroadCast and NetServer.ReSync documentation. These functions can be used to refresh the list of available services. This can be useful when using dial-up or mobile computers on a LAN.


FTP object fixes. Some FTP Servers returned data in an unexpected format for NetTalk, this has no been fixed. The FTP object was also struggling with control data returned in more than one packet.  

Version 1.0 beta 14g (9 August 2001)


Email Sending object's ExtraHeader property no longer needs the trailing <13,10>, but will continue to work if it does have one.


Added a 2 more error properties to the NetEmailSend and NetNewsSend objects. These new properties (self.ServerErrorNum & self.ServerErrorDesc contain the errors returned by the Email or News Server, if this was what caused the error).


In NetSimpleMultiClient. Added the self.q.SockID which is a unique connection identifier. In fact it is the same as the existsing self.q._connection.SockID. This just make it easier to manage the queue.


Legacy fix. Some legacy applications were GPF'ing when run. This fixes the bug.


Changes to the CloseAppControls Control Template. We've changed the control template. Your existing windows can remain unchanged, or you may choose to delete and add the control template again. The new one allows you to selectively choose which applications to warn or shutdown. Try out the NetDemo example to see this in action.


Fixes to the NetEmailReceive object. Some emails where causing the NetEmailReceive object to "hang". This has been fixed.


Sometimes an Error 10038 message, was been generated when a NetSimple.close() call was placed on a NetSimple connection that had had been closed by the remote side. The error is no longer displayed by the object. But it is still logged in the NetTalk DLL.


We've added a new tab in the Web Client example in the NetDemo application. It gets the time from an atomic time server using the NetWebClient object.

Version 1.0 beta 14e (19 July 2001)


Email Sending now supports sending emails by passing NetTalk the whole message. using self.SendEmail (NET:EmailWholeMessageMode) method. 


Email now supports the DeliveryReceiptTo and DispositionNotificationTo properties which allow servers and email clients (respectively) to report back notification of receipt of emails.


Fix for legacy application that were using NetDUN (Dial-Up Networking) and had compilation errors.

Version 1.0 beta 14d (9 July 2001)


NetTalk now works with Web Builder applications. See the Using NetTalk with Web builder section.

Version 1.0 beta 14c (5 July 2001)


Email tweak where if you send messages to a comma separated list ending in a comma, Nettalk was sending the message to a blank email address. A trailing comma in a list is now ignored.


Removed bug in NetServer.Kill and NetClient.Kill which in some cases caused a GPF.


A few small tweaks.

Version 1.0 beta 14b (26 June 2001)


Email & News progress bars. You can now add progress bars and get progress information from these objects. See the Email Methods & Properties sections and look out for the CalcProgress() method.


Change to the NetSimple GetInfo() method. This method can now now report both the number of packets waiting in the NetTalk DLL as well as the number of bytes in those packets.


Bug fix, of the problem where sometimes service A could "see" service B, which could not "see" the service A.


Extra logging project define for applications that can't start using a command line parameter.

Version 1.0 beta 14 (18 June 2001)


Changes to the way the NetTalk DLL loads and unloads. This now means there is no need for the Dummy NetAuto objects that some people where asked to add to their applications, and the dummy NetAuto object that NetSimple automatically added to each application has also been removed. This results in cleaner WinSock use and increased stability.


Tweaks to NetRefresh.


Tweaks to AutoCloseServer. It now shuts down Win2K applications better. Previously it would shut down the application partially, and only when you waved the mouse over the applications window did it completely disappear. It's working much better now.

Version 1.0 beta 13a (12 June 2001)


Tweak to the ICanDo Packets for machines with more than one IP address. Should prevent flickering of windows with a list of users (e.g. Chat or the RemoteCloseApps window), which resulted from NetTalk getting into a loop with on multiple IP machines.


Added a self.XMailer property to the NetEmailSend and NetNewsSend object. This optional property allows you to specify the name of the application that sent the message.

Version 1.0 beta 13 (8 June 2001)


UDP support for the NetSimple Objects.


Minor Web Fix.


We've noticed quite a lot of folks are downloading the latest version of NetTalk (which installs the latest DLL onto your drive) and then run their applications that still use the old NetTalk code compiled into the code. While a lot of the NetTalk functionality continues to work, this is not a good recipe for getting the new features to work in your application. Please do recompile your applications after installing NetTalk.
Also some people who move DLLs and LIB files around, end up running some of their applications on old NetTalk versions. We've included a new section FAQ on how to do a clean-fresh re-install of NetTalk. 

Version 1.0 beta 12a (31 May 2001)


Fixed a bug where NetTalk would only load on machines with Dial-Up Networking installed.


Improved NetAuto objects ability to notice if a service on another machine is no longer there.

Version 1.0 beta 12 (24 May 2001)


Tweaked the Nettalk template to fix an error in NetRefresh if Errors were suppressed.
Fixed the template so that NetRefesh works when on the same machine.
Fixed it so that "Deletes" trigger a refresh properly.


 HOT    Added the NetDUN object. This object allows you to use the Dial-Up connections and dial into Servers.


By the way, there is a new version of SysInternals' DebugView available now.


Revamped the FAQ (Frequently Asked Questions) section. This section should covers the most commonly asked support questions.

Version 1.0 beta 11 (11 April 2001)


Added the NetSimpleMultiClient object, which is a multiple client version of the NetSimple object. 

Version 1.0 beta 10d (5 April 2001)


 HOT    We've added some JUMP START sections to the documentation. These enable to quickly Jump in and Start using NetTalk in your application. The aim of these sections is to give you the step-by-step instructions to get the basic functionality of the objects into your application in 10-30 minutes.  


FTP. Got rid of a bug that prevented you from being able to execute your next command from before the parent call in the Done() method. You can now call other FTP commands from before or after the parent call in the Done() method.


Web. Got rid of a bug that prevented you from being able to call the Fetch method with a non-variable string.

Version 1.0 beta 10c (27 Mar 2001)


Added an option to delete an email without having to download it. See the NetEmailReceive Decide() method.


NetEmailReceive and NetNewsReceive now also support multipart/related. This means it supports embedded files like graphics in the HTML section in the email. The NetEmailSend and NetNewsSend continue to support this feature.

Version 1.0 beta 10b (22 Mar 2001)


The NetEmailSend.ReconnectAfterXMsgs property now works (this applies to both the NetEmailSend and NetNewsSend objects). Setting this property to something like 20 will cause the connection to the SMTP server to be closed and opened automatically after every 20 messages.


Removed a bug from NetEmailSend that sometimes caused 2 or 3 emails to fail, when sending large numbers of emails, such as in a newsletter application. 


Username and Passwords now work in News objects.


Fixed a bug which sometimes prevented email from being received from a Microsoft Exchange Server.


Added the ReplyTo and Organization properties to the email and news objects.

Version 1.0 beta 10a (20 Mar 2001)


Changed the prototype of the Open() method in the News and Email objects. This probably won't affect you unless you have placed embedded code in your Open() method in an Email or News instance of NetTalk. In which case you old code will now be an orphaned piece of code and you will need to put in it into the Open (string Server,uShort Port=0) method.


Removed a bug from NetEmailSend that sometimes caused 2 or 3 emails to fail, when sending large numbers of emails, such as in a newsletter application. 

Version 1.0 beta 10 (15 Mar 2001)


Fixed the Web object where sometimes the pages would appear not to download. Like at


NetSimple - cleaner closing down mechanism. 


Changed Stats structure qSimpleServerSockets_Size & qSimpleServerSockets_Bytes to qSimpleServerConnections_Size & qSimpleServerConnections_Bytes respectively


Changed IPcstr to RemoteIP in Net:SimpleServerConnectionsQType


Change with NetSimple packet structure. self.packet.ToPort and self.packet.FromPort replaced with self.packet.OnSocket property. A self.packet.SockID property has been added. Important: You now also need to set the SockID property when replying to a connection if it is different from the one that you received the data on. This SockID property is also available in the self._Connection group stucture as well as the results of calling NetSimpleGetServerConnections (ThisSimpleServer._Connection, qOurConnections)


Changed NetSimple Object IP string size from cstring (81) to cstring (16). This gives 15 characters for the format plus one char for the null terminator.


NetTalk now works when no network card is present, as long as at least one TCP/IP adapter is setup (e.g. NetTalk works when a TCP/IP modem adapter is setup in the Network properties even if the Modem is not plugged into the machine or connected to the Internet.)


Changed DLL and Object packet Structure a bit in NetAuto and a lot in NetSimple.


The NetSimple Close methods now perform a graceful close. i.e. Data that has been sent from the object to the DLL will be sent, and the DLL will send the object data already received that was waiting in the DLL. No new data will be received and the socket will be closed properly once all data has been sent.
Note: If the object's window is closed before the Close() method is called, any incoming data in the NetTalk DLL will not get to the object as the object is closed when the window closes. NetTalk does not guarantee that data waiting in the NetTalk DLL will be sent, after the object is closed down (e.g. the window closed). This means that when using the Email and News objects you still need to keep the windows open until the MessageSent() or the ErrorTrap() methods have been called. This is because of the mail protocol behaves in a synchronous fashion. i.e. a command is sent and a reply is given before the next command is sent. So closing the window before the mail has finished being sent may not guarantee that the mail will be sent.


Added an Abort() method to the NetSimple objects. This kills the socket, and any data (either incoming or outgoing) that the DLL has. It can be used to bail out of an action fast. 


Added the CloseServerConnection() and AbortServerConnection() to the NetSimple objects. These close/abort the incoming connections when NetSimple is in the Server mode (i.e. used as a listening port).


New self._Connection.MaxServerConnections property for NetSimple objects when in Server mode. This allows you to specify how many incoming connections are allowed to connect to this listening port. 0 = no limit (default).


New NetSimple.GetInfo() method. This method gives back a list of all connections currently connected to the listening port. This queue is not self-updating i.e. you need to call this method before reading the queue if you want the most up-to-date information.


Fixed News Receive Index Out of Range Error. This also fixes the bug that sometimes caused the NetNewsReceive to crash.


Fixed Email Receive bug that caused it to crash sometimes.


Fixed Web Proxy settings, to recognise when Internet Explorer's proxy settings have not been enabled.


Added the ability to send embedded files (pictures) in the HTML part of an email. See the EmbedList property for the NetEmailSend object in the Methods & Properties section.


New: Added the FTP Client objects.


Fixed a bug that could cause some applications to GPF when the object was closed down. 

Version 1.0 beta 9b (16 Jan 2001)


Added a special Tips for Creating an Email Newsletter Sending Application section.


Added the NetWebClient object, which allows you to get web pages as well as to post data to web page forms.


Removed the -34 error bug, which sometimes happened on closing your application (or window) when using NetSimple.

Version 1.0 beta 9 (20 Dec 2000)


Added the MessageID and References fields to the Email objects. 


Fixed a bug in NetSimple Server, where the Server would respond incorrectly if it were opened, closed and then re-opened.


Added more options to the NetAutoCloseServer template. You can now set the default messages as well as specify the time delay of the windows that popup. Also added a new CloseApp() method, which allows you to run code when the whole application needs to be shutdown.


Added a new embed point after the objects init() call in the Window.init() method. This allows you to decide what actions to take if the NetAuto objects don't initialise correctly. e.g. If the user runs too many instances of NetTalk an error is generated and you can decide to close your application down.


Added the NetNewsSend and NetNewsReceive objects. These allow you to access Net News Servers.


Add the NetDIP objects. The DIP (Dynamic IP) client object allows you to connect to a DIP server, which tells NetTalk who else is using the same application as well as allowing machines which are allocated dynamic IP address to act as a server.  


Added the NetRefresh object. This object ensures that data that is changed in one application using shared data is immediately reflected on the screens of all other users.


Added a self.ErrorString property to all objects. This contains the ErrorString of the last error that occurred. This is especially useful when you are running objects with errors suppressed.


Added new examples to both the NetDemo application and also


Added a check box to the extension template to allow you to easily suppress NetTalk object errors.


Windows 2000 (Win2K) NetTalk bug fixed. Symptoms ranged from NetTalk application using 99% CPU, to no functionality. Anyway this bug is now fixed. 


All logging has now moved to SysInternals DebugView. You can no longer create log files from your application. You must use DebugView.


By the way, there is a new version of DebugView available now.


More comments have been inserted into the example.

Version 1.0 beta 8e (2 October 2000)


Removed the obsolete option to transfer data packets via synchronous transfer. NetAuto objects has been using asynchronous data transfer since version 1 beta 5. Both NetAuto and NetSimple objects still continue to offer asynchronous transfer. 


Added a debug trace option to view debug output in SysInternals DebugView application. This is an attractive alternate to generating log files.


Fixed the memory leak that caused the receiving process to hog memory. We knew about this for ages, but it took quite a while to track down what was going wrong in the NetTalk DLL.


Added a few more stats to the NetOptions NET:GetStats function.


Fixed a DLL bug where some packets we not getting acknowledged properly.


Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 8d (and less) are no longer compatible with this and later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate and no communication will take place on the object layer.


Fixed a bug whereby NetAuto services would not notice that other public services on other machines were no longer available if the machines running those public services were disconnected from the network or were rebooted without allowing the NetTalk process to shutdown gracefully.


Fixed a bug whereby NetAutoRemote only polls a machine once if a hostname is passed to NetAutoRemote. NetAutoRemote now polls each time you call NetAutoRemote where you pass a hostname or an IP address.

Version 1.0 beta 8d (6 September 2000)


Added a FromIP property to the NetAuto packet structure. This can be used to see the IP address of the process that sent you the packet. See NetAuto Data Structures.


Exposed the DirectResponse group property in the NetAuto packet structure. This group stores the data needed to reply back to the sender of the packet. (So far only one person has asked for this information).  See NetAuto Data Structures.


Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 8c (and less) are no longer compatible with this and later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate. No communication will take place on the object layer.


NetEmailReceive. Fixed Email attachment download bug which garbled attachments when they were sent from Web Mail clients. (e.g.


NetEmailReceive. Fixed bug where the Text and HTML content for emails with attachments is sometimes blank.


NetEmailReceive. Emails with attachments are now downloaded about double as fast on a LAN.


New: Send Email Control Template. This template allows you to add email sending functionality to you application even faster than before.


Fixed a bug in the template where you could get the following errors:
  (nettalk.tpl) Error: Group %MethodDeclaration(NetTalk) Not Found
  (nettalk.tpl) Error: Group %GetNewMethodTreeDesc(NetTalk) Not Found 

Version 1.0 beta 8c (24 August 2000)


Added a GetStats command to NetOptions. You can see how many messages are waiting in the DLL, bytes sent / received and DLL queue sizes. See NetDemo for an example.


Minor Bug Fix. If you have an object based on NetSimple and you are using the Server mode, the self.openFlag property will no longer be set to 0 when the connectionClosed() method is called it will remain as 1 if the object was listening on the port before a client connecting to your object shut down it's connection.


We've been trying to tidy up the way a NetSimple object closes down. Things get a bit messy when there is still a packet to be sent, and either the client or server shuts down. We've made some tweaks here, but it may still need some work. If your NetSimple objects are no longer closing correctly please contact us. We've also cleaned up packets that are still hanging around in the DLL after the connection closes. 


Some tweaks to the Mail objects. Also made the object recover better when an error occurs while sending a mail message, so that other mail messages stand a greater chance of being sent.


Made the /netdlllogerrors option report all errors in the DLL and not just a selected few. We've noticed that running this option sometimes causes a "WSLINST Internal Error 02". Let us know if you are struggling with this, otherwise you run it with full logging or no logging.


You can now get the DLL version string out the DLL see NetOptions.


Template change to support Clarion 5.5 CR1.

Version 1.0 beta 8b (10 August 2000)


Increased the Attachment list size in the Email objects


Fixed a bug in the NetEmailReceive object where it could not receive emails from some servers.


The NetEmailSend self.AttachmentList now accepts two formats:
a) comma separated files (e.g. 'c:\file1.txt,c:\file2.txt')
b) Clarion FileDialog format (e.g. 'c:\|file1.txt|file2.txt')
See the NetDemo application for an example.

Version 1.0 beta 8a (7 August 2000)


Added a new logging option /netdlllogerrors. See the logging section.


Fixed a bug in sending attachments using Email. Previously this caused a GPF or sent a corrupted file to be attached.


Email attachments are now sent about 60 times faster.

Version 1.0 beta 8 (3 August 2000)


Added the Email Sending and Receiving objects. These objects support SMTP and POP integration with the use of Mime. You can easily send or receive text, html and attachments with these objects.


We've added a new method to the NetClient object. It's called ServersChanged(). It's a virtual method that is called whenever the list of servers change or may have changed. See more in the NetAuto methods section.


Major overhaul of the documentation. We've also simplified and changed the examples.


Changes to the template. If you are using NetClient and NetServer you need to check or uncheck the "Private Service" checkbox in the Settings tab in the NetTalk procedure extensions. Most NetServers should be set to public (non-private) and most clients to private except where your clients need to talk to each other (like in Scenario Two).


Changes to the template. You no longer need to derive your Init() and Send() or Process() or ErrorTrap() methods (or any other methods that are already part of the Base Class). You should rather override these methods. So if you previously derived methods that were already part of your Base Class, you should:
1. move your code out of your derived method
2. delete your derived method and 
3. put your code into the methods that are available when you press the Override Class Methods button in the Advanced tab of the NetTalk template. 

You also need to be aware that the parent calls are in place in these methods (view the source to see this) and so you will not need to call the parent calls yourself. If you wish not to call the parent call insert a return statement before the parent call. (See scenario one)


Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 7b (and less) are no longer compatible with later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate. No communication will take place on the object layer.


Fixed the NetTalk DLL to shutdown when the system is restarted or shutdown. WinEvent users will notice that the DLL shuts down correctly now.

Version 1.0 beta 7 (21 April 2000)


NetTalk now supports Legacy applications. All extensions are used in exactly the same way as for ABC applications. New legacy examples (see \clarion\3rdparty\examples\nettalk\legacy and \clarion\3rdparty\examples\nettalk\multi-leg directories)


We've added the Simple Connect Object. 

The ChatControls Control template interface has changed to bring it in line with the standard NetTalk object extension. This opens up all the normal embed points for the object.

The CloseApps Control template interface has been changed to bring it in line with the standard NetTalk object extension. This opens up all the normal embed points for the object.

DLL Unloading bug has been fixed.

Version 1.0 beta 6


We've made some changes to the Internal working of NetAuto. Each machine gets assigned a GUID (Global Unique Identifier), a RunID and a Description.
The GUID remains the same for the life of NetTalk on that machine, the RunID increments every time NetTalk is run on the machine and the Description forms a friendlier way of identifying NetAuto instances than just the NetName. 
These entries are found in the registry in HKEY_CURRENT_USER\Software\CapeSoft\NetTalk\GUID
You can change the Description but please don't change the GUID or RUNID.


The Description has now been added to the public servers queue. If you open the Chat demo in the NetDemo app you will notice the Description and IP are now in the Chatters list.
The Chat and the CloseApps controls have changed, and we suggest that if you use this control you delete it off your window and add it back again, to make use of the new changes which include the Description and the IP address in the listbox.
This will affect all applications that display the servers list, as the description will be displayed in the servers list instead of the NetName. You can display the NetName by using the code in the NetChat controls and then making the description column have a width of 0. 


Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 5 (and less) are no longer compatible with later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate. No communication will take place on the object layer.


We made some changes to the extension template. 

We've introduced a "More Settings" tab. You need to fill in either a unique application name or a service name on this tab. This tab is tailored for the object you are using and there are sometimes other options you can choose on this tab.

If you have applications that use previous versions of NetTalk you will need to go to the windows extensions (right-click on each procedure and choose  extensions), for each procedure that uses NetTalk. In the Settings tab you can specify the options you want.


More changes to the extension template. 

The parameters of the parent.Init method and the objects Init method have changed. The servicename is now handled by the template.

Version 1.0 beta 5 (March 2000)


Added two more options to the DLL function NetOptions. You can now read your Streamed Socket and DataGram Instance Numbers.


Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 4 (and less) is no longer compatible with later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate. No communication will take place on the object layer.


We have improved the error recovery of NetAuto. If your connection to another NetTalk process is broken (e.g. Network failure or modem reset), NetAuto will try and re-establish the connection immediately, if this fails the old process will be polled every 3 minutes to see if it is alive. In the meantime the "inactive" process is removed from the servers list, which is automatically maintained by NetAuto for you. This prevents you trying to talk to a server, that has failed, but it still allows the server to recover and become active again. You can change the poll-rate via the NetOptions function.


Fixed a bug that limited the maximum lengths of all your public services together to something as low as 81 characters. This has been extended to 1024. 


Added a new NetTalk logging option of /nettalklogerrors. This only logs errors that occur at the object layer. This is very handy to run on NetTalk processes that run for hours at a time as only errors are recorded. For more details see the logging section.


Added a hundred's of a second to the log files..


Added a "Simple Connect" mechanism for talking directly to a port.


Speeded up multi-packet communication by about 500%.


Fixed a bug which caused a GPF if you used NetTalk with Secwin (another CapeSoft accessory) and you compiled your app in local mode.


Fixed the code example in the How do I suppress errors section. The second example now reads:
  self.SuppressErrorMsg = true ! Ignore all messages
 parent.ErrorTrap (errorStr, functionName)


Changed the UseRemoteMachineControls Control Template. You will need to delete the control template and add it again or your will get Unknown identifier ?IPADDRESSES error. This adds the current IP address of the machine you are using to the UseRemoteMachineControls window, a Copy button allowing you to copy the IP address(es) to the clipboard and also a most recently used list.


Improved the NetAutoCloseServer and the NetCloseApps objects. They now allow you to specify the application name, so that when you do a remote close only your application is shut and not all the applications running on your network.


Improved features to the File Client / Server. You can now run the FileClient (NetGetFile) in a silent mode, in which no messages are displayed. This is useful if you wish to download a file without displaying messages to the user. You may want to download and update a data file on a regular basis, and you could use this silent mode for achieving this.
There is also a new method called Done(). This method is called when the download is complete or when an error occurred. Use the ErrorOccurred parameter to determine if an error occurred.
We've also added an application name text box on the Extension for NetGetFile and NetFileServer. This allows you to create a File Server and Client that can only talk to your application.


Asynchronous Sending - Faster response faster transmission.


Acknowledgements and "almost" guaranteed delivery. Error recovery.


We've added an application name textbox to the control extension template. This allows you to create a chat window that can only talk to your application, thus differentiating itself from other NetTalk Chat applications that may be running.

Version 1.0 beta 4 (27 January 2000)


Changed scenario one slightly to make it more clear. Also changed the TimeServer and NetGetTime objects to make them more clear. No functional change.


Changed the protocol of the ErrorTrap() method from (string where) to (string errorStr, string functionName) to make it more clear and to log more information. You calls to ErrorString should now look like:

self.ErrorTrap ('An error occurred while attempting to get the time from a time server', 'TimeClient.Ask')


Various improvements to the documentation.
4) Fixed a bug in Scenario 3 (point 28) : if endPosition < len (clip(self.LargeStr))
(This does not change the functionality of the example app, but if you base an app on this without the fix, your MultiPacketReply method will repeatedly send packets without stopping, if your string smaller than len (self.LargeStr))
5) Renamed the NextPacket() method to MultiPacketReply(). You will need to rename any NextPacket() methods you have derived to MultiPacketReply.
6) Added functionality to allow you to call parent.send() from inside Process(). You can also specify self.sendreply=1 before calling parent.send(). This will then swap the ToNetName and FromNetName and the ToThread and the FromThread. It will also sort out the IP for the reply packet. This is only useful if you want to send more than one data sets from within the process() method, if the first packet needs to be a reply packet. 
7) Added more examples
8) Added new features to NetOptions. Highlights include being able to change the Port Numbers that NetAuto runs on. 
9) Changed the Chat Controls to use a picture property of @s80 for the list of servers. (was previously @s10, which is a bit small). This template change will only take affect when you add the Chat controls to your application, it can't fix previous chat controls. To make use of this change, delete your Chat control template from your procedure and re-add it.
10) Added WAN (and Internet) support. You can now connect different machines over the Internet. You can either use the UseRemoteMachine Control Template to add this to your add. Or you can use the NetAutoRemote DLL function directly.

What changed in the Template:
1) Added an extension called Suppress_NetTalk

This is used in the following circumstances;
a) The programmer is making a MULTI-DLL product AND
b) NetTalk is NOT included in the product AND
c) This app is the ROOT DLL.

Symptom of not using it:
Link Error: Unresolved External NetAutoGetNetName in NetTalk.Obj

NetTalk is an ABC compliant class. This means that when you make a Root DLL Clarion includes _all_ ABC compliant classes in the Root DLL.
NetTalk makes use of the DOS and NET DLLs.
This means that even non-NetTalk projects would need to ship the DOS and NET DLLs
This template _removes_ NetTalk from the Root DLL, thus overcoming this problem.
2) Changed the "Use a NetTalk Procedure" Extension Template
This now conforms with all the standard embedding methods for abc objects in
an abc window. Specifically;
a) Go to Embeds, LocalObjects, and the object is there.
b) Go to Embeditor, Full Object prototype visible, and all methods can be embedited.
3) Changed the "Use a NetTalk Procedure" Extension Template Interface
Deriving from a standard NetTalk object has now been moved to an 'Advanced' tab, and generally the options have been greatly simplified by removing all unnecessary.
4) NetTalk now supports Multi-DLL apps. To use in a Multi-DLL app you need to:
a) Add the NetTalk global extension to the Root App.
b) Follow normal instructions everywhere else - i.e. add global and local extensions as required.

Version 1.0 beta 3 (6 January 2000)


First public beta release of NetTalk.
[End of this document]
Return to NetTalk Documentation Index