nPoles Changelog

nPoles v1.4.185 - What's New
Release Date: 14 September 2026

IMPORT & JOB FILES
- Insert File: a conductor string in the file whose number the job already uses with a different definition is no longer skipped in silence - the inserted points drew on the job's string while the file's conductor and chart never arrived. A box lists each such string with what the job has, what the file has and how they differ, and asks: take the file's definition under a suggested new number (the inserted points move with it), replace the job's definition with the file's, or keep the job's. A number held with the same definition needs no question

STRINGING CHARTS
- AusNet stringing charts: the SC/GZ charts AusNet has since formalised as standard drawings now carry the STND number as their drawing title, the title the conductor schedule prints: EVX18/25 as STND-0352229, EVX18/29 as STND-0352230, EVX18/22 as STND-0352231, EVX18/26 as STND-0352232 and EVX18/33 as STND-0352233. The charts keep their names, so jobs that use them open unchanged; a job keeps the drawing title already recorded on its strings until the chart is chosen again in String Properties or applied from Chart Finder

nPoles v1.4.184 - What's New
Release Date: 14 September 2026

IMPORT & JOB FILES
- Insert File: the conductor strings brought in with the points are now only the ones those points carry, by default; Every string in the file remains an option beside it. The old job's whole string list used to come along, to be deleted one by one

CONDUCTOR STRINGS
- String Properties: Delete now says how many points carry the string before it goes, and a Delete Unused button removes every string no point carries in one go, after listing them. Deleting a string still carried by points left their circuits drawn on the plan while the string was gone from every list

nPoles v1.4.183 - What's New
Release Date: 13 September 2026

GENERAL
- Outdoors: radio buttons and tick boxes are now solid, high-contrast marks - a filled dark disc or square when on, a light one with a dark outline when off, and a little larger - instead of Windows 11's thin grey rings, which vanish on a screen in daylight. Everything else keeps the Windows look

POINT EDIT
- Circuits 17 to 24 now take total station readings exactly like 1 to 16 - the crossarm height, the three insulator boxes, the three offset boxes and the remark - for a reflectorless read and for a height from the vertical angle. They had been left out of the reading routing when the dialog grew past 16 circuits, so a read with one of their boxes selected did nothing
- Reflectorless reads on the conductor boxes: a full read taken with an offset box selected now goes where it should. Tapping the Left or Right offset box and reading sent the height to whichever box was tapped before it, and the centre offset box recorded nothing visible; an offset box now takes the read exactly as its insulator box does, filling both the insulator height and the offset from the one shot
- Reflectorless reads: the centre conductor offset now carries its side - negative when the wire is left of the line, positive to the right, facing along the string from the previous pole - as the plan, the 3D views and Clearances Check already read it. It was always written positive. Left and Right offsets are unchanged, their box names the side. A point whose string gives no direction (a lone point, or a string on no other point) keeps the unsigned distance and the read log says so
- The height, insulator and stay boxes that turn green for a stored reflectorless observation now show the User Settings font like every other box. They had dropped to the system default, so text sizes on the Circuits tabs differed. The font chosen in User Settings also reaches the dialog on every open, not only the first
- Point strings can be named. The word String beside the string number in Point Edit is now a link: click it and a small box takes a name for that string - William St, kerb, road edge, the pole line. The name belongs to the string, not the point, so every point on it shares it; it shows in the string box itself in Point Edit and in the main window's Add Point box, as 1 - road, in the Surveying Calculator's String box beside the description code and in its points table, in Clearances Check's pole string list, in the plan view's point description, and when hovering the string's line on the plan view above the length and bearing; and Design > Point String Names lists every string in the job with its name and how many points sit on it, editable in place. Saved in the job file; nPoles Field mini shows and edits the same name in its point form
- Point strings: the string boxes in Point Edit, the Surveying Calculator and the Add Point dialogs keep the start of the label in view - 3 - William St - after a fill or a rename. A box narrower than the label had scrolled to the end and showed only the name, with the string number out of sight
- Conductor strings: every job's list now starts with Not Active and 0 - Non String, and every circuit's string box in Point Edit offers both however the other circuits are assigned. A job from an older build, or one edited by hand, that lacked them or held them elsewhere in its list gains or moves them as it opens; String Properties no longer lets either be deleted

SURVEYING CALCULATOR
- Station Readings: a String box beside the description code shows and sets the string the accepted point joins, with its name as 3 - William St. The latest point with the same description code still lends its string, as before, but the box now shows which, and another can be picked or a new number typed before Accept. The word String beside it is a link that names the string, as in Point Edit, and the naming box's underlined word pops up the job's strings with their names. The point number box moves down to the accept row, left of Accept with Pt No above it, and Edit After Accept is now a tick box under an Edit Accept(F8) label
- A Connect Station button beside Disconnect Station. It closes and re-opens the station port, which makes Windows connect the Bluetooth link to the station again - for a laptop whose remembered link stops answering after the station is power-cycled. A port that will not open is now named in the status line with the reason and what to do (another program holding it, the pairing gone, the licence), where before the line only said the reading had failed

SURVEY MARKS
- The mark record now says what the AHD order means under the order itself - third order is the AHD network's own levelling tier, a forward-and-reverse misclosure within 12√K mm (K the run in km, 12 mm over 1 km), typically within about ±0.1 m of the national levelling network; fourth and fifth order name their looser tiers, and 99 reads as no order assigned

IMPORT & JOB FILES
- Import LandXML: a controller's LandXML carries no string numbers, so every point arrived on string 0 (reported on v1.4.182). When the controller's text export sits beside the .xml under the same name, the string numbers in it are now put on the matching points. And when the file's strings are numbers the job already uses - a pole line on string 2 arriving in a job whose string 2 is a parcel boundary - the import offers to renumber the file's strings to the next free numbers so the lines stay apart, or to keep the numbers; the import summary says what was done
- Job files: a recorded air temperature of zero or below on a point (a frosty-morning sag shot) now reaches the job file; it was dropped on save
- Import Poles and Create job from log file no longer carry the previously open job's special stringing charts into the new job; they were saved into it and doubled on a re-import

USER SETTINGS
- The notice that a virtual keyboard change takes effect after a restart now appears above the keyboard and its text can be copied. The keyboard stayed on top of it, so after unticking the keyboard the notice to close was out of sight (reported on v1.4.182)

SURVEY PROPERTIES & DATUMS
- An address looked up names the electricity distributor whose area its postcode is in and the settings profile that is, and a survey with no points yet is switched to that profile on OK (AusNet, Powercor and CitiPower, Jemena, United Energy, and the interstate distributors); a postcode on a border between two distributors is pointed out instead, and a survey with points keeps its profile. The table behind it, data/australia/distributors.json, comes from the Australian Energy Regulator's plan data
- Addresses in Czechia, Estonia, the United Kingdom, Poland, Portugal, Belgium, Luxembourg and Sweden now choose ETRS89 on UTM, as the other European countries do
- An address on a grid without zones - CH1903+ for Switzerland, NZGD2000, the Irish grid - now clears the zone field when the datum is switched for it, instead of leaving the previous zone showing
- Accepting the datum an address suggests now also sets the scale factor to follow the grid, as choosing the datum by hand does; it was left fixed at 1

PLAN VIEW
- The String number in the Add Point dialog - Add Point Here, a survey mark, a cadastral point - and in the boundary dialogs is a link, as in Point Edit: click it to name the string being chosen, and the box reads the name at once, 3 - Kerb
- The Add Property Boundary Points and Add Road Boundary Points dialogs now show their Description code, String number, First point number and Remark boxes. They were never placed in the dialog, so a fragment of the remark's hint sat over the first line and the code, string and number could not be set; the points always took the defaults. The Remark is written into every point added, ahead of the source note, and says so. This dialog and Add Lasso Selection to Survey now use the application font and style like every other dialog
- A job with no points now frames on its looked-up address every time. The view was being put back where it had been, so the map opened 20 to 25 km from the address
- The Layers menu says what is actually published where the job is. A layer with no data for that area now reads "none for the Northern Territory" beside its name, and hovering gives the reason - a commercial licence, a gap that could be filled, or simply not published. Coastline and contours are covered too; being Victorian layers with no interstate counterpart, they previously said nothing at all outside Victoria. The entries stay clickable, because turning one on is still how a surveyor asks for the data to be included

BASEMAPS & MAP DATA
- National maps and aerial imagery for Austria, the Netherlands, France, Spain, Germany, Norway, Czechia, Estonia, the United States, Japan, Argentina and Singapore, each measured against the publisher's live service; Finland and Great Britain against the surveyor's own free key. The map source list offers the ones that cover the job, and a job moving country is handed its own country's map
- Property boundaries served live for the Netherlands (Kadaster), France (IGN) and Estonia (Maa-amet), and the Dutch RD survey marks, with the publisher's credit shown; a job there names its country in the Layers menu instead of "none here"
- New Zealand aerial imagery (LINZ) now serves only against your own API key, free from basemaps.linz.govt.nz. The map source menu offers to enter it; until then the layer is not listed rather than drawing nothing

COMPANY DATA & UPDATES
- A file the start-up update could not bring into the working data (held open by a virus scanner, or in a folder it could not write) is now retried at the next start, on its own. It was noted once in the log and never attempted again until the following data release
- AusNet profile: the Description Codes list in the Database Editor, and the code names in the point editor's description list, could be empty after updating from v1.4.179 or earlier. The AusNet data folder was renamed in v1.4.180; the profile kept pointing at the old folder and the update left that old copy in place, so the profile was reading stale conductor, chart and pole databases with no description-code registry. A profile naming the old folder is now pointed at the new one as it loads, and the correction is kept on the next save

nPoles v1.4.182 - What's New
Release Date: 4 September 2026

GENERAL
- The splash screen now comes up at once and says what nPoles is doing: after a company data update the first start brings the whole data tree up to date, and it shows the count of files as it goes, so a slow disk no longer looks like nothing is happening
- New jobs no longer start with a default point inserted, in every settings profile. The job opens empty and the first point is the one you add or read in

PLAN VIEW
- Plan view can now shade an area feature. A description code can carry a fill colour, and where its points are put on a conductor string the plan view draws the string as one shaded closed shape - the footprint of a house, shed or dam - with a thin outline, instead of a symbol at every corner. The house code G9 fills a light translucent grey-brown by default; the survey underneath stays visible. Points not on a string, or on string 0, are unchanged
- The view now stays where you were whenever the job on screen is redrawn - adding a point from the map, generating points with a drawing tool or the lasso, editing, cloning, deleting or swapping a point, and switching back from the points list. The zoom and the ground under the middle of the window are kept; only opening a different job frames the view on its survey. Previously only a single Add Point Here kept the view, and everything else recentred on the survey
- A job now frames on its survey the moment it is opened, so it never lands somewhere the points cannot be seen, and the tool box gains a Zoom to survey button that fits the view to the whole survey at any time. This pairs with the view otherwise staying put across edits and additions: opening a job frames it, and everything after keeps your place until you ask to see the whole survey again
- A Snap to points tick beside Draw. Untick it to place a shape's corners exactly where you click, for drawing a building off the aerial image beside existing points, where every corner was being pulled to the nearest one. On by default and remembered; measuring is not affected
- The generate dialog now shows the conductor string number the shape's points will be put on. It defaults to a new string, so a shape draws as its own line; set it to 0 to leave the points loose with no line, or to an existing string number to add the shape to it
- A spacing of 0 now generates only the clicked corners - the four corners of a building taken off the aerial image, say - and an arc its two ends. The tool was quietly replacing a 0 with 5 m, so the corners always came with points every 5 m along the sides. A circle, which has no corners, keeps the 5 m default
- Add Point Here from a point number's menu now adds the point where the number was clicked. Previously it came in at easting 0 with a nonsense northing, because only the symbol's menu recorded the click position
- The Add Point dialog no longer changes size, and the OK button no longer moves, as the reduced level is looked up and filled in. Space for the note under the coordinates is reserved from the start

BASEMAPS & AERIAL IMAGERY
- The aerial or map image no longer sits slightly off the survey, and no longer shifts a little after the view is rebuilt. Each map tile is now laid over exactly where its four corners fall on the survey grid, so the image is turned by the grid convergence just as the ground is - about 1.2 degrees in central Victoria. Previously the image was placed square to the grid and only agreed with the survey at the centre of the view: a building 65 metres from the centre sat about 1.4 metres off its points, and because the centre is taken afresh after every rebuild - generating points with the square tool, for instance - the offset changed each time
- Show Map on a job outside the coverage of the map source last chosen now switches to a source that covers the job - a Swiss job opened after a Victorian aerial had been used drew nothing under a Victorian credit line. The Australian sources' credit lines no longer start with a stray character before the copyright sign

DESCRIPTION CODES
- The rendering panel gains Fill Colour and Fill Pattern for area codes like G9 House, and a Line Width for the outline. A code with a fill colour draws its string as a shaded shape in the plan view; the width widens a boundary or a house outline from the default thin line
- The Fill Pattern list shows a sample of each pattern beside its name, drawn in the chosen fill colour
- A change saved in the editor now shows in nPoles at once - the code list is reloaded and the plan view redrawn where it stands - instead of waiting for a restart. The editor also gains Fill Opacity, 0 to 100 percent, for area codes; 25 is the default so the survey shows through a house. Note a white fill on the white plan is invisible at any opacity, as is a white pattern; the swatch beside Fill Colour shows what will be drawn

SURVEY PROPERTIES & DATUMS
- A job anywhere in the world can now be set up from its address alone. Looking up an address works out the country and offers that country's national datum and zone; the datum box itself stays the Australia and New Zealand list, and a datum chosen this way - ETRS89 for Italy, Germany, the Netherlands, Denmark, Finland, Norway, France, Spain and Austria; CH1903+ for Switzerland; the Irish and South African grids - appears in the box only while the job is on it, so the list never becomes the sprawling catalogue other surveying products show. The country comes from the address itself rather than from a map box, which is what tells Munich from Austria and Bern from France. ETRS89 jobs project on plain UTM, import and export with their EPSG codes, and are named properly in Point Edit. AHD is no longer offered as a height datum on another country's grid

MAP DATA LAYERS
- Map data (published 04.09.2026, available to every installed version through the maintenance tool): the New Zealand survey marks, boundary marks, parcels, road parcels and roads are refreshed to LINZ's late-August publication, and three components that were defined but had never been published are now downloadable - Victoria spot heights, Victoria statewide contours, and the Swiss survey fixed points

COMPANY DATA & UPDATES
- No longer overwrite anything. The maintenance tool now only replaces the shipped copy under the install folder; on its next start nPoles brings that into the shared data folder file by file: new files arrive, files never edited are brought up to date (the old copy kept in the backup folder), and a database or settings profile you edited is kept exactly as it is, with the new shipped version placed beside it (ending in .shipped) so the two can be compared. nPoles also says, once, when the company data installed is older than the program, with a button that opens the maintenance tool. Map packs installed after this change are found under the install folder without being copied
- Now merge an edited database instead of setting it aside. For the pole, crossarm, insulator, transformer, description-code, timber-species and abbreviation databases, a file edited in the Database Editor is merged record by record when new company data arrives: records you changed are kept, records you never touched take the new shipped version, new shipped records are added, and nothing of yours is removed. The file as it was is kept in the backup folder. Other edited files are still kept whole with the shipped version placed beside them
- Now bring shipped changes to the settings profiles through to established installs. The profiles file is merged profile by profile and field by field when new company data arrives: a setting you changed is kept, one you never changed takes the new shipped value, a profile new to nPoles is added, and a profile you removed stays removed. Previously an established install kept its profiles file whole, so no shipped profile change ever reached it
- Now keep the data they replace. Before the Australian Company Data component copies the shipped databases and settings profiles over the shared data folder, the folder is moved to a backup beside it (two generations kept, map packs skipped), so a database edited in the Database Editor or a customised profile can never be silently lost. This is live for every installed version through the maintenance tool. On its next start nPoles says, once, where the previous data was kept

nPoles v1.4.181 - What's New
Release Date: 4 September 2026

GENERAL
- New Undo button, beside Save and Quick Backup on the toolbar, covers point-mutating actions across the app - editing, cloning, deleting or backing up a point, swapping point numbers, importing points from a file, adding points from the lasso tool or a tapped map feature, and whole-survey coordinate changes from Transform Datum, Tie to Control and Re-base Survey. Click it for a history of recent actions, most recent first; picking one shows exactly what undoing it will change - every field that differs for a single point, or a plain list of what's affected for anything touching more than one point - before anything is undone. History is in memory only: not saved with the job, and gone once it's closed
- nPoles now notices when it crashed. A crash writes a capture file with the failure's technical details, and the next start asks - once, with OK / Don't send - whether to send a report to nPoles so the bug can be fixed. The report holds the crash details, the registration name and key so the fix can be confirmed back, and the recent nPoles log; nothing is sent without OK, and if npoles.com is unreachable the report can be saved to a file for emailing instead. Endings a crash handler cannot see - power loss, a forced kill - are noticed too, from a run marker each start leaves behind and a clean exit removes
- The crash-report prompt no longer reappears on every start. A report was offered whenever the previous run did not close cleanly - but an unclean close is not always a crash (it also covers a forced close, a power loss, or the app being ended by hand), and the prompt could repeat because each start left its own marker for the next start to notice. The prompt now appears only when the app actually captured a crash, and the run markers are always cleaned up quietly
- Every message box in nPoles can now have its text selected and copied, and uses the application's own font instead of the system one. Previously none of them could be copied at all - an error had to be retyped or photographed to pass it on
- Fixed nPoles failing to start. The floating imagery-year box was being attached to the plan view before the plan view existed, which crashed the application during start-up before it drew anything
- The main window, too, always comes back onto a screen that is connected. Its remembered position was restored as saved, so a tablet undocked from an office monitor could start with nPoles on the taskbar but nowhere to be seen. A window closed maximised now also comes back maximised, rather than as a normal window the size of the old monitor, and un-maximising it later lands on the screen in use
- Shipped settings files no longer carry the paths of whoever built them. Running nPoles from a development tree writes its own last-opened job, last DXF and quick backup folder back into the settings files that ship to customers, and three customer job paths had been going out in the Victorian profile that way. All of them are blanked, the installer now scrubs the whole shipped data folder rather than two files named by hand, and the check that guards this looks at every settings file in the tree instead of the four it used to be told about
- The remembered last survey file and last DXF export - used only to start file dialogs in a sensible folder - now live in the machine's own user settings rather than inside the settings profile file. Nothing changes day to day: dialogs still open where you last worked, the Survey Files Path in User Settings still works, and a machine updating from an older version keeps its remembered paths. What changes is what can never happen again: those paths can no longer be written into a settings file that travels - the profile file now carries the fields empty
- Quick Backup with no backup folder set now says so instead of misbehaving. The shipped defaults deliberately carry no folder, so this is what a fresh install does the first time the button is pressed

POINT EDIT
- Point Edit always opens on a screen that is connected. The dialog remembers where it was last shown, and a tablet that had it on a second or third office monitor put it at the same place in the field - where there is no screen - so it opened out of sight and, being a dialog that must be answered before anything else, left nPoles apparently frozen every time a height was read. Its remembered position is now checked against the screens actually connected each time it opens, wherever it opens from - the points list, the Surveying Calculator, Pole Load or Clearances - and it is placed on the screen it was opened from when its own is gone. It is also never left larger than that screen or hanging off its edge with the buttons out of reach. A dialog kept on a second monitor that is still connected stays there
- Point Edit's Point Backup tab now leads with the point as it stands - a bold first row showing today's values with no buttons - and every row carries circuit heights 1 to 8 and stay heights 1 and 2 after the Diff/Restore/Delete buttons, with the table scrolling sideways to reach them, so a backup's heights read against the current ones at a glance. Editing a backup's Notes cell also works again: it has been blocked since the tab was built by a table-wide no-edit setting
- Defining conductor strings from inside Edit Point no longer scrambles the circuit string lists. Accepting Conductor String Properties re-added the whole string list to every circuit's dropdown without clearing it first, so each visit duplicated the entries; the lists are now rebuilt cleanly and each circuit keeps its assigned string - matched by string number, so a renamed string keeps its circuit too. String backups now also travel the whole Surveying Calculator route: editing a point from the calculator and opening Conductor String Properties previously showed stale backups from an earlier context and dropped any backup made there when the calculator closed
- The centre insulator of a delta construction can now have its own pole attachment surveyed. On these poles the centre phase's insulator mounts on the pole above the crossarm, so its base is not where the arm meets the pole - a reflectorless read with the centre conductor offset field selected stores that base with the job, and the 3D views and pole schematic draw the centre insulator from its true mount (the reflectorless read also now lands in the right place with a centre offset field selected, instead of wherever the previous reading went). Insulator heights and offsets keep their existing meanings; jobs without the extra shot are unchanged
- A reflectorless read can no longer land in the wrong box. Tapping a box tells the next read where to go; the centre conductor offset boxes did not register the tap under v1.4.180, so a read taken after tapping one went to whichever box was tapped before it - overwriting that box's value and its stored 3D observation, commonly a left or right insulator just surveyed. The centre boxes now route correctly (they store the centre insulator base), and the same guard covers circuits 17 to 24, whose boxes have never had reflectorless routing: a read taken with one of those selected now does nothing at all rather than changing an unrelated box
- A height field's stored 3D observation now shows in its tooltip - hover any attachment, insulator, stay or pole-tip field and the coordinates appear on the line below the field's usual hint, or "No 3D observation recorded" when there is none. The long-press popup is retired: dragging across a height to copy it read as a press-and-hold and fired the popup mid-drag
- Spatial Data: the derived coordinates box is wider and the Position box narrower, so the numbers fit. Position had three fields in half the tab and room to spare while the derived row beside it was clipping - Point SF read "996123" with the "0.9999" cut off the front, and Height SF the same. "Ground Easting" and "Ground Northing" are now "Gnd Easting" and "Gnd Northing": every column in that row is as wide as its own caption, so those two were taking width straight off the scale factors beside them
- Spatial tab: a Look Up RL button above Adjust Heights finds the ground level at the point's own coordinates and offers it as the reduced level. It shows what it found, which source answered and how far away it was measured before anything is changed - a contour is the height of a line some distance away and a terrain model is a model, neither being a level surveyed at the point. It works wherever Point Edit is opened from: the plan view, the Surveying Calculator and Pole Load
- The Look Up RL button in Point Edit, Spatial tab, is now actually there. It was built but never shown: whether to show it was decided while the dialog was being constructed, which is before the application hands it the means to look a level up, and because the dialog is kept and reused that answer was never revisited. It is now decided every time the dialog opens
- Point Edit opened from Clearances now offers Look Up RL as well. That is the one place the dialog is opened from that was passing nothing through to it
- Spatial tab: the Position box no longer says "datum not set" on a job whose datum is perfectly well set. Only the Australian and New Zealand grids were named; CH1903+/LV95, the Irish Transverse Mercator, the South African Lo belts and WGS84 UTM all fell through to the same message as a job with no datum at all, which on a Swiss job read as a fault in the job. Each now names its own grid

CLEARANCES & POLE LOAD
- Clearances Check and Pole Load now see every circuit on a pole. nPoles has offered 24 circuits per pole for some time, but the routines that look up a conductor string on its supports still stopped at circuit 16 in Clearances Check and at 20 in Pole Load, so a string recorded on a higher circuit came back with no heights: Clearances Check quietly skipped its ground, circuit, phase, object and uplift checks with no row and no warning, and Pole Load found no span for it. All of these now cover the full range. The same lookups also now fall back to the centre insulator height when a circuit has no left or right insulator - a single wire on a pole-top pin - as every other part of nPoles already did, so such a circuit is checked at its true conductor height rather than at the attachment. In the Clearances Check dialog itself, the height boxes for circuits 17 to 24 now show the point's heights and save edits made in them; they showed 0 and dropped edits before
- Every remaining place that looks a conductor string up on its supports now covers all 24 circuits. After the Clearances Check and Pole Load fix, a sweep of the whole program found the same pattern in Chart Finder, Individual Span, Setting MES, Standards Parameters, the conductor and joint-use schedules, the assistant's conductor summary, the Surveying Calculator's temporary points, String Properties and Pole Load's circuit titles - most stopping at circuit 16, several at 15. A string on a higher circuit found no chart, no span, was missing from the schedules and was dropped from a temporary point, all without a word. These now cover circuits 1 to 24, and the ones that read an insulator height fall back to the right, then centre, insulator like the rest of nPoles. Temporary points also now carry each circuit's description, remark and centre columns, which were never copied, and removing a string from a point with "delete all circuit info" now clears the centre columns too

3D VIEWS
- Insulators surveyed at both ends now draw exactly as shot. Where a reflectorless read captured both the insulator's attachment to the pole or crossarm and the conductor's position on it, the 3D views and Pole Load's schematic draw the insulator along the measured line - a horizontal post on a vertical construction, an angled delta centre, a longer-than-standard unit - instead of assuming a vertical or standard orientation. Fields without both shots keep the existing drawing, so jobs without 3D observations are untouched

CHART FINDER & CONDUCTOR STRINGS
- Chart Finder now shows every phase recorded on a conductor string, and can split them apart. A vertical or delta construction recorded as one string keeps its phases in the INS Left/Right/Centre columns; Chart Finder previously collapsed them to a single figure, hiding that each phase is strung at its own tension. A span with two or more phases recorded across its supports now grows a compact "Phases in this span" strip: Left, Centre and Right across one line with each phase's closest chart underneath, a Phase selector beside the Next/Previous span buttons that switches the whole span display - sag, tension and chart ranking - to the chosen phase, bringing in that phase's own sag point, plus the tension spread across the phases - in red with a plain statement when the phases' closest charts are not even the same chart. A sag point records several wires from one standing spot: its base height is the outer wires' reading (a level pair shares it), and a value in a phase's INS column is that phase's wire on top - so one midspan shot with a centre value gives Left, Right AND Centre their sags, each measured against its own attachment. From there, "Split into phase strings" turns each extra phase into its own conductor string after showing exactly what will move: supports keep one shared attachment height with each phase's columns and 3D observations travelling to the new string, wire points go to their matched phase (changeable before confirming), and the new strings are linked to the original as a phase set - so clearance checking keeps measuring phase to phase and the 3D views keep grouping the circuit. A phase recorded at only one support is listed honestly with its gap rather than hidden. The "Insulator heights differ" pop-up is gone entirely - multiple recorded columns are phases, not a conflict, and the rare genuinely-suspect case stays as a WARNING line in the calculation report, where it can be copied. The split is undoable, and single-phase spans look exactly as before
- Conductor strings gain a Phase Set - for a circuit strung one conductor string per phase, the vertical and delta constructions where each phase carries its own tension. Choose "Phase of conductor string" in Conductor String Properties (Phase Set, on the phase tab) to link the strings; on every span the linked strings share, Clearances Check measures the conductor-to-conductor separation between the phases from each string's own tension and sag, compares it against the required phase separation (VESI or AS/NZS 7000, the same methods behind the Phase column), shows it under the Phase figure - red when it does not fit - and adds a Phase Set Separation row to the printed report. The link is stored in the field the 3D route view has always read for phase grouping, so existing jobs and older nPoles versions are untouched
- The Points Tools that reorder circuits on a point (split, join, add with sort) now carry every per-circuit value with its circuit. The reorder previously moved eight of the ten columns - the centre insulator and centre offset stayed at their old row numbers, as did every stored 3D reflectorless observation, silently re-attaching them to whichever circuit landed on that row. Renaming a string on a point now also reaches circuit 16, which was previously left behind
- AusNet stringing charts: the ACSR/AC chart STND-0352209 (for 3/4/1.75 and 3/4/2.5 conductors) is restored. It was present in an earlier AusNet chart set and dropped at some point before v1.4.180; its neighbours in the same numbered series were unaffected, so it left a single gap. Existing jobs are unchanged; the chart is simply available again in Chart Finder and the conductor schedule

DESCRIPTION CODES
- Description codes C7, C8 and C9 are now in the description code lists for every SECV-lineage profile, and typing one over an existing code updates the symbol shown beside it. Their symbols have always shipped, but the code registry introduced in v1.4.179 carried only codes a source document names - these three appear in the SECV chart with no published meaning, so they are listed with the bare code until a naming source is sighted
- Description code lists no longer offer the bare single letters ("A - Pole", "C - Pole", "F - Pole", "H - Pole", "P - Pole", "S - Pole", "T - Pole" and the rest). Those letters are how the software recognises that a code marks a pole - the first letter of P1, P2, P3 and P4 - and they still do that job everywhere it matters. They were never codes to choose: offered in the list a bare "P" says only "some kind of pole" and sits one row from the code actually wanted. A code a job ALREADY uses is still offered, and any code can still be typed in
- Database Editor, a description code can now record WHAT IT NAMES - a pole, a pit, a pad or a tree - on the Description Codes tab. This does not change what clearance checking and pole load count as a pole: the profile's pole codes still decide that, so a family can still be included or excluded quickly for one run. It records what the object is, which no scenario alters (new feature)
- The Powercor code list has been given those classifications where the code's own name settles it - 46 poles, three pits, the kiosk substation and the tree. Codes the name does not settle are left blank rather than guessed at
- New description code G6, Tree Canopy, in every shipped profile. It draws as a dashed dark green line, so the points walked round a canopy join up on the plan and export to CAD the same way a boundary or a fence does. G6 sits beside G8 Tree in the list on purpose (new feature)

PLAN VIEW
- Right-click anywhere on the plan view where there is no point and a menu offers Add Point Here. The easting and northing are exactly where you clicked, and where a height is available it is filled in as the reduced level
- The Add Point dialog is now a designed form, so it uses the nPoles font and style like every other dialog instead of the system one, and its text can be selected
- Add Point Here works over a map again. The menu stood down whenever anything at all sat under the cursor - and the basemap tiles count, so with a map displayed there was no empty space anywhere on the plan view and the menu could not be reached. It was noticed first on a Swiss job, where the map is switched on and there are no points yet, but any job with a basemap displayed was affected the same way. A plain left tap on empty map space now opens the same menu as well, because a field tablet has no right button at all; a tap on a feature still belongs to that feature, and dragging the map or rotating it no longer finishes by popping a menu
- Adding a point from the plan view no longer changes the zoom. Every point added rebuilds the view, and the rebuild reset the scale to whatever the box on the plan view toolbar said - which a wheel or pinch zoom never writes to - so adding a point threw the view back out to that scale and lost the spot being worked on. The zoom and the centre are now kept across the rebuild, for points added from the map, from the lasso and from a tapped map feature alike
- A survey point's own tap menu now offers Add Point Here, at the place tapped rather than at the point. Once a point had been added its symbol covered the ground it stands on, so a second point beside it could not be started at all - the tap belonged to the symbol and only its menu appeared. Right-clicking a point, a survey mark or a cadastral feature now goes straight to the map's own Add Point menu as well, instead of opening the feature's menu and the map's one after the other: feature menus are a left-click, deliberately, and the right button belongs to the map
- The Add Point box remembers what it was last set to - the string number and the description code - so a run of points along a fence is not retyped point by point. The string is only offered again when the job actually has it, since string 4 in one job is not string 4 in another
- Swap Points can be reached from a point on the plan view: its menu offers Swap pt. N with..., and the dialog opens with that point already chosen. It was only in the Point menu and the Surveying Calculator, which meant finding both numbers in a list of the whole job while looking straight at one of them on the plan
- New tool: Order Points on a String, on the Point menu and on a point's own plan view menu. A pole line or fence surveyed out of order - walked once for what was visible, then doubled back - reads wrong everywhere consecutive numbers are taken to be neighbours on the ground, which is spans, profiles, stringing charts and clearance runs. The tool fits a line through the string, sorts the points along it and deals their own numbers back out in that order, so the job keeps the numbers it had and nothing outside the string is touched. It works on whatever bearing the run happens to take, not just north-south or east-west. Before anything changes it shows the run's bearing and length, every point's chainage along it, and how far the worst point sits off the fitted line - because a line fitted through points that are not in a line still produces a confident order, and points around a substation have no order along a line at all. A point's backups follow it to its new number, the direction can be reversed, and the whole thing is undoable
- Adding a point from the plan view no longer waits for the ground level before the box opens. The level was looked up first, so where that means asking a state elevation service - Queensland answers in about a second and a half, longer where the terrain model has no cover and the contour service is asked after it - nothing appeared on screen and the tap looked as though it had missed. The box now opens straight away, says it is looking the level up, and fills it in when the answer arrives. Everything else can be filled in meanwhile, and a reduced level typed while waiting is kept - the level that came back is reported in the note instead of replacing it. Answering the box before the lookup returns is fine and changes nothing
- Accepting a new point before its ground level came back no longer loses the level. The answer arriving after OK was discarded, and the point was created with no reduced level at all - which the points list draws as 0.000, so it read as a surveyed height of zero. The level is now used whether OK was pressed before or after it arrived, and a reduced level typed by hand is still never overwritten. Where OK is pressed while the look-up is still out, the status bar says so for the second or so it takes to finish
- The floating imagery box on the plan view is now a tool box, and the first tool in it draws a curve. Click one end, click the other, then move the pointer and the curve bends to follow it - or type a radius, which is how a design drawing states it. Everything that will be created is drawn as you move: the curve, every point along it at the chosen spacing, and the parallel curves either side. Radius, arc length, chord, mid-ordinate and the point count read out as they change. Both ends snap to survey points, marks and boundary corners, the same snapping the measure tool uses, so a curve starts exactly on the corner that was surveyed. Generate adds each run as its own conductor string, so it draws as a line rather than a row of loose points, with its own description code, numbering that skips numbers already used, and one Undo step for the lot. The offset is what makes it a road reserve: set the width, choose left, right or both, and the boundary curves are concentric with the centreline - exactly the same distance from it the whole way round. Esc leaves the tool, Backspace steps back a click, right-click abandons the curve
- The plan view tool box now holds a set of drawing tools, grouped the way the work goes: Measure first, then Create points. The shapes are the ones any CAD package offers - Line, Arc, Circle, Rectangle and Square - and each generates survey points along itself at a chosen spacing, previewed live as it is drawn. A Line takes a corner per click and finishes on a double-click or Enter; an Arc takes two ends and then bends to the pointer or to a typed radius; a Circle takes a centre and a radius; a Rectangle and a Square take two opposite corners. Every clicked corner is always kept, so a boundary is never rounded off because the spacing did not land there. The offset makes the parallel - a road reserve either side of a centreline, or inside and outside a closed shape - and it is not offered for a Line, whose corners would need mitring to be honest. Each run lands as its own conductor string with its own description code and one Undo step
- The measure tool now reports the AREA enclosed once three or more points have been tapped, in square metres and hectares, treating the run as closed back to the first point. It is the one common CAD measurement nPoles had no answer for, and it is the reason a surveyor walks a paddock at all. Distances, bearings and the ground-distance line are unchanged
- The plan view tool box no longer disappears when a job is opened. Its visibility was only ever set where the basemap year list is refreshed - which happens when the map source changes and at start-up, and nowhere else - so opening a job rebuilt the plan view without it, and the only way back was to toggle Show Map off and on. The plan view now puts its own tool box up whenever it is built or switched to
- One Tools button on the plan view toolbar now shows and hides the whole tool box, and Measure and Lasso have moved into it beside the drawing tools - they are all things done on the map, so they belong together. The button is also the way back if the box goes missing: turning it off and on again returns it to its corner. That matters because the box floats on the view rather than sitting in the map, so no amount of zooming or panning will bring a stray one back into sight. Zooming now also puts the box back where it should be, which is where it was being lost
- The plan view tool box now looks like a box. It drew no background of its own, so on an aerial photograph its buttons appeared to be lying loose on the map and the Measure and Create points labels disappeared into the imagery - which made a panel that has always been fixed to the screen read as though it were pinned to the ground and moving with it. It now has a proper frame and background, and double-clicking its grip sends it back to the top-left corner
- The plan view tool box can be shown and hidden from the map itself: click blank map space and the menu offers Show or Hide Tool Box, alongside Add Point Here. The Tools button on the plan view toolbar does the same, but sits at the right-hand end of the bar, and on a narrow window the end of the bar is cut off - so on a small field screen the one control that recovers a lost tool box could not be reached. Blank map space always can
- The scale and filter boxes on the plan view toolbar no longer claim spare width that belongs to the Layers and Tools buttons beside them
- Rectangles and squares can be drawn on a bearing. They were square to grid north, which a rectangle on the ground almost never is - a shed pad, a substation compound, an easement and a lot all sit on a boundary. They are now drawn the way a survey package builds one: click the two ends of ONE SIDE and that side sets its length and its bearing together, then take the width off it perpendicular and click a third time to settle it. Clicking the side against points already surveyed is how a shape gets squared to a fence or a boundary with no bearing read off and typed back in, and two of the four corners stay exactly on the points picked - which is what drawing square to the grid and rotating afterwards loses. Where the bearing is a stated one, as on a plan of subdivision, type it into the new brg box as DDD.MMSS and the side is held on it while the pointer sets the length; drag back past the first corner and the side runs on the back bearing. The readout gives the side, its bearing, the width, the perimeter and the area as it is drawn. A rectangle square to the grid is still had by typing a bearing of 90
- The offset of a rectangle or square now follows the shape rather than the grid. It grew by moving eastings and northings, which is right only while the shape is square to grid north - on any other bearing the offset came back a different shape, still four-cornered and still plausible. On a 50 m by 20 m rectangle turned onto 30 degrees, a 3 m offset was out by 14 per cent of its area
- The aerial imagery year box can now be dragged out of the way. It floats on the map and holds its place on screen while the map pans and zooms underneath, as before, but it was fixed in the top-left corner and sat over whatever happened to be there. Drag it by the grip on its left - the box itself still opens the year list - and it stays where it is put, between sessions as well. A window made smaller brings it back inside rather than stranding it off the edge
- The imagery year box now floats on the image at the top left rather than sitting in the toolbar. It belongs to what is on screen, it is only there while such a map is drawn, and a control that comes and goes in a toolbar shuffles everything beside it
- The plan view can now be dragged and zoomed out over 50 km of ground, instead of being trapped inside the survey's own extent. The scrollable area was the points and a quarter each side, which on a job with a single point came to a 60 by 70 metre box: the map could not be dragged anywhere and would not zoom out. It is now the points plus at least 25 km in every direction, and a job with no points yet - one framed on a looked-up address - gets the same, so there is a neighbourhood to look around before surveying starts. Printing a plan is unaffected: it still scales to the survey's own extent, not to the scrollable area
- Adding the first point to a job no longer shifts the map under it. The plan view's internal north-to-screen origin is worked out from whatever the points span, so adding the first point to a job framed on a looked-up address moved every position in the view - the basemap included - by the difference. The view is now held on the ground it was over, not on a screen position, so the map stays exactly where it was and the new point appears where it was clicked
- The basemap now sits exactly on the ground it belongs to, however far the plan view is panned or zoomed out. Every tile used to be placed through a simplified model of the map projection worked out at the middle of the view, which is faithful for a couple of kilometres and then drifts - about 7 m out at 10 km, 28 m at 20 km and 110 m at 40 km. It went unnoticed while the view could not be moved far; once it could, the map visibly failed to line up with the survey at a district-wide zoom. Tiles are now placed by the real projection, so they are right anywhere. Panning also no longer throws the whole basemap away and refetches it every couple of kilometres
- Opening a job now looks at the survey. Giving the plan view room to be panned over made its scrollable area far larger than the survey, and a view whose scene is larger than its window opens at the top-left corner of that area - which put a freshly opened job 25 km north-west of its own points, showing map and no survey. The view now centres on the points. Adding a point is unaffected: it still keeps you where you were
- Tapping a point's NUMBER on the plan view now opens that point's menu, the same one its symbol offers. It matters most for the points that get no symbol at all - a point with no description code, and the t-off, boundary and fence codes that are deliberately not plotted: for those the number was the only thing on screen and it carried no menu, so the point could be seen, and dragged, and not edited. The number can still be dragged to reposition the label; the menu opens only when it is tapped rather than moved
- Fixed the plan view centring on the wrong place after an address look-up outside Australia. The survey centre was projected with the Australian grid routine whatever the job's datum was, so a Swiss address became an easting and northing in UTM zone 55; the basemap then drew that position faithfully, out in the Atlantic
- The plan view now frames on the address you looked up when the job is on a grid that has no zones - Swiss LV95, New Zealand's NZTM, the Irish grid. It was skipped for want of a zone number those grids do not have, so the view stayed at its origin and the basemap drew the empty Atlantic
- Accepting an edit from Edit Point no longer makes the lines connected to that pole disappear. The redraw after OK was removing every line ending on the edited point along with its old symbol - they only came back when the view was next rebuilt, such as switching to the points list and back. The redraw now replaces exactly the edited point's own symbol and touches nothing else, which also means a t-off point sharing the same position keeps its symbol through its partner's edit

REDUCED LEVELS
- The reduced level comes from the nearest Vicmap contour on a Victorian job, or from swisstopo's terrain model on a Swiss one. The dialog says which, and how far away the contour was - a contour is the height of a line, not a level surveyed at the point
- Better reduced levels in Victoria: the level is now interpolated between the contours either side of the point rather than taken from whichever contour happens to be nearest. On 10 m contours the old answer could be out by the whole interval; this is usually within a metre
- Queensland jobs get a reduced level too, from the state's own contour service. It names the survey behind the line - 25 cm LiDAR in the south-east, 10 m SRTM elsewhere - so you can judge what the number is worth
- Victorian jobs get a reduced level without the contour data installed. Where the Vicmap contour download is not present, the level now comes from the state's own public contour service instead, interpolated between the contours either side of the point and reported with the distance to the nearest one, so it is clear what the number is worth. Victoria's 1 m LiDAR elevation model is far better at 0.1 m, but it is licensed rather than published as a service, so contours remain what can be had freely
- New South Wales jobs now get a reduced level, from the state's 5 m elevation model read at the point itself. This is a terrain model rather than an interpolation between contour lines, so it is a better number than a contour can give, and it covers the whole state
- Queensland jobs now take their reduced level from the state's elevation model rather than its contours, again read at the point and at the best resolution published for that ground. The contour service remains the fallback where the model has no cover
- Victorian reduced levels now work outside Melbourne. The contour data nPoles asked for - the 1:5m product, offline and online alike - covers greater Melbourne only, so every regional job silently got no level at all. nPoles now asks for the fine metropolitan contours first and falls back to the statewide 10 m contours, which do cover the whole state, and the dialog names which product answered and at what interval so the number can be judged. The search box also widened from 250 m to about 700 m, because consecutive 10 m contours on gentle ground can be a kilometre apart and a box that catches only one of them cannot interpolate at all
- A job in southern New South Wales is no longer told its ground levels came off Victorian contours. Which state a point is in was decided from rectangular state boxes, and those overlap by degrees - Victoria's reaches four degrees north of the Murray - so points around Albury and Moama were treated as Victorian and sent to Victoria's contour service. The elevation sources are now tried in a better order: every state the point might be in is considered, terrain models are asked first because they answer at the point itself, and a state's model answers inside that state and nowhere else - so the publishers settle the border far better than any box. Victorian jobs away from the border are unaffected, and none of them makes a request it did not make before
- The Victorian elevation data on the machine is now only used for Victorian jobs. It was consulted wherever the job was, and its last resort had no distance limit at all, so a job outside Victoria with the Victorian pack installed could be handed a level measured hundreds of kilometres away
- Points generated by the drawing tools can be given a reduced level as they are created. Tick "Look up a reduced level for each point" in the Generate dialog and every point along the shape gets the ground level at its own position, from the same sources the Add Point dialog uses, with a note saying which one answered. It is off by default because where the level comes from an online elevation service it is one request per point, so a long run takes a while - it runs with a progress bar and a Stop button, and stopping keeps the levels found so far. A point the data cannot answer for is left with no level rather than a zero, which would be read as a real height
- The Add Point box gains a Look up tick for the reduced level, on by default. Ticking it looks the level up there and then and shows which source answered and how far away it was measured, so it can be judged before the point is created; unticking it uses the level set in User Settings under Reduced Level for Generated Points, or 0 where none is set, and asks nothing of the network. The choice is remembered

GNSS & SURVEYING CALCULATOR
- The GNSS corrections line now says where the corrections are coming from, how far away that base is, and how old they are - for example "NTRIP: Streaming - base 1234, 78.4 km - age 2 s". Distance to the base is the number that decides whether a fix can be trusted: accuracy falls off with it, and more importantly a receiver simply stops being able to resolve a reliable fix past a certain range - roughly 10 km for a single-band receiver, perhaps 30 to 50 km for a multi-band one on a single base. None of this was visible before, so a survey that would not fix gave no clue whether the base was too far away or something else was wrong. All three are also stored on every point accepted, so a point surveyed 80 km from its base can be told apart from one surveyed 300 m away long after the day it was recorded
- Corrections can now come from your own base receiver instead of an NTRIP caster. User Settings, GNSS gains a "Corrections from my own base" box beside the NTRIP one: set the receiver to base mode in its own app, point its correction output at nPoles over the network or Bluetooth, and nPoles relays it to the rover. This is for working where there is no mobile coverage, or too far from the nearest CORS for a reliable fix. The two boxes are alternatives and ticking one unticks the other - two correction streams at once would corrupt each other. Leaving both unticked is also a valid choice, and now means what it says: the base and rover link themselves over a radio or the receiver maker's own service, and nPoles stays out of the correction path. The corrections line reads "Own base" with the distance to it while you work
- The base station a GNSS survey is measured from is now recorded in the job, with the one check that catches the classic RTK blunder. A new Base button beside Localise in the Surveying Calculator shows what the base is actually transmitting - read straight from the correction stream - beside the position it ought to be on, taken from a job point or keyed in. When the two differ, nPoles says so with the difference in eastings, northings and RL, because a base left running on yesterday's averaged coordinate shifts every point in the job by exactly the same amount and looks perfect the whole time: the fix quality, the precision figures and the plan view all read normally. Recording the true position does not move live positions - the rover is still working relative to what the base transmits - and the warning says so. The setup is saved in the job file and written to the survey log, and every point records which base it was taken from
- Spatial menu, Re-base Survey: a base set up on the wrong coordinate no longer ruins a job. Give the position the base was surveyed on and the position it should have been on - taken from a job point or keyed in - and nPoles shifts the points that base corrected by the difference. Only those points move: a job worked off two bases is corrected one base at a time, and total-station points are left alone. This is a shift and nothing else, no rotation and no scale, because a wrong base coordinate is exactly three numbers - fitting more would let survey noise turn into a scale factor the job never had. Tie Job to Control remains the tool for fitting a job onto supplied coordinates, and the dialog says so. What moved and by how much is written to the survey log
- Tie Job to Control now writes what it did to the survey log. The fit was previously applied and then discarded, leaving no record anywhere of why every coordinate in the job had changed
- GNSS receivers that report the pole tip no longer have their antenna height taken off twice. Some receivers with tilt compensation correct their own output to the tip of the pole; nPoles subtracted the antenna height from that as well, putting every point a pole-length low - silently, and by a constant that looks entirely reasonable on a contour. A Reports pole tip box beside Float OK in the Surveying Calculator says which the receiver is doing, and nPoles warns if it is ticked while the receiver is sending no tilt at all. nPoles Field mini has always handled this correctly; only the desktop was affected
- User Settings, the GNSS receiver model is remembered again. The choice was read from the list and then discarded - never saved, never passed to the Surveying Calculator - so on the desktop it had no effect at all
- NTRIP station lists now name a refused login as a login problem. A wrong username or password produced no station rows, which was reported the same way as a caster that genuinely carries nothing - two faults needing entirely different things done about them. A wrong address or port is also named as such
- User Settings, GNSS: the four boxes now stack their contents down the page instead of across it. Sitting four abreast left each box a quarter of the width, so labels and their fields fought each other for it and lost - the Scan button was printing over the receiver's own name. Captions now sit above what they label, every field and button gets the full width of its box, and the receiver model is wide enough to read which unit is selected. The tab is slightly narrower than before, not wider

SURVEY PROPERTIES & DATUMS
- Survey Properties gains a Height Datum, so a job can say what its RLs actually mean. Choose Assumed for a job hung off a local benchmark and nPoles stops calling its GNSS heights AHD - it makes no claim at all, which is the honest answer for the many jobs run off an assumed RL. In New Zealand the thirteen local vertical datums still in council use - Auckland 1946, Wellington 1953, Lyttelton 1937 and the rest - are offered beside NZVD2016, and heights are converted through LINZ's own relationship grids. Existing jobs are untouched: a job that has never been given a height datum behaves exactly as before, AHD on an Australian datum
- GNSS heights in New Zealand are now real NZVD2016 levels. nPoles carries LINZ's NZGeoid2016 and applies it per point, the same way AUSGeoid2020 gives AHD in Australia. Before this a New Zealand job fell back to whatever geoid the receiver itself carried - commonly EGM96, one to two metres out, and on some receivers a coarse world model that is worse - with nothing on screen to say so. The separation runs from about 2 m at Stewart Island to 39 m at Cape Reinga, so this was never a rounding matter. Every point records which model produced its level, and the point editor's Spatial Data tab now shows the separation on a New Zealand job as well as an Australian one
- Where a geoid grid is not installed, the height basis now names the datum it could not reach - "receiver geoid, not NZVD2016-verified" rather than just "receiver geoid" - so it is clear which grid to install
- Switzerland: jobs can now be on CH1903+/LV95, the Swiss national grid. This is the first projection in nPoles that is not a transverse Mercator - LV95 is an oblique Mercator through the old observatory in Bern, on the Bessel 1841 ellipsoid - so it is computed by its own routine rather than by the usual zone parameters. The datum is offered in Survey Properties and in the default-datum list, and needs no zone
- Switzerland: GNSS heights are reduced through swisstopo's CHGeo2004 geoid to a real Swiss height datum. Two are offered, because Switzerland uses both - LN02, still the official height frame and the datum published fixed-point heights are on, and LHN95, the modern rigorous one. They differ by up to half a metre depending on elevation, so the job says which it is on. The grids follow swisstopo's own prescribed interpolation
- Address look-up now works anywhere, not only in Australia. Typing a Swiss or New Zealand address and pressing Look Up used to answer that it "needs an Australian grid datum" - on the very datum that job would be surveyed on. The service behind it was always worldwide; it was being asked for Australian results only
- Choosing a datum now fills in the UTM zone the job is in, worked out from the address look-up or from the survey's own points. A zone already set is left alone unless it belongs somewhere else entirely, so a job deliberately run in the neighbouring zone stays as it was. Datums with no zones at all - Swiss LV95, New Zealand's NZTM, the Irish grid - blank the zone box and disable it, instead of leaving the last job's zone number showing beside a grid that has none
- An address that is nowhere near the datum selected now says so. Choosing GDA2020 for a job in Switzerland projects perfectly happily and puts it on the wrong side of the world, and nothing used to mention it
- Looking up an address in Survey Properties now offers the datum that address asks for. Where the address is not in the country the job's datum belongs to, a prompt names the place and the datum used there - New Zealand and NZGD2000, South Africa and HART94, Switzerland and CH1903+/LV95, Ireland and IRENET95 - and switching sets the zone too, which is the part worth having: NZTM and LV95 take no zone at all, and South Africa takes the LO belt's central meridian rather than a zone number, so Johannesburg is Lo29 and Cape Town Lo19. An address outside every country nPoles carries a national grid for is offered WGS84 UTM in the right hemisphere and zone. It is only ever an offer - answer no and the job keeps the datum it had, with the note that used to appear on its own - and it sets the job's datum and zone only, converting nothing already surveyed
- A job on AGD66 or AGD84 is now told when its address is overseas, the same as a current datum. Only GDA94, GDA2020 and the overseas datums were checked, so the two legacy Australian datums were silent
- Looking up an address on a job that is still on a LOCAL grid now offers the datum for wherever that address is, instead of refusing. A new job starts on LOCAL, so typing an address into one - the first thing done on a new job - was met with "a LOCAL grid has no map position, choose the datum the job is surveyed on", which is the question the address had just answered. It now looks the address up and offers the datum and the zone for it. Answering no leaves the job on LOCAL and says so
- Point scale factor and grid convergence are now reported for a Swiss job, measured off the LV95 projection itself
- The UTM zone box no longer offers the profile's default zone on a grid that has no zones. Opening Survey Properties on a CH1903+/LV95 job filled in the Australian default of 55 and left it showing beside a Swiss datum
- Reverse geocoding the first point of a survey works on those grids too, for the same reason
- The Height Datum list is wider and the ground origin point box narrower. A point number needs very little room and was taking a third of the row; the datum list now shows the longest entry in full

MAP DATA LAYERS
- Map data you obtained yourself can now be added to nPoles: Layers > Map Data > Add data file. Some registers are licensed to the surveyor rather than to nPoles - Landgate's Western Australian cadastre and geodetic marks, and the Swiss cantons that require a login - so nPoles may neither supply them nor fetch them for you. Download the GeoPackage under your own licence, point nPoles at it, and it draws like any other layer. The file stays where you keep it and is never copied or sent anywhere
- Layers > Map Data also shows every dataset nPoles can draw, where each came from, and whether its file is actually on the machine
- A map layer that has data for the job's area but has not been downloaded yet now says so, and says where to get it, rather than reporting that no data exists for the area
- A GeoPackage holding several layers opens the one the layer list names. Previously whichever layer the file happened to list first was used, which was harmless for nPoles' own single-layer files and wrong for anyone else's
- A downloaded GeoPackage with no spatial index is now offered one rather than refused. Building it is a one-time wait; without it the file could not be drawn at all
- Western Australian survey marks read properly when added: the mark name, what is stamped on it, and its status - Landgate records a great many as destroyed, which is worth knowing before driving out to one
- A published mark height is now only offered as a reduced level when the register says it is on the Australian Height Datum. Landgate publishes heights on Cocos, Christmas Island, mean sea level and mean high water springs datums as well, and those are not reduced levels
- Switzerland: 22,533 Swiss survey fixed points are available as a map layer, so a surveyor can see nearby control on the plan view and read its published coordinates and height, the same way Victorian SMES marks work. These are the cantonal LFP2 and HFP2 points from all 26 cantons and Liechtenstein; 94% carry a height, on LN02. Each one also links to its point protocol and, in most cantons, a site photograph
- Switzerland: the federal survey marks are included as well as the cantonal ones - 32,125 fixed points in all. The 634 LFP1 and 8,958 HFP1 are swisstopo's own national network and the highest order in the country; 96% of all Swiss marks now carry a height
- The plan view can now draw Swiss data. Show Survey Marks finds the 32,125 published Swiss fixed points - LFP1, LFP2, HFP1 and HFP2, from swisstopo and all 26 cantons, with heights on 96 per cent of them - as a 13 MB download in the maintenance tool. Where a canton's own cadastral survey has been obtained from geodienste.ch, Show Property Boundaries, Show Survey Marks, Show Addresses and Show Localities read it directly, including the communal LFP3 and HFP3 marks that are the ones actually found in a street
- Map data published on a projected grid rather than in latitude and longitude is now read as it stands. Switzerland's cadastral survey is the first: it is published on LV95 and is far too large to convert on the way in, so nPoles converts each feature as it draws it instead
- New Zealand map layers - geodetic marks, boundary marks, parcels, roads - now load. They were being refused as soon as they were opened, because the reader accepted only Australian coordinates, so none of the New Zealand data ever drew
- Survey marks, property boundaries and the other map layers now load outside Australia wherever the data exists. Turning on Show Survey Marks for a Swiss job answered that it "needs a GDA94 or GDA2020 survey datum" - from the Victorian layer, which had nothing to do with the job, and which spoke last and so had the final word over the layer that could actually serve it
- Map layers now work before their download pack is installed. Where nPoles has no packaged data for the area, it reads the same layer live from the publisher's own service instead of leaving the map empty: property boundaries, road casements, street names, addresses, localities, contours and the coastline in Victoria; cadastre and survey marks in New South Wales; cadastre, addresses, easements and localities in Queensland; cadastre and cadastral plan points in Tasmania; blocks and road centrelines in the ACT. The publisher's credit is shown exactly as it is for packaged data. A pack remains the better answer for field work - it is faster and needs no signal - and where one is installed nothing changes at all: the packaged data is still used, with its fuller feature details and its Add as survey point options, which the live layers do not offer. Live layers draw a few hundred features at a time, so a closer zoom shows more

BASEMAPS & AERIAL IMAGERY
- The plan view's basemap can now be chosen: Layers > Map Source. Besides OpenStreetMap there are swisstopo's maps for a Swiss job - the national map in colour or grey, the topographic map, 10 cm aerial imagery, and the 1946 national photograph, which shows a line route as the ground was before most of what stands on it now. A map that only covers one country is offered only where the job actually is, so the list stays short. The source was previously a hidden setting with no way to change it from inside nPoles
- Australian basemaps join the Swiss ones under Layers > Map Source, from the authorities' own map services. Victoria has two: the Vicmap cartographic basemap, and Victorian aerial imagery covering the whole state and going a zoom level closer than the map, so a pole, its stays and an easement are all visible on the photograph. Geoscience Australia's national base map covers the entire country, though only as an overview - it stops well short of survey detail. New South Wales adds its base map, its aerial imagery and its topographic map. The list only ever offers the maps that serve the job's own area, so a Victorian job sees the Victorian and national ones and not the Swiss, and each publisher's credit is shown while their map is drawn
- Queensland and Tasmanian aerial photography join the basemap list. Queensland's is the state's latest aerial program, covering the state to a close zoom; Tasmania's is the LIST orthophoto mosaic. With Victoria, New South Wales and Switzerland that is five sets of aerial photography, each offered only where the job actually is. South Australia, Western Australia, the Northern Territory and the ACT publish nothing equivalent that can be used without a licence or a key - Western Australia's imagery is licensed, as its cadastral data is
- New Zealand aerial imagery joins the basemap list, from LINZ's own mosaic - verified at Auckland, Wellington, Christchurch and Queenstown. That makes six sets of aerial photography: Victoria, New South Wales, Queensland, Tasmania, New Zealand and Switzerland, each offered only over the ground it covers. South Africa has none that can be used without a licence or a key: the national mapping authority's service does not answer, and the largest municipal publisher serves no tiles at all. nPoles already projects onto the South African Lo belts, so the grid is ready whenever a basemap appears
- Aerial photography with more than one date can now be flicked through by year. Choosing swisstopo's SWISSIMAGE by-year map puts a year box on the plan view toolbar carrying every flight from the latest back to 1926 - the same ground a decade or three apart, which is how you see when a stand of trees grew into a line or a shed appeared under it. The box is hidden for maps that publish a single date, which is all the others
- A year with no photography over the job now says so. The service answers a year it never flew with a blank image rather than an error, so the map simply went white with nothing to explain it
- One Swiss aerial imagery entry instead of three. The plain current mosaic and the fixed 1946 sheet were already in the by-year list as "Latest" and 1946, so they were three menu entries for two clicks. A map source chosen before this change carries over to the year that replaces it
- The map credit now says when what you are looking at was made. Swiss aerial photography reads "flown 2024, 25 cm" - the year that flight was actually taken and how fine its pixels are, which is not always the year you picked, since coverage is flown region by region. The national map sheets read their own sheet name and currency year, "Adelboden, 1980". swisstopo publish a year and nothing finer, so no exact date or time is claimed
- The plan view's basemap now draws on a Swiss job. CH1903+/LV95 coordinates were being read as if they were UTM, which put the job nowhere and left the map blank. The same conversion feeds the LatLong Export, the point editor's derived latitude and longitude and the assistant, so those were wrong on a Swiss job too
- The Victorian copyright no longer appears over a job outside Victoria. The credit followed which layers were switched on rather than what was actually drawn, so a Swiss job with Show Survey Marks left on was told its map came from the State of Victoria

INSTALLER & UPDATES
- Victorian reduced levels now work offline anywhere in the state, from a 44 MB download. A new Victoria spot heights component in the maintenance tool carries the 354,380 surveyed ground heights Victoria publishes for the whole state; where one is within 100 m of the point being added it is used in preference to the contours, because it is a level surveyed at a place rather than the height of a line some distance away, and the dialog says which was used and how far away it was. The contour data nPoles has shipped until now is the 1-to-5 m product, which covers greater Melbourne only, so a regional job had no offline level at all
- A second new component, Victoria contours - statewide, carries the 565,896 contour lines at a 10 m interval that cover the rest of the state, for the plan view's Show Contours layer outside greater Melbourne. It is 1.9 GB, so it is kept separate from the spot heights: if all you want is a reduced level, the 44 MB component above does that job

nPoles v1.4.180 - What's New
Release Date: 27 August 2026

- Registration now works from behind company firewalls and proxies. nPoles first registers over an ordinary secure web connection - the same kind a browser makes, routed through the system proxy where one is configured - and only falls back to its classic direct connection if that fails, so networks that silently block the direct method no longer stop registration with no explanation. When nothing gets through, a clear message says so instead of the attempt just appearing to do nothing, and offers the new Manual Activation: nPoles shows a request code and a QR code, the activation page at portal.npoles.com/activate - opened from any phone or browser, this computer needs no internet at all - issues a short activation code on screen and by email, and typing that code into nPoles completes the registration. The Registration tab carries a Manual Activation button for using it directly

POINT EDIT
- Reflectorless NP reads in Point Edit now keep the full 3D position of what was shot, not just its height. Cross-arm attachment heights, stay attachment heights and each conductor position store the shot's easting, northing and RL with the job; a height that came from a reflectorless read shows with a light green background (a height from a vertical angle or a height stick keeps the normal look), and holding a long press on the field pops up the stored coordinates - the pole top height and tip coordinate fields included, which covers the tip positions jobs have been storing for years. Shooting a conductor with its insulator field selected now fills in both the insulator height and the horizontal conductor offset automatically, worked out from the wire's shot against the cross-arm's own shot on the pole face - and the wires can be shot before the pole face; the offsets fill in the moment the cross-arm intercept is read. Typing over a green field clears its stored shot, so the colour always tells the truth. The per-circuit cross-arm coordinate window now shows stored coordinates for every circuit (previously only the first two), and merely opening it no longer records its displayed defaults as if they were measurements
- Circuit rows gain a Centre position, alongside the existing Left and Right - for the middle phase of a three-wire crossarm, or any conductor mounted on the pole's own centreline, matching nPoles Field mini. A centre conductor now carries through everywhere Left and Right already do: Pole Load's structural calculation, the height difference it works out across each span, its co-located tee-off merge and its Pole Schematic (on screen and exported to CAD), Clearances Check's obstacle-clearance geometry, and all three 3D views, where a surveyed centre position is shown exactly as recorded rather than estimated. Where a circuit carries only a centre-mounted conductor, its insulator drop is now read the same way everywhere - Pole Load, its Pole Schematic, Chart Finder and Clearances Check all locate the conductor at the same height, so the drawing agrees with the numbers and a sag measured off a centre-mounted wire is no longer taken from the crossarm. Chart Finder's INS columns work the same way for Centre as they already did for Left and Right: whichever column is filled in is used, and if more than one is filled in with different values the calculation report says so and names the one it used. Jobs with no centre conductor data are completely unaffected
- Cycling through points with Edit Point's Next and Previous buttons no longer removes conductor strings. Each circuit's string list withholds strings already assigned to other circuits of the point being shown - but Next and Previous populated the incoming point against the outgoing point's reduced lists, so a string that sat on a different circuit there could not be selected, showed as Not Active, and was silently removed if OK was clicked. The full list is now restored before every point loads, however the dialog is reached. On jobs already affected the circuit's height and remarks survive, so the string can simply be re-selected on its circuit row
- Total-station reading now lands in the right field in three cases it previously didn't: a mouse click on the pole-top height box routed the next reading into circuit 16's attachment height (and skipped the pole-tip coordinate capture); tabbing into a circuit remark from circuit 12 onward wrote the reading's height into the following circuit's remark; and a reading with stay remark 1 selected landed in stay 4's height. The new Centre insulator fields are also read-reachable now, like Left and Right
- Sorting circuit heights in Point Edit now moves the Centre insulator and Centre conductor columns with their circuits - they previously stayed put while every other column sorted
- Point Backup tab gains a Backup Notes column - a short note on why the backup was made, asked for in a pop-up the moment Backup is clicked and freely editable afterwards by typing directly into the cell. A new Diff button beside each backup opens a summary of exactly what differs between that backup and the point as it currently stands - remark, description, position, pole length/strength/type on one line, and any circuit or stay that actually changed, including a stay whose status moved to Remove. Fields left blank or at zero on both sides, and circuits or stays not present on either, are left out entirely. Both this and the new whole-job report below can now be saved as a PDF or an OpenDocument spreadsheet, alongside viewing on screen
- The description code box now drops down the full height of the screen instead of a fixed twenty rows, and offers every code the company profile knows rather than only the common ones - for a Victorian profile that is ninety-odd codes instead of about twenty. The common descriptions set in User Settings stay at the top, in the order they are listed there; everything else follows alphabetically; and no code is listed twice. Each code shows its meaning and its plan-view symbol beside it, and the drop-down is wide enough to read the meaning rather than cutting it off. The same picker is now used everywhere a description code is asked for - Point Edit, the Surveying Calculator, Quick Span, and the plan-view prompts for adding a point or a lassoed batch - so the list never differs depending on which screen is open. Quick Span gains the most: it used to offer eight fixed pole types with the code itself hidden ("HV & LV"), and now shows "H2 - HV & LV Pole" taken from the company's own description code database, with the full list behind it. Typing a code that is not in the list still works exactly as before

REPORTS
- New Report menu entry, Job Change Report: every point in the job that has a backup, showing everything that has changed since the earliest backup of that point - a whole-job version of Point Edit's own backup Diff, for reviewing or filing a record of what moved before a job goes out. Points with backups but no actual change are left out
- Job Change Report improvements: a changed pole always states its length/strength/material, written the same compact way as everywhere else in nPoles - for example 12.5/8/W for a 12.5 m, 8 kN wood pole - even when only something else about it changed, so the report stays clear about which pole it means; each point's heading now also carries its Asset ID and Pole Number; and the report opens with a block naming the job file, its location, who prepared the report, and the dates of the survey and of the report itself. Prepared by is filled in automatically from the licence (initials if set, otherwise the registered name; a trial licence says so plainly) rather than asked for every time, and if Survey Properties has no address on a real coordinated survey, the location is looked up automatically from the job's own first point. A circuit's conductor string is now labelled C.S. rather than the bare word "string", which is a different, existing point-grouping field

CONDUCTOR STRINGS
- Conductor Strings gain their own Backup tab in Conductor String Properties, alongside Point Backup: a string's own design and rating data - conductor material, stringing chart, design load assumptions, AS7000 clearance factors - can be backed up with a note and diffed against the string as it now stands, the same way a point can. This closes a real gap in the Job Change Report: a conductor re-specified or a design assumption changed showed nothing before, because no point's own fields change when only the string's design data does. The whole-job Job Change Report now covers both points and conductor strings together in one report

JOB FILES
- An interrupted save can no longer destroy the job file. Saving previously overwrote the file in place, so a crash, power loss or full disk part-way through left a truncated, unopenable job - and the screen still said "Survey saved" even when nothing had been written. The new file is now written completely and only then swapped over the old one, a failed save says so plainly and leaves the previous save untouched on disk, and the unsaved-changes state is kept so the work is not silently declared safe.
- Job files now accept the full character set: symbols outside the old Latin alphabet - the em dash, Greek letters, arrows - were silently replaced with "?" on save. Job files are written as UTF-8; older nPoles versions open the new files without complaint
- Job files now state their format version and the EPSG code of the survey's map grid (for example 7855 for GDA2020 zone 55), so other software - and future nPoles versions - can identify the coordinate system from one standard number instead of parsing datum names. Opening a job saved by a newer nPoles now warns that anything this version does not understand would be dropped on re-save. The .pxml format is also properly documented for the first time, with a machine-generated tag reference and a sample file for building an Excel XML Map that covers every current field
- Stringing chart %MBL limits are no longer lost between sessions. A misspelt tag inside the job file meant the percentage-of-breaking-load limits on any chart stored in a job were written under one name and read back under another, so they silently vanished every time the job was reopened - jobs saved by older versions read correctly too

POLE DATABASE
- Wood pole database, every Victorian profile: the whole-metre lengths that fall between the standard sizes - 10, 12, 13, 15, 16, 18 and 19 metres - now carry the published SECV dimensions for each strength rating, instead of falling back to a generic estimate. These lengths were thought to have never been catalogued, and were first filled by interpolating from the sizes either side; revision J of the wood pole standard (VX9/7020, 1977) in fact tabulates every length from 10 to 25 metres in one-metre steps, and the later revisions simply dropped most of them as the range was rationalised onto 1.5 metre steps. Every wood pole record that a drawing covers now takes its ground-line girth, its footing depth and its long-duration strength limit from the newest revision that lists it. The 15 metre / 8 kN pole, which had no record at all, is added. Corrections found along the way: the 16 metre / 12 kN long-duration limit was about three per cent high and the 21 metre one had no real figure at all; ten of the plain wood entries had ground-line girths 10 to 30 millimetres off the published ones; and the footing depth was wrong on the 13, 21 and 23 metre entries
- Every wood pole record now says where its dimensions came from. A new Source line in the Database Editor names the drawing - for example "SECV VX9/7020 rev L" - and the Notes beneath it give the full trail: the drawing's title, its revision and date, and the exact table, column and row the figure was read from, along with the figure itself. Where a record's dimensions cannot be traced to any drawing, the note says so plainly and lists what the drawings do publish for that size, rather than leaving it a mystery. This covers the metric records, the older imperial (feet and inches) records - all of which were re-checked against SECV drawing VX9/5013 and agree with it exactly - and the pressure-treated entries, which come from a different standard again and are now labelled as such so the two are not mixed up
- A small number of older wood pole records rendered with a noticeably oversized trunk in the 3D View - their tip and butt diameters were recorded in inches but were being read as though they were already in metres. Those poles now render at their correct thickness

POLE LOAD
- 3D View no longer overstates a pole's lean. A pole's lean is worked out from the horizontal offset between its own position and its recorded pole-top position, but a shot at the top is aimed at the pole's visible surface, not its centre, so the raw offset always includes a small artefact from the pole's own thickness. Where the actual tip diameter has not been measured, nPoles now corrects using a typical assumed diameter instead of the full raw offset - the figure is marked as approximate rather than shown as a precise reading, and it is never hidden or shown as upright just because the diameter is unknown. Point Edit's own Support Lean field is corrected the same way
- Pole Load now works out the conductor height for every circuit on the pole, not just the first twenty. The dialog has always shown twenty-four attachment rows, but circuits twenty-one to twenty-four were missing their insulator drop, so their conductors were taken to sit at the crossarm rather than an insulator length below it - and typing a new attachment height into one of those four rows did nothing at all: the value never reached the pole. Both now behave like every other circuit. Poles with twenty or fewer circuits are completely unaffected

LINKED DEVICES
- New File → Linked Devices pairs this computer with another nPoles install - a second desktop, or a phone running nPoles Field mini - by typing a short code or scanning the QR code the other one shows. Once paired, the job that's open can be pushed straight to a linked desktop with no USB cable and no emailing files back and forth, and before anything is overwritten nPoles states plainly whether the incoming copy is newer or older, and bigger or smaller, rather than just a generic warning. Give this computer a name that's easy to recognise - a sensible default is filled in - so a list of several linked devices stays clear, each one removable from the list if it's no longer wanted (pairing again afterwards just needs a fresh code). File → Send gains a menu with Email and one entry per linked device. Pushing a job to a phone, and Field mini's own side of sending and receiving, is still being built

SURVEYING CALCULATOR
- Swap Points takes the live record as the source of a coordinate swap. It previously used whichever record appeared first in the job file, which was a backup whenever one had been written before its parent - so the survey moved onto a historical position rather than the current one. A point's backups still travel with it, to the same position: a swap corrects which position belongs to which number, and a pole that genuinely moves is recorded as a new point with the old one marked for removal. The job is also no longer marked as modified when the points to swap were not found

MAP DATA LAYERS
- Opening a job on a local datum with a map data layer remembered on (Cadastral Points, road casements and the like) no longer offers to "ask nPoles to include this data" - that question is for areas whose data genuinely is not published, and on a local-datum job the real remedy is different: nPoles has no map position to look anything up with. The message now says to set the survey's zone and datum in Survey Properties, and the request offer is kept for the case it was written for

USER SETTINGS
- The Default Datum list under the spatial settings now offers every datum Survey Properties does - HART94, IRENET95 and the WGS84 UTM zones join the Australian and New Zealand entries - and the default zone box is wide enough to read, capped at zone 60, with a tooltip explaining the South African belt convention. The zone greys out for datums that have no zone, and the LOCAL special-behaviour no longer depends on the entry's position in the list

INSTALLER & UPDATES
- Adding a new nPoles version through the Maintenance Tool now also brings the shared company and regional data - pole types, crossarms, description codes, local site grids - fully up to date. A release process gap meant that data had not actually been updated on an existing installation since the one-root installer began, no matter how many app versions were added since; only a completely fresh install ever saw the current data. Customers who reported a fix as "not actually fixed" after updating were seeing this - the fix was real, it simply never reached them
- The Database Editor opens again. Opening it crashed nPoles outright - its internal library had been assembled from a mixed build after the Qt update, and the mismatch brought the application down before the window could appear. The library now builds each part consistently, the editor is exercised against every bundled utility profile in the automatic test suite, and the corrected build was re-issued to the v1.4.179 installer

nPoles v1.4.179 - What's New
Release Date: 20 August 2026

- The Database Editor opens again: a mixed internal-library build after the Qt update crashed nPoles the moment it was opened; the corrected build is in this re-issued installer

SPATIAL TOOLS & DATUMS
- Transform Datum is now purely for the documented datum conversions - AGD66/84 to GDA94 through the grid files and GDA94 to GDA2020 through the ICSM distortion grid. Its old two-point local routine is removed: it fixed the scale from a dropdown assumption rather than the marks, and Tie Job to Control does the same job properly. Choosing a Local conversion in Transform Datum now simply offers to open Tie Job to Control
- New Spatial menu tool, Tie Job to Control: the classic hand-over problem solved properly. An older job - typically a powerline survey on a local datum made up on the first site visit - gets tied onto supplied coordinates by picking the job points the control belongs to, typing the supplied values beside them, and applying the best-fit transformation: rotation, scale and shift fitted by least squares over every pair, any number of marks, with per-mark residuals shown live so a wrong control value stands out before anything moves. Unlike the two-point Transform Datum routine the scale comes from the pairs themselves, so a ground-scale taped survey and a grid-scale local frame both land correctly with no assumption chosen from a list. Two pairs give an exact fit; three or more give real redundancy
- Point Edit, on a Local-datum job with an MGA Reference the Spatial tab's derived panel now works fully: a new MGA Easting / MGA Northing pair shows the point's position on the referenced MGA frame, and the latitude/longitude, geoid separation, ellipsoidal height and scale factors are all derived through the reference - the combined factor shown is exactly the one the Surveying Calculator applies. Without a reference a local job's derived panel stays blank as before. Transforming a job to a new datum clears a now-stale reference automatically
- Survey Properties gains an MGA Reference for local grids that are really a rotated and shifted copy of an MGA frame - the SEC Latrobe Valley mine grids. Pick the site (Hazelwood and Loy Yang ship as presets) on a Local-datum job and Scale from Station Position computes at the true MGA position instead of the local easting, which sits about 47 km west of the MGA one in the valley and made the naive factor ~85 parts per million high. The reference is saved with the job, the presets live in an editable data file so more grids can be added without a new build, and the Loy Yang entry is anchored exactly to the mine's published LY0513 control values. An Add button lets the surveyor define any other site grid from control pairs - the same mark's coordinates on the local grid and on MGA, two pairs minimum, with the fitted rotation, scale and residuals shown before saving - and the new grid joins the registry for every future job. With a grid selected the button reads Edit instead: it opens on the grid's stored rotation, scale, shifts and the control pairs it was built from, so what the software is doing is plainly visible, a mistake can be corrected by re-entering pairs, and an obsolete grid can be deleted - jobs already saved with a deleted grid keep their own copy of its parameters and are unaffected. The pairs need not be typed either: the local side of a pair can be picked from the loaded job's points, and if the job carries a GNSS localisation its measured pairs - which are exactly these control pairs - fill the table in one press, so a fit measured in the field with the Surveying Calculator becomes a saved, reusable site grid. Grids held at ground scale fit too: the factor folds in the grid's own scale, so on such a site it correctly comes out at one - taped equals plan
- Survey Properties no longer locks a Local-datum job to a fixed scale factor: Scale from Station Position can now be chosen on a local grid too - for surveys done on GNSS grid coordinates and rotated onto a site or mine grid (such as the SECV Latrobe Valley Grid), where distances still carry grid scale. On a local datum the factor is computed with the standard UTM convention against the local coordinates, which suits local grids that keep UTM-sized eastings; plain local jobs keep their fixed factor of 1 by default

LANDXML
- Importing LandXML into a brand-new job now gives the job over to the file completely: the default point 1 that File - New plants is replaced rather than blocking the file's own point 1, and the file's datum and zone are adopted instead of raising a mismatch warning against the new job's Local placeholder. When the datum is adopted, the scale factor is switched to nPoles' own station-based calculation - the same Survey Properties option a datum-carrying job starts with - so later total-station shots reduce to grid correctly without anyone typing a factor in; an open Surveying Calculator picks the new settings up immediately. A job with real work in it keeps the existing checks. The datum-mismatch and import-error boxes also have selectable text now, like the import summary
- LandXML import verified against real Topcon Field controller exports (LandXML 2.0): the datum zone is now recognised in Topcon's "MGA2020-Zone_55" spelling, and the controller's habit of quoting the geographic datum EPSG code rather than the projection's is handled - the file's stated datum and zone win. Two of the real exports are kept as permanent regression fixtures
- File → Export → LandXML points: the survey's points as a LandXML file any controller or design package opens directly — numbers, codes, remarks, observation times and the coordinate system stated inside the file as both plain words and its EPSG code. Design pole positions in nPoles, export, and stake them out with any brand of field kit; backup points are left out automatically
- File → Import → LandXML points: bring a survey straight in from any controller's LandXML export — Topcon MAGNET Field, Trimble Access, Leica Captivate, 12d — with no export template or column mapping. Point numbers, codes, remarks and observation times all carry across, and because LandXML states its coordinate system, nPoles checks it: an empty job adopts the file's datum and zone, a file that disagrees with the job's datum warns before importing, and a file whose coordinate system mentions ground scaling is flagged — grid coordinates only, now enforced by the file's own metadata. Points whose numbers already exist in the job are skipped, never overwritten. A survey done in ground coordinates with a defined origin point can be converted on import: pick the origin from the file, accept the computed scale factor or type the controller's own, and the points land as grid — with the ground presentation switched on about the same origin, so what you see stays what you surveyed. The same conversion is offered on Insert File text imports — tick "File is in GROUND coordinates", and only the freshly imported points are converted, never the job's existing data

POINT EDIT
- The description code list now shows each code with its plan-view symbol and its meaning — "G7 - Gate" with the gate symbol beside it — exactly as the plan view will draw the point. Meanings come from the profile's Description Codes registry, falling back to the codes named in User Settings, and any code classed as a pole reads "Pole". The same list appears wherever a point is added or edited — the plan view, Add Point, the Surveying Calculator and Pole Load. The stored description stays the bare code, and typing a code by hand works as before
- The description code registry now names every code family the old SECV symbol chart left unlabelled: the HV/LV pole combinations (H1-H7, L1), the 66kV sub-transmission poles (P1-P9), cable terminations (C1-C6), LV and HV open points (D1-D4), future sub-transmission (F1-F6), the substation types (isolator, two pole, ground, kiosk, indoor, metering structure) and the storm water pit - about forty meanings per profile, taken from the Victorian distributors' own drafting standards rather than guessed. The subscripted pole-substation symbols are decoded too: the number is the SECV substation construction drawing series, so S1 reads "Pole Substation 25-300 kVA" (series VX10/4) and S2 "Pole Substation 10-50 kVA" (series VX10/16), confirmed against the SECV construction manual drawings and the successor utilities' own standards. The United Energy profile also carries that utility's own extra codes (stays, strain poles, easement and continuation marks). The point editor's description list and the plan-view chooser now show a meaning beside nearly every code
- Points imported from CSV now record when they entered the job — their created and modified dates were blank in the point history; dates never recorded by older versions show "not recorded" instead of an empty box. A fresh backup lists the point's own last-changed time rather than the moment the backup was made
- The point editor's Point Backup tab is a plain list now: every backup of the point on one line with its remark, when the data was last changed and when the backup was made, with Restore and Delete beside each and a single button to create a new backup of the active point. The old per-height display and per-circuit copy buttons are gone — a backup restores the whole point

PLAN VIEW
- Hovering an entry in the tap chooser now highlights the point it refers to out in the plan - a ring around a survey point, cadastral corner or survey mark, a glow over a property or road casement, the span itself for a Clearances entry. With several points of the same description code under one tap the menu text alone could not say which was which; on a touch screen the highlight appears as soon as an entry's submenu opens. The chooser also opens to the side of the tap instead of on top of it, so the very symbols being told apart stay visible
- When several survey points sit under one tap, the chooser that lists them now also shows the point's English meaning in brackets after its description code, wherever User Settings defines one for that exact code (e.g. "9 - G7(Gate)") - alongside the point's remark when it has one
- Conduit points (Conduit, Conduit from Pit) now draw as a dashed line between points instead of the generic connecting-line colour, matching how boundary, fence and road-edge lines already work

POLE LOAD
- The complete AusNet-approved Dulhunty Titan range is now present in every profile, taken from the manufacturer's standard drawings and the AusNet Titan standard: 11 m and 12.5 m single-piece and 14 m two-piece poles in 8 kN and 12 kN working strengths, with external diameters, taper, burial depths and masses as published. Every Titan size now computes its wind load and strength instead of finding no database entry, and the calculated wind loads are verified against the wind loads AusNet itself publishes for these poles - the single-piece sizes agree within four per cent, within one per cent for the 12.5 m; the 14 m two-piece sizes read about six per cent under the published figures because the calculation models a straight taper past the joint sleeve, noted on the records
- When a wood pole's variant is unknown - no timber species recorded and no measured tip diameter - the wind calculation now uses the typical (median-section) catalogue record, matching the published VESI wind-load tables, instead of always assuming the largest variant. A new User Settings choice on the Pole Load tab (Unknown pole variant) can restore the worst-case assumption per profile. A measured tip diameter now always selects the closest catalogue record outright, and the wind-load breakdown notes which policy chose the record and from how many variants
- Two silent zero wind loads traced to the pole database and corrected: the 12 m / 5 kN concrete pole was filed under the wrong material so no concrete point could ever match it, and the treated 12.5 m / 12 kN wood entries carried the 8 kN family's strength, letting them shadow genuine 12.5/8 poles with oversized sections. The wind-load breakdown now names the exact database record that supplied the pole's dimensions, and when no record matches it says so plainly instead of presenting 0 N as an answer
- Titan composite poles now produce their wind load - previously every Titan pole reported zero because the strength matcher treated them like wood, halving their rated strength so no database entry ever matched. Titan and concrete records carry the marked working load directly (50% of ultimate); wood records carry the ultimate with the marked strength at 40% of it, and the matcher now respects each material's convention

DATABASE EDITOR
- New per-profile standard-abbreviations registry: each distributor's official plan abbreviations and their meanings - the (E)/(N)/(R)/(F) status prefixes, pole types, stay and tee-off shorthand, conductor treatments - seeded for AusNet and United Energy from their drafting standards, and editable in the database editor's new Abbreviations tab (searchable list with meaning and where-used context per entry)
- The database editor entry under the Settings menu is now simply "Database Editor" - it long ago outgrew its pole-structures name, covering poles, crossarms, insulators, timber species, transformers, description codes and now abbreviations
- The database editor gains a Description Codes tab: every profile now carries a registry of its two-character point description codes with their English meanings, editable alongside the poles, crossarms and insulators, with a preview of the exact plan-view symbol each code draws - light and dark-mode versions shown side by side, since a dark-mode symbol is rarely seen by anyone working in the field. A Symbol Legend view reproduces the classic printed symbol chart directly from the current symbol set, with a PNG/PDF export for printing or filing. Powercor and AusNet profiles also carry CAD layer information ready for a future AutoCAD/FreeCAD export tool

SURVEY PROPERTIES
- The Survey Date and Job Stage labels now sit beside their fields instead of drifting apart - leftovers from the old full-size calendar layout
- Survey Properties now fits an 800-pixel-high screen - the field tablets' height. The always-open calendar is replaced by a compact date field whose calendar pops up on demand (Set to Today stays), and the dialog is capped so its buttons can never sit below the bottom of the screen

CONDUCTOR STRINGS
- A mistaken street in Street / Reference is now easy to get out of: the field has a clear button that unselects everything in one tap, and unticking an entry in the drop-down no longer gets silently undone when the field loses focus

DIALOGS
- The Add/Edit Local Grid form and the GNSS Localisation window are now proper designed forms: they carry the same font and styling as the rest of nPoles and open at a sensible width instead of needing to be dragged wider

HELP
- Help → What's New presents the highlights of the last year of nPoles in plain language — the headline changes of the last 12 months by default, with buttons for a more detailed 6-month view and the full story of the last 3 months. The same page is offered on the unregistered welcome screen and published on the customer portal at portal.npoles.com/whatsnew, from the same source as the in-app view; the complete technical change log remains alongside it

GENERAL
- nPoles is now built on Qt 6.11.2, with the charting library rebuilt to match
- The spreadsheet library behind the Pole Load ODS reports is updated to the latest upstream release, picking up its memory-leak and stability fixes
- Every exported DXF drawing now states its coordinate basis: "GRID - GDA2020 (ZONE 55)", "GROUND - GDA2020 about PT 1 (CSF 0.999893)", or "LOCAL COORDINATES" — and a job exported without a datum says "GRID - DATUM NOT SET" rather than staying silent, so drawings passed between parties always carry the statement that third-party plans so often lack


nPoles v1.4.178 - What's New
Release Date: 15 August 2026

POINT EDIT
- The tabs now say what they hold: Spatial Data is purely the survey point — the editable grid coordinates labelled with the survey's datum and zone, a read-only "expressed as" panel deriving the latitude/longitude, ellipsoidal height and geoid separation, ground coordinates, the point/height/combined scale factors and grid convergence live from the coordinates, and the observation record; the measured pole geometry (diameters, girth, tip, lean) moved to the Pole H/W + Footing tab; and a new Plant / Equipment tab — placed ahead of Pole H/W + Footing — gathers the sub-station, raiser bracket (which gains the mounting-height field it never had), a new switchgear group (type, mounting height, side), and the extra weight / wind load entries. The Position and Observation areas sit in their own group boxes matching the derived and GNSS panels, and the read-only fields are width-capped so the dialog stays a sensible size.
- GNSS-surveyed points now carry their observation quality — fix type, satellites, HRMS/VRMS, antenna height, height basis and time — recorded automatically at Accept in the Surveying Calculator's GNSS mode, shown read-only on the Spatial tab, and saved with the job. The same six values can be mapped as optional columns in the Insert File import, so points surveyed on a GNSS controller and brought in by CSV keep their quality too. GNSS receivers measure no air temperature — essential for sag observations — so the GNSS box gains a temperature entry recorded on every accepted point exactly like the total-station flow, and Temperature is also available as an optional import column.

SURVEYING CALCULATOR
- Live GNSS input has arrived: with GNSS enabled in User Settings, the Station box gains a Station/GNSS slider. Sliding to GNSS connects to the receiver's NMEA stream over the network on the first slide, the instrument height becomes the antenna height, live positions fill the station read-outs projected onto the survey's own grid, with the receiver's latitude, longitude and ellipsoidal height shown beside them in place of the instrument's distance and angles, and compact status lines with the fix quality, satellite count, HRMS/VRMS precision and the height basis appear at the bottom of the box while the total-station controls step aside. The Accept (F5) button records the point through the normal flow, honouring Edit After Accept — gated on an RTK fixed solution (float only when explicitly allowed), with the antenna height subtracted and every accepted point written to the survey log with its quality, precision and height basis. The receiver connection follows the calculator: closing the calculator releases it and reopening reconnects automatically — receivers that allow a single client are never held by a window that isn't on screen. Bluetooth receivers are supported alongside TCP: pair the receiver with the computer, scan and pick it on the GNSS settings' BT tab, set its position output to NMEA over Bluetooth, and the calculator connects to it directly — no virtual COM ports to configure.
- GNSS heights are real AHD: nPoles reads the official AUSGeoid2020 model, reconstructs the ellipsoidal height from the receiver's stream and applies the proper separation — the receiver's own geoid height is never silently treated as AHD, and when the model isn't installed the recorded point says plainly that its level is on the receiver's geoid.
- GNSS RTK corrections over NTRIP: enter the caster, mount point and login on the GNSS settings tab and nPoles feeds the receiver its RTK corrections over the same connection the positions arrive on, reporting the rover position back to the caster as network mount points require — RTK fixed in the field needs only the receiver, this computer and a phone hotspot. The caster box comes preset with the free networks — AUSCORS (Australia), PositioNZ (New Zealand), TrigNet (South Africa) and Emlid Caster — each with its registration link and a button straight to the account page, a Choose button lists the caster's stations nearest the current job first — distances from the survey itself or the job's address — and picking one fills the mount point. The connection status shows in the calculator, all status text can be selected and copied, and a wrong password or mount point is reported in plain words instead of silently never fixing.
- GNSS localisation (site calibration) has arrived: fit GNSS onto a job's local or adopted coordinates — old surveys, title re-establishment, plant grids. Add the control marks in the calculator's Localise dialog, stand on each and Measure (RTK fixed only), Compute, and read the per-mark residuals so one disturbed mark shows itself instead of bending the whole fit. Applied, every accepted GNSS position lands in the local frame — scale, rotation, shifts and a height shift — the fit is saved with the job, and every localised point and log entry says so.
- GNSS stake out has arrived: the Stake Out button in the Surveying Calculator serves both worlds — in GNSS mode it opens a window with live walk-in guidance to any job point — distance in large type, north/south and east/west paces, the bearing for a compass, and cut or fill against the design level — turning green when inside tolerance on an RTK fixed solution. Stake records the as-staked point through the normal accept, with the design-versus-staked differences written on the point and in the survey log as the setting-out evidence. The total station stake out is unchanged.
- GNSS points can be averaged over a short occupation: Accept holds for a configurable number of epochs (User Settings → GNSS, five by default — about five seconds), stores the mean position and records how still the pole was held as the point's horizontal and vertical precision. Every epoch must hold RTK fixed (or float when allowed) or the occupation stops and says so; pressing Accept again cancels. Setting one epoch keeps the instant single-shot behaviour.
- Hand-entered distances now respect the job's scale factor the same way measured ones do: typed radiations, traverses, chainage and offset, the distance intersections and the peg bisect reduce the entered ground distance to the map grid, so a typed 500 m lands exactly where a shot 500 m would — previously the two could disagree by up to 0.2 m in parts of Victoria. The Read Line shots, the offset and extra-distance legs and the bearing-shift reading carry the same reduction, and the Scale Factor readout shows the factor each calculation applied. Jobs on a LOCAL datum or a fixed scale factor of 1 are unchanged.
- Opening User Settings while the Surveying Calculator existed quietly leaked the calculator window; with live GNSS this also left an invisible copy holding the receiver connection, so the reopened calculator could show "Connected" yet never receive a position.

SURVEY PROPERTIES
- New Zealand surveys now work properly: choosing NZGD2000 means the NZTM2000 national grid, so the automatic scale factor, the street map underlay, Street View, the assistant's location tools and the Lat/Long export all use the correct projection — previously every one of them treated the coordinates as an Australian UTM zone. No UTM zone is needed for a NZGD2000 job. The Victorian map layers explain they need a GDA datum, and the datum transform tool says transformations between NZGD2000 and the Australian datums are not available.
- Jobs on plain WGS84 UTM zones are supported, north and south of the equator — the modern grids of India, Pakistan, Indonesia and much of Asia and Africa. Pick "WGS84 UTM N" or "WGS84 UTM S" in Survey Properties with the UTM zone number, and surveying, GNSS input and the grid mathematics all follow; heights state the receiver's geoid as their basis. The free correction networks of India (Survey of India CORS) and Indonesia (InaCORS) join the caster presets with their registration links.
- Irish surveys are now supported: choosing IRENET95 means the Irish Transverse Mercator national grid, with its 8° west central meridian, 0.999820 central scale and false origin at 53°30' north all handled correctly — the automatic scale factor, the street map underlay, Street View and the Lat/Long export follow, and no zone is needed. This is the first northern-hemisphere grid nPoles supports.
- South African surveys are now supported: choosing HART94 (Hartebeesthoek94) means the LO survey system — Gauss Conformal belts on the odd central meridians with a central scale of one and no false origins. The zone field carries the belt's central meridian (29 for Lo29), and the automatic scale factor, the street map underlay, Street View and the Lat/Long export all use the correct projection. Coordinates are entered in the east/north sense: the LO system's westing and southing values have their signs reversed — both negative in South Africa — the usual convention for east/north-based software.
- Plan view and Transform Datum, a job whose datum entry is unrecognised is now told so plainly — the map layers explain the datum is not supported and the transform tool names the value — instead of the layers silently drawing everything as though the job were GDA2020, roughly 200 m out.
- The datum list now says AGD84 — the old AMG84 entry named the map grid rather than the datum, and a job saved with it could not be datum-transformed and was shown against the map layers as though it were GDA2020, about 200 m out. Jobs saved with AMG84 correct themselves the next time they are opened.

ON-SCREEN KEYBOARD
- The F5 and F8 keys now work immediately after a dialog closes over the Surveying Calculator — previously, tapping Accept (F5) before touching any field could do nothing at all, because the key was only delivered once the keyboard had a field to type into.

PLAN VIEW
- A ground-coordinate presentation for title work: Survey Properties can nominate an origin point — typically the survey mark the licensed surveyor started from — and nPoles then shows ground coordinates scaled about it (one combined scale factor, computed at that mark, the same way a controller's grid-to-ground switch works) in the points list, the point dialog, the Measure tool read-out and the AutoCAD/DXF export. Every ground surface is labelled with the origin point and scale factor, the job file stays grid throughout, and ground equals grid exactly at the nominated mark.
- Tapping a map-layer feature that sits on top of a survey point — a cadastral corner dot over the point just added from it, a survey mark beside a pole, a boundary or street line running through one — now offers the survey points first and the feature beneath them, the same chooser the overlapping-points and span taps use. Previously the feature swallowed the tap and only its own menu appeared, so the survey point could not be edited from the plan view.
- The map layers now cover New Zealand: on an NZGD2000 job the Survey Marks, Cadastral Points, Property Boundaries, Road Casements and Street Names layers draw the LINZ geodetic marks (condition-coloured), survey boundary marks, primary parcels, road parcels and named road centrelines, projected onto the NZTM2000 grid. The data is a New Zealand download option in the maintenance tool, sourced from the LINZ Data Service and licensed for reuse under CC BY 4.0. A geodetic mark's published height is ellipsoidal and is shown as such — it is never offered as a reduced level.
- A Lasso button on the toolbar adds map-layer features to the survey in bulk: drag a loop around an area and everything inside it from the layers switched on is offered — survey marks (Victorian and interstate, with their published heights as reduced levels), cadastral corners, and property and road casement boundaries clipped to the loop, shared edges included once. An overview lists each kind with its point count and description code before anything is added; untick a row to leave it out. Marks and corners land unstrung, every boundary line gets its own new string, and street names, contours and the coastline are shown on the map but never added.
- The interstate map layers now offer the same add-to-survey actions as the Victorian ones: survey marks and cadastral points add as survey points (published register heights prefilled as the reduced level, mark status kept in the remark), and property boundaries and road casements offer the tapped side, the complete boundary, or every boundary along the survey points — each line on its own string, exactly as the Vicmap layers do.
- Road casement boundary points added to the survey now default to the boundary description code (B1) instead of the road edge / kerb code (K1) — a casement is a title boundary, not the kerb line, and the kerb code would have fed the clearance checks a false road edge.
- New South Wales property boundary, road casement and street details now read like a record instead of a database dump — plain field names (Lot / plan, Plan number, Lot area) in place of the register's column names, areas in square metres and widths in metres spelt the Australian way, the urbanity flag written out (U — urban, R — rural) and plan labels expanded (DP — Deposited Plan, SP — Strata Plan). Register codes with no published meaning keep their raw value under a readable label rather than a guessed one.
- Choosing Edit, Clone, T-Off Clone or Delete from the chooser shown when several points sit under one tap now acts on the point whose entry was chosen — previously it acted on the topmost point symbol under the tap, so with overlapping points the wrong point opened most of the time.
- Tapping a conductor span now offers everything under the tap, not only the span: Clearances stays the top entry, and any survey point sitting under the line — a midspan observation shot, a point beside the corridor — and any survey mark or property feature beneath it are listed as submenus, the same way overlapping points are chosen. Previously the span swallowed the tap and only Clearances was offered, leaving a survey mark under a midspan unreachable.
- When several survey points sit under one tap, the chooser that lists them now shows each point's remark after its number and description code — coincident points (a clone on its pole, a T-off, a backup shot) can be told apart before opening one.

TRANSFORM DATUM
- Converting a job between AGD66 or AGD84 and GDA94 now transforms every point and applies the correct grid shifts — previously only the first point was altered, the shift itself could be badly wrong, and a single conversion could run at full processor load for minutes. A point outside the transformation grid's coverage now stops the conversion with the point named and the job left untouched, rather than converting part of the job.

EXPORT LAT/LONG
- Coordinates and bearings shown in degrees, minutes and seconds no longer lose up to a full second — a value with fifty-nine whole seconds was shown rounded up to the next whole minute, which for a latitude or longitude amounts to as much as thirty metres on the ground. The same correction applies to bearing readouts throughout the program.

MANUAL
- A new Survey-chapter section and a formula appendix cover datums, MGA zones, heights and ground-versus-grid from the field side: why a datum change is a per-point transformation and never a block shift, how to work out the MGA zone from the longitude, why geoid–ellipsoid separations and scale factors belong to each point rather than the job, the point / height / combined scale factor formulas with worked Victorian examples, what the field controllers' Ground/Grid switch and origin point actually do, and plain statements of what nPoles computes — grid coordinates throughout, the combined scale factor applied at each instrument setup, span lengths and every export in grid.


nPoles v1.4.177 - What's New
Release Date: 10 August 2026

START MENU
- Every installed version now makes sure its own Start Menu entry exists each time it runs - machines where earlier maintenance tools left no entries for new versions heal themselves at first start.


nPoles v1.4.176 - What's New
Release Date: 10 August 2026

PLAN VIEW
- A Measure button on the toolbar measures distances between anything on the plan: successive taps chain into a run with every leg labelled, and a readout shows the last leg's length and grid bearing, the height difference when both ends are surveyed points, and the running total. Taps snap to survey points, survey marks, conductor spans, property boundaries, road lines and cadastral corners - or measure to any spot on the street map. Dragging still pans and the wheel still zooms while measuring.

CHART FINDER
- The insulator height on a pole is taken from whichever insulator column is recorded - a pole with only its Right insulator height entered previously had no insulator counted when the observed sag was calculated, so the derived tension on such spans came out far too tight. Conflicting Left/Right heights raise a warning naming the pole, and the calculation report notes which column supplied each height.

INSTALLER AND MAINTENANCE TOOL
- The nPoles Maintenance Tool is code-signed - its administrator prompt shows nPoles Pty Ltd instead of Unknown publisher. Existing installations receive the signed tool automatically as an update.
- Component selection no longer pre-ticks everything: the newest version and the default survey-marks data are ticked; older versions and the large dataset downloads are not; installed components are never touched.
- Existing maintenance tools learn the Interstate Map Data repository automatically at their next update check, component descriptions no longer show garbled punctuation, and the version list can no longer offer an update that would remove a pre-1.4.174 installation.
- The finish page offers to launch the new version straight away - then right-click its taskbar icon and choose Pin to taskbar. Start Menu entries are named with their version.


nPoles v1.4.175 - What's New
Release Date: 9 August 2026

FIXES FOR v1.4.174 INSTALLS
- Running the setup on a machine that already has nPoles offers to open the Maintenance Tool (versions side by side, newest ticked) instead of offering to remove the existing installation; the in-app update notice opens the Maintenance Tool on the new install layout.
- Plan view point symbols were missing after installing v1.4.174. The new install layout keeps the program and its data in separate folders, and symbol images were only looked for beside the program - they are now found in the data folder. The same fix covers Pole Load plan symbols and DXF export symbol blocks.
- Installations whose registration and settings live under C:\ProgramData\nPoles reported "not registered" on v1.4.174. That location is again checked first, so existing registrations, settings profiles and data are found as before.
- Start-up no longer resets the remembered settings profile file.

MAP LAYERS ACROSS AUSTRALIA
- The plan-view map layers now work outside Victoria. Survey Marks, Property Boundaries, Road Casements, Street Names and Cadastral Points keep the same names in the Layers menu, and nPoles chooses the right state's data from where the survey is - New South Wales, Queensland, Tasmania, South Australia and the ACT as well as Victoria. A survey near a border shows both sides at once.
- Survey marks draw as the proper permanent-mark symbol - the broad arrow with a bar across the apex, sitting exactly on the mark - coloured by the state recorded condition: green good, amber unknown, red damaged or destroyed.
- The interstate layers copyright notices stack against each other as well as the Victorian ones, so no credit hides another.
- When several map features sit under one tap - a survey mark under a street-name line - a chooser lists every feature there, like the survey point menus: pick the feature, its options open as a submenu.
- The ACT is now fully covered: current blocks for Property Boundaries, road reserves for Road Casements and road centrelines for Street Names, as a new ACT cadastre download option (about 60 MB). ACT survey mark details carry the full register record - monument construction, positional uncertainties, survey plan and field book references - with degree symbols displayed correctly.
- Survey marks are available for New South Wales (281,176 marks), Queensland (181,839), South Australia (193,501), Tasmania (12,464) and the ACT (27,686), alongside the Victorian marks. Property boundaries are available for New South Wales, Queensland, Tasmania and the ACT as well as Victoria. New South Wales survey mark details spell out the SCIMS codes.
- The interstate data is downloaded from the nPoles server as installer options, so the setup download stays the same size. The survey-marks set for all states (about 45 MB) is ticked by default; the larger per-state property sets are separate options with their sizes shown. Each carries its government licence and attribution alongside the data.
- Turning on a layer nPoles holds no data for at the survey's location now explains why - a commercial cadastre, a personal-use licence, or not yet prepared - and offers to send nPoles a request to include it.
- The Victorian map layers now switch on instantly. The data comes in an indexed format that opens in milliseconds instead of re-reading whole files each session, and holds far less memory while in use. What is drawn is unchanged. Offered as two download options in the installer; the existing Vicmap downloads continue to work.

TRANSFORMATION TOOL
- Surveys can now be transformed between GDA94 and GDA2020 in both directions - data supplied in one datum can be delivered in the other. Uses the official ICSM GDA94-GDA2020 grid (conformal and distortion, centimetre-level, Australia-wide) when the optional Datum Transformation Grid component is installed, or the standard national 7-parameter transformation otherwise. AGD66/AGD84 surveys transform to GDA2020 via GDA94.

PLAN VIEW
- Street map tiles no longer arrive out of alignment after zooming a little and dragging - tiles now always land exactly against their neighbours.
- Tapping a property or road casement offers "Open in VicPlan (browser)" - in the tap menu and the details window - opening the Victorian government's VicPlan planning map centred on that property, with its record and planning zones one tap away. The details window also explains the Vicmap property codes instead of showing bare letters.
- The map data copyright notices share the corner tidily and no longer overlap.

SURVEY PROPERTIES
- The dialog opens at its designed height with the address Look Up row in place.


nPoles v1.4.174 - What's New
Release Date: 6 August 2026

INSTALLER - VERSIONS SIDE BY SIDE
- One nPoles folder now holds every installed version side by side, each version in its own subfolder, ticked on and off in a single maintenance tool. Install a new version while keeping the old one for existing jobs, or remove versions no longer needed.
- The profile data, the Victorian map datasets, the registration and the settings are shared by all versions - updating nPoles no longer re-downloads datasets and no longer loses registration or settings.
- Each version gets its own Start Menu entry; the desktop shortcut and the .npoles file association follow the newest installed version.

PLAN VIEW MAP LAYERS
- Show Contours: Vicmap Elevation ground contours drawn topographic-style - every 10 m index contour heavier and labelled with its altitude when zoomed in close. The 1-to-5 metre contour product covers the greater Melbourne region; offered as a download component in the installer.
- Show Coastline: the LiDAR-derived Victorian coastline as marine-blue lines under the survey; also a download component in the installer.

VIRTUAL KEYBOARD
- The on-screen F1-F12 keys now press the matching button of the active window, the same as a hardware keyboard - in the surveying calculator F5 presses Accept and F8 toggles Edit After Accept; in the point edit window F5 presses OK.
- A keyboard whose remembered position ends up almost entirely off the screen - typically after a tablet rotation or a docking change - now returns to a visible position.

SURVEYING CALCULATOR
- The instrument height, back bearing and station readings no longer reset between height readings on a pole. The station now only resets when a different instrument point is actually selected.


nPoles v1.4.173 - What's New
Release Date: 6 August 2026

VICTORIAN MAP DATA ON THE PLAN VIEW
- A new Layers drop-down on the plan view toolbar gathers the map overlays: Show Map, Show Survey Marks, Show Property Boundaries, Show Road Casements, Show Street Names and Show Cadastral Points, with Street View at the bottom.
- Survey marks: the Victorian survey control network (SMES) drawn over the survey - triangles with the nine-figure number and RL when zoomed in close. Tapping a mark shows its full record (MGA2020 and MGA94 coordinates, AHD height and order, GNSS suitability and more), its scanned sketch plan and its full SMES mark report as PDFs - opened in a viewer inside nPoles that keeps each document on the machine, so marks looked at in the office can be read in the field with no internet connection.
- Property boundaries and road casements: Vicmap parcel outlines with council property numbers, and road reserves as dashed outlines. Tapping a boundary (or a point standing on it) shows the record, with the municipality shown by name (for example "377 - Yarra Ranges Shire").
- Street names: drawn along their roads like a street directory - heavier lettering for freeways and highways, italics for proposed ("paper") roads.
- Cadastral points: every property corner as a dot coloured by its published accuracy (green within +-0.30 m, amber within +-1.5 m, red beyond, hollow grey where never survey-adjusted), the +-value beside each dot when zoomed in, and a "Corner accuracy" summary in the property details window.
- On a GDA94 survey the Vicmap overlays are converted from GDA2020 to GDA94 before they are drawn (the standard national 7-parameter transformation, about 1.5 m in Victoria), so they land on the survey's own grid.
- The record windows now allow their text to be selected and copied.

STARTING A JOB FROM AN ADDRESS
- Survey Properties has a new Look Up button beside the Address field - it finds the address, sets the survey zone automatically and, on a survey with no points yet, centres the plan view there, so the street map, survey marks and boundaries can be checked in the office before any field work.

BRINGING MAP DATA INTO THE JOB
- A survey mark can be added to the open job as a survey point - published coordinates for the survey's own datum, the AHD height prefilled as the reduced level, the permanent mark code (GA) as the description, and the mark's identity kept in the point's remark alongside the surveyor's own note (for example "nail in kerb").
- A cadastral corner can be added the same way, with its published accuracy kept in the remark.
- A property boundary or road casement can be traced into the job as strung boundary points - the complete boundary, only the side that was tapped, or every boundary line running along the job's existing survey points in one pick. Description codes come from User Settings (boundary B1, road edge K1), each separate line goes on its own string number, and the lines just added are highlighted in orange until the next tap on the plan view.

INSTALLER
- The Victorian map data now installs with nPoles: the survey marks (SMES) as an optional component included in the installer (untick outside Victoria), and the larger datasets (property boundaries, road casements, street names, cadastral points) downloaded from the nPoles server during installation when ticked. Installed data is found automatically - no set-up prompts. (c) State of Victoria (Department of Transport and Planning), CC BY 4.0.

POLE SCHEMATIC
- Tee-off and two-way tee-off poles now identify their tee arms - "T/O" with the compass direction beside the arm and on the height row, so it is clear which heights tee off and to which side. Applies to the on-screen schematic and the DXF export.

CONDUCTOR STRINGS
- The Points Tools in Conductor String Properties now work on between-supports ranges (midspan points included even when their numbers fall outside the range) and their confirmation boxes can no longer sink behind the dialog.

FIXES
- Fixed a crash when deleting a point from its tap menu, most readily seen straight after an address look-up.
- A cadastral point sitting close to or underneath a survey point is now reachable through the point's tap menu, the same way overlapping points are offered.


nPoles v1.4.172 - What's New
Release Date: 3 August 2026

VIRTUAL KEYBOARD
- Fixed the keyboard vanishing for good after closing a dialog with OK (reported from Survey Properties on Windows 10) - with "Show the keyboard for every field" enabled it now reappears for every later dialog and input field as intended.
- The keyboard now returns to the dialog underneath when a message box or another window closes over it, instead of staying hidden until an input field is tapped.
- Fixed a possible crash when exiting nPoles while the virtual keyboard is enabled.

STRINGING CHARTS
- The sag / temperature and condition plots can now also be exported as a FreeCAD macro (*.FCMacro) from the plot window's Export button, alongside the existing AutoCAD script - running the macro rebuilds the chart as native FreeCAD objects (FreeCAD 0.19 or newer).
- The AutoCAD script export has been reworked so the drawing needs far less manual clean-up: curves on layers coloured to match the on-screen plot, every curve labelled with a leader arrow, labels that stagger to avoid overlapping, curves trimmed at the chart border, the chart title above the chart, and a colour legend on multi-conductor condition plots.
- Condition curves that lie on top of one another are drawn once with their labels combined.
- New "Additional Notes" boxes on the Sag / Temperature and Condition Chart tabs - saved with the chart and written onto the CAD exports.
- The Export dialog now suggests a file name built from the chart itself (title, chart type, conductor, span range and FSCC), and cancelling no longer forgets the last-used location.
- Fixed swapped axis-title orientations in the AutoCAD export, and extra conductors in rows 11 and 12 of the condition plot list not being plotted.

POLE LOAD
- The pole schematic has been restyled along the lines of utility pole schedule drawings: attachment names in a left-hand column with heights aligned in a right-hand column, a "PT" pole top row, a border around each panel, and the load summary under a "LOADS" heading with the pole load direction beside the SDL and LDL values (and the residual direction beside RSDL and RLDL on stayed poles).
- New schematic options under User Settings: attachment heights in millimetres, and a semi-3D style where crossarms are angled to their real bearings and stay wires run toward their anchors, captioned "LOOKING NORTH EAST" or "LOOKING NORTH WEST".
- The pole is now drawn as a solid tapered pole with shading, and the DXF export follows the same layout and now includes the stay tensions.
- An extra non-conductor attachment height is only drawn when marked as "Non String", and a "Non String" attachment with no remark text still shows its height.
- The schematic's "Flat DXF" export option is now explained on hover.

POLE STRUCTURE DATABASE EDITOR
- The timber species database's generic strength-group entries have been corrected in every profile that carries it (SECV, AusNet, Powercor, Jemena, JEN, United Energy): the entry miscoded as S4 is now S3, pressure-treated selections S2PT and S3PT have been added, S2 is labelled "Octagonally dressed, not pressure treated" with corrected design stresses, and the S6 durability rating is corrected. Utility-specific species data is unchanged.
- "Unlock for Editing" now unlocks the selected record on the first click, on every tab.
- Imperial poles are listed in their own units - a 30 ft pole shows as "30 ft" with its tip diameter in inches.
- The editor window now has its own taskbar entry, no longer sits permanently on top of the main window, and restores from minimised.
- The pole detail tabs scroll instead of squashing their fields, the pole list opens at half the window width with a wider Code column, and the material colour coding distinguishes imperial wood, metric wood, TITAN, steel and concrete poles.

PLAN VIEW AND EXPORT
- Zooming out with the mouse wheel now works consistently on every job - previously larger jobs could never be fully brought onto the screen.
- Export View to Image / PDF now works for the field view, saving the view as shown (including the map basemap) as a PNG or PDF, with confirmation of where the file was saved.
- Right-clicking a pole in the points list now offers Pole Load, matching the plan view.

POINT EDIT
- A new "Adjust Heights" button beside the Reduced Level field: when a pole's ground level changes, it offers to shift every recorded attachment height - and those of any T-offs sharing the pole - so each attachment keeps its absolute level, recalculating aerial stay angles, with a before/after summary table and an option to back up every pole first.

GENERAL
- Release builds no longer write developer diagnostic files into the nPoles folder. The per-job survey log used for job recovery is unaffected.


nPoles v1.4.171 - What's New
Release Date: 13 July 2026

ASSISTANT
- The in-app assistant can now answer questions about the job: "how many poles" (with tee-offs, stays and a breakdown by pole material), "how many substations / transformers", "how many telecom pits / gates / any point code", and questions about the conductor circuits ("how many LV circuits", "what is the highest voltage", "how many kilometres of conductor").
- Asking "where is point 72" now circles that point and centres it on the plan view, when the plan view is open.
- Asking "where is this job" reports the survey extent and centre, the datum and zone, and the latitude and longitude of the job's centre.
- The list of manual sources shown beside an answer is now clickable, opening that chapter of the built-in manual at the relevant section.

PLAN VIEW
- A new "Show map" button draws an OpenStreetMap basemap beneath the survey, so the job can be seen in its real-world setting; areas that have been viewed are cached and still show without an internet connection.
- A new "Street View" button opens the centre of the current view in Google Maps Street View in a web browser.
- Tapping a point offers "Describe Point" and, for poles, "Pole Load" (which opens with that pole already active); tapping a power line offers "Clearances" and jumps straight to that span. Where several points sit on top of each other, a list appears first so the intended one can be chosen.

POLE LOAD
- The pole schematic now shows non-string attachments - objects recorded on a "0 - Non String" circuit at a height, such as transformer connection points - as a labelled marker, and includes them in the image and DXF exports.
- A new "Explain this" button on the pole schematic opens the in-app assistant with the current pole's loading data filled into a question, ready for a plain-language explanation.
- The strength groups of several timber species have been corrected to match the reference overhead line design handbook. The strength group sets the permissible bending stress used to rate a timber pole, so the capacity for these species has changed: Grey Gum, White Mahogany, White Stringybark, Mountain Grey Gum, White Topped Box, Red Bloodwood and Radiata Pine.

POINT EDIT
- The timber species list is now taken directly from the timber species database instead of a separate list in User Settings, so every species in the database is offered and the two can no longer disagree. The Timber Species field has been removed from User Settings.
- The timber species dropdown now includes generic strength-group entries (S1, S2, S4 and S6) for classifying a pole by its strength group when the exact species is not known.

VIRTUAL KEYBOARD
- With "Show the keyboard for every field" turned on, the keyboard now appears on every dialog as it opens, including the Survey Properties dialog and other multi-field dialogs where it previously did not.

HELP
- The reference manual now opens in a window inside nPoles rather than launching a separate program, and its A+ / A- buttons resize the help text again.


nPoles v1.4.170 - What's New
Release Date: 7 July 2026

POINT EDIT
- The conductor-string tooltip now always matches the string's current stringing chart. Previously the cached edit dialog could keep showing a previous chart (after a string's chart was changed, or after opening a different job with the same number of strings) until nPoles was restarted.
- The Stay-anchor and pole-string dropdowns now always list the current job's point numbers, instead of sometimes showing a previous same-point-count job's numbers until a restart.
- Switching the User Settings profile and re-editing a point no longer doubles up the dropdown options (pole material, pole strength/length/status, stay, footing and others), which could previously allow selecting a value the active profile does not define. The Pole Formatted Description table no longer gains duplicate rows either.

POLE LOAD
- Corrected the imperial (feet) timber pole database: invalid S1 strength-group entries that are not part of the imperial pole standard have been removed, so imperial timber pole wind loads no longer vary inconsistently across timber strengths. The genuine S2 and S3 poles are unchanged.
- Footing strength: a surface log given a face depth but a length too short to rate no longer just returns a strength of 0 with no explanation. The two surface-log boxes are highlighted and a message explains that the dimensions do not make sense, and how to correct them.

CLEARANCES
- New User Settings > Clearances option "Include conductor strings marked as REMOVE". Off by default, conductor strings whose status is Remove are unticked and skipped in the clearance checks (still shown so a string can be re-ticked for a span) and left out of the clearance reports, the same way the Pole Load dialog already excludes them.
- The Previous button in the clearances run now steps back through the poles one at a time, instead of corrupting the three selected points (duplicating one and shrinking the span).
- Objects recorded with a below-surface (negative) height are now checked and reported — such as a finished surface level where the ground is to be cut down for a road or rail project. Previously an object had to sit above its surveyed point to be checked, so a planned cut was ignored.
- A point flagged as a finished surface level (remark "FSL" or "New RL") is now labelled "Finished Surface Level" in the clearance details and the report, showing both the current clearance to the surveyed surface and the future clearance to the new level.

SURVEY FILES
- New File > Import > "Create job from log file" rebuilds a survey from its log file when the project file is lost or corrupt, recovering the surveyed points (position, description and pole / cross-arm heights) as a new untitled job to review and save.
- New User Settings > Survey Files option "Log full job for recovery". When ticked, each save also writes a complete snapshot of the job to the survey log file, so "Create job from log file" can then rebuild the entire job. Off by default; the chronological backup remains the primary safeguard.

SPATIAL
- New Spatial > Describe Point tool (also on the point right-click menu) reports where the selected point sits in the network: its plan-view symbol and code meaning (e.g. G4 - telecom pit), whether it is a pole or a spot point, the two poles either side and their pole string, the span length and offset, and the conductors carried across the span. For a pole it shows a datasheet (material, length, strength, height out of ground, footing depth, timber species / strength group) and any tee-off. The readout can be copied to the clipboard or saved as a PDF.

VIRTUAL KEYBOARD
- The keyboard now opens again each time a data-entry window is reopened (Point edit, Surveying Calculator, Pole Load, Clearances and Conductor Calculator), not just the first time it was opened in a session.


nPoles v1.4.169 - What's New
Release Date: 19 June 2026

POINT EDIT
- The timber species dropdown now shows each species' strength group, e.g. "(GREY IRONBARK) GI - S1".

POLE LOAD
- The pole timber species now drives the pole shaft wind load. A timber pole's strength group (e.g. S1 for Ironbark) selects the correctly-sized pole from the database — a stronger species is a slimmer pole with less wind area — instead of always taking the largest variant for the class. Set the timber species on the point for this to apply.
- The report "Copy (plain text)" button now copies the report tab-separated, so the breakdown and attachment tables paste into LibreOffice Calc or Excel as columns.
- New "M-WL" button beside Wind Load opens a table to manually set or override the wind load components, and add custom items such as antennae. The total is forced and the reports flag it as manually entered, with no wind pressure recorded.
- When a timber species is set, the reports now show the pole's strength group after the material in the summary, e.g. "40'/B WOOD (S2)", and the detailed report names the species and strength group.
- A surveyed ground-line girth (circumference) is now used for the pole shaft wind load (converted to diameter) even without pressing the girth-to-diameter button.
- New User Settings > Pole Load option "VESI method: LDL footing moments about ground line". When on, the footing demand for Long Duration Load conditions is taken about the ground line (per the VESI / SECV manual) rather than the below-ground pivot point; Short Duration Load conditions keep the pivot. Off by default, so existing footing ratings are unchanged.
- Concrete, steel and Stobie poles now show only the short-duration (SDL) design conditions. The long-duration (LDL) conditions model timber creep and do not apply to these materials, so they are hidden in the results, the pole schematic and the reports. Timber and TITAN poles still show both.
- Under Design Stress, the reduced pole strength is now the pole's ultimate strength reduced by its strength reduction factor (not the working strength reduced by the same factor). The previous method understated the strength and so overstated the utilisation; Design Stress ratings and the percentages that depend on them are corrected.
- The utilisation tooltip on a condition's resultant force now shows two consistent lines: a moment basis (bending moment vs the pole's moment capacity) and a force basis (load vs the reduced kN rating).

USER SETTINGS
- Registration: an "Update" button next to the email address sends it to the registration server immediately (the same as Update Registration Settings) — an email typed in but not updated was previously lost when OK was clicked. If offline, a message explains that an internet connection is required to subscribe to the newsletter.

VIRTUAL KEYBOARD
- A minimised keyboard now re-opens automatically when you tap into a field. Minimising tucks it down to a slim title bar with no taskbar button, so tapping a field — which previously did not bring it back — could leave it hard to find. Tapping any input field, or the title-bar restore button, now brings it back.
- New button on the keyboard's title bar opens the right-click menu (cut, copy, paste, and Enable/Disable Virtual Keyboard) for the field you are editing — useful on touch tablets that have no right mouse button.

HELP
- Help > Reference (F1) now opens the nPoles manual in a built-in viewer window, instead of relying on a separate help program that most machines don't have installed (which left the Reference doing nothing when clicked).


nPoles v1.4.168 - What's New
Release Date: 16 June 2026

USER SETTINGS
- New "Keep the keyboard open" option makes the nPoles keyboard stay available like the Windows touch keyboard — it no longer hides as you move between fields, and a minimise button on its title bar tucks it down to a small bar you restore with a tap. With it on, the nPoles keyboard can replace the Windows touch keyboard while nPoles is running.

POINT EDIT
- The Sub Station box is now a tick box. Untick it to take a transformer off the pole, and out of the pole load, while keeping its details on record as a note of what is to be removed; tick it again to restore it.

POLE LOAD
- The transformer wind load can now be included in the pole load. New "Wind load on transformer" options in User Settings (Design Stress and Limit State, alongside the crossarm and insulator wind options). The transformer must be ticked on at the point and have a mounting height for its wind to be added.
- Fixed crossarms and insulators being mis-counted in the wind load. Attachments that have a height but carry no conductor (communications, streetlight or service brackets) were wrongly counted as crossarms and insulators. Crossarms are now counted once per conductor crossarm, and insulators one per conductor (a 3-phase HV circuit gives 3 insulators and a 4-wire LV circuit 4).
- Crossarms now use the flat-surface wind pressure (the same as the transformer) instead of the lower round-pole pressure; insulators stay on the round-pole pressure. The report shows both pressures, and the flat pressure is now also applied correctly under the Limit State method.
- The report "Copy to clip-board" button (now "Copy (formatted)") pastes into Word and LibreOffice as a formatted table instead of raw HTML, and a new "Copy (plain text)" button copies the report as plain text. Both are on the summary and detailed reports.


nPoles v1.4.167 - What's New
Release Date: 15 June 2026

USER SETTINGS
- The virtual keyboard options on the General tab are now grouped in a single "Enable Virtual Keyboard" box with the related options inside it; they grey out when the keyboard is switched off.
- The User Settings window sizes itself to the screen — it opens wider on roomy screens and can be dragged out to 1600, and clamps to the screen width on smaller tablets so it never runs off the edge.
- Reports tab: the Conductor Schedule report column settings are laid out vertically and the column boxes are sized to their content, so the column headers (Route Length, Max Design Temp, etc.) no longer clip and the columns are better balanced.

POINT EDIT
- The Sub Station transformer mounting-height field now has a "Height" label and a tooltip explaining it; the transformer selector has a tooltip too.
- The transformer selector now lists the transformers from the transformer database (the same as the Pole Structure Database Editor) instead of the profile's sub-stations setting. Profiles without a transformer database keep the old list, and you can still type a transformer in.
- New "Side" (Back / Forward) option next to the transformer height — records which side of the pole, along the line, the transformer is mounted.
- The Footing section now has a tooltip on every item, explaining the auger diameter, surface log length and face depth, and concrete depth in the manual's terms.

MENUS & TOOLS
- New "Pole Structure Database Editor" entry in the Settings menu (also the renamed toolbar / Design-menu button, formerly "Pole Calculator") opens the pole / cross-arm / insulator structure database editor.
- The unused "Cross Arm Structure Settings" option is greyed out for now.
- The Compare Conductor files button now has its own icon, and the Compare Conductors and Compare Chart Files windows show their own title-bar icon.

POLE LOAD
- Bug fix: footing dimensions no longer shrink 1000x when the footing type is changed. The surface log and concrete dimensions were being divided by 1000 (treated as millimetres when they are stored in metres), which could display and save tiny values and a wrong footing rating. Footing dimensions are now consistently in metres in both the Point edit and Pole Load dialogs.
- The footing dimension fields now show 3 decimals (mm precision), matching the Point edit footing fields.


nPoles v1.4.166 - What's New
Release Date: 12 June 2026

POLE SCHEMATIC
- Bug fix: the EXISTING panel could show far too little load after works renumbered the circuits — e.g. after raising a crossarm, an entire conductor's tension silently dropped out of the existing loading. Each circuit's loading now follows its conductor string regardless of numbering, and the existing pole also inherits the structure wind load when its backup carries none
- Loads stored on a backup point are now treated as the authoritative pre-works snapshot and are never overwritten; when no snapshot exists the existing loading is estimated from the current conductor data. Recommended workflow: Calculate, then Backup Points, then modify — the backup then carries the exact existing loading even if conductors are later re-strung to different tensions. The Backup Points confirmation includes this tip whenever a backed-up pole has no stored loads
- Bug fix: RSDL/RLDL now show the residual loading left in the pole after the stays take their share, and only appear when the pole actually has stays. Previously a spare-capacity figure was shown on every pole, mislabelled as residual loading
- New User Settings option (Pole Load tab): "Show SDL / LDL / RSDL / RLDL loads on the pole schematic" (default on, stored per settings profile). Untick to hide the load values on the stick diagram and its DXF export with one switch; stay tensions still show

POLE LOAD REPORTS
- Summary reports (PDF and spreadsheet) now state the wind load on the pole; manually entered values are flagged "(manually entered)"
- Every report format now records the nPoles version, date and "Prepared by" — the registered user name, or the User Settings initials when no name is registered
- The wind-load breakdown no longer lists components that contribute nothing: components disabled in User Settings, and zero extra-weight or transformer rows, are omitted from printed reports. The wind-load tooltip keeps every row as a diagnostic view, with disabled components labelled "(disabled in User Settings)"

VIRTUAL KEYBOARD
- Bug fix: fixed crashes on touch tablets after closing a dialog the keyboard had been shown in — reported as crashes when opening Survey Properties and when selecting the Spatial Data tab
- Bug fix: now works on spinboxes, bearing fields and editable dropdowns. Previously only plain text boxes could show the keyboard — even when a field had been right-click enabled — leaving numeric and bearing entry with no keyboard at all on touch-only tablets
- Bug fix: Windows touch-keyboard handling rebuilt for Windows 10 and 11. nPoles now stops Windows auto-opening its own keyboard for nPoles fields, and only closes the Windows keyboard while the nPoles keyboard is on screen — a keyboard opened deliberately from the taskbar is left alone. Previously the two keyboards could stack on top of each other, or the user could be left with no keyboard at all
- Settings changes now apply without a restart (only turning the keyboard on or off still needs one), and enabling the keyboard for the first time pre-ticks "show for all input fields"
- The Numeric layout gained Up/Down/Left/Right arrow keys — step a value up or down and move between bearing degree/minute/second sections from the compact pad
- Bug fix: no longer appears off-screen after rotating the tablet or undocking a monitor, no longer pops up for read-only display fields, and hides while a confirmation prompt is blocking input

CHANGE LOG VIEWER
- Bug fix: Help - About - Change Log entries are no longer displayed as empty bullets. Text containing angle-bracketed terms was being treated as hidden formatting by the viewer and swallowed


nPoles v1.4.165 - What's New
Release Date: 6 June 2026

NPOLES ASSISTANT (new feature, preview)
- Default chat model swapped to a smaller / faster variant (qwen2.5:3b) for the laptop preview. Cuts response time roughly in half on CPU-only machines with no meaningful quality drop on manual-lookup questions. Once nPoles Assistant moves to the server, a larger model will run there with GPU acceleration for full speed at higher quality.
- The assistant can now run actions for you, not just answer questions. Ask "show me points 10 to 20", "what pole runs are in this job", or "save points 10 to 20 to a CSV" and the assistant calls the matching nPoles operation directly. Read-only actions (listing points, listing pole runs) run immediately; write actions (saving files, modifying data) ask for confirmation before running. More tools — ODS export, pole load reports, clearance checks — will be added in following releases as wrappers around the existing dialogs.
- New in-app chat panel under Help → Ask nPoles Assistant… (Shift+F1). Ask anything about nPoles — the manual, menu paths, settings, conductors, charts, footings — and get a streaming Australian-English answer with cited sources from the manual. The Sources sidebar shows which sections the assistant drew on so you can verify each answer and click through to the manual. Conversation history is kept for the session. Currently runs against a local Ollama-based server on the same machine; future releases will move this to npoles.com so multiple users in an office can share the same assistant without each running a local server.

ADD POINT
- Bug fix: hitting Save followed by OK in the Add Point dialog no longer triggers a spurious "Point N Already Exists! Replace Point?" prompt. Customer-reported from a field tablet. Caused by Add-mode bookkeeping not flipping to Edit after the first Save, so the second click (Save or OK) saw the just-saved row as a duplicate. After Save in Add mode the dialog now transitions internally to editing the just-added point — subsequent Save / OK clicks update the row in place without prompting

TEST FRAMEWORK
- New headless test runner accessible via "nPoles.exe --test" from the command line. Runs the built-in regression suite and prints PASS / FAIL / SKIP per test plus a summary line. First case validates the FSCC catenary maths so subsequent code changes can't accidentally break the surveyor's default solver routine without the test catching it before release. Now also drives Qt dialogs headlessly with a global QMessageBox catcher — three new tests guard the Add Point Save-then-OK fix above plus the construction / tab-switch paths of Point Edit and Survey Properties (so future code changes can't quietly break the dialog open-and-navigate workflow without the test catching it before release). More tests will be added per release

CHART FINDER
- New "messenger chart" mode for creating CATV / Hendrix / spacer / lashed-services charts directly from the observed sag. Triggers automatically whenever the observation includes bundled-cable weight. The new chart's starting tension is calibrated against the same evaluator the candidate list uses, so the created chart's predicted sag at the observed conditions matches the surveyor's input to within 0.1mm. Existing "Create Chart" workflow for plain conductors is unchanged
- Debug log at chartfinder_create_debug.log in the project directory captures the full create-chart trace per session (inputs, observed-span calc, messenger-mode strip steps, calibration loop iterations, final chart fields). Appended on each Create Chart action so consecutive tests can be compared
- Bug fix: the Add-to-Average accumulator now clears when you pick a different conductor string. Previously the previous string's observations bled into the new string's average, and Create Chart From Average then produced a chart built from the wrong observations

POLE LOAD
- The detailed pole-load report can now be saved as a PDF. The new "PDF Document" option in the Save dialog produces the same three-part report as the spreadsheet — the full attachment / condition table on a landscape A4 page (no condition column cut off, however many conditions you have enabled), then the plan view followed by a bending-moment and a deflection diagram for each condition. The PDF and the spreadsheet always show the same diagrams
- Bug fix: removed the misleading DXF option from the detailed-report Save dialog. It saved the pole schematic stick diagram, not the report. The stick-diagram DXF is unchanged and still available from the "Export Stick Diagram DXF" button on the Pole Schematic tab
- Crossarm and insulator wind load can now be included or excluded separately for Design Stress and for Limit State, under User Settings (Clearances + P.L.). By default Limit State includes the crossarm and insulator wind and Design Stress does not, matching current Australian practice — tick the boxes to include them in a design-stress calculation

JOINT-USE SCHEDULE
- The third column heading is now "Asset" instead of "CAM No.", since the column holds each joint user's asset identifier, which is not always a CAM number across the utilities that use the schedule
- Bug fix: poles with the "Joint Use Pole" box switched off no longer appear in the schedule. Previously a company name left in a pole's joint-use fields — entered and then switched off, or copied from another pole — still produced a row, so the report could show extra lines for poles that aren't joint-use poles. The schedule now lists only the poles you have actually ticked as joint-use poles; existing jobs are corrected the next time the report is run, with no need to edit any pole

USER SETTINGS
- Bug fix: the User Settings dialog no longer opens wider than the screen. It now opens at a sensible width and can be dragged wider (up to 1024 px) when you want to see long database-path or party-member fields in full

nPoles v1.4.164 - What's New
Release Date: 25 May 2026

CATV STRINGING CHARTS
- Slacker CATV catenary charts added to every Australian utility profile, all the way to 5.00% messenger-cable sag. Previously the slackest available was 3.50% (Victorian profiles) or 2.50% (the others). Each profile's chart list now extends in 0.25% steps right up to 5.00%, with all seven bundle variants populated per percentage: 1MC / 2MC / 3MC / 1MC1SF / 1MC1LF / 2MC1SF / 2MC1LF. The starting tensions for the new percentages come from the in-app catenary solver run on the SECV profile via the "Find Start" button in the Stringing Charts dialog: 13.315 MPa at 3.75%, 12.474 MPa at 4.00%, 11.734 MPa at 4.25%, 11.079 MPa at 4.50%, 10.493 MPa at 4.75%, 9.967 MPa at 5.00%. The non-Victorian profiles (energex, etsa, ergonEnergy, energyAustralia, countryEnergy, integralEnergy, auroraEnergy, westernPower, NT-PW) also gain the 2.75 / 3.00 / 3.25 / 3.50% range with SECV's existing values for those percentages — the messenger catenary only depends on the messenger cable, which is the same across profiles, so a single MPa value per percentage applies everywhere (enhancement)

POINT EDIT
- Bug fix: opening a CSV-imported pole in Point Edit could show the previously-edited pole's Pole Top above ground (and other measured fields — pole ground diameter, mid diameter / height, pole tip diameter, tip easting / northing / RL, extra weight + drag area / height / Cd, sub-station height, pole-centre tick) pre-filled. Saving on top of that pre-fill silently persisted the wrong above-ground length onto the imported pole. Note for surveyors doing back-to-back Total Station readings: the previous behaviour where these spinboxes kept the prior pole's values across TS reads (an implicit shortcut) is removed in favour of always showing the point's true values. To copy a previous pole's data deliberately, use the existing "Copy Point Data" combobox at the top of the Point Edit dialog (bug fix)

CONDUCTOR STRING
- Bug fix: the Street / Reference field would not accept a second entry once one was in place. Typing a new street name and pressing Enter had no effect, and clicking on the text area opened the dropdown instead of letting you position the cursor to type. The dropdown-only behaviour added in v1.4.155 was over-aggressive — it routed every click and key press on the inner text field to the dropdown, swallowing the Enter that commits a typed entry. Clicks now position the cursor in the text area as expected; Enter commits the new entry; the dropdown still opens via a click on the combo body or the down arrow

nPoles v1.4.163 - What's New
Release Date: 25 May 2026

BUILD
- Built against Qt 6.11.1 (was 6.11.0). Patch update on the same LTS branch — bug fixes only

POLE LOAD - WIND LOAD
- Manually entered wind load is no longer silently overwritten when you click Calculate Wind Load. A prompt now appears showing the manual value, the calculated value and the full component breakdown — choose Replace or Keep manual. The manual flag is saved on the pole so reopening the job remembers the choice
- New HTML breakdown table on the wind-load spin box tooltip and in the detailed report: pole shaft, cross arms, insulators, extra weight (banners), transformer — with running total and the structure wind pressure, pole drag coefficient and pivot ratio at the foot. Replaces the previous single-number display so it's clear where each Newton came from
- Cross arms now contribute to pole wind load. Per-circuit lookup uses the new windArea_m2 and dragCoefficient fields in the crossarm database. Surveyors don't have to fill the crossarm code on every circuit — the calculator falls back to length-string match, then a representative Intermediate arm. Multiple circuits at the same height are grouped so a 3-phase HV crossarm counts as one physical arm (not three). 522 crossarm records populated across the 6 utility profile databases with windArea = length x height
- Insulators now contribute too, one per active circuit (= one per conductor). Uses the new windArea_m2 / dragCoefficient fields on insulator records; 156 records populated from length x max-cross-section
- Wind pressure: cross arms and insulators use the structure wind pressure (typical design-stress 750 Pa), the same as the pole shaft. Transformers and extra-weight banners still use the flat-structure pressure (typical 1000 Pa) — they're standalone bodies, not part of the pole structure
- Wind breakdown table now shows the count and dimensions of each component in the right-hand note column. Cross arms read e.g. "2 x 1.8m" when all the same length, or "3 cross arms (2 x 1.8m + 1 x 1.4m)" when mixed. Insulators read e.g. "6 x 11KV-9S-POST-TIE". Lengths are rounded to the nearest 100mm so 1797mm and 1800mm records collapse to the same bucket
- Crossarm grouping tolerance widened from 0.15m to 0.75m. Was over-counting on poles where the multi-phase HV crossarm has phase pairs 0.45-0.9m apart vertically — each phase was being treated as its own physical crossarm. 0.75m matches the fallback "minimum same-circuit phase separation" the 3D views already use when voltage type can't be parsed. Note: this is an intermediate fix — full voltage-aware merging that exactly mirrors PoleSketch3D / RouteView3D conflation is planned as a follow-up; until then the count may still differ from the 3D for unusual configurations (multiple distinct crossarms within 0.75m of each other, e.g. transformer drops below an LV crossarm)

POLE LOAD - FOOTING DETAILS
- Bug fix: the rated footing strength shown in the spin box and on the detailed/summary reports was carrying over from one pole to the next. Switching to a pole that hadn't had its strength calculated still showed the previous pole's kN and OK/INSUFFICIENT verdict. Capacity is now wiped on every pole switch — you have to click Calculate Strength on each pole to populate it
- Labels and tooltips on the footing tab now carry the SECV / Devereaux symbol next to each input (dc, a, b, Fc) and explain what each represents in plain words. The "Bottom concrete layer" is also called the "concrete block" or "collar" — both terms appear in tooltips so older terminology still resonates
- New "?" button next to Calculate Strength opens a popup with the SECV / Devereaux footing-formula diagram and a legend explaining every symbol (L, h, dp, dc, a, b, Fc, e, K0, P, H)
- New "Calculation method" dropdown at the top of the footing tab. Pick SECV / Devereaux (default, the long-standing Victorian DB method) or Brinch Hansen (ENA C(b)1). Per-pole selection, saved with the point
- New Brinch Hansen footing solver per ENA C(b)1-2006 Appendix B (Tables B1 and B2 — Kq and Kc bilinear interpolation). Soil properties default to ENA Tables B3-B5 typical values keyed off the existing footing combo entry — picks the appropriate phi, c and gamma for "Rammed earth only" vs "40-minus crushed rock" vs "Concrete + log" etc.
- New "Profile..." button opens a per-pole layered geo-report calculator. Editable layer table with soil type dropdown (15 types from Topsoil through Concrete fill), thickness, phi, c and gamma per row. Set the last layer's thickness to 0 for "to base of footing". Click Calculate inside the dialog to preview the rating, OK to commit — the method auto-switches to Brinch Hansen and the rating populates the parent dialog without a separate click
- "Apply template for footing type" button inside the Profile dialog pre-fills a sensible layer stack for whichever footing combo entry is selected (e.g. "Concrete + RE + log" gives Topsoil 0.3m / Compacted backfill 1.2m / Firm clay 0.3m / Concrete to base)
- Bug fix: the SECV / Devereaux solver was already iteratively solving the cubic for e (the pivot ratio) but the result was being discarded — the pivot spin box stayed at 0.7 (the default) regardless of pole geometry. The iterated value is now captured and echoed back to the spin box so the surveyor sees what the cubic actually landed on (typically 0.45 - 0.85 depending on load height, surface log, concrete block and soil)
- The Brinch Hansen footing solver now iterates the pivot too via bisection on the moment + horizontal force equilibrium residual. Surface log and concrete block geometry now affect the rating noticeably (they shift where the pivot lands, which shifts the F1 / F2 force balance) — previously the pivot was hardcoded to 0.55 / 0.667 and these geometry inputs had minimal effect on the BH result
- Pivot ratio is now shown next to structure wind pressure and pole Cd at the foot of the Wind Load breakdown popup tooltip, and in a new row in the Footing Re-Rating section of both summary PDF and summary ODS reports. Non-default values (anything not 0.7) are flagged in orange — useful when the soil method picked a value other than the historical SECV default
- Method name: the SECV pivot-point formula is now labelled "SECV / Devereaux" throughout the dialog, tooltips and reports. Devereaux was the SECV engineer who derived the original formula; "SECV / AusNet" was less accurate (AusNet inherited the method but didn't develop it)

ROUTE VIEW 3D
- New Print / DXF / STEP / 3D Web buttons on the Route View 3D toolbar — same set the single-pole PoleSketch3D view has had. Print captures the current view as-zoomed and offers Print, Save as PDF or Save as Image
- DXF export writes the whole route as 3D entities (pole shafts + conductor catenaries) at real-world easting / northing / RL coordinates. Open the resulting file in AutoCAD or any DXF-capable CAD tool for downstream drafting
- STEP export writes the route in ISO 10303 (STEP) format for engineering CAD tools — Inventor, SolidWorks, FreeCAD, etc. Per-pole shafts are placed at their surveyed positions; conductor catenaries are written as thin cylinders that follow the gentle wire droop
- 3D Web export writes GLB (or text glTF) — the standard format for browser-based 3D viewers (model-viewer, three.js, Blender) and for embedding the route in web reports / asset management portals
- Conductor sag in the exported catenaries currently uses a small default proportional to span length (~1.2%). Condition-specific sag from the stringing charts isn't yet plumbed into the route exporter — a follow-up release will pick that up so the exported geometry matches the conditions used for the load run

VIRTUAL KEYBOARD
- Fix for Windows 10 tablet-mode users: the Windows touch keyboard was still flashing visible before nPoles could close it, especially noticeable in the field on tablets. The dismissal is now event-driven instead of polled — Windows tells us the instant the touch keyboard becomes visible and we hide it before its first frame paints. Office (desktop-mode) behaviour is unchanged
- New User Settings option "Show virtual keyboard for all input fields" (off by default). With it on, the nPoles virtual keyboard pops up for every input field automatically — no more right-clicking to enable each field one at a time. Per-field enable/disable from the right-click menu still works and your existing per-field selections are preserved; turning the new option off restores the previous behaviour

nPoles v1.4.162 - What's New
Release Date: 14 May 2026

POINT EDIT
- The dialog now always opens on the first tab (Circuits 1-8). Previously it remembered whichever tab was last active, which could leave you looking at Circuits 17-24 on a point that has no high-circuit data

POLE LOAD SCHEMATIC (PNG and DXF)
- Negative insulator drops now show in the attachment-height label. Previously only positive drops appeared (e.g. "22kV - 10.15 + 0.45"); a negative drop on an upward-pointing bracket was silently dropped. The label now reads "22kV - 10.15 - 0.45" when the conductor sits above the crossarm
- Multiple fibre/CATV/PL MNT circuits at the same or similar heights are now each individually plotted, side by side. Previously two cables at the same height collapsed into one visible bracket — the second cable was effectively invisible
- Note: the same collapse behaviour may still affect the 3D views (PoleSketch3D, RouteView3D, Clearance3D) — to be addressed in a follow-up release

POLE LOAD REPORTS
- The detailed and summary Pole Load reports now document the footing re-rating for over- or under-sunk poles. The block lists the footing type, all four input dimensions (auger diameter, bottom layer thickness, surface log thickness and length — in metres at mm precision), the rated capacity, the maximum overturning demand both without and with stays, and an OK / INSUFFICIENT verdict against the finished structure with stays. Triggers as soon as any footing data is present on the pole — type-name from the dropdown OR just the dimensions
- Save Summary Report now offers Spreadsheet (.ods) alongside PDF and ODT. Pick from the file-type dropdown in the Save dialog
- Summary PDF: fixed text overlap. Rows had too little inter-line spacing and the Condition column was too narrow for labels like "SDL: 15°C 500Pa 0mm" which spilled into the next column — both fixed
- Summary PDF / ODS: fixed "Resultant Forces with Stays" reading 1000× too small (showed 0.001 kN where the dialog correctly showed 0.6 kN)
- Save Report (any format): if the destination file is open in LibreOffice or Excel, the save now shows a clear "file may be open in another program — please close it and try again" warning instead of silently failing

ROUTE VIEW 3D
- Ground reflection toned down — the bright sun reflection off the grass was caused by a Phong specular highlight that grass shouldn't have. The ground is now matte with a slightly lighter green
- New "Sun" picker in the toolbar — choose Morning, Noon, Afternoon (new default) or Late Afternoon. The lower-angle Afternoon default gives a directional highlight on the line and softer overall lighting than overhead Noon
- Mouse-wheel zoom is finer on large jobs — single-notch zooms no longer overshoot. 5% per notch (was 8%)

CLEARANCE 3D
- Strain crossarms at the middle pole now orient per-circuit instead of all sharing one averaged angle. A pole with two strain circuits going in different directions (e.g. one coming from A, one terminating going to C as a t-off) now draws each crossarm perpendicular to its own conductor — matching the existing RouteView3D behaviour. Through-running circuits are unchanged

CONDUCTOR STRING DIALOG (Conductor Strings → edit a string)
- The Owner field no longer silently defaults to the first joint-use owner on a new string. A blank entry is now always available at the top of the dropdown, so new strings start with no owner and an existing owner can be cleared by selecting blank. Customer report: opening a job created the day before, the Owner was already populated without the user having ever set it

USER SETTINGS DIALOG
- The dialog opens on the General tab again. A recent .ui file save had captured the Spatial tab as the default

VIRTUAL KEYBOARD
- Bug fix for Windows 10 and Windows 11 dual-keyboard issue — when the nPoles virtual keyboard is enabled, the Windows touch keyboard now stays out of the way instead of popping up alongside. A new checkbox in User Settings ("Suppress Windows keyboard whenever nPoles is active", on by default) controls how aggressive the suppression is. Confirmed problem with the previous behaviour by a user on a Win11 Panasonic Toughbook

nPoles v1.4.161 - What's New
Release Date: 7 May 2026

SPATIAL → EXPORT LAT/LONG (customer feedback from v1.4.160)
- Decimal-degree output now uses 9 decimal places (was 8). Excel was stripping trailing zeros from values like -38.13944760, leaving the column visually inconsistent. 9 decimals locks every cell to the same width and matches the customer reference example
- New Pole Number column in the points table and CSV export, distinct from the sequential survey Point ID. Useful for cross-referencing against utility asset records

nPoles v1.4.160 - What's New
Release Date: 6 May 2026

SPATIAL → EXPORT LAT/LONG (customer feedback from v1.4.159)
- Output Format dropdown — pick Decimal Degrees (default), Degrees Minutes Seconds, or Degrees Decimal Minutes. The whole table and the manual conversion section update to match
- New "Poles only (exclude T-off)" filter that drops T-off poles using the active settings profile's T-off description code (e.g. "J1" in Victoria SECV)

nPoles v1.4.159 - What's New
Release Date: 6 May 2026

SPATIAL TOOLS (Spatial → Export Lat/Long...)
- New dialog under the Spatial menu for converting project coordinates to Lat/Long. Output matches the format used by online GA conversion tools: PointID, Easting, Northing, Zone, Hemisphere, Latitude, Longitude, Point Scale Factor, Grid Convergence
- Pick the ellipsoid (GRS80, WGS84 or ANS), UTM zone and hemisphere; the dialog pre-selects defaults from your project's settings
- Filter by "Poles only" or "Non-pole" so survey/ground points can be deselected in one click; Select All / None / Invert buttons for fine-grained control
- Tick or untick individual rows then Copy to Clipboard or Save as CSV to feed straight into other tools
- Manual one-off conversion section at the bottom for ad-hoc Easting/Northing → Lat/Long without touching the project
- Save as CSV opens in the same directory as your project file with a sensible default filename, matching the other Save dialogs in nPoles

nPoles v1.4.158 - What's New
Release Date: 6 May 2026

LICENCE AGREEMENT (Help → About → Licence)
- Bug fix: the EULA was not being bundled in the installed package, so the Licence tab was empty. The agreement is now correctly visible under Help > About > Licence

UPDATE CHECKER (Help → Check for Updates)
- The "View changelog" link in the Update Available dialog is now clickable; the dialog text is also selectable so URLs can be copied out
- The changelog link now points at the correct page (https://www.npoles.com/changelog.html) — previously a typo'd URL returned a 404
- The web changelog page is now regenerated automatically on every release build, so it stays in step with the in-app release notes

QUICK SPAN DIALOG (Design → Quick Span)
- Add Span used to do nothing silently when the Distance was 0, the Rise/Object Location was beyond the span end, or the From Pole couldn't be found. It now shows a clear warning explaining which field needs attention
- After a T-off span, the From Pole dropdown could blank itself and disable Add Span when only one pole was in the list. Fixed
- The From Pole field used to recalculate the back bearing on every keystroke as you typed a pole number. It now updates only when you commit (Tab, Enter, or pick from the dropdown) — much smoother on slow machines
- Hardened against crashes when the per-circuit combobox lookup fails or when "Copy Point Data" is left as "None"
- Confirmation dialogs ("overwrite existing point?", "lose height data?") modernised to standard Qt 6 buttons; the default is now Cancel for safety
- Internal cleanup: removed log-spam debugging and a stale uninitialised array slot

LIST VIEW SETUP (Settings → List View Setup)
- Profile dropdown now correctly redraws the checkbox grid when a different profile is selected. Previously the dialog stayed stuck on whichever profile was active when it opened — caused by a Qt-5 signal overload that Qt 6 removed entirely, so the connection failed silently at runtime

AS/NZS 7000 WIND CALCULATOR (Settings → Standards Parameter Calculator)
- Audited against AS/NZS 7000:2016 (the current edition) and corrected several issues that affected the calculated wind speeds and pressures
- Downdraft mode now applies Eq B3 internally: Mt,downdraft = 0.5 + 0.5 × Mt,synoptic. Customers should re-run any downdraft calculations — the prior version over-applied the topographic effect
- Wind return period interpolation: when a working-life × security-level combination produces a return period not in the regional wind speed table, VR is now linearly interpolated between the two adjacent rows. Previously snapped to the nearest tabulated value with materially wrong results
- Mz,cat now linearly interpolates between the two adjacent tabulated heights instead of snapping to the closest row
- Table 6.1 in the dialog rebuilt to match the 2016 standard (5 rows × 3 columns). The non-standard "1.5" and "2.5" Security Level columns and the "75 Years" / "250 Years" extra working-life rows have been removed. Working-life and Security-Level dropdowns updated to match
- Internal cleanup: stale AS/NZS 7000:2010 comment references updated to AS/NZS 7000:2016, Qt6 deprecation warnings cleared

nPoles v1.4.157 - What's New
Release Date: 5 May 2026

BUILD
- nPoles is now built against Qt 6.11.0 (was 6.10.2). No customer-visible change expected; staying current on the Qt release train avoids accumulating a bigger jump later

POLE LOAD
- Pole schematic now shows the insulator drop alongside the conductor attachment height — e.g. "22kV - 10.15 + 0.45" for a circuit with a 0.45 m insulator. Suffix appears only when an insulator drop is present
- Pole schematic widened so the longer voltage + height + insulator labels no longer get truncated at the left edge
- Fix Next/Previous buttons looking dead in Pole Load — most reliably reproduced after switching jobs while Pole Load was open. The same fix unblocks Edit, Calculate Pole Load, the points combo, attachment-enable checkboxes, attachment-height edits, stay groupbox toggles, and wind-direction spinboxes
- Fix Next/Previous appearing inert in single-pole jobs — clicking them now refreshes the active pole even when there is only one to navigate to

POINT EDIT
- Fix points imported from GPS appearing to have a stay attached — the dialog had been leaking the prior edited point's stay-checkbox state onto the next point. Walking through a freshly imported set of GPS points using Next/Previous would silently flip every visited point's stayExists1 to TRUE if the first edit had a stay. Same shape leak fixed for poleTopCentre and polePressureTreated checkboxes. New points opened via Add Point also now start with these checkboxes cleared

AUSNET DATA
- New AusNet timber species file aligned with EVX9-7020 (Wood Poles, Desapped & Preservative Treated). Previously the AusNet profile fell back to the SECV data which had four strength groups misaligned with the AusNet drawing in the bending-moment-diagram heading: Red Ironbark RI (was S1, now S2), White Mahogany WM (was S3, now S2), Red Bloodwood RW (was S2, now S3), White Stringybark WS (was S4, now S3). Radiata Pine PR also corrected from S5 to S6. Pole bending-moment capacity is recalculated from the corrected strength groups, so customers running on AusNet should expect updated SDL/LDL numbers for those species

SETTINGS — COMPARE STRINGING CHART / CONDUCTOR DATABASES
- Customer reported the two compare tools "weren't working" — file picker opened at the filesystem root, the material filter dropdown did nothing, and the Copy ">"/"<" buttons silently aborted on conflicts. All fixed:
- File picker now opens at the active profile's database folder
- Material filter dropdown actually filters the lists now
- Copy reports any items that already exist on the destination side and offers to copy the remaining non-conflicting ones
- Open / Save buttons now have tooltips so the icons are clear
- New "Select All" and "Clear" buttons per side
- New "Save As..." button per side — saves the ticked items (or all if none ticked) to a new file location of your choice. Supports the "copy entire database to a brand new database" workflow without having to load a target file first
- New active-profile label below each side's file path showing which settings profiles currently use that file (e.g. "Active in: AusNet, SECV")

nPoles v1.4.156 - What's New
Release Date: 4 May 2026

CONDUCTOR STRING TOOLS
- Fix Split Conductor String dropping the existing string at the split point — when the new and existing strings shared the same attachment height (which is the default behaviour for a split), only the new string survived the height-sort step and the original was silently lost. The middle point now correctly carries BOTH strings at the same height after a Split operation

nPoles v1.4.155 - What's New
Release Date: 1 May 2026

REGISTRATION
- Auto-recover from the "stuck registered" state some customers hit after upgrading from the pre-TLS legacy nPoles via a v1.4.151–.153 build. Affected users could neither Register, Check, nor Deregister because the client thought it was already registered while the TLS server had no record. nPoles now detects this exact state at startup (file's status, key and hidden key all match the legacy Windows registry verbatim) and resets to demo mode with the licence key pre-filled, so opening Settings → Registration → Register completes the activation. Customers who registered correctly on .153 or .154 are not affected — any successful TLS register would have broken the fingerprint

POINT EDIT — POLE TIP DIAMETER READ
- Fix loop after a successful diameter read — the routine was being triggered multiple times per click, so after the first read transferred the value, a second invocation opened a fresh Read Diameter dialog and (with no readings) produced the "No diameter was calculated" warning. The duplicate-invocation regression that surfaced after the v1.4.153 sender() fix is now blocked at the connection level so a single click fires the routine exactly once

CHARTFINDER
- Fix Create Chart ignoring a non-default selection in the Tight/Slack dropdown — after switching those widgets to comboboxes in v1.4.153, Create Chart continued to use the closest chart rather than the one the user picked
- New Show Avg Calculations button inside the Average group box — opens a read-only report listing every span added to the running average, each with its closest slack and closest tight chart, plus candidate charts around the average tension and the currently-selected slack/tight titles. Copy to Clipboard supported

POINT EDIT — JOINT USE OWNER DROPDOWN
- Fix Qt6 regression where the joint-use owner dropdown showed no checkboxes and didn't respond to clicks
- Dropdown now opens on clicks anywhere across the combo (not just the arrow)
- Combo stretches horizontally so multi-select text (e.g. "OPTUS;TELSTRA") no longer truncates
- Width preserved across successive point opens
- Blank entry at the top of the list removed; duplicate UNKNOWN entries kept for multi-unknown selections
- Joint Use group box toggle now reliably enables/disables the combos — when unticked, the dropdown will not open and items cannot be selected

nPoles v1.4.154 - What's New
Release Date: 22 April 2026

LICENCE
- Unified installer — one nPoles build for all licence products (Field, Desktop, PPE, Tiny)
- Desktop licences retain the full app but disable total-station serial comms
- All other features (design, pole load, 3D views, schematics, clearances, DXF export) identical across products
- Demo/trial runs with full Field functionality

REGISTRATION
- Fix Desktop-licence registration being rejected because the binary always identified as nPolesField
- Fix Settings → Registration labels staying stale after a successful Check/Register/Deregister
- Preserve legacy Windows-registry licence settings — upgrading from the old pre-TLS nPoles no longer breaks the old binary
- Prompt to re-register when a licence key is on file but not yet TLS-verified (covers the legacy upgrade path)
- New optional Email field in Settings → Registration for release notifications and newsletters
- Connection log auto-scrolls to the newest line, and closes each round trip with a coloured summary capstone ("Details updated" / "Registered" / "Registration rejected" etc.)
- Connection log widened to use the available space in the registration tab

nPoles v1.4.153 - What's New
Release Date: 20 April 2026

POINT EDIT
- Fix pole tip diameter readline dialog losing the calculated value after Pole Centre + Left + Right Edge shots
- Sort button on Circuits 17-24 tab now works (previously did nothing); extended to capture, sort and restore all 24 circuits

CHARTFINDER
- New "Show Calculations" button opens a report window with inputs, iterative observed-span solve, every candidate chart evaluated, and the selected slacker/tighter charts; Copy to Clipboard for bug reports
- Span + average slacker/tighter chart title widgets converted to comboboxes — lists every qualifying chart sorted closest-first with the sag (or tension) difference shown in brackets, so users can pick a non-closest chart and click Use to apply it

POLE SCHEMATIC
- Fix duplicate circuits at the same height; a centre phase on its own string now renders alongside the outer-phase crossarm entry
- More vertical breathing room between the pole title and the topmost crossarm on short poles — labels no longer collide with the subtitle

3D VIEWS — MEASUREMENT & INSPECT TOOLS
- Distance measurement: click two points on any object for distance, vertical and horizontal components
- Inspect tool: click any object to see full properties with real-world E/N/RL coordinates
- Data source tagging: every property shows (survey), (database), (estimated), or (calculated)
- OCCT ray intersection for accurate surface picking (replaces Qt3D ray caster)
- Available in PoleSketch 3D, RouteView 3D, and Clearance 3D

3D VIEWS — RENDERING IMPROVEMENTS
- Raiser bracket rendering on poles with raiser bracket data
- Inline insulator added to eyebolt stay wires
- ABC intermediate renders clamp block only (no J-bolt/crossarm beam)
- LV strain terminals render with strain insulators in RouteView 3D
- Crossarm height matches surveyed attachment height in RouteView 3D

3D VIEWS — BUG FIXES
- Fix profile crossarm database not loading (all crossarms defaulted to 2m)
- Fix crossarm on wrong side of pole (intermediate and strain)
- Fix aerial stay direction in RouteView 3D
- Fix ABC treated as fibre (voltage 0) instead of LV (400V)
- Fix measurement overlay staying on screen after dialog closes
- Fix PNG save not overwriting existing file

REGISTRATION
- Server error messages now displayed directly to user (replaces generic "Error Number 156")
- Clear messages for: wrong product, key already registered, key not found, expired, server error
- Connection errors now suggest checking internet instead of registration key
- Suppress expected SSL certificate warnings from user-visible messages
- Fix "maintainence" typo in startup licence check
- Support URLs updated to portal.npoles.com

nPoles v1.4.152 - What's New
Release Date: 1 April 2026

BUG FIXES
- Fix Height Order sort losing crossarm codes when moving circuits between groups 9-16 and 1-8
- Fix missing OCCT DLLs in installer (libTKBRep.dll, libTKernel.dll, etc.)

nPoles v1.4.151 - What's New
Release Date: 31 March 2026

VIRTUAL KEYBOARD
- Suppress Windows touch keyboard on fields using nPoles virtual keyboard
- Keyboard can now be squashed flat — reduced minimum height for compact use
- Add "Start centre bottom of screen" option in Settings

POLE SCHEMATIC
- Parse crossarm/insulator codes from surveyor pole descriptions — "(SL2)+9SI" and "(SL2,9SH)" formats
- Crossarm codes matched to circuits by voltage type so FOC/service wires don't cause misalignment
- DXF export now uses B1 backup point for existing panel — matches PNG two-panel output
- Improved insulator symbols — circle with dot (pin) or vertical line (disc), sized by voltage
- SDL/LDL/RSDL/RLDL load summary above ground line with EXISTING/NEW headings
- Flat DXF export option (no layers) for easy copy/paste into AutoCAD
- Fix REPLACE status not triggering two-panel layout

POLE LOAD
- Store SDL/LDL tip loads in Point data (.pxml persistence)
- Headless calculation for any point including B1 backup points
- Auto-calculate B1 SDL/LDL when displaying schematic

3D VIEWS
- Parse crossarm/insulator codes from surveyor descriptions for 3D rendering
- Recognise ST (strain terminal) and T/O (take-off) as terminal circuit types
- Description-based INT/ST override — surveyor description overrides terminal status when next pole not yet surveyed
- Profile-specific crossarm databases loaded (e.g. crossarms-JEN.json) across all 3D views
- Fibre/FOC circuits render band clamp with D-ring bracket, no insulator
- LV ABC intermediate renders suspension clamp block instead of insulator
- LV strain terminals render with strain insulators in RouteView 3D
- Crossarm height matches surveyed attachment height in RouteView 3D
- Fix "LV ABC" treated as zero voltage (fibre) instead of 400V LV
- Fix crossarm code matching swapping circuits due to substring matching
- Fix HV interrupter code extraction matching (E) prefix instead of crossarm code
- PoleSketch 3D DXF export synced with 3D view rendering features

nPoles v1.4.150 - What's New
Release Date: 20 March 2026

SETTINGS
- Add virtual keyboard — enable in General tab, right-click input fields to configure per-field
- Three layouts: Numeric, Compact QWERTY, Full (F-keys, numpad, °⌀φ symbols)
- DEL ROW, UNDO, COPY, PASTE utility buttons on Full layout numpad
- Draggable, resizable, remembers position; auto-hides when dialog closes

POLE SCHEMATIC
- Attachment labels now interleaved by height (circuits, stays, lights sorted together)
- Fix crossarm code text overlapping the pole shaft

ROUTE VIEW 3D
- Fix phantom lines at poles — kingbolt using world position as length
- Fix V-brace start position and orientation (flat against pole, 45° default)
- Skip T-off junction markers with no spans

POLESKETCH 3D
- DXF export now uses real survey coordinates (easting/northing/RL)

nPoles v1.4.149 - What's New
Release Date: 19 March 2026

POLE LOAD
- Fix Find Ideal giving same bearing for all stays — each stay now gets its own result
- Find Ideal detects inline stays and proposes directly opposite the worst load direction
- Fix wind arrows accumulating on plan view on each calculate

3D VIEWS
- Fix stay loop cable sitting inside concrete poles
- Fix spiral vibration dampeners offset from conductors — now uses actual wire positions and visual sag
- Spiral dampener helix tighter for snug fit around conductor

nPoles v1.4.148 - What's New
Release Date: 18 March 2026

POLE LOAD
- Add Save Image button to bending moment diagram (PNG/PDF export)
- Fix attachment labels (C1, C2, S1) too far from pole on bending moment diagram
- Fix first circuit label overlapping "Tip (0m)" text
- Fix wind arrows disappearing from plan view when stay bearing is changed
- Wind arrows colour-coded: blue (without stays), orange (with stays), both at 30% transparency
- Wind direction heading labels background-coloured to match arrows

POLE SCHEMATIC
- Fix label spacing for circuits/stays close together — minimum gap based on font height
- Circuit labels bottom-aligned with height, stay labels top-aligned
- DXF export: (E) panel orange, (N) panel red on separate layers
- DXF export: fix degree symbol encoding, label overlap direction, crossarm label position

CROSSARM DATABASE
- New fields: canMountPoleTop and canMountBelowTop
- Crossarm selection respects mounting constraints — e.g. SL2 (pole-top only) automatically substituted with SL12 when circuit is below pole top
- Database editor: mounting position checkboxes on Physical tab

POLE SCHEMATIC DXF
- Fix AutoCAD compatibility (bad color index error)
- Larger text, custom viewport for centred view in CAD viewers
- Labels positioned relative to longest crossarm, crossarm codes clear of pole

FIXES
- Fix Save Image overwrite not working on pole schematic PNG
- Add transparent background option for PNG export (checkbox, enabled by default)
- Fix total station survey buttons missing when adding point from surveying calculator
- Fix stay anchor point comboboxes too narrow to show point numbers
- Remove up/down arrows on spinboxes for cleaner layout
- Cap pole load dialog height to screen so buttons are not hidden behind taskbar
- Fix database editor showing blank data after deleting a record

nPoles v1.4.147 - What's New
Release Date: 17 March 2026

POLE LOAD
- Fix wind arrow not displaying on plan view — file path was broken
- Fix wind arrow rotation to match actual wind direction
- Wind direction now shows bearing wind blows toward (was: direction wind comes from)
- Plan view shows separate wind arrows for with/without stays when stays are active
- Wind direction tooltips now show condition parameters and clarify bearing convention
- Changed circuit tab titles to CS 1-11 / CS 12-24

3D VIEWS
- RouteView: fix split crossarm for tension change with mismatched conductor counts (two crossarms matching PoleSketch)
- RouteView: fix LV circuits incorrectly shown with strain insulators at tension change poles
- RouteView: fix vibration dampeners placed beside conductors — now aligned on actual wire path
- PoleSketch: fix vibration dampeners on wrong side of pole and centre dampener at wrong height
- RouteView: smoother scroll-wheel zoom — proportional to distance, consistent on large and small jobs

POINT EDIT DIALOG
- Constrain widget widths for Status, Number, Length, Strength, Type, Top and Copy Point — adapts to actual contents

CLEARANCES
- Fix ground clearance regression since v1.4.127 — bundled weight was incorrectly applied when disabled on conductor string
- Fix spacer cable clearance when bundling disabled — now correctly uses support catenary only
- Remove up/down arrows from circuit height spinboxes for cleaner layout

nPoles v1.4.146 - What's New
Release Date: 15 March 2026

POINT EDIT DIALOG
- Fix ID field taking excessive width — now capped at 200px with matching label
- Fix Copy from Point combobox too narrow to display point numbers — sized to fit widest item

nPoles v1.4.144 - What's New
Release Date: 15 March 2026

POLE LOAD
- Fix stays making pole load worse than without stays — propped cantilever moment now capped at no-guy moment
- Add "Find Ideal" button to calculate optimal stay bearing using full engine analysis across all wind directions
- Ideal stay bearing displayed in readonly box next to each active stay bearing

nPoles v1.4.143 - What's New
Release Date: 11 March 2026

POLE LOAD
- Pole schematic: default crossarm codes by voltage, fibre cable brackets, disc/pin insulator symbols
- Pole schematic: street light drawing from bracket remarks, stay angle display
- Pole schematic: distinct colours for existing (orange) vs new (red-orange) panels
- Pole schematic: larger fonts, labels without remark text, duplicate label suppression
- Pole schematic: DXF export synced with screen rendering
- Pole schematic: buttons moved to bottom row, image fills full width

---

nPoles v1.4.142 - What's New
Release Date: 11 March 2026

POLE LOAD
- Fix inline stays (two stays at nearly the same bearing) producing worse results than no stays
- Add pole stick diagram schematic tab with Save Image (PNG/PDF) and Export DXF
- Existing pole panel now uses backup point B1 data when available

POINT EDIT DIALOG
- Fix circuit comboboxes showing "Not Active" on cached dialog reopen

3D VIEWS
- Crossarm V-braces now render on all crossarms (intermediate and strain), changed to flat steel straps
- Add fibre/cable bracket rendering to Route 3D and Clearance 3D views
- Add vibration dampeners on HV conductors near pole

---

nPoles v1.4.141 - What's New
Release Date: 9 March 2026

POINT EDIT DIALOG
- Replaced 24 individual circuit combobox rebuilds with single batch operation — reduces setup time by up to 14x
- Deferred heavy tab population until after dialog is visible — user sees dialog instantly, background work completes in milliseconds
- Pole Load caller now caches dialog instance instead of recreating from scratch each time

---

nPoles v1.4.140 - What's New
Release Date: 7 March 2026

PLAN VIEW
- Fixed fence and boundary point labels not appearing in plan view — regression since v1.4.129

POINT EDIT DIALOG
- Fixed slow dialog open (~7.5s) when reusing cached dialog — font change was triggering full relayout of all populated comboboxes on every open

---

nPoles v1.4.139 - What's New
Release Date: 7 March 2026

POLE SKETCH 3D
- Fixed transformer rotation — body, brackets and fins now correctly oriented along conductor direction
- Fixed zero-voltage circuits (CATV, Fibre, FOC) incorrectly merging as multi-phase groups — nearby CATV strings now render as separate single-conductor circuits

ROUTE 3D VIEW
- Fixed duplicate crossarms at co-located T-off poles — secondary pole's crossarm beam suppressed when same voltage and height already rendered by co-located pole

SURVEYING CALCULATOR
- Fixed Inst.Stn, Backstn and Point A/B dropdown lists not showing newly added points after Edit After Accept
- Point Edit dialog now cached and reused — second and subsequent opens skip the expensive UI construction (~3 seconds faster)

---

nPoles v1.4.138 - What's New
Release Date: 6 March 2026

TRANSFORMER DATABASE & POLE LOAD INTEGRATION
- New Transformer tab in Database Editor for managing transformer properties — kVA, mass, bending moment, wind area, drag coefficient per AS/NZS 7000
- Transformer wind load integrated into pole load calculation — wind force computed as Cd × Az × qz, applied as tip-equivalent at mounting height
- Transformer load displayed as separate line item in pole load report showing code, mass, height, wind contribution and BM
- Drag coefficient (Cd) only applied for limit state (ISD) design; default design stress uses Cd=1.0

POLE LEAN / DIAMETER ROUTINE
- DIAMETER routine now computes pole top centre as geometric midpoint of adjusted edge points instead of raw surface shot — eliminates one-radius offset error in lean calculation

SETTINGS FILE PROTECTION
- User profiles file now uses atomic write with backup — prevents data loss if process is killed mid-save (e.g. Windows update restart)
- Automatic restore from backup when user profiles file is empty or corrupt on startup

POINT EDIT DIALOG - PERFORMANCE
- Settings-driven comboboxes (pole types, crossarms, insulators, stay options, etc.) now initialised once and reused across subsequent opens
- Point-dependent comboboxes only refreshed when underlying data has changed
- Pole string number list built using efficient set lookup instead of linear search on large surveys

BUG FIXES
- Fixed transformer wind load units mismatch — was summing kN with Newtons, making transformer contribution 1000x too small
- Pole wind load now recalculated automatically when Calculate is pressed, ensuring transformer contribution is included
- Fixed circuit string comboboxes accumulating duplicate items on every dialog open and next/previous navigation

---

nPoles v1.4.137 - What's New
Release Date: 4 March 2026

ROUTE 3D VIEW
- Stays and eyebolts now follow tilted/leaning poles instead of remaining at vertical position

POLE SKETCH 3D - POLE TILT
- Tilted/leaning poles now rendered with surveyed lean and grey vertical reference line, matching Route 3D and Clearance 3D views
- Pole Tilt toggle button to switch between surveyed lean and vertical display
- Crossarms, insulators, conductors, stays and height markers follow the pole lean

3D VIEWS - INSULATOR TYPE
- Terminal/strain insulator type now determined per-circuit from span data and calculated tensions instead of blanket pole description flag
- Complementary span pairs verified against post insulator cantilever strength (4.4kN) before applying strain construction

BUG FIXES
- List View: point list now defaults to ascending order instead of reverse order on initial display
- Conductor Schedule: fixed multiple non-kV voltage types (LV, LV ABC, HV, FOC, AE) being lost from schedule due to key collision in voltage sort

---

nPoles v1.4.136 - What's New
Release Date: 2 March 2026

POLE LOAD - WOOD POLE BENDING MOMENT
- Wood pole capacity envelope now uses surveyed pole dimensions (tip diameter, ground-line diameter/girth, mid-height diameter) when available — blends with database taper rate for partial measurements
- Wood pole bending moment diagram now shows a dimension subtitle with tip, GL and butt diameters and their source (DB or Surveyed)

3D VIEWS - HV INSULATOR RENDERING
- HV strain disc insulator assemblies now rendered for terminal/strain crossarms and tension change poles, per SECV V89/7021/1 T insulator schedule (disc count based on voltage and pole material)
- Tension change poles automatically detected via MES/tension mismatch or span length ratio >2:1, rendered with dual disc assemblies (one per span direction)
- Slack chart status no longer overrides insulator hardware type — terminal/strain poles use disc assemblies regardless of chart tension, matching PoleSketch3D
- Slack chart detection now data-driven from chart_tensions.json (charts with max horizontal tension below 4.4kN classified as slack), with fallback to hardcoded list

ROUTE 3D VIEW - SURVEYED OBJECTS & T-OFF POLES
- Surveyed objects (trees, buildings, fences, boundaries, road edges, telecom pits, public lights, ground points) now displayed in the route view
- T-off clone poles (J1) no longer rendered as separate pole structures — co-located T-offs hidden, non-co-located T-offs togglable via "T-Off Poles" button (off by default)

BUG FIXES
- 3D Views: fixed surveyed insulator heights not triggering vertical post insulator rendering — unit mismatch (metres vs millimetres) caused Rule 13 comparison to always fail
- 3D Views: fixed LV terminal insulators rendering horizontal when surveyed heights confirm vertical post insulators
- 3D Views: fixed insulator height offsets incorrectly divided by 1000 in PoleSketch3D and ClearanceSketch3D
- 3D Views: fixed centre conductor of 3-phase HV terminal circuit appearing with shorter insulator — crossarm reversal caused insulator to clip through pole body, now pole-side mounted with disc assembly matching outer conductors
- Route 3D View: fixed centre conductor insulator hidden inside pole body at co-located T-off poles — vertical POST at offset=0 was enclosed by parent pole cylinder, now uses disc assembly extending outward
- Pole Sketch 3D: fixed single-conductor pole-side insulator rendered as vertical post without crossarm — now horizontal with gentle upward tilt (max 25°), conductor attaches at insulator tip
- Plan View: clone point labels no longer appear far from the actual point — collision avoidance step reduced for co-located points
- Clearance 3D View: fixed pole lean rendering in wrong direction (e.g. leaning toward road instead of boundary)

---

nPoles v1.4.135 - What's New
Release Date: 25 February 2026

SETTINGS
- "SP-AusNet" profile renamed to "AusNet" — existing job files saved with the old name will continue to load correctly

POLE LOAD - STAYS
- Fixed propped cantilever stay scaling using wrong reference direction - now computes per-guy using each guy's own horizontal direction (could cause tip load to increase after adding a stay)
- Stay tension now reports true computed value when exceeding capacity instead of capping at 100%
- Stay capacity now uses cos(angle) interpolation from line tension capacity instead of step-function table lookup — gives smooth capacity at any stay angle, capped at published design stress limits
- Footpath stay capacity now uses AusNet lookup tables based on pole length, stay angle (45°/60°) and strut length (1800/2400/3000mm) — No.5 wire (EVX9/7020/11) and No.8 wire (EVX9/7020/11/1)
- Stay tension values now show detailed breakdown on click, including footpath stay indicator and utilisation percentage
- No.5 stay wire capacity updated to EVX9/7020/5 values: aerial 46kN, 45° 34kN, 60° 24kN
- Fixed stay horizontal tension display using legacy formula instead of engine-computed value
- Load direction now displays degrees and minutes (DDD°MM′) instead of degrees only
- Fixed aerial stay angle calculation not accounting for ground level (RL) difference between pole and anchor points

POLE LOAD - WOOD POLE
- Crossarm bolt hole diameter updated from 24mm to 27mm in bending moment calculation
- Stay eyebolt hole diameter updated to 27mm default, 38mm for No.8 stay on wood poles

POLE LOAD - REPORTS
- Detailed report spreadsheet now includes "Report created with nPoles vX.X.XXX on DD/MM/YYYY" footer

NEW FEATURE
- Route 3D View: New route-wide 3D visualisation of all poles and conductors, accessible from Spatial menu
- Route 3D View: Aerial marker balls (bird diverters, aircraft markers) rendered as orange spheres along conductor catenaries

BUG FIXES
- Route 3D View window now properly parented to main window to prevent orphan process on application close

------------------------------------------------------------

nPoles v1.4.134 - What's New
Release Date: 18 February 2026

POLE LOAD - STAYS
- Fixed stay capacity colouring not appearing on Windows 11 (QPalette ignored by Windows 11 style for read-only fields)
- Fixed stay overload comparison using line tension instead of horizontal tension against horizontal capacity
- Stay capacity now uses design stress allowable horizontal loading table (replaces UTS limit state values)
- Stay capacity now checks anchor type (e.g. No4 GND ROD) as potential weak link - uses minimum of wire and anchor capacity
- Stay wire capacity now supports all wire numbers 3-8 (previously only 5 and 8)

CLEARANCES
- Mid-span conductor horizontal swing now displayed in object clearances when objects are present in the span

BENDING MOMENT & POLE DATABASE
- Bending moment diagram now uses dynamic capacity table with any number of capacity points for more accurate envelopes (replaces fixed 3-point system)
- Alternate pole capacity envelopes also use dynamic capacity table interpolation
- Pole Database Editor: Strength tab redesigned with editable capacity table (distance/moment/shear rows)
- Pole Database Editor: Strength diagram rewritten with smooth interpolated curves from capacity table
- Pole Database Editor: Added specification field, wood pole girth info label
- Legacy pole data automatically builds capacity table from fixed fields on import

BUG FIXES
- 3D Pole View: Fixed crossarm height for phase groups - crossarm now placed at the correct height when circuits have different conductor counts
- 3D Pole View: Fixed height interpretation for strain/terminal construction - horizontal strain insulators no longer cause incorrect vertical offset
- 3D Pole View: Strain centre phase insulator now correctly oriented inline with conductor direction
- 3D Pole View: Additional conductors of different materials (e.g. neutral) now included in rendering
- 3D Clearance View: Additional conductors of different materials now included in rendering

IMPROVEMENTS
- 3D Pole View: Multiple single-conductor circuits at similar heights are now grouped onto a single crossarm using inter-circuit separation data
- 3D Pole View: Tension change pairs detected as strain construction with horizontal insulators
- 3D Pole View: Centre phase on strain poles mounts on pole (top or side) when at a distinct surveyed height

------------------------------------------------------------

nPoles v1.4.133 - What's New
Release Date: 13 February 2026

BUG FIXES
- Surveying Calculator: Fixed reflectorless height/tip diameter reading off by instrument height - instrument height was double-counted in calculation
- AngleSpinBox: Fixed crash when backspacing to edit bearing - regex capture group access was out-of-bounds for optional groups
- AngleSpinBox: Fixed Enter key activating dialog default button instead of confirming the angle change

IMPROVEMENTS
- Help Menu: Added Check for Updates and Maintenance Tool menu items for online update notification
- AngleSpinBox: Regex patterns now compiled once for better performance during editing

------------------------------------------------------------

nPoles v1.4.132 - What's New
Release Date: 11 February 2026

BUG FIXES
- Pole Load: Fixed summary and detailed reports underreporting total horizontal tension for multi-conductor circuits
- Pole Load: Fixed detailed report lower span wind tension showing 0kN due to inline stay cancellation
- Pole Load: Fixed lower span wind force calculation using upper span conductor diameter

IMPROVEMENTS
- Pole Load: Report circuit titles now show stringing chart name and additional conductor descriptions
- Pole Load: Removed always-zero Residual and Cancelled rows from detailed and ODS reports
- Pole Load: Report tensions now displayed to 3 decimal places consistently

------------------------------------------------------------

nPoles v1.4.131 - What's New
Release Date: 10 February 2026

BUG FIXES
- Pole Load: Fixed stay wind direction spinbox resetting to 0 when user changes direction
- Pole Load: Fixed wood pole utilisation shading not appearing in bending moment diagram
- Pole Load: Fixed upper span conductor string load incorrectly showing 0.00kN for some circuits
- Pole Load: Fixed conductor string spans not found when tee-off points with empty point numbers corrupt matching
- Pole Load 3D View: Fixed 2-conductor insulators placed too close together instead of at crossarm ends
- Pole Load 3D View: Fixed crossarm drawn too short when measured conductor offsets exceed database crossarm length
- Pole Load 3D View: Fixed compass N/E/S/W labels appearing mirrored

IMPROVEMENTS
- Pole Load: Terminated circuit spans now show "-" with "Circuit terminates" tooltip

------------------------------------------------------------

nPoles v1.4.130 - What's New
Release Date: 9 February 2026

BUG FIXES
- Surveying Calculator: Fixed upload bearing to total station doing nothing
- Pole Load: Stay results and AngleSpinBox now preserve application font when background colour changes
- PoleCrossArmInsulator Dialog: Fixed intermittent crash from uninitialized pointers
- Pole Load: Wood pole bending moment capacity curve now stops at ground line

IMPROVEMENTS
- Pole Load: Expanded circuit support from 20 to 24 circuits with two-tab layout
- Pole Load: Wind direction for each condition is now editable with separate stay wind direction
- Pole Load: Residual force direction displayed in with-stays results and reports
- Pole Load: Reports indicate user-overridden wind directions with asterisk and footnote
- Pole Load: Stay bearing spinboxes now use AngleSpinBox with DMS display
- Pole Load: Stay tension line edits show utilisation percentage and colour-coded capacity
- Pole Load: Wood pole bolt hole capacity reductions automatically applied - kingbolt 27mm at 300mm from tip, crossarm bolts 24mm at circuit heights, stay eyebolts 24mm at stay heights
- Pole Load: Wood pole capacity above kingbolt tapers linearly to zero at tip
- Pole Load: Bending moment diagram shows bolt hole markers and info panel
- AngleSpinBox: Text now horizontally centred for consistent alignment
- PoleCrossArmInsulator Dialog: List view now takes half the dialog width

---

nPoles v1.4.129 - What's New
Release Date: 5 February 2026

BUG FIXES
- Chart Solver: Fixed additional weight in conductor string not being applied to sag calculations
- Clearances: Fixed aerial markers not affecting sag - setExtraWeight now correctly enables bundling
- Clearances: Fixed copy-paste bug where lower circuit was checking upper circuit's additional weight flag
- AngleSpinBox: Fixed regex patterns using broken hex escape for degree symbol - fixes crash when typing "180"
- AngleSpinBox: Fixed font reverting to system default when switching tabs
- Chart Finder: Fixed circuit temperature not being read from remark
- 3D Viewer: Fixed merged T-off circuit bearings - now correctly sourced from partner circuit
- 3D Viewer: Handles cases where both merged circuits have only upper or only lower spans
- Registration: Certificate loading now uses application directory path with proper error handling
- Settings: Fixed settings save using wrong variable for file path when resolving relative paths
- PointAddEdit: Fixed stay 1 bearing spinbox never enabling when stay 1 checkbox checked
- Surveying Calculator: Fixed comps output bearing spinbox too narrow

IMPROVEMENTS
- Fonts: Bundled Noto Sans font for cross-platform consistency
- Plan View: Simplified point number positioning with smoother zoom scaling
- Pole Load Solver: Expanded conductor string handling from 20 to 24 circuits
- Registration: Upgraded to TLS 1.2 or later with increased connection timeout
- Registration: Added progress messages and better error recovery allowing retry
- Registration: Improved licence key format validation with descriptive error message
- Installer: Updated build script with release checklist and automatic version updating

---

nPoles v1.4.128 - What's New
Release Date: 2 February 2026

BUG FIXES
- 3D Viewer: Fixed AE circuit bearing display for merged T-off circuits - conductors now draw in correct direction
- Settings: Fixed user settings not saving in installed version - now correctly uses ProgramData path

---

nPoles v1.4.127 - What's New
Release Date: 1 February 2026

PLATFORM UPDATE
- Qt 6.10.2 upgrade

POLE LOAD ANALYSIS
- Added deflection diagram widget showing pole deflection under load
- Added bending moment diagram widget with capacity envelope display
- Bending moment diagram now displays correctly for imperial poles (bug fix)
- Deflection diagram now displays correctly for imperial poles (bug fix)
- Deflection diagram clears when changing to a new point (bug fix)
- Imperial pole strength rating (A/B) now correctly matched from database (bug fix)
- Bending moment utilization calculation with stays fixed - was showing ~115% instead of ~57% (bug fix)
- Integrated new pole load engine for improved stay calculations
- Integrated 3D viewer for single pole visualization

POLE DATABASE EDITOR
- Fixed crash when opening editor after pole load operations (bug fix)
- Imperial poles now have correct design stress limit and ultimate strength values (bug fix)
- Imperial pole diameters now correctly converted from inches to mm (bug fix)

CLEARANCES
- Expanded dialog to support 24 circuits
- Integrated 3D viewer for multi-pole clearance visualization
- Fixed circuit pushbutton showing duplicated text (bug fix)
- O(1) hash lookup for clearance colours (performance)

3D VIEWER
- Added ABC bracket enhancements for pole visualization
- Fixed insulator positioning - now correctly aligns with crossarms (bug fix)
- Fixed north/south orientation - north now at top, east on right (bug fix)

USER INTERFACE
- ListView Settings: added circuits 17-24 configuration with XML read/write support
- PointAddEdit: fixed circuit title duplication showing "FibreFibre" instead of "Fibre" (bug fix)
- AngleSpinBox: fixed crash when typing angle values like 180 (bug fix)

REGISTRATION
- Improved error handling with detailed SSL/connection failure messages
- Changed port from 30002 to 443 via HAProxy
- Added popup messages for registration/de-registration success/failure
- Added "Copy to Clipboard" button for connection log

PERFORMANCE IMPROVEMENTS
- Replaced QList with fixed arrays in hot loops - eliminates ~64,800 heap allocations per calculation
- Added QHash cache for point lookups - O(1) vs O(n)
- Changed Point parameters to const references to avoid deep copying

OTHER
- SECV Profile: added poles, crossarms and insulators database
- Added file logging support with fixed application paths