Versioned as v[major].[three-digit-minor] — e.g. v5.040.000.
Releases follow MAJOR.MINOR.PATCH, and the number now says what changed:
Two cases get called out rather than decided quietly. A fix that changes your numbers — such as adding the aperture radius to the wall limit in v7.00.025 — is still a patch, but the entry will say so plainly, because a correct result can still differ from the one you planned against. A fix that arrives with a new input counts as a feature, since there is something new to fill in.
Fixed: strain-wave mounts were drawn mirrored about the meridian. The harmonic model ran its hour angle with the opposite sign to the equatorial one, so the mount swung east where the geometry said west and the drawn azimuth came out as (360 − reported) — more than 30° adrift three hours off the meridian. It agreed exactly at hour angle zero, which is the park pose both tools open on, so the preview looked correct until you moved it. Reported by a user as the telescope appearing upside down, which is what a mirrored pose looks like once the tube is off the pole. The reported NINA values and dome azimuth were never affected — those come from the geometry, not the drawing.
Fixed: the model check could not see this class of fault at all. The ?verify harness compared the drawn pointing against the reported one on altitude only, and a mirrored pointing has exactly the same altitude — so the check passed throughout. It now checks azimuth too, comparing the short way round and standing aside near the zenith where azimuth stops meaning anything. The scene's north and east directions were confirmed against the compass sprites and the pole marker rather than taken from a comment, two of which disagree with each other.
Known issue, unchanged and now better understood: on the harmonic model the drawn optical axis is displaced from the computed one by a constant of roughly 320 mm. Sweeping the saddle offset shows the gap minimising at a tube position with no physical meaning, so the displacement is elsewhere in that model's chain — most likely its head sitting below the group origin, where the RA/Dec intersection is supposed to be. Moving the telescope to close the gap would fit the tube to a misplaced pivot rather than fix it, so nothing here has been adjusted. This is the preview only; it predates the north-shift work and v8.14.000 reproduces it exactly.
Fixed: on a strain-wave mount the pier walked north with the mount head. The north shift added in v8.15.000 moves the RA/Dec pivot along the polar axis, and the equatorial model was taught to leave the pier where it was poured — but the harmonic mount is a separate model and was not. Its whole assembly, concrete included, slid north by the run. Only visible if you measured your own B, since ZWO publish none of the axis geometry and the presets leave the run at zero; anyone who did measure saw a pier standing somewhere it was never built. The support now hangs on its own node, as the equatorial one does.
Fixed: the model check that would have caught it could not see a harmonic mount. The ?verify pier check looks for the mount's pier bins by name, and the harmonic model never exposed any — so the check skipped silently and the panel reported the picture as agreeing with the numbers while the pier was drawn in the wrong place. It now exposes them under the same name, and the check covers both models.
Known issue, found while checking the above: on all three ZWO harmonic presets the drawn optical axis does not pass through the aperture the geometry computes — the ?verify panel names a gap of roughly 630 mm at the default pointing. The two disagree about where the optical axis starts, not which way it points, so the reported dome azimuth is unaffected; it is the preview that is wrong. This is not new — v8.14.000 reproduces it exactly — and it is a fault in the harmonic pose rather than in the north shift, so it is left for its own session rather than folded into a patch.
Fixed: the old-file notice was being shown to nobody. Loading a pre-8.12 setup put the notice — and its link to the setup converter — in the status banner, which sits below the 3D preview: around a thousand pixels down, just off the bottom of a typical laptop window. Every measurement of it landed at the same place, roughly fifty pixels out of view. The banner is now brought into view after loading a file it has something to say about; an ordinary load leaves the scroll position alone.
Fixed: the notice did not stand down when the pointing changed. It was meant to step aside once the person moved past the loaded state, and the listener doing so was attached and firing — but attached last, so the banner repaint that the same keystroke triggers had already run by the time the flag was set. The dismissal took effect one interaction late, every time, which reads as never. The listener now repaints the banner itself.
The north shift is modelled. On a German equatorial the B measurement lies along the polar axis, so as the mount tips for a lower latitude the RA/Dec intersection moves toward the elevated pole: B sin(latitude) up — which the head height has always carried — and B cos(latitude) along the ground, which nothing carried. The wall measurements locate the pier; the intersection NINA wants sits that run north of it (south, below the equator), and the tool was reporting the pier figure — short by roughly 200–270 mm for a mid-size mount at temperate latitudes, reaching NINA as a N/S offset of zero. Raised in the v8.13.001 report and left for its own session because it changes a reported value.
The N/S offset now includes the run, in every place the old figure was used: the NINA card, the live 3D, the sky sweeps, the setup check, and the figure carried across when switching to direct entry. Direct entry itself is untouched — values typed there mirror NINA’s own fields, which already locate the intersection. The run comes from the selected mount’s published B, or from your own B when “Use my own values” is ticked; presets that carry no B (the partial and fixed-latitude entries) leave it at zero rather than inventing one, the same treatment the head height gets. A note under the floor-mark readout says what was added and why the two figures differ.
If you load a setup saved by an earlier build, expect the N/S value to change. Your measurements are untouched — the tool now derives more from them. Anyone who entered a hand-corrected N/S through direct entry keeps it exactly as typed.
In the 3D preview the pier now stays where it was poured while the mount head stands the run north of it, and the counterweight’s pier-strike clearance is measured to that real pier rather than to a phantom one under the pivot. The ?verify harness gained a check that the drawn pier sits the run south of the reported offset — which promptly caught the first attempt passing the shift to everything except the drawing.
Older setups are no longer migrated inside the calculator. Doing it there meant every past convention change stayed in the file everyone loads, growing a branch at a time. A file written before 8.12 now opens exactly as it was stored, with a note saying which build wrote it and what has changed since — and a link to the new setup converter, which does the conversion properly and hands back an updated file.
The converter reads what wrote a file, explains each change, applies it, and marks the result current. Measurements are never touched. Files it has been through carry a note of where they came from and when.
Fixed: changing your latitude did not recompute the mount head height. The height is derived from the A and B measurements and the latitude — A + B sin(latitude) — but only the A/B/C fields triggered the recalculation. Setting the latitude left the figure showing the answer for the previous one, so anyone who entered their latitude last, which is natural, got a height for whatever had been there before. Reported by a user who noticed their Paramount ME II figures did not match the library.
Known issue, same report: the north shift is not modelled. As a German equatorial tips for a lower latitude, the RA/Dec intersection moves north by B cos(latitude) as well as down — for a 15″ B that is 7.5″ at latitude 60 rising to 14.5″ at 15. The tool reports a N/S offset of zero at every latitude, so that displacement reaches NINA as nothing. The wall measurements are taken to the pier face, and the intersection sits north of it by that amount. This is a change to a reported value rather than a display, and is being left for its own session rather than rushed.
Saved setups record which build wrote them. A version and a schema now go into every file. The version is for diagnosis; the schema is bumped only when the meaning of the saved fields changes, so a loader can test one number rather than parse a version string and guess.
Setups written before this are brought to the rest position. They stored a pointing under the old rules, when the mount changed pier sides on its own, and often land with the counterweight level or raised — which is not where any mount sits, and reads as the preview being broken. The pointing is moved to the shaft-down position on load. Measurements are untouched, and files carrying a schema are left exactly as stored.
Fixed: the hour-angle slider was ninety degrees out after loading a setup. The load routine synced sliders by copying the number field across, which is right for declination and wrong for hour angle — that slider holds a position on the counterweight’s swing, not degrees. The roll-off tool’s jog buttons had the same fault, still clamping to a range left over from when the slider held hours.
The pointing slider is the counterweight’s swing. Its centre is the shaft hanging straight down — where a mount actually sits at rest — and each end is a quarter turn from there, which puts the weight level with the ground. It will not go past that, so the pose real hardware does not adopt is no longer reachable by dragging. The finest steps now fall around the rest position rather than at the meridian.
The RA field keeps its own meaning throughout: zero on the meridian, and still accepting the full ±180° if you type into it.
Both tools open with the counterweight down. They opened at hour angle zero, where the shaft sits level east-west rather than hanging — not where anyone leaves a mount. They now open at the pole with the weight down, which is Astro-Physics park 3. The dome tool opens on the west side and the roll-off on the east, because the two have carried opposite east/west conventions since before this release; that inconsistency is worth resolving but would disturb saved setups, so it is left for now.
The automatic pier-side flip is gone. The mount used to change sides on its own to keep the counterweight down, which meant it jumped mid-drag. It now stays on the side you chose. With the slider limited to a quarter turn either way, the flip is no longer doing work the range does not already do.
Dome Lab and ROR Lab are landing pages. The work that was in them has been folded into the main build, so each now says so and points at the current calculator. When something new is being tested they will carry it again.
The model-verification harness ships with the dome calculator. It has earned its place in the lab: it checks that the geometry the tool draws agrees with the figures it reports — the dome centre, the floor datum, the mount pivot, the ghost aperture, the locked height pair, and the drawn altitude — and names the gap in millimetres or degrees rather than passing or failing silently.
Most of the faults found this month were the drawing and the arithmetic disagreeing while each looked right on its own. Add ?verify to the calculator’s URL for a live panel, or call verifyModel() in the browser console. It is inert otherwise, so it costs nothing in normal use — and if you report something odd, that panel tells us in one line what would otherwise take an evening to find.
Lab builds are reachable from the site. A Lab menu in the header opens onto Dome Lab and ROR Lab. They sit behind their own menu rather than in the main run of links, because they are work in progress and someone should have to choose to go there; each carries a blue banner saying so and a link back.
Dome Lab adds a model-verification harness. It compares the geometry the tool draws against the figures it reports — the dome centre, the floor datum, the mount pivot, the ghost aperture, the locked height pair, and the drawn altitude — and names the gap in millimetres or degrees rather than passing or failing silently. Add ?verify to the URL for a live panel. Most of the faults found this month were the drawing and the arithmetic disagreeing; this is the check that catches them at the moment they diverge.
ROR Lab is a roll-off-roof sandbox carrying the v8.10 fixes. It has no verification harness of its own yet — that is the next thing to port across.
The NINA values panel folds away, and joins the numbered sequence. It had its own header and its own way of opening; it now uses the same head as every card beneath it, numbered 1, with the measurement steps shifted to 2–6. The rail reads straight down as one list rather than a panel followed by a separate set of steps.
Collapsed, the label had been squeezed to 67 pixels and wrapped “NINA values” onto two lines while the summary ran past its edge and the Formulas button clipped. The label now never wraps, the summary gives way instead, and Formulas stands down while the panel is shut — it explains figures you cannot see. Copy still works on them.
Note for the manual: the dome manual’s step numbers already did not match the tool before this change — it calls Mount Position “Step 1” where the tool showed Dome. That needs its own pass.
Folding away. It opens expanded, because it is the answer — but on a short screen it pushed the measurement steps below the fold, and once the figures are copied it is mostly taking up room. It now collapses like the step cards beneath it, from 280 pixels to 54.
Collapsed, the three offsets stay on the header line, so “what were my numbers again” does not need a click, and they follow every change rather than freezing at whatever they were when you folded it.
Fixed: a correct horizon warning read as a false alarm. With a custom horizon profile loaded, the banner still quoted the flat minimum observation altitude field. A reported case pointed at 28.9° altitude and was told the minimum was 15° — so the warning looked plainly wrong, and the red shutter with it.
It was not wrong. The terrain profile stands at 36.2° at that azimuth, and the pointing really was behind a hill. The banner now names the limit that is actually binding: “your terrain reaches 36.2° at azimuth 67°”. With a flat horizon it reads as before.
Fixed: the roll-off tool under-stated its obstruction limits. It did account for the width of the beam rather than just the centre ray, but by adding the aperture radius to the wall height — and that is not the same thing. The beam is tilted, so a vertical gap projects shorter across it: clearing the lower edge needs r / cos(altitude) of vertical room, not r.
Solving d sin(a) − H cos(a) = r gives the limit exactly, and that is what both the rectangular and custom-wall paths now use. The old form was optimistic by up to 2.8° where a wall is close and high — sky the tool said you had and you did not.
The aperture ring now decides whether the shutter is red. The old test compared the shutter’s width against the aperture’s diameter and nothing more, so it read the same clearance at every pointing — true of the door, silent about where the beam actually lands on it. The tool walks the ring itself now: every point on the aperture’s outer edge is tested against the opening’s angular width at that height, the ends of the shutter’s travel, and your local horizon.
It catches what the width alone could not. With a 20″ shutter and a 500 mm aperture the old figure said +8 mm, fits; the ring crosses an edge, and the shutter is now red. The opening also narrows toward the apex, so the comparison is made against its width at the beam’s own height rather than at the equator.
The ghost aperture is drawn as a dashed ring. It was a solid annulus, which reads as a piece of hardware — people were taking it for part of the telescope rather than for where the aperture lands on the dome shell. A broken line is the ordinary way of saying “this is a projection”. Sixteen dashes at just over half duty: enough to read as broken without dissolving into dots when the aperture is small on screen. Both the main and the second telescope use it. The roll-off tool gains the same ring, placed where the sightline crosses the wall top — the centre line can clear a wall while the lower edge of the aperture does not, and the axis alone never showed that. It uses eight coarser dashes, because it sits closer to the mount and draws smaller.
Fixed: the roll-off tool held the mount height twice. “Mount RA/Dec intersection height above floor” is the same measurement as pier height plus mount head height, and nothing kept the two in step. They also fed different consumers: the intersection height drove the obstruction arithmetic — sky coverage, the wall-height range, swing clearance — while pier plus head drove the drawing.
Raising the pier moved the picture and left every figure untouched. A 60″ pier against a 47″ intersection height put the two 838 mm apart, with no warning either way; the shipped defaults were already 11 mm out. They are now locked: edit the pier or the head and the intersection height follows, edit the intersection height and the pier absorbs it — the head height comes from the mount library, so it is not the one to move. Choosing a mount re-derives the stack.
This is the same fault the dome tool had between the dome centre and the wall springline, found by looking for it after that one was fixed.
Fixed: the dome centre and the wall springline could disagree. The tool asked for both — “height of dome center above floor” and “wall height, floor to springline” — but on a dome they are the same height: the shell springs from the wall top and the sphere’s centre sits there too. Nothing stopped a setup holding 59″ and 36″ at once, which describes a shell 610 mm inside its own wall.
The preview drew it without complaint, putting the mount 584 mm above where the offsets said it was, so the ghost aperture no longer met the telescope. The two fields are now locked: edit either and the other follows, and a setup saved with them out of step is reconciled to the wall height on load. The shipped defaults disagreed too — 38″ against 36″ — and now match.
No reported figure changes. The NINA offsets were correct throughout; it was the drawing that was out.
How tall should the walls be? The setup check now answers it as a range, because two limits pull opposite ways. The floor is your hardware: the walls must enclose the mount when parked, worked out by trying all five park positions and taking the tallest. The ceiling is your site: every inch above your terrain line takes sky nothing else was taking.
Anywhere between the two works, and the check says which side you are on — how much sky tall walls are costing, or that the roof will not close over low ones. When the two cross, it says so plainly: on a 60″ pier the mount needs 88″ of wall while the terrain allows only 68″, a gap of 20″ that no wall height satisfies. Better found before the footings go in.
The roof-fit check names the position. It reported headroom “in this position” without saying which, and the five parks differ by hundreds of millimetres. It now reads “31.0″ of headroom at AP park 3”, and points at whichever park stands tallest, since that is the one that decides whether the roof can close at all.
Known issue: Park 1 and Park 5 currently produce the same pose. Astro-Physics define them differently — Park 1 has the counterweight due east, Park 5 due west — and the tool reaches Park 5’s arrangement for both, so a mount sent to Park 1 is reported as being at Park 5. The pointing is right in each case and every other figure is unaffected; it is the counterweight direction that is not being set. Earlier checks missed this because the two parks share an altitude and azimuth.
Roof pitch can be given in degrees. Builders quote a roof either way and plans use both, so the tool now takes rise:run or an angle and keeps the two in step. Type 4:12 and it shows 18.4°; type 30° and it writes 6.93:12 — rise-over-twelve, the form drawings use, rather than solving against whatever run happened to be there and producing something like 0.577:1. A ratio you type by hand is left exactly as entered.
Fixed: the mount dimensions were always read as inches. The A/B/C/I/H boxes on the mount diagram kept an “in” label and their raw value through a switch to metric, and were then read as inches whatever the toggle said. Enter 140 mm for the pier flange to RA pivot and the tool understood 140 inches — a mount twenty-five times too tall, quietly wrong in every figure that followed.
They now convert with the toggle, relabel with it, and are read in whatever unit is on screen. Both calculators were affected.
Fixed: Save Setup did nothing in the roll-off-roof calculator. A variable holding the name of your horizon file was used but never declared, so the first assignment threw and took the whole save with it. The button appeared to work — no error, no file.
The fault dates from v8.00.003, when horizon filenames were added to saved setups. The dome tool declared the variable; the roll-off tool did not, and nothing since had caught it, because the two tools were only ever tested for whether a setup round-trips — and a round-trip test that saves through the same broken path fails silently in both directions.
The default site latitude is now 39°, a round figure rather than one that reads as somebody’s actual site. Enter your own before taking any numbers from the tool: latitude sets where the pole sits, so every altitude, the park positions and the whole sky-coverage figure depend on it.
The roof follows the building’s shape. On a custom footprint the roof panel was drawn as a plain rectangle regardless of the walls, so an angled corner left it floating clear of the building it is meant to cover. It is now cut to the footprint: a square plan gives a square panel, and swinging a wall to 50° stretches the panel with it, 7491 mm against the walls’ 7491 mm. It still slides and closes as before.
This is the flat-roof case. A peaked or wedge roof on a custom footprint is still drawn as a prism across the roll-off wall — correct in height and span, but not yet cut to an irregular plan.
Fixed: the custom wall shape was unusable. Three faults together made the default custom building 50.8 metres across instead of two.
The angle now keeps its degree symbol whatever the units, the distance follows the unit toggle, and the default is 2 m — 78.7″ in imperial, 1999 mm in metric.
Every build now carries a stamp. The version number says what changed; a four-character hash of the file’s own content says which build you have. Three separate builds had all called themselves v8.05.000 before this existed, so the number alone did not identify a file — if you downloaded twice you could have two different tools claiming the same version. The stamp changes whenever the file does, whether or not the version number moves with it, and it is generated at build time rather than typed.
The wall-type work — flat, raked and drop-down walls — has been set aside as a lab build rather than shipped. It calculates and draws correctly, but it changes the sky-coverage figures for anyone with a sloped-wall building, and it deserves more testing against real observatories before it lands.
The unit buttons say which system you are in. Both were grey, so the only way to tell metric from imperial was to read a value and infer it. The one in force is now amber like every other active control; the one you could switch to is yellow.
Reset to Defaults is green. It sat in amber beside Save and Load, reading as one more action in the same row when it is the one that discards everything. Green sets it apart, in both the dark and light themes.
Will the roof close over the mount? A new check answers the question the rest of the tool does not: with the roof rolled back on, does the mount clear it where you park it? Usable height above wall top is how far into the roof structure the mount may reach — zero by default, which is what a standard truss leaves, and rising to the whole roof rise if you have open rafters and a ridge beam. It is drawn in the 3D as a blue volume sitting on the wall top, following the roof so it tapers to nothing at the eaves rather than being a flat block that overstates the room under a sloped roof. All three shapes are handled: a flat roof offers at most its own thickness, a gable tapers to nothing at both eaves, and a wedge runs from nothing on the low side to full height on the high side.
The tool works out the roof’s rise above the wall from your span and pitch and shows it beside the field as a ceiling — anything entered above it is pulled back on the spot, so the figure on screen is always the figure in use. A flat roof accepts no more than its own thickness; switching roof shape re-checks what is already there. It deliberately does not try to calculate how high a tie beam may safely go: that depends on span, timber grade, connections and local loadings, and a plausible-looking guess would be worse than no number at all.
Close the roof on the pointing bar slides the roof on to show you. If the mount would foul it, the roof stops short and turns red rather than driving through. Clear the obstruction while it is stopped and it recovers its colour and completes the close on its own. Opening is animated the same way.
The usable space is drawn as a volume that follows the roof, not a flat block. On a gable it tapers to nothing at both eaves; on a wedge it runs from nothing on the low side to full height on the high; on a flat roof it is a thin slab of the roof’s own thickness. Where your structure runs out before the roof does, the top goes flat at that height instead.
Closing and opening are both animated. Close the roof slides it on over about a second and a half; if the mount would foul it, the roof stops short rather than driving through, and the button offers to reopen, which slides it back out at the same pace.
The contact page is back in the bundle, with a working form key, and the twenty-two Contact links across the site point at it again rather than at the email fallback that stood in while the page was pulled.
Fixed: the hour-angle field was six hours out. This is the most consequential error the tools have carried, because the required dome azimuth depends on it — every figure produced for a target away from the pole was for the wrong part of the sky. If you took NINA settings from an earlier version at a non-polar pointing, they are worth checking again.
The field is labelled 0 = on the meridian and the calculation added six hours to it. Against cases anyone can verify by hand:
| RA 0, Dec 0 celestial equator on the meridian |
reported altitude 0°, azimuth 270° — the western horizon | now altitude 49.8°, azimuth 180° — due south |
| RA 0, Dec = latitude the zenith |
reported 24.6° | now 90° |
Only declination 90 ever looked right, because hour angle does not matter at the pole — which is the opening pointing, and very likely why this survived so long. The roll-off-roof tool had the same fault with the opposite sign.
Astro-Physics park positions. Buttons for all five, taken from Astro-Physics’ own published sheet rather than from memory, and verified against their descriptions: scope level facing north with the shaft due east for Park 1, at the pole with the shaft down for Park 3, and so on. Parks 1, 4 and 5 depend on latitude, so they are computed rather than fixed. The pier side is not assumed either — the tool tries one, measures where the counterweight ends up, and takes the side matching the description, which sidesteps the East/West naming ambiguity between programs.
Southern declinations can be entered. The declination field started at 0, so no target south of the celestial equator could be set at all — at latitude 40 that is everything down to declination −49.8°, a good part of the observable sky. The arithmetic had always handled it; only the input blocked it.
The counterweight can no longer end up above the tube. At a given hour angle only one side of the pier is reachable; the other puts the mount through the pole with the weights in the air, which is not a pose a mount adopts. The side now follows the hour angle, and the change is animated over a second rather than snapping — sweeping the tube up and over rather than down past the pier.
A telescope that would strike the pier is reported. The existing check only ever watched the counterweight shaft. This one walks the whole moving assembly against the pier below the flange and says how far inside it reaches. That is a design fault — too long a tube, too wide a pier, too low a mount head — and finding it before the concrete is poured is the point of the tool, so it is reported rather than prevented.
The RA slider has a curved response. Linear, the whole meridian crossing was about three pixels wide: the region you most need to sit in was the hardest to land on, and a pixel of jitter carried the mount across it. The slider now holds a position mapped through a square curve — roughly a fifth of a degree per pixel at the meridian against 1.2 before, with the full travel unchanged.
The status banner names the limit that is actually binding. A pointing below your local horizon also fails the shutter test, because the telescope is aimed at the ground — and the shutter message was checked first, so the dome was blamed for a limit you had set. It now reads “below your local horizon (minimum observation altitude 15°)” with the aperture clearance still healthy.
The roll-off-roof sky plot takes the building’s shape. The outline is drawn in the wall colour and the sky the building blocks is subdued, so the observable region reads as the footprint rather than as a circle with a faint blob inside.
Measurement labels reworded. The four wall distances asked for the distance to the “mount center”, a point inside the casting that cannot be reached. Only the difference between opposite walls is used, so measuring to the near face of the pier gives an identical answer — the labels now say so. Mount head height genuinely does not cancel, and its note now points at the mount library rather than implying you should go and measure it.
The pier-strike check no longer disappears on the far side of a flip. On one pier side the counterweight often sits entirely above the pier top, where nothing can reach it. The check returned no reading for that, and the line simply vanished from the setup check — which looked like a failure rather than a result.
It now says so: “The counterweight stays above the pier top at this pointing, so nothing can reach it.” The swept volume also no longer treats a missing reading as a clash.
On the telescope appearing to turn over when you switch to west: that is correct, and it is what a real German equatorial does. Checked at declinations 90, 45 and 20 — the pointing is identical on both sides and matches the reported altitude and azimuth exactly, while the tube and counterweight swap sides of the pier and the tube rolls 180° about its own axis. That roll is the reason a meridian flip rotates your field of view and needs re-framing.
The dome azimuth differs between the two sides — 313° against 329° on the same target — which is the whole reason this tool exists: with the optical axis offset from the dome centre, where the shutter must sit depends on which side the telescope is on.
The NINA input fields are millimetres, always. Ticking I already have my NINA values in imperial mode asked for inches — while you were copying millimetres out of NINA. The card's own note has always said these figures ignore the unit toggle; the outputs did, the inputs did not.
All four now behave the same way: the three offsets and the GEM axis are entered in millimetres, labelled millimetres, and unaffected by the Metric/Imperial buttons. Type 500 and NINA gets 500, whatever the rest of the form is showing.
The mount library was overwriting them. Selecting a mount wrote its declination-axis figure into both the measured field and the NINA field, converting to whatever unit was on screen — so a loaded setup had its NINA GEM axis replaced by an inch value wearing a millimetre label. The measured field still follows the unit toggle, because it is something you go and measure; the NINA field does not.
A Contact link was added to both calculators' navigation. Every other page had one; these never did, which read as a broken link rather than a missing one.
No automatic conversion for older files. Before this release these four fields were not consistently one unit — the offsets were labelled millimetres while the GEM axis followed the toggle — so any blanket rule would corrupt half of them. Values load as written, and new files record which convention they use. If an old setup shows an implausible offset, the GEM axis is the one to check: multiply an inch figure by 25.4.
Four faults found by loading a real saved setup. A file from a working dome exposed problems that no synthetic test had: two of them lost data outright.
1. Entered NINA offsets were destroyed on load. Switching into direct-entry mode seeds those fields from the measured geometry so the setup does not jump — but loading a saved file also triggers that switch, so it overwrote the values it had just restored. Offsets of 500, 145 and −500 came back as 0, 0 and 9.6. The seeding now happens only when you switch modes.
2. The unit system was never saved. A setup written in millimetres reopened as inches, and every dimension was out by a factor of 25.4. Files now record it, and it is applied before the values — ordering matters, because switching units converts whatever is in the fields.
3. The NINA card's offset fields were mislabelled. They are held in whatever unit is on screen, but the card printed a fixed “mm” that the unit switcher could not see. In imperial mode the label said millimetres while the tool read inches — which is how the file in question came to hold its dome in inches and its offsets in millimetres at the same time. The labels now follow the toggle.
4. The mount-position check contradicted itself. It measured the offset from the wall distances, which mean nothing in direct-entry mode, so it reported “0.0″ off the dome centre” on the same line as “the shutter fails to clear across 24% of the observable sky”. It now reads the offsets actually in force: 20.5″, which agrees with the coverage figure beside it.
Also: switching into direct-entry mode now carries the lateral offset and azimuth tolerance across, which it had been leaving behind — a dual-saddle sideways offset silently became zero.
The resize handle is amber at rest and turns green while you drag it. It used to sit in the same grey as every other divider, so it had to be found before it could be used; amber makes it a control rather than a border.
Green while dragging gives the state its own colour, so you can see the handle is live without watching the numbers move. It brightens on hover and on keyboard focus, and returns to amber when you let go.
Verified through all four states on both tools: amber at rest, brighter amber on hover, green while held, amber again on release.
A clearer handle for resizing the 3D view. It was a plain horizontal line, which is a common enough divider but says nothing about what it does — not that it can be grabbed, and not which way it moves.
It is now a grip bar with a chevron above and below it: the bar reads as something to take hold of, the chevrons say up and down. Both parts turn amber on hover or keyboard focus, and the tooltip spells out the rest — drag up or down to resize, double-click to reset.
The target grew from 9 to 16 pixels tall while the drawn icon stays 14, so it is easier to hit without looking heavier.
The 3D view now holds a proportion of the window rather than taking whatever is left. The dome opens at 60% of the window height and the roll-off-roof tool at 56% — the framing each was designed around.
Previously the view was set to absorb the remainder, so its size depended entirely on how tall the results card happened to be. On an 1100 pixel window that left it at 44%, and it shrank further as the card grew. The figures below now take what is left and scroll, which is the right way round: the card can be any length without squeezing the model.
Holds its proportion from 900 to 1800 pixels, and the drag handle still overrides it — double-click returns to the default.
The roll-off-roof tool now opens with a taller 3D view — 56% of the window against the dome's 483 pixels. Its model is a wide, flat building rather than a hemisphere, and it reads better with the extra room.
Set as a proportion rather than a fixed height, so it holds at 56% whether the window is 900 or 1800 pixels tall: 504, 616, 784 and 1008 pixels respectively. The drag handle still overrides it, and your choice is still saved with the setup.
Getting there needed two corrections. Left to grow, the view stayed at its floor however tall the window became, because the results card was set to grow as well and took the surplus. Given a basis but allowed to shrink, it collapsed the other way at common window sizes. It now holds its share and the card yields, which is the right way round when the model is the thing you are reading.
The 3D view can be resized by dragging its bottom edge. How much room the model deserves against the figures below it depends on what you are doing, so it is now a choice rather than a fixed ratio.
Two faults surfaced building it. Setting a height on the view did nothing, because it is a flex item with shrinking enabled — the layout squeezed it back to whatever the column had spare, so dragging down made it smaller and then stuck. Pinning the flex basis is what makes a chosen height hold.
And the roll-off-roof tool had no resize handler on its 3D view at all. Its canvas had been fixed at whatever size the container was on first paint, so it stretched after any window resize and ignored the new handle entirely. The dome had one; this tool never did.
A saved setup now names the horizon file its profile came from. The profile data itself was already being saved and restored correctly — the trouble was telling. Loading a setup reported “8 points parsed”, which gives no clue that the horizon you measured is the one that came back.
It now reads: “Restored ‘my-horizon.hrz’ — 8 points from your saved setup”. The filename is remembered when you load a profile and carried in the saved file alongside it.
For the record, since it is easy to doubt: a custom horizon survives Save Setup and Load Setup on both tools, verified through the buttons themselves rather than in simulation — profile data, the custom/flat mode, and the interpolated horizon altitude all come back identical.
The 3D view is 15% taller — from 420 to 483 pixels, with its ceiling raised from 58 to 67 percent of the window. It now stands two and a half times the height of the sky-coverage plots below it, which is the balance this layout was meant to have.
Phones are unaffected: stacked, the view keeps its own 280 pixel height and the page still scrolls to the end on every device checked.
Also settled a naming inconsistency. That area had been called the 3D preview, the 3D window and the viewport in different places; it is the 3D view throughout.
Fixed: the page could not be scrolled on a phone. Below 900 pixels the layout stacked correctly, but html and body were pinned to 100% height with the stage set to shrink — so the document reported itself as one screen tall while holding nearly three screens of content. Everything past the first screen was simply unreachable, with no scrollbar to find it.
On a stacked layout the page itself now scrolls. Verified on iPhone 13, iPhone SE, Pixel 5, iPad Mini and Galaxy S9+: scrolls to the end, the foot of the card is reachable, tapping opens a step and typing recomputes.
The NINA card is two columns on a phone again, not one. Eight values stacked singly put half a screen of figures ahead of everything else; two columns brings the rail from 734 to 510 pixels and the 3D view to under one screen away.
Why the earlier testing missed it. The responsive checks resized the viewport but did not emulate a device, and they tested for horizontal overflow rather than vertical reachability. At desktop widths the right-hand column is the scrolling element, so the card was reachable; stacked, that column is no longer the scroller and nothing else was. Device profiles and an explicit scroll-to-the-end check are now part of the suite.
Both calculators rebuilt around a single screen. This is the first major version because it replaces the interface wholesale — the arithmetic, the mount library and every saved setup carry across untouched, but nothing is where it was.
What changed. The three-column page of expanding cards is gone. In its place:
The NINA card is now the first thing in the rail and stays open. Each value can be clicked for an explanation of what NINA does with it, and the five figures you can supply yourself — the three offsets, the dome radius and the GEM axis — become editable when you tick I already have my NINA values.
Saved setups still load. The calculation layer was not touched: it reaches the page through 251 lookups by name, and every name survived the rebuild. Verified by round-trip, 52 fields on the dome and 94 on the roll-off tool.
Responsive. Three shapes rather than one that stretches: side by side on a desktop, stacked on a tablet, a single column on a phone. Below 900 pixels the rail moves above the view; below 680 the controls, the reasoning and the sky text each drop to one column and the navigation wraps. Checked from 1440 down to 360 pixels on both tools — no horizontal scrolling and nothing pushed off the right edge at any width, and the whole thing is usable by touch.
Also in this release: a colour-coded key on the 3D view, larger and more legible text throughout the lower half, and a formulas panel explaining where each NINA figure comes from.
The previous layout remains available as v7.36.002 if you prefer it.
Fixed a formula that described a feature removed twenty-eight releases ago. The Formulas used panel still read “GEM Axis Length = raw measurement + 0.5 × guidescope offset (if used)”. The guide-scope correction was taken out in v7.08.000 as redundant with the mount's C dimension, but the note explaining how to calculate the value was never updated — so anyone following it was adding a correction the tool no longer wants.
It now reads: declination axis to the optical axis you image through (include your rings), which is what the field has actually meant since then.
Default telescope changed to 625 mm long, 106 mm aperture. Both tools previously started at 200 mm aperture — the dome at 450 mm long, the roll-off tool at 600 mm, which was an inconsistency in itself. The new figures describe a mid-size apo refractor, which is closer to what most people put on the mounts in the library.
The tube outer diameter is left at 0, so it is still estimated at 1.3× the aperture — 138 mm for this default. Enter a measured figure if your rings run wider.
The swept volume can now be shown in the 3D preview. Both mount models have carried the mesh all along and neither ever displayed it. Show swept volume in the preview controls turns it on, and the setting is saved with the rest of the setup.
The clearance figures describe this shape in words — “the tube sweeps a radius of 18.6″ and the tightest obstruction sits at 47.0″” — and seeing it sitting inside the dome, or against the walls, makes the number something you can check rather than take on trust.
It turns red when something fouls. With an 8″ pier the counterweight clears by 161 mm and the volume draws blue; widen the pier to 30″ and the clearance goes to −118 mm and the volume turns red, matching the pier-strike warning in the panel. The harmonic model could already recolour itself; the equatorial one could not, so that was added — the picture and the verdict should never disagree.
Save your own mounts, and a pier-strike check that was built but never called.
Your mounts. Measure a mount, tick Use my own values, and save it under a name. It joins the list in its own group at the top, survives closing the browser, and can be exported as a file to hand to someone else — or imported from one. Most manufacturers do not publish the axis geometry this tool needs, so the library will always be short of the mounts people own; this puts that within reach of anyone with a tape measure.
Pier strike. Both mount models could always work out whether the counterweight fouls the pier, and nothing ever asked them. The setup check now reports it: “The counterweight passes the pier with 4.1″ to spare”, or on a wide pier, “fouls the pier by 4.9″” with what to change. Under 6″ it says the margin is worth checking on the real thing. Harmonic mounts get the equivalent question about the back of the tube, which is what binds on those.
The check was broken, which is presumably why it was never wired in. It sampled the negative side of the declination axis, but this tool passes the axis length negative to match NINA's convention, which flips the counterweight to the other side. It had been measuring where the telescope is, finding nothing below the pier flange, and returning nothing at all — at every pointing, on every setup.
Comparison document rewritten, and removed from the download. It had become a stale to-do list: all four items it recommended — the aperture radius in wall limits, the L-500 axis height, the Pythagorean swept radius, and a mount preset library — were done some thirty releases ago, but the document still asked for them.
It now records what actually happened. Those four differences are marked closed, with what each turned out to cost. It adds the areas where the tools now go further — counterweight sweep, harmonic mounts, per-azimuth coverage, provenance per dimension — and, more usefully, what the comparison found in our own data: the Paramount figures were measuring the wrong quantity and were out by up to 2.75″, while the Astro-Physics offsets were confirmed correct against the manufacturer's own calculator.
It closes with why only two of five manufacturers checked publish the geometry these tools need, which is the reason the mount list is grouped by data quality.
It is no longer packaged in the site download. It is an internal analysis rather than a site page, and nothing on the site links to it.
A and B now visibly meet at the pivot on the mount diagram. They were already connected — A is offset to the side as a dimension line, with an extension line carrying its upper end across to the pivot, which is ordinary drafting practice. But that extension line was drawn one pixel wide at 55% opacity and simply disappeared against the dark background, leaving two arrows that looked like they floated apart.
The extension lines are now thicker and brighter, and the upper one runs to the pivot dot itself rather than stopping just past it. Checked pixel by pixel: an unbroken run from A's dimension line across to the pivot, no gaps.
Nothing measured has changed — A still spans pier flange to RA pivot, exactly as before. Only the connection is now visible.
Fixed: the version chip in the header was unstyled on every page at normal screen widths. Its styling rule had been written inside the 680 pixel mobile media query, so above that width it inherited nothing — default font, no padding, no alignment — and dropped to the far left edge on its own line whenever the navigation wrapped.
It only looked right on a phone, which is the one place it had been checked.
The base rule now sits at the top level where it belongs, with only the small-screen positioning override left in the media query. The chip also gained margin-left:auto, so it stays at the right of whatever line it lands on rather than jumping to the left edge when the navigation wraps — verified from 1200 down to 640 pixels.
Applied to all fourteen site pages. The calculators were unaffected; they carry their own header markup and never had the rule.
The dimension arrows on the mount diagram now span what they are supposed to measure. All three fell short, which made the drawing disagree with the definitions written beside it.
Endpoints were measured from the artwork rather than estimated: the saddle's topmost edge, the far end of the bar, and the two pivot positions were each located in the image, and every endpoint checked against what it lands on.
The contact page is no longer published. Its form needs a Web3Forms key that has never been set, so it accepted messages and quietly delivered them nowhere.
Dropping the file alone would have shipped nineteen broken links, so every Contact and Report a bug link across fifteen pages now opens an email to help@cygnuswave.io with a subject line already filled in. The site is the same size to a visitor; the difference is that messages arrive.
Verified against the bundle rather than the working folder: fifteen pages, no broken links, contact page absent.
If the key is ever set, the page can go back into the bundle and the links can point at it again.
Paramount names corrected, and the current generation added. Our entries were the pre-Series-6 mounts under names that no longer identify them, so someone with a mount bought recently would have selected figures describing a different machine.
| Paramount MEII | → Paramount ME II, as Software Bisque write it and as the drawing's title block reads |
| Paramount MX | → Paramount MX / MX+ — the drawing covers both |
| Paramount MYT | → Paramount MYT (classic) |
| Paramount ME | → Paramount ME (original) |
Paramount MYT, MX and ME Series 6 added under Needs measuring. Software Bisque's dimension drawings do not cover them, and Series 6 is not a relabelling — it changed the declination axis on the MX and the internal bearings on the MYT — so the earlier figures cannot be carried across. Naming them at least means an owner finds their mount and is told what to measure, rather than picking a similar name and getting the wrong geometry.
Thirty entries now: eleven with full dimensions, nineteen in the lower groups.
Manuals brought up to date. An audit of both manuals against every feature shipped found six gaps — the changelog was complete, the manuals were not.
Added to the roll-off-roof manual: counterweight reach, harmonic mounts, and how to read the grouped mount list. Added to the dome manual: how the dome wall blocks low pointings. Added to both: what a partial mount entry is and why it deliberately leaves figures alone, and that saved files carry a date and time.
Most of the gaps were in the roll-off-roof manual, because earlier edits were written against the dome manual's headings and silently did nothing when those headings did not exist in the other file. Also merged two sections that had both ended up titled “Swing Clearance”.
Both manuals now cover every feature checked, and the changelog has an entry for all 76 releases in this line with no gaps or duplicates.
Minimum observation altitude now defaults to 15° in both tools, with a note that most imaging avoids the thick air below about that, and that 0 applies no limit.
A default of 15° is safe to carry now in a way it was not two releases ago. The tool no longer describes it as an obstruction: when a pointing falls below it the message says plainly that it is your limit and the geometry itself clears, and the horizon note reports what your structure already blocks so you can see whether the figure adds anything. Previously the same default would have claimed terrain was in the way.
The two tools now read differently on their own defaults, correctly. The dome clears down to 15.2° and reports anything lower as your own limit. The roll-off roof blocks at 18.8° — but by its east wall at 30.7°, not by the 15° figure, and the note says so: “your 15° limit only bites in the more open directions.”
Fixed: the dome tool contradicted itself about its own wall. The solid wall below the springline blocks low pointings exactly as a roll-off roof's walls do, and the setup check has always said so — but the pointing check ignored it entirely.
With a 60″ wall the panel reported “the walls cut the sky off at 19.2° — they are the binding limit” while the banner called a pointing at 1.3° a valid one. Two parts of the same page, opposite answers, on a wall the field described as affecting only the preview.
The wall now feeds the pointing check, with the same aperture allowance used everywhere else — the whole beam has to clear, not just the centre ray. When it is the wall rather than terrain that stops you, the message says so: “Below 19.2° the solid wall beneath the springline is in the way — the shutter opening is not the limit here.”
The horizon note reports the wall's limit too, and whether your own minimum observation altitude adds anything on top.
Defaults are unaffected: at a 36″ wall with the optical axis at 47.6″, the wall top sits below the axis and takes no sky at all. This only changes results for domes whose walls rise above the mount — where it was previously reporting clear pointings that a wall was standing in front of.
The minimum observation altitude now shows what your structure already imposes, so you can see whether the figure you type does anything at all.
In the roll-off-roof tool it is derived from the building on every recompute, and it varies by direction rather than being one number — on the defaults, “your building already blocks from 0° to 33° depending on direction, averaging 25°”, with 0° where the roof rolls off and 33° at the south wall. The note then says what your own limit adds:
It tracks the building: raising the walls from 94″ to 150″ moves the range to 0–54°, averaging 43°.
The dome answers a different question honestly. It has no low-altitude limit of its own, because the model treats the shutter as reaching the horizon — so the note says exactly that, and points out this is the field to use if your shutter does not open that far. That is a real limit of the model, and better stated than left for someone to discover.
The note hides itself when a measured horizon profile is in use, since the question no longer applies.
The minimum observation altitude now defaults to 0, applying no limit. Both tools previously shipped with a figure in that field, and neither value was neutral: 20° or 10° asserts an obstruction all the way round your site, and paints reachable sky as blocked.
Zero is an assumption too — it supposes a clear horizon in every direction. But it is the assumption that reports only what your observatory does, which is what the tool is for. A pointing now turns red when the building blocks it, never because of a figure someone else chose.
The difference is visible immediately, and the two tools now say different things because they are different:
The horizon is now opt-in: enter a measured profile, or raise the limit if you would rather not observe close to the ground, and it starts applying. If you had set a limit deliberately, set it again — this only changes what the field starts at.
Fixed: a setting of your own was being reported as an obstruction. The field is called Minimum observation altitude — a preference about how low you are willing to observe. When a pointing fell below it, the warning said the view was “obstructed by terrain or buildings” and told you to check your horizon profile. There was nothing to check. Nothing was in the way.
The two cases now read differently. Below your own limit: “below your minimum observation altitude of 10°, not blocked by the dome — the geometry itself clears. That figure is a preference, not an obstruction.” Below a measured terrain profile, the wording about terrain stands, because then it is true.
The dome's default was also 20° where the roll-off-roof tool used 10° — the same setting, two different values. Twenty degrees is a defensible imaging habit but a strong claim to make on someone's behalf: it painted a wide band of perfectly reachable sky as blocked. Both now default to 10°.
On the reported case — a pointing at 15.2° altitude, which at latitude 39° is declination −35.8° on the meridian — the shutter now reads as clearing, because it does. (The original note gave this as RA 0, Dec 156; that was the hour-angle fault since corrected in v8.04.000, which put the field six hours out. The altitude, and the point being made, are unchanged.)
The field carries a note saying it is your own limit rather than an obstruction. If you had deliberately set 20°, set it again; the change only moves the default.
Saved files now carry the date and time they were saved. Every save used the same filename, so a second one landed as …setup(1).json and a folder of them told you nothing about which was which.
dome-geometry-setup_2026-07-28_1909.jsonror-observatory-setup_2026-07-28_1909.jsonror-horizon-profile_2026-07-28_1909.hrzYear first and the local clock rather than UTC: year-first so a folder sorts into chronological order by name, local so the stamp matches the time you were looking at when you saved.
Sky-Watcher HEQ5 Pro, EQ6-R Pro, AZ-EQ6-GT, EQ8-R Pro and CQ350 Pro added — named and recognised, but with no geometry. Sky-Watcher publish capacities, saddle types and shaft diameters, not axis dimensions. Selecting one changes nothing, and the card says so and tells you what to measure.
The mount list is now grouped by how much is actually known, because it had to be. With 27 entries, more mounts are named than dimensioned, and a flat list made a placeholder look identical to a fully specified mount:
A grouping bug caught in testing: the PlaneWave mounts are dimensioned by H rather than by A and B, so classifying on A alone filed three fully specified mounts under "needs measuring".
Worth saying plainly: twelve entries carry real geometry and fifteen do not, and that ratio will keep worsening, because only Astro-Physics and Software Bisque publish what this tool needs. Letting owners save and share a measured mount would fix that in a way more searching cannot.
The harmonic mount's card drawing now matches its 3D model. The diagram was a placeholder sketch drawn before the strain-wave model existed, in the wrong colours and the wrong shape — a card showing one machine beside a preview showing another.
It is now redrawn from the model itself: the dark azimuth base, the red body tilted to latitude, the RA housing running up the polar axis, the declination housing across it, and the saddle beyond — with no counterweight shaft, matching what the preview builds. A, B and C are marked in the same places as on the equatorial drawing, so the measurements still transfer.
Applies to both tools. Verified that the right drawing appears for each mount type and that the preview drops the counterweight entirely for a harmonic mount.
Harmonic mounts now use a purpose-built model rather than a German equatorial with its weights hidden. Selecting an AM5, AM5N or AM7 builds a strain-wave mount: compact tilted body, short declination housing, no counterweight shaft.
Three behaviours follow from the mechanism rather than from cosmetics:
The counterbalance bar has been dropped, as asked. The model is built with no counterweight, and the counterweight reach field is held at zero and locked whenever a harmonic mount is selected, rather than inviting a figure the mount does not carry.
Verified in a browser on both tools: the model reports itself as harmonic, its envelope as the tube alone, no flip required, and the counterweight field locked at zero. Selecting a conventional mount restores the GEM model and its shaft.
Harmonic mounts now have their own diagram and 3D model. A strain-wave mount is an equatorial, but it looks nothing like a fork-and-counterweight GEM, and drawing it as one was misleading about the thing that most distinguishes it.
New card diagram showing the compact tilted body, short declination housing and saddle, with no counterweight arm — A, B and C marked in the same places so the measurements transfer. It appears whenever a harmonic mount is selected and the equatorial drawing returns for everything else.
The 3D model now omits the counterweight when its reach is 0. This is data-driven rather than tied to the mount name, so it is right for anyone running bare, harmonic or not. Verified in a browser: the shaft, weights, locking knobs and safety stop all disappear.
Two bugs fixed getting there. The counterweight was not part of the structural rebuild signature, so changing its reach left the old shaft on screen until something else forced a rebuild. And the roll-off-roof tool was never passing the counterweight length to the model at all — its construction call is indented differently from the dome's, so an earlier edit had silently missed it.
ZWO AM5, AM5N and AM7 added to the mount list — named and described, but with no geometry filled in. ZWO's manual carries a Structural Dimensions section as a diagram rather than a table, so none of the three figures can be transcribed.
Selecting one of these deliberately changes nothing, and the card says exactly that rather than leaving you to wonder: it identifies the mount as harmonic, notes the 0–90° latitude range and dual equatorial / alt-azimuth operation, and tells you to measure A, B and C against the diagram and enter them under Use my own values.
One thing it does set: counterweight reach goes to 0, which is right for a harmonic mount run bare and is the case the swept-volume check gained in the previous release. If you do fit a bar, ZWO advise the weight 20–30 cm out, and the card says so.
Also tidied: an entry with no published optical-axis offset was showing the rings caveat that only makes sense when there is an offset to caveat.
The counterweight is now part of the swept-volume check. It never was. Reach was worked out from the telescope alone, so the shaft and weights — the part nearest the pier and the floor, and the part that in practice hits something — were invisible to every clearance figure.
On a short tube this matters. With a 600 mm tube on an AP3600, the telescope reaches 448 mm and the counterweight 787 mm: the tool was reporting a swept radius barely half the truth.
New input: counterweight reach, from the RA axis to the far end of the shaft. Selecting a mount seeds it from that mount's published shaft length — figures already in the library from the manufacturer sources but until now unused. Set it to 0 for a harmonic mount run without one, and the telescope governs again.
Whichever reaches further now sets the swept radius, in both tools, and the clearance line says which: “The counterweight sweeps a radius of 35.4″ — wider than the telescope — and the tightest obstruction, the floor, sits at 47.0″.” The 3D model draws the shaft to the same length.
This will tighten results for anyone using a counterweight. That is the correct direction — the previous figures were optimistic, and on a big mount with a small refractor they were optimistic by a wide margin.
Found while looking into harmonic mounts, which are commonly run with no counterweight at all — which is what prompted the question of whether the counterweight was being counted in the first place.
Selecting a 10 Micron mount now holds the site latitude at 45° and locks the field. Those mounts are only dimensioned at 45°, so this makes the sky figures and the mount geometry describe the same site instead of quietly disagreeing — a 45° mount paired with a 52° sky was the more misleading of the two states.
Because this changes every sky figure on the page, it is announced rather than done silently: the notice under the latitude field names the mount, states that the whole page now describes a 45° site, and — if your own latitude differs — says what it was.
It is fully reversible. Your latitude is remembered when the lock goes on and restored the moment you choose any other mount. Verified across both tools: 52.3° in, locked to 45°, back to 52.3° on switching away, and correct again after a second 10 Micron selection.
10 Micron GM2000, GM3000 and GM4000 added as fixed-latitude entries. 10 Micron publish their dimensions at 45° only, so these carry that figure and do not follow your site latitude — 13.86″, 16.69″ and 18.98″ respectively.
Because that is a real limitation rather than a footnote, the card says so every time one is selected, and works out what it costs you: within three degrees of 45° it reports the figure should be about right; beyond eight degrees the warning turns red and states the likely error — roughly 1.3″ at 33° or 60°.
Two things these presets deliberately do not do. They leave the optical-axis offset alone, because the declination-axis to saddle distance is not identifiable on 10 Micron's sheet. And the GM1000 is not included at all: the sheet does not carry that dimension for it, so there would be nothing to publish.
The About page's sources section records all of this.
Sources for the mount library are now documented on the About page, with links to the original manufacturer documents so anyone can check a figure rather than take our word for it.
Each maker is listed with what was taken from them and how solid it is: Astro-Physics' Latitude Dimension Calculator and 1150GTO manual, Software Bisque's dimension drawings and Series 6 documents, and the community workbook that supplied the rest. Where a figure is not manufacturer-published, it says so.
It also records the two mounts we could not add and why — the Astro-Physics 1150GTO, whose manual carries no dimensioned drawing, and the 10 Micron GM range, whose published sheet draws every mount at a single 45° latitude and so cannot give the two constants the tool needs.
Closes with the note that no manufacturer is affiliated with or has reviewed these tools, and that product names identify only which mount a set of dimensions describes.
Corrected: the Paramount declination-axis heights were wrong by up to 2.75″. Software Bisque's dimension drawings publish the declination-axis height at every latitude, and our figures did not reproduce them — the Paramount MX was out by 2.0″ at low latitude, the MEII by 2.75″.
The cause: the values we carried took A from the drawing's "bottom of base to shoulder bolt". That is where the polar axis pivots, not a term in the declination-axis height. The whole pair was measuring the wrong thing.
Both are now fitted to Software Bisque's published tables across their full latitude range. Every point is reproduced to within 0.2″ — sixteen points for the MEII and MX together, twenty more for the MYT.
Paramount MYT added, fitted the same way over twenty published points. Counterweight shafts filled in for all three from the Series 6 specifications.
One figure worth confirming. The MEII's declination-axis to optical-axis offset is still the previously carried 11.5″, but the drawing's analogous dimension — the one that matches exactly on the MX — reads 14.1″. Rather than change a clearance-critical number on a reading of a drawing, the entry is flagged for confirmation against the actual mount.
Every mount in Astro-Physics' dimension sheet is now in the library. Added the AP1200, 900GTO and Mach1GTO, joining the AP1100, AP1600 and AP3600 already present. Fifteen entries in total.
Their declination-axis offsets and counterweight shafts come straight from Astro-Physics: AP1200 8.5″ / 19.125″, 900GTO 7.0″ / 13.625″, Mach1GTO 6.75″ / 14.625″. Every figure was cross-checked against the sheet's own centimetre column, which is what confirms the columns were read in the right order.
These three are partial entries, and say so. Astro-Physics publishes their declination-axis height only as a latitude-dependent figure, which a single reading cannot separate into the two constants this tool needs. Rather than invent a value, selecting one of these mounts fills in what is known and leaves the mount head height exactly as it was, with a note explaining why and how to obtain it — read dimension G at two latitudes and solve for A and B.
A preset that quietly supplied a made-up declination-axis height would be worse than one that admits the gap, since every clearance figure downstream depends on it.
Mount library figures checked against Astro-Physics' own dimension calculator. Their spreadsheet publishes dimension O, "centre of RA axis to Dec mounting surface", which is exactly our dimension C. All three Astro-Physics entries match to the last decimal: AP1100 6.75″, AP1600 9.3125″, AP3600 11.3125″. That is the first independent confirmation the library has had.
Counterweight shaft lengths added from the same source — 13.5625″, 19.125″ and 31″ respectively, previously blank.
Provenance is now recorded per dimension rather than per entry, because it differs. C and I are manufacturer-verified. A and B are not: they do not reproduce Astro-Physics' published declination-axis heights under any single latitude, so they follow some other reference and should be treated as estimates. The file records how to derive them properly — read dimension G at two latitudes and solve the pair of equations.
One caveat carried into the notes: C is measured to the mounting surface, so rings raise the optical axis above it and C should be increased accordingly.
Fixed: with two telescopes, the second was drawn using the first one's dew shield, tube offset and ring diameter. The function that builds a tube read those three figures from the shared settings rather than being told which tube it was drawing, so both tubes got the first one's.
On a smaller second instrument the effect was severe: a 200 mm aperture with 400 mm rings alongside an 80 mm guide scope gave the guide scope rings of the same 400 mm — five times the radius of the tube carrying them — plus a duplicate of the first tube's dew shield. Four oversized discs and two shields overlapping, which is what the cluster in the 3D view was.
Each tube is now drawn from its own figures. Verified in a browser: a 200 mm tube with 400 mm rings and a 250 mm shield now sits beside an 80 mm tube with 120 mm rings and no shield, exactly as entered.
Bug sweep across both calculators. Every input was exercised in turn to see whether it changed anything, and the page structure checked for duplicate identifiers, references to elements that do not exist, and gaps between what the interface offers and what is saved. Four faults found and fixed.
Everything else flagged proved to be correct behaviour: fields belonging to modes that were switched off, and hour angle having no effect at declination 90°, which is the pole and where it genuinely does not.
Fixed, properly this time: the dome calculator never passed the dew shield, tube offset or ring diameter when constructing the mount. The previous release declared them inside the mount library but did not supply them at the point the dome builds it, so they arrived as zero — no rings, no shield, no offset, whatever was typed. The roll-off-roof tool was unaffected; its construction call already carried them.
Verified in a real browser this time rather than a headless stand-in, with three.js served locally so the page runs as published. With a 440 mm ring diameter, 250 mm dew shield and 120 mm offset entered, both tools now report those exact values in the model and draw two rings and a shield — before and after a structural rebuild.
Fixed: the tube rings never appeared, and the dew shield and OTA offset were being dropped too. The mount library's parameter list declared neither dewShield, otaOffset nor otaOuterDia. All three were passed in and used, but only survived because the optics-only update path copies whatever it is given. Any structural change — pier height, pier diameter, mount head, declination axis — rebuilt the mount from the declared list and silently discarded them.
The rings never showed at all, because they are sized purely from the outer diameter and so collapsed to zero on every build. The dew shield and offset were more insidious: they appeared, then vanished the moment an unrelated dimension was touched.
All three are now declared. Verified through a first build, an optics-only update, and two structural rebuilds — rings, dew shield and offset present and correct at every stage.
The earlier test missed this because it only ever changed optical fields, which is the one path where the bug does not bite.
The 3D model now draws the tube rings at the diameter the clearance checks use. Previously the rings were decorative — a fixed 1.14× the tube radius, drawn only at high detail. Entering a 440 mm outer diameter changed every clearance figure while the picture went on showing a slim tube.
They are now sized from the figure actually in force, and drawn at both detail levels because they carry information rather than decoration. With the field left at 0 they are drawn at the estimated 1.3× aperture, so the picture still shows the envelope the numbers are using — and if that looks wrong for your tube, that is the prompt to measure it.
Verified across four diameters: rings drawn at 130, 105, 150 and 220 mm radius, matching the clearance maths in every case.
Tube rings are now accounted for in both tools, and named as such. Clearance is set by the widest thing on the tube, which is usually the rings and dovetail rather than the tube itself.
Fixed: the dome had no outer-diameter field for the first telescope. It had gained one for OTA 2 but not OTA 1, and was using a fixed estimate of 1.3× the aperture instead — so a measured figure could not be entered for the main instrument. The field now exists and feeds the dome-fit and pier verdicts: on a 200 mm aperture, entering a 400 mm ring diameter takes clearance to the shell from 19″ to 17″.
Preset declination-axis figures now say what they exclude. Dimension C in the mount library is the saddle-to-optical-axis distance for the bare mount. Your rings raise the tube above the saddle, adding to it. The card now says so, because a preset silently understating C would understate every clearance downstream.
Also fixed a duplicated entry in the roll-off-roof save list.
Rolled back the directory split and the Content-Security-Policy work. Every file sits in one folder again, and the calculators keep their versioned filenames. Removed: _headers, build-csp-headers.py, bump-version.py, and the public/ and build/ tree.
The hash-based policy required regenerating a header file after every edit, and a stale hash meant a blank page. For a site maintained by hand that is a fair amount of ceremony for the protection it bought, given there is no login, no stored data and nothing to steal.
Two changes from that work were kept, because they cost nothing to carry and reverting them would make the code worse: external links keep rel="noopener noreferrer", and the ten former onclick attributes stay bound with addEventListener.
Site split into published and build directories. Deploy public/ and nothing else; build/ holds tooling and internal documents. The CSP build script had been publishing itself alongside the site, which exposed internals for no benefit. Downloads moved into public/assets/. Every page kept its existing URL — grouping the pages into folders would read tidier but would break every link and bookmark for a sixteen-page site.
Fixed: the changelog had lost its own history. Bumping the version by replacing the old string across every file also rewrote the version labels of past entries, because in this file those numbers are content rather than markup. Fifty entries had been relabelled with the current version, erasing the entire v7 record. They have been restored from the shipping order.
New: bump-version.py, so that cannot recur. It updates the version chip on every page but touches only the "Current" marker in the changelog, leaving historical entries alone.
Roll-off-roof manual brought up to date with the setup check, swing clearance, how to read the sky coverage breakdown, and the second telescope's own diameter and offset.
Inline script is no longer allowed by the security policy. The previous review said splitting the JavaScript into separate files was the only way to drop 'unsafe-inline'. That was wrong: a policy can name the SHA-256 of each inline block instead, which works on static hosting and keeps each calculator as one self-contained file.
The browser now runs an inline block only if its hash matches the policy. An injected <script> is refused, because an attacker cannot make their code hash to a value already published in the header.
Inline event handlers removed. Ten onclick attributes across the two calculators could not be covered by a hash and would have forced the policy back open. They are now bound with addEventListener.
New: build-csp-headers.py. Hashes are only valid for the exact bytes they were taken from, so editing a page invalidates its hash and the page stops running until it is regenerated. The script rebuilds _headers from the current files and must be run before publishing after any edit. It refuses to write a partial result.
Verified by serving each page under its real policy in a browser: zero violations across six pages, both calculators initialising normally. A control run with the policy disabled produced identical results, confirming nothing was being silently blocked.
Style attributes still allow inline, deliberately — they are used throughout the markup and style injection cannot execute code.
Fixed: a stray escape sequence was showing as text. The note on the NINA panel read “NINA\u2019s fields are mm” — a unicode escape that means an apostrophe in JavaScript but is only ever literal text in HTML. It now uses a proper HTML entity. Every shipped page was re-checked; no others.
Removed 140 superseded calculator builds and 12 duplicate site pages from the published folder, freeing about 16 MB. All were confirmed unreferenced by any live page and absent from the release bundle before deletion. Among them were the older builds that loaded three.js without an integrity hash, noted in the previous security review — so that exposure is now gone rather than merely unshipped.
Security review against the OWASP Top 10, and two fixes.
Fixed: external links could hand the opener window to the destination. Every target="_blank" link across the site now carries rel="noopener noreferrer". Without it an opened page can redirect the tab it came from, which is the classic reverse-tabnabbing route. Nine files updated; none left unprotected.
Added: a _headers file setting Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy and Permissions-Policy. Cloudflare Pages and Netlify read it from the site root; Apache or nginx need the same directives in server config.
Checked and clean: no eval, new Function, document.write or insertAdjacentHTML anywhere; loaded setup and horizon files reach the page only through value and textContent, never innerHTML, so a crafted file cannot inject script; loading is gated by a fixed list of field names, which also closes prototype pollution; three.js is pinned with a subresource-integrity hash; no mixed content.
Two limitations worth stating rather than burying. The policy has to allow 'unsafe-inline' for scripts, because each calculator is deliberately one self-contained HTML file — so CSP will not stop injected script, and only splitting the JS out would change that. And the contact form's Web3Forms key is still the placeholder, so it cannot send.
The dome is now described by its diameter, with the radius shown back to you. Diameter is what a manufacturer quotes and what you can actually measure rim to rim, so it is what the tool asks for. The radius it works from is displayed directly beneath, in whichever units you are using.
This replaces the old arrangement of a radius field plus a tick box saying the number was really a diameter — two inputs describing one measurement, with a halving that happened out of sight. There is now a single field and a visible derivation.
Setups saved by earlier versions still load. A stored radius is doubled, unless the old "that was a diameter" flag was set, in which case it is taken as-is. Both routes were checked and land on the same geometry.
OTA 2 now sits second and has its own outer diameter and offset. The dual saddle block was listed above OTA 1 in the roll-off-roof tool, so the second tube was described before the first. OTA 1 is now stated in full — length, aperture, outer diameter, dew shield, offset — then the dual saddle toggle, then OTA 2 with the same figures.
Each tube is now measured on its own geometry. The swept radius previously combined the longest length with the widest aperture, which could come from different tubes and described neither. It now works out each tube's reach separately and takes the larger:
| OTA 1 alone | 448 mm |
| plus a shorter OTA 2 | 569 mm — OTA 1 still governs |
| OTA 2 lengthened to 1400 mm | 826 mm — OTA 2 now governs |
| plus its own diameter and offset | 1056 mm |
A guide scope or wide-field refractor riding beside the main instrument can easily be the tube that reaches furthest, and it now says so.
Fixed: the dew shield and OTA offset were drawn but not fully counted. When they were added, only the roll-off-roof swing radius was wired to use them. Three other places still worked from the bare tube length:
All four paths now share one definition: half the total assembly, plus the offset, against the tube's outer radius. A 400 mm shield moves the roll-off-roof swept radius from 448 mm to 601 mm, and a 150 mm offset takes it further to 643 mm.
Clearance results change if you use either field. They were previously understated, which is the wrong direction for a collision check.
Fixed: pier height, pier diameter and mount head height were sitting in the Optical System card (roll-off-roof tool). They describe the mount structure, not the optics, and have moved to Optical Axis & Mount alongside the GEM axis, where the rest of the mount geometry lives.
Nothing else changed — the fields drive the model exactly as before, verified at 24″, 35″ and 48″. Optical System now holds only optical figures: tube length, aperture, outer diameter, dew shield, OTA offset and the dual saddle.
They had been in the wrong card since the Optical System card was first assembled, which is long enough that it is worth checking any mental map of where things live.
New OTA offset input in the Optical System card of both tools: how far the centre of the whole assembly — tube plus dew shield — sits from the declination axis, measured along the tube. Zero means balanced on the axis; positive slides it toward the aperture. The 3D model shifts to match.
It replaces a guess in the swing calculation. The swept reach along the tube was previously derived from a fixed 0.44 back-focus fraction, standing in for exactly this measurement. It is now half the total length plus your entered offset, so the figure comes from what you measured rather than an assumption about where a typical tube balances.
This changes swing clearance results. With the offset left at 0 the reach is now half the total length, where the old fraction assumed 0.56 of it — so a balanced tube reports a slightly smaller swept radius than before, and correctly so. If your tube is not balanced on the declination axis, measure the offset and enter it; that case was previously understated in one direction and overstated in the other.
New dew shield input in the Optical System card of both tools. Enter its length and it is added to the tube, drawn ahead of the body in a lighter tone so the length it contributes is visible rather than blending in.
It counts as tube, not decoration. A 350 mm shield on a 450 mm tube gives an 800 mm total, and on the roll-off-roof tool that carries into swing clearance — the swept radius goes from 473 mm to 604 mm with a 300 mm shield. A shield is the part most likely to foul a wall or a shutter edge, so leaving it out of the reach would have understated exactly the case that matters.
The aperture ring and pointing ray now start from the front of the shield rather than the bare tube. Set it to 0 and nothing is drawn or added.
Save Setup and Load Setup now use the accent colour and a bolder weight in both tools, so they stand out from the neighbouring preset buttons rather than reading as more of the same. Styling only.
Fixed: NINA values were shown in inches when the tool was set to imperial. The Options → Dome readout followed the display unit toggle, so an imperial user saw scope position, dome radius, GEM axis and lateral axis as fractional inches — and Copy NINA Settings put those same strings on the clipboard.
NINA's fields are millimetres. Pasting 1′ 2″ into a field expecting 355.5 is not a rounding difference; it is the wrong number, and the tool's whole purpose is producing values you paste in unaltered.
Those outputs now ignore the unit toggle and are always millimetres, in the panel and on the clipboard. A note on the panel says so, since an imperial user would otherwise reasonably expect inches. The measurement inputs are unchanged and still follow your chosen units.
The roll-off-roof tool is unaffected — its only export is the horizon file, which is in degrees.
Removed auto-flip at the meridian from both tools. Pier side is now simply what the dropdown says, and the dropdown is never disabled.
Auto-flip guessed a pointing state — East while approaching the meridian, West once past — and then locked the control so you could not disagree with it. Real mounts flip on their own rules: a configurable limit past the meridian, sometimes not at all for a short target. Guessing that and then removing the manual choice was worse than leaving the choice with you, particularly for a tool whose purpose is checking clearance on both sides.
Sky coverage is unaffected — it has always swept the two pier sides side by side, which is the better way to see a flip's consequences.
If you had it enabled, pier side now stays wherever the dropdown is rather than following hour angle. Set it explicitly for the side you want to check.
Removed the guide-scope correction from both tools — the tick box, the OTA-to-guidescope distance field, and the half-separation it added to the mount axis.
It has been made redundant by the Mount System card. That card asks for dimension C directly, the distance from the declination axis to the optical axis, which is the figure the correction was approximating. Keeping both meant two inputs quietly adding into one number, with no way to see which contributed what.
This changes results for anyone who had it enabled. The mount axis loses whatever the correction was adding — half the separation you entered. If you were using it, put that offset into the mount dimensions instead: measure C to the optical axis you actually image through, or tick Use my own values and enter it.
Saved setups from earlier versions still load; the stored guide-scope keys are simply ignored.
Mount dimensions now unlock with a “Use my own values” tick box, replacing the always-editable behaviour of v7.14.000.
Unticked, the boxes show the selected mount's published figures, read-only, and say so. Ticked, they unlock and feed the model directly — and the selector keeps naming the mount you started from rather than silently switching to Measure my own the moment you touch a figure.
The gain is that the change is now reversible. Unticking restores the published figures, so trying a measurement against a library mount costs nothing. It also means a stray keystroke can no longer redefine a mount without you having asked for it.
The tick box and your entered dimensions are saved with the rest of the setup.
Mount dimensions are editable for every mount, not just your own. A preset is a starting point rather than a lock: pick whichever library mount is closest to yours and adjust A, B, C or I from there. Edits feed the model immediately, including the latitude relationship.
Changing any figure switches the selector to Measure my own and notes what it started from — “Edited from Astro-Physics AP1600. These are your figures now.” The numbers are kept; only the label changes. The card should never name a manufacturer's mount while showing geometry that is no longer theirs, which matters both for trusting the tool and for not misrepresenting anyone's product.
Reselecting a library mount restores its published figures.
The roll-off-roof tool now explains itself too — a setup check under the status banner and a coverage explanation beneath the sky plot, matching the dome tool.
New: a swing clearance check that answers whether the mount will hit anything. It compares the radius the tube sweeps against the tightest obstruction — nearest wall, floor, or the roof when parked — names which one is tightest, and reports the margin. Under 6″ it says so is worth measuring on site. If the tube would strike, it says which obstruction, by how much, and what to change: “The tube would strike the floor. It sweeps 56.5″ but only 47.0″ is available — short by 9.5″.”
The other three lines cover the pointing model, what the walls cost against what your terrain already blocks, and how far off centre the mount sits.
Coverage explanation attributes losses wall by wall. The sweep now records which structure blocked each point, so instead of a single figure you get the breakdown — for example 8% to the N wall, 8% to the S wall, 7% to the E wall, each with the compass sectors and altitudes affected. It closes with the trade-off worth knowing: raising the mount lifts every limit at once, whereas lowering a wall only helps on that side.
The sky coverage sweep now explains itself. Beneath the plots, a short account of why the coverage looks the way it does — not just where the shutter clears, but what is taking the rest and what would give it back.
It separates the three things that cost you sky, because they have different remedies:
The shutter case distinguishes two very different problems. If the aperture is wider than the slit, it says so and states by how much — no pointing can ever clear and only a wider slit helps. If the slit is the wider of the two, the losses are geometric: the aperture is swinging too far off the dome centre line, and moving the mount toward the centre is what buys it back.
Every figure comes from the same sweep the plots are drawn from, so the words and the picture cannot disagree.
New setup check under the status banner (dome calculator). Rather than a bare pass or fail, it answers the four questions a builder actually has to settle before pouring concrete, and says why in each case:
Each line reuses a figure the tool already computes rather than deriving its own, so the summary cannot disagree with the detail. The heading reflects the worst of the four.
Minor release: new capability, no change to any existing calculation.
The dome calculator now tells you whether your pier is the right height. The Mount System card carries a verdict that updates as you type.
The target is the one the classic pier-height worksheets solve for: the declination axis level with the dome's centre height, so the volume the tube sweeps sits concentric with the hemisphere. That is the condition needing the smallest dome. The verdict reports how far off you are, which way, the pier height that would centre it, and what the miss costs in dome radius — for example a pier 14.6″ too tall needs about 30″ of radius where 15.5″ would do.
It also answers the blunter question. If the optics cannot fit the dome at all, it says so, gives the radius they need against the radius you have, and says whether centring the pier would rescue it. Otherwise it reports the clearance to the shell at full sweep.
The verdict follows the selected mount, so choosing an L-500 — whose altitude axis sits 42.7″ above the pier flange — immediately shows how much shorter its pier needs to be.
Minor release: new capability, no change to any existing calculation.
New Horizon Guide page, linked from the Local Horizon card in both tools and from the site navigation. It covers the file format, how to measure a skyline properly, and the mistakes that quietly cost you sky — magnetic north instead of true north, measuring from the ground rather than the optical axis, too few points across a sharp edge, and describing your own walls twice.
Sample horizon file published alongside it, downloadable from the guide and from the horizon card. The guide plots that file the way the calculators read it, so you can see how 29 measured points become a skyline — including a ridge reaching 53.2° near azimuth 310°.
Mount diagram replaced with the cleaner drawing, including the celestial-pole line. A, B, C and I are overlaid as vector, each anchor checked against the artwork: A from the pier top to the RA pivot, B up the polar axis to the declination axis, C to the saddle, I out to the counterweight.
Minor release under the versioning scheme — a new page and a new download are new capability, not a fix.
Mount System diagram replaced with a rendered mount. The card now shows a three-quarter view of a German equatorial — cream RA and declination housings tilted to the pole, black saddle, chrome counterweight shaft, on a black pier — with the A, B, C and I dimensions drawn over it.
The backdrop was keyed out so it sits on the card rather than in a white box, and the labels are a vector overlay, so they stay sharp and correctly placed at any width. Each anchor was checked against the underlying image: A spans the pier top to the RA pivot, B runs up the polar axis to the declination axis, C reaches the saddle, and I runs out to the counterweight.
The alt/az diagram is unchanged. Patch release under the new scheme — artwork only, no behaviour or calculation change.
First release under the new versioning scheme, and a minor bump to mark the Mount System work as the feature it is.
Versions 7.00.024 through 7.14.000 delivered the mount library, the labelled measurement diagram, the OTA outer-diameter input and the Generic / Measure-my-own split — four feature releases numbered as patches. Rather than renumber shipped builds and break existing links, that work is gathered under this minor release and the scheme applies from here.
No functional change from v7.14.000.
Mount diagram redrawn to resemble a real German equatorial — red RA and declination housings tilted to the site latitude, black saddle and dovetail, chrome counterweight shaft and weight, on a black azimuth plate and pier. The A, B, C and I dimensions are marked on it.
Generic and Measure-my-own are now separate options. Generic equatorial carries a plausible mid-size geometry (A 5.5″, B 11″, C 8″, I 20″) so the tool works sensibly out of the box without claiming to be anyone's particular mount. Measure my own is the entry you pick to type your own figures.
Dimensions are shown for every mount, not just your own. Selecting any equatorial fills the A/B/C/I boxes with that mount's geometry so it can be read against the diagram. They are read-only for library entries and become editable only under Measure my own, where they drive the model directly — including the latitude relationship, so A 7″ with B 13″ gives a 15.18″ declination-axis height at latitude 39°, or 15.39″ at 40.2°.
Mount System now shows how the measurements are taken, and lets you enter your own. A labelled diagram sits in the card and switches with the mount type — an equatorial view showing the pier, polar axis, declination axis, tube and counterweight, and an alt/az view showing the base, altitude axis and tube.
Dimensions are lettered on the diagram and correspond exactly to the fields:
Choosing Generic / measure my own reveals boxes for those dimensions. They feed the same model the presets use, so a measured mount and a library mount are handled identically — including the latitude relationship, where the declination-axis height is A + B × sin(latitude) because B runs along the polar axis. A box left at 0 changes nothing, so you can supply only what you have measured.
Two corrections from the Pier-Height workbook comparison, both in the roll-off-roof tool.
Wall and roof limits now clear the whole beam. The limit was measured to the optical axis alone, but the bottom edge of the light cone reaches a wall top first. The aperture radius is now included, which raises the reported limit — on a 144″ square building with 84″ walls and the pivot at 48″, a 200 mm aperture moves the northern limit from 26.57° to 29.02°, and a 610 mm aperture to 33.69°. This makes the tool stricter, not looser.
Swept radius is now the hypotenuse, not a sum. Reach splits into two perpendicular parts — along the optical axis and across it — and adding them linearly overstated the swept volume. The equatorial branch also used the full tube length where the tube pivots near its balance point, so two errors were stacked. Corrected, the swept radius falls by roughly half.
New input: OTA outer diameter. Swing clearance is set by the tube body, not the light path. Using the aperture alone would have made the corrected formula too permissive, so the tube's physical diameter is now its own field. Left at 0 it is estimated at 1.3× the aperture, about right for a CDK once rings and dovetail are counted.
Against the workbook's own CDK 17 on AP1100 example, our swept radius now lands within about 14% of theirs, down from a linear-sum figure that was far larger. The remaining difference is a dovetail and saddle allowance the workbook adds on top of the tube radius; its definition is not documented there, so it is not modelled here. Anyone building to tight clearance should measure from their own saddle.
New Mount System card in both tools, sitting below Optical System. Pick your mount and its geometry fills in; leave it on Generic and nothing is touched. Ten entries: seven German equatorials (Astro-Physics A200, AP1100, AP1600, AP3600; Paramount ME, MEII, MX) and three PlaneWave direct drives (L-350, L-500, L-600).
Latitude-aware equatorial geometry. A GEM's declination axis sits at A + B × sin(latitude) above the pier flange, because dimension B runs along the polar axis. Presets therefore re-apply themselves whenever the site latitude changes, rather than going stale. An AP1600 head height moves from 10.90″ at 20° to 18.71″ at 60°.
Resolves the L-500 discrepancy. Selecting the L-500 now sets its altitude-axis height to 42.706″ (1084.7 mm), against the 820 mm previously hard-coded in the 3D model from photograph-derived estimates. Selecting a preset also switches the mount type to match.
Every field a preset writes stays editable — it is a starting point, not a lock. Entries whose sources disagree carry an on-screen caution to measure your own mount before building to tight clearances. The figures are community measurements rather than manufacturer specifications, and no manufacturer is affiliated with or endorses this tool.
Fixed: the mount height field did nothing (roll-off-roof tool). "Mount RA/Dec intersection height above floor" was never read. The height actually used came from the hidden multi-telescope card and stayed at its 47″ default, so every horizon angle ignored the value typed in. This is the single most important input in a roll-off-roof calculation — every wall clearance angle is measured from that point.
Found while comparing our model against the published assumptions of the telescopepiers.com roll-off-roof calculator, which uses the same reference point. With the field now live, our cardinal horizon angles match the textbook formula exactly:
| pivot 36″ | 33.69° |
| pivot 48″ | 26.57° |
| pivot 60″ | 18.43° |
| pivot 72″ | 9.46° |
Measured on a 144″ square building with 84″ walls and the mount centred, against atan((wall − pivot) / distance). Third dead input of this kind, after the north/south and east/west offset fields fixed in v7.00.009.
Fixed: the ray marker sat off-centre in the aperture circle. Introduced by the previous release. Lifting the aperture ring clear of the dome shell moved the ring but left the hit marker behind on the shell, so the dot no longer appeared in the middle of the circle — a gap of about 0.05 scene units at every pointing.
The marker now follows the ring to the same point. Measured gap is 0.0000 across all pointings tested, single and dual saddle, and both rings still clear the shell completely.
Fixed: the aperture footprint drew as a semi-circle. The footprint is a flat ring placed on the curved dome shell, so roughly half of it fell inside the dome and was hidden, leaving a visible arc rather than a circle. Measured at the reported pointing the ring spanned 1.557 to 1.653 against a shell at 1.600 — straddling the surface almost exactly in half.
The ring is now lifted along the dome radius by just enough for its innermost point to clear the shell, so the whole circle shows. Verified across 25 pointings and both rings in dual saddle: no part of any ring falls inside the dome. The ring's size, orientation and position on the shell are unchanged, so it still marks the same footprint.
Corrected the horizon warning wording. It read "Pointing was pulled up to your local horizon", describing behaviour removed in v7.00.004. Since then the pointing has not been altered — obstructed positions are reported and left alone — so the message was telling you the tool had moved something it had not touched. It now states plainly that the pointing sits below the local horizon and has not been changed, and suggests checking the horizon profile if you expected it to be clear. The declination warning had the same problem and was reworded to match.
Fixed: the telescope was drawn in the wrong place, so its axis missed the aperture circle on the shutter. Reported with a real setup — N/S 500, E/W 145, Up/Down −500, GEM axis 500, dome radius 1087 — where the drawn tube missed the circle by about 870 mm, roughly 80% of the dome radius. Three separate faults, none visible at the centred defaults:
The gap is now a constant 39–46 mm regardless of the offsets — about 4% of that dome's radius — where before it grew with every one of them. The dome azimuth and clearance results were never affected: the ghost circle and hit marker always agreed with each other, and the reported pointing was correct throughout. Only the drawn mount was misplaced.
Switching between measured and direct NINA entry no longer changes the setup (dome calculator). Two faults appeared on that switch:
The computed offsets are identical either side of the switch, so the dome azimuth and clearance results no longer depend on which entry mode you happen to be in.
Switching pointing mode now keeps the telescope where it was. Changing between Hour Angle + Dec and Alt/Az swapped which fields were visible but never carried the pointing across, so the target fields kept their own defaults. A parked telescope aimed north would swing to due south the moment the mode changed.
The current pointing is now converted into the destination fields on the switch, sliders included. A parked mount holds its aim through the change and back again with 0.00° shift, in both tools and for both mount types.
Values are clamped to each field's range on the way across, so a pointing that cannot be expressed in the destination mode — an hour angle outside the RA axis travel, for example — lands at the nearest reachable value rather than being written out of range. The local horizon limit still applies, so an aim below it is raised as before.
Fixed: switching to Alt/Az pointing decoupled the telescope from the shutter. In Alt/Az pointing mode the dome and the clearance checks correctly followed the altitude/azimuth target, but the 3D telescope kept reading the RA field — which is not updated in that mode. The tube sat frozen at its parked position while the shutter tracked the target, drifting up to 120° apart in azimuth.
The 3D model now derives its pointing from whichever mode is active, through a single shared conversion, so the telescope, the shutter and the numbers cannot diverge. Verified across both tools and both mount types: 0.000° against the pointing actually in force.
Note that the altitude field is still constrained by the local horizon — asking for 15° where the terrain or the minimum-altitude setting is higher will raise it, and the telescope follows the adjusted value rather than the requested one.
Fixed: the aperture outline did not line up with the pointing ray (dome calculator). The ghosted aperture circles sat off to one side of the ray drawn from the telescope, most visible with dual saddle where both circles were displaced together.
The cause was a sign difference: the 3D mount placed the tube on the opposite side of the declination axis from the dome maths ported from NINA. The two lines stayed parallel — pointing was never wrong — but they were separated by twice the GEM axis length, which is why the gap grew as that value increased. The model has been brought into line with the calculation:
| GEM axis 0″ | 0.05 → 0.06 |
| GEM axis 11″ (default) | 0.80 → 0.06 |
| GEM axis 22″ | 1.55 → 0.06 |
The residual is now a small constant rather than growing with the mount geometry. Two consequences were handled alongside: the counterweight was moved to the opposite side so it still sits across the declination axis from the tube, and the RA park offset was adjusted so RA 0 still parks the counterweight down. Pointing accuracy is unchanged at 0.0000° in altitude and azimuth.
Dual saddle offset now defaults to 100 mm (dome calculator). The offset of the imaging OTA centre from the mount axis previously defaulted to zero, which put both tubes on the axis on top of one another until a value was entered. Turning dual saddle on now seeds 100 mm; a value you have already set is left alone.
The field also gained a mm unit label — it had none, unlike the equivalent field in the roll-off-roof tool.
Removed the up/down spinner arrows from number fields in both calculators — 32 fields in the dome tool, 58 in the roll-off-roof tool. The arrows crowded the narrow fields and sat awkwardly next to the fractional-inch hints.
Nothing else changes: keyboard up/down still steps a field while it has focus, and the pointing sliders and jog buttons are untouched.
Dome defaults resized around the Alt/Az mount, and the Alt/Az pier lowered to 6″ (dome calculator).
The point of the 6″ pier is where it puts the altitude axis. The L-500 carries its altitude axis 820 mm (32.3″) above the pier flange, so a 6″ pier places it 38.3″ above the floor — within 0.3″ of the 38″ springline. The swing sphere is then almost exactly concentric with the dome hemisphere, which is the condition that needs the smallest dome: required radius falls to 25.9″ against 47″ available, a 21.1″ margin.
By comparison the previous 12″ pier lifted the altitude axis 8.3″ above the springline and pushed the required radius to 33.9″. The equatorial default pier stays at 35″ and is restored when switching back.
Fixed: the pointing ray did not start at the telescope in Alt/Az (roll-off-roof tool). The ray was built from the German equatorial model's optical axis even while the L-500 was the mount on screen. Its direction was right, but it began about 0.17 scene units to one side, so the line appeared to miss the tube. It now takes its optical axis from whichever mount is actually displayed, and starts exactly at the tube in both mount types.
Alt/Az defaults to a 12″ pier. Selecting Alt/Az sets the pier height to 12″ — the shortest PlaneWave sells for the L-500, which offers piers in 12″ steps from 12″ to 48″. The equatorial pier height is remembered and restored when switching back, so nothing is lost. Works in metric too (305 mm on the dome tool, 30.5 cm on the roll-off-roof tool).
Fixed: pier fields were wrong in metric (roll-off-roof tool). Pier height, pier diameter and mount head height convert with the unit toggle, but were being read as though always in inches. Switching to metric multiplied them by 2.54 — an 889 mm pier became 2258 mm, and the 3D model, pier seating and clearance all followed the inflated figure. They now honour the unit toggle, so 35″ and 88.9 cm both give 889 mm.
Alt/Az maths corrected. Auditing the Alt/Az path after the L-500 model went in turned up three faults where the calculations still assumed a German equatorial:
Already correct and left alone: the dome azimuth solver has a proper Alt/Az branch, pier side is excluded from it, the pier-side control and GEM-only fields are hidden, and sky coverage collapses to a single plot since an Alt/Az has no meridian flip.
Alt/Az and Fork now use a PlaneWave L-500 direct drive model. Selecting Alt/Az swaps the German equatorial model for the L-500: wide base drum, single offset arm, large altitude drive drum, and an open-truss OTA. Switching back to Equatorial restores the GEM. Only one mount is ever drawn.
The L-500 is driven from each tool's own haDecToAltAz(), so the rendered tube and the calculated sky position come from one source. Verified across 15 pointing combinations per tool: 0.0000° in both altitude and azimuth.
Swing clearance now matches the mount type (roll-off-roof tool). The old formula assumed a counterweight sweeping opposite the tube, which overstates an alt/az by a wide margin. Alt/Az now uses the longer half of the tube plus the aperture radius, floored at the L-500's published 650.748 mm swing-through:
Wall, floor and ceiling clearance follow that figure, so an alt/az is no longer told it needs a GEM's swept volume.
RA is now the mechanical Right Ascension axis angle, −80° to +80° with 0 at the middle. At RA 0 the mount sits in park: the counterweight swings down into line with the pier, and with Dec 90 the tube lies along the polar axis. The counterweight rises symmetrically either side of 0.
RA maps to hour angle internally as HA = −6h + RA/15, applied in one place so the 3D view, the clearance verdict, the status line and the sky-coverage sweep all read from the same value. Verified across 36 pointing combinations per tool: the rendered tube matches each tool's own calculated sky position to 0.0000° in both altitude and azimuth — the picture and the numbers can no longer disagree, which was the open issue in v7.14.000.
The RA jog buttons now step in degrees to match the control.
RA rotation reverted to its original direction (180 + haDeg), as requested. Declination keeps the corrected 0–180° sweep from v7.14.000 — that change is unaffected.
Known issue this reintroduces. With the original direction the 3D view and the calculations disagree for any RA other than 0h, mirrored east↔west — about 66° apart at RA 2h and 82° at RA 4h. The clearance verdict, status line and sky-coverage sweep all follow the calculated value, so the picture can show the tube on the opposite side of the sky from the pointing being assessed.
The underlying cause is that the pointing field is labelled Right Ascension but is treated as hour angle throughout the maths, and the two run in opposite directions (HA = LST − RA). Resolving it means either restoring the Hour Angle label, or converting RA to hour angle at the input so the label, the picture and the numbers all agree.
Declination now sweeps the full mount range, 0–180° with the pole at 90°. The Dec control runs 0 to 180 with 90 in the middle: 90 puts the tube on the polar axis, and moving either way swings it symmetrically down toward the horizon. Past 90 the tube carries over the pole and down the far side, which is what the Dec axis physically does.
Fixed: the 3D pointing did not match the sky. Two faults were found while verifying the new range:
Pointing is now validated against textbook hour-angle/declination to altitude/azimuth across 140 combinations per tool, spanning latitudes +60° to −33°: worst altitude error 0.0000°, worst azimuth error 0.0000°.
Removed the pointing clamps. Declination and hour angle can now be driven across their full range in both tools. Three separate clamps were rewriting the input fields as you typed or dragged, which made the controls feel stuck:
Nothing is lost: blocked pointings are still reported by the status line and the red pointing ray, and the "never rises at this latitude" warning still appears. The tools now report rather than override.
Fixed: the pier-side selector did nothing, so Dec appeared to move only one way. Both tools have an East/West pier-side control, but the 3D mount was being updated with pierSide hard-coded to east, so the meridian flip never happened and the tube stayed on one side of the pier permanently.
There was a second fault behind it: the selector emits "East"/"West" while the mount model compares lowercase, so even passing the value straight through would have failed silently. The value is now normalised. Switching pier side inverts the counterweight and swings the tube across the pier while continuing to aim at the same point in the sky.
Fixed: the telescope disappeared in some states. The 3D mount was gated behind a pier measurement, so it was hidden entirely whenever no pier height existed — most visibly in the dome tool's "I already have my NINA values" mode, where the telescope vanished every time. Setting pier height to zero did the same, and on the roll-off-roof tool it left the mount frozen on stale geometry instead.
The telescope now always renders. When there is no pier measurement the mount is drawn with nominal structure and only the pier and base flange are hidden, via a new showPier() control on the mount model. This restores the behaviour originally fixed in v6.00.007, which the switch to the kinematic mount had undone.
Dual saddle on the roll-off-roof tool — closes the parity gap with the dome calculator. New controls in the Optical System card: a dual-saddle toggle, the off-axis offset for each tube, and OTA 2 length and aperture. Both tubes are drawn side by side in the 3D preview and share the same pointing.
The offset also feeds the clearance maths: swing radius now includes the lateral offset and uses the larger of the two tubes, so the wall, floor and ceiling checks account for the extra reach rather than under-reporting it.
Swept-volume radius now tracks the optics. It was computed once when the mount was built, so widening the dual-saddle separation or lengthening a tube left the swept sphere at its original size. It is recomputed whenever the optics change, in both tools.
Fixed: guide-scope distance field was unreachable (ROR). The guide-scope panel had no show/hide listener, so ticking the box never revealed the OTA-to-guidescope distance input. Both the guide-scope and dual-saddle panels are now wired to a shared handler.
Unified versioning. Both calculators now share a single version line starting at v7.14.000 (previously dome v6.00.012 and ROR v2.00.042). The version is now shown in the page header of each tool, so the build can be identified from the UI rather than only the filename.
Consolidated in this release:
createGEMMount, a proper kinematic chain (latitude-tilted RA axis → RA rotor → Dec axis → Dec rotor → optics). All legacy hand-drawn OTA, ray and pier meshes are retired.OTA tube no longer intersects the mount head or pier when pointing at low or diagonal angles. The tube base is clamped to the RA/Dec pivot height — regardless of pointing direction the back end of the tube never drops below the mount head top.
Fixed gap between OTA and mount head. The tube was positioned at the GEM aperture origin (which includes the axis offset), floating it above the mount. The OTA centre now sits at the local mount head top so it connects flush. Dome geometry calculations still use the correct aperture origin — only the visual placement changed. (Note: v6.00.011 reverted v6.00.009/010 OTA position experiments and is superseded by v6.00.012.)
Imperial units set as default on page load with clean whole-inch defaults: 41" dome radius, 36" dome/wall height, 35" pier height, 8" pier diameter, 11" mount head, 39" wall-to-mount distances, 20" shutter width, 11" GEM axis. Unit labels and fraction hints update immediately on load.
OTA tube position adjusted — sits 40% of the way between the mount head top and the aperture origin, giving a natural look with a small gap above the mount rather than being flush against it.
Fixed gap between OTA tube and mount head in the 3D preview. The OTA was positioned at the aperture origin (which includes the GEM axis offset), creating visible space between the tube and the red pivot dot. In measure mode the OTA centre now sits at the mount head top (the local pivot position), so the tube visually sits flush on the mount. The dome geometry calculations still use the correct aperture origin — only the visual placement changed.
Removed step numbers from all panel headers.
Fixed: OTA tube disappeared when switching to "I already have my NINA values" (direct entry) mode. The OTA and RA/Dec pivot marker are now always visible regardless of entry mode. The pier cylinder, flange, and wedge mount head correctly hide in direct mode since those measurements aren't entered there — but the telescope itself always renders.
Replaced custom pier/mount/OTA geometry with createGEMMount — a proper kinematic chain GEM model with RA axis tilted to latitude, RA rotor (hour angle), and Dec rotor. Low-detail mode shows measured skeleton; high-detail shows modelled castings. Mount updates live with pointing changes.
Same smart OTA clamp applied to the dome calculator.
OTA midpoint at pivot (same as ROR v2.00.034). Mount head block rendered at 60% height so the OTA back half clears it visually.
OTA tube clamped above mount head — base never drops below the RA/Dec pivot at any pointing angle.
Removed step numbers from all panel headers.
Imperial units set as default on page load with clean whole-inch defaults: 41" dome radius, 36" dome/wall height, 35" pier height, 8" pier diameter, 11" mount head height, 39" wall-to-mount distances, 20" shutter width, 11" GEM axis, 6" guide scope offset. Unit labels and fraction hints update immediately on load.
Two layout changes: (1) Optical Axis Offset card merged into Mount Position — GEM axis, Dec horizontal offset, and direct-entry fields now sit below a divider in the Mount card, reducing the section count. (2) Sky Coverage moved out of the collapsible left column into a full-width collapsible row that spans the page between the NINA options row and the three-column layout, matching how it appeared before the column redesign.
Telescope Dimensions card renamed to Optical System. Guide scope toggle and OTA-to-guidescope distance field moved from Optical Axis Offset into the Optical System card, alongside the dual saddle settings and OTA dimensions — grouping all light-path configuration in one place.
Schematic diagram updated for dual saddle — when dual saddle is enabled, the top-view schematic now shows OTA 1 (orange) and OTA 2 (blue) as separate dots offset laterally from the mount pivot, connected by a dashed line. The mount dot dims to show it's the geometric pivot, not the aperture. Both dots update live as the lateral offset changes. Single-scope mode is unchanged.
Dual saddle / Lateral Axis Length toggle and all associated fields moved from Optical Axis Offset into the Telescope Dimensions card, where they belong alongside the OTA tube length and aperture fields.
OTA tube length and clear aperture moved into a new collapsible Telescope Dimensions card, sitting between Optical Axis Offset and Sky Coverage. The Optical Axis Offset card now contains only the geometric offset fields. Both OTA 1 and OTA 2 fields are in the new card. Fields always remain in mm regardless of the Metric/Imperial toggle.
OTA tube is now centred on the RA/Dec pivot (the red sphere) — the midpoint of the tube aligns with the mount's balance point, matching how a telescope actually sits on a GEM saddle plate.
Major version — substantial rewrite of the 3D preview and Step 1 measurement workflow.
(distS − distN) / 2 and (distW − distE) / 2, displayed in an orange readout.v[major].[minor].[patch] matching the ROR calculator. Next change: v6.00.001.Metric / Imperial unit toggle added to the dome calculator, matching the ROR calculator. All non-OTA fields (dome height, mount height, N/S, E/W and Up/Down offsets, direct offsets, shutter width, wall height, GEM axis fields, dome radius) switch between mm and decimal inches. Fraction hints (to the nearest 1/16") appear beside each field in imperial mode. Summary stat chips (N/S, E/W, Up/Down, Dome Radius, GEM Axis, Lateral Axis) also update. OTA fields always remain in mm.
Three-column layout applied to the dome calculator — collapsible setup sections left (Mount Position, Dome & Rotator, Optical Axis, Sky Coverage, Local Horizon), Telescope Pointing middle (persistent/sticky), 3D Preview right (persistent/sticky). Equal 1fr 1fr 1fr columns aligned to the header width. CygnusWave rebranded to one word throughout.
Added Subresource Integrity (SRI) hash to the Three.js CDN script tag, fetched from cdnjs's own official SRI repository. Last gap in the client-side security surface.
Fixed light-mode button contrast: active-state mode toggles used a hardcoded light cream text on what became a light peach background — contrast ratio was 1.54:1. Fixed to 4.76:1, passing WCAG AA.
Added dark/light mode toggle (🌙/☀️) in the header. 3D viewport and Sky Coverage plots intentionally kept dark in both modes.
3D Preview layout refinements: legend text moved beside the wireframe canvas, then later made toggleable ("Show Wire frame legend"). "Drag to orbit, scroll to zoom." repositioned and colored amber. Camera distance tuned through several iterations, settling at 5.
Subtitle text removed from page header. Layout restructured from 3 to 4 columns: Step 3 (Optical Axis) moved to column 2, Local Horizon to the bottom of column 2, Step 4 (Telescope Pointing) to column 3.
Versioned as v2.00.000, incrementing .00.001 per change.
OTA tube no longer overlaps the mount head or pier at any pointing angle. The tube base is clamped to the RA/Dec pivot height — the back of the tube never drops below the mount head top regardless of how low the telescope points.
Default Dec set to match site latitude (40°) so the OTA aligns with the polar axis of the wedge mount head on load. When latitude is changed, Dec tracks it automatically as long as the user hasn't manually adjusted Dec away from the latitude angle. Same change applied to the dome calculator.
Fixed double-cylinder appearance in the 3D preview — the swing sphere tube was showing alongside the main OTA in single-scope mode. The swing sphere and its tube now only appear in multi-scope mode. Single-scope mode shows only the main OTA from the pier group.
3D pier/mount/OTA assembly ported from the dome calculator. Wedge mount head oriented correctly — tall face points to true north (+X axis) in both the ROR and dome calculators, aligning the polar axis tilt with the N compass marker in the 3D preview. OTA and ray are now children of the pier group — they rotate around the fixed RA/Dec pivot (orange sphere at top of the mount head wedge). Pier base is pinned at floor level at the mount's NS/EW position and never moves with pointing. Pier, flange and wedge mount head hide when pier dimensions are zero; the OTA and pivot always render.
Guide scope correction now applied to the obstruction and 3D calculations. When the guide scope toggle is enabled, half the OTA-to-guidescope distance is added to the GEM axis length — matching how the dome calculator handles it. The correction propagates through the pointing ray, sky coverage sweep, and 3D scene.
Telescopes card renamed to Optical System, matching the dome calculator. Guide scope toggle (with OTA-to-guidescope distance) added. OTA tube length and aperture moved into this card. Layout from top to bottom: guide scope toggle · OTA tube length · OTA aperture · divider · pier height / diameter / mount head height · hidden multi-scope fields.
Peaked roof: eave height field removed — the eave is always the wall height. Ridge height is derived from the pitch and displayed as an orange computed readout (e.g. 8'11 1/16" from floor).
Three changes: (1) Wedge roof defaults updated to 12" low side, 36" high side. (2) Peaked roof now uses a pitch input (rise:run, default 1:6) instead of a manual ridge height. (3) Flat roof default remains 6".
Flat roof height default changed to 6".
Fixed flat and wedge roof positions in the 3D preview — roof bottoms now sit at the top of the walls rather than at floor level.
OTA midpoint centred at the RA/Dec pivot — half the tube on each side of the mount attachment point.
OTA base now sits at the RA/Dec pivot (red dot) and extends in the pointing direction above the mount head — matching the dome calculator assembly: pier → flange → wedge mount head → OTA above.
OTA positioning matches dome calculator v6.00.008 — tube centre sits at the RA/Dec pivot (red dot), balanced on the saddle at its midpoint.
OTA base now sits at the red RA/Dec pivot dot — the tube extends above it in the pointing direction, like a scope on a saddle plate.
OTA tube now connects flush to the mount head — the tube centre sits at the RA/Dec pivot (top of mount head) and is a child of the pier group, so it rotates around the fixed mount as pointing changes. The pier, flange, wedge, and pivot stay stationary.
Pier and mount head ported from the dome calculator into the 3D preview. A red pier cylinder rises from the floor at the mount's NS/EW position, topped by a steel flange and a latitude-angle wedge mount head (square cross-section, north face taller than south, angle matches site latitude). The RA/Dec pivot orange sphere sits at the top of the mount head. Three new fields added to the Telescopes card: pier height, pier diameter (defaults 35" and 8"), and mount head height (11"). Pier base is a fixed floor point — only the OTA rotates with pointing.
Multiple telescope feature temporarily hidden from the UI — Telescopes 2/3/4, the Pier Layout & Swing Clearance section, Telescope 1 separate position fields, the pointing telescope dropdown, and the minimum pier gap field are all hidden. The full multi-mount code remains in the file and can be re-enabled by restoring the display styles.
Imperial units are now the default on page load, matching the dome calculator. All building, roof, and mount fields default to clean whole-inch values (e.g. 157" building, 94" wall height, 47" mount height, 165" roof travel, 11" GEM axis, 20" minimum pier gap). Step numbers removed from all panel headers.
Fraction hints added to every non-OTA input field in imperial mode. Each cm/mm-class field now shows a small fractional-inch annotation beside it (e.g. 13'1 1/2") that updates live as you type. Hints are hidden in metric mode and for zero-value fields. Applies to all building, roof, mount position, height, axis offset, pier gap, and custom wall fields.
Imperial mode now displays fractional inches to the nearest 1/16" in the building/roof summary stat chips (Footprint, Wall Height, Roof Travel, Mount Offset). Fractions auto-reduce (8/16 → 1/2, etc.) and format as feet + inches when ≥ 12".
Metric / Imperial unit toggle added to the top-right header. All non-OTA fields (building dimensions, mount positions, heights, roof heights, axis offsets, pier gap, custom wall distances) switch between cm/mm and decimal inches. OTA tube length and aperture always remain in mm. Summary stat chips also update. Internal math stays in mm throughout — conversion only at input/output.
In multi-telescope mode, the selected scope's pointing ray is now visible in the 3D preview — a coloured line (green = clears, red = blocked) extending from that scope's mount position in the current pointing direction. Non-selected scopes show no ray. Single-scope mode is unchanged.
Two bug fixes: (1) Peaked gable / wedge roof threw a ReferenceError: _ps is not defined — clampAltToHorizon() and jog() were using _ps as a free variable that only existed inside computeSkyCoverage(); both now call getPointingScope() directly. (2) In multi-telescope mode, the selected telescope's OTA tube now tracks the live pointing direction — previously all tubes pointed straight up regardless of HA/Dec. Non-selected scope tubes remain in a neutral upright pose, tinted muted brown to distinguish them from the active amber tube.
Fixed column alignment: removed a stale <div style="max-width:860px"> wrapper left over from an earlier rebuild that was capping the layout at 860px and offsetting the padding. All three columns now sit directly inside .wrap and align flush with the header.
Three-column layout aligned to header: two-col-layout max-width and horizontal padding matched to .wrap (1440px, 24px), so the left edge of the setup column and the right edge of the 3D preview column sit flush with the header edges.
All three columns set to equal 1fr 1fr 1fr width.
3D Preview moved into a proper third column inside the two-col-layout grid (had been injected outside the layout by a prior rebuild script). Layout is now correctly: collapsible setup left | Telescope Pointing middle | 3D Preview right.
3D Preview split into a dedicated third column — setup sections left (collapsible), Telescope Pointing middle (persistent/sticky), 3D Preview right (persistent/sticky). Grid: 1fr 1fr 1fr.
Full page reorganisation into two columns: left (6 collapsible setup sections) and right (Telescope Pointing + 3D Preview, always visible). Sky coverage outline now traces the actual building wall polygon shape rather than an ellipse — a 4-wall rectangle shows as a rectangle, a 6-wall polygon shows its true footprint.
Collapsible single-column layout: all setup panels converted to native <details> elements. Building & Roof open by default; Optical Axis, Telescopes, Pier Layout & Swing Clearance, Sky Coverage, and Local Horizon collapsed. Sky coverage fires automatically on section expand.
Major version bump reflecting the full independent multi-mount rewrite. Interactive pier-layout floor plan (click to place, drag to reposition, syncs with NS/EW fields). Each telescope on its own independent mount with its own absolute position, mount height, and mount type. Telescope selector dropdown — any mount can drive the live pointing preview and sky coverage sweep. Swing clearance checks each telescope independently at its own position. Scope-to-scope check uses pivot-to-pivot distance vs sum of swing radii. Plan-view removed (redundant with floor plan). Site nav bar and CygnusWave logo added above tool header.
Panel 1 and Panel 2 now use centimetres. All read sites updated to convert cm→mm internally; underlying physics math unchanged.
Split telescope measurement units: tube length and aperture stay in mm; offset and lateral offset converted to cm.
Swing Clearance panel now collapsible, matching Sky Coverage.
Swing Clearance panel moved to sit directly below Sky Coverage.
Telescope measurements converted to cm. Center-point markers added for each offset telescope in the plan-view diagram.
Plan-view swing circles separated by lateral offset and individually labeled (T1/T2 etc.).
Up to 4 telescopes with lateral offset, swing-radius wall clearance, telescope-to-telescope collision checking (parallel cylinder model), plan-view diagram, 3D swing spheres.
3D Preview moved above Local Horizon. Layout collapsed from 4 to 3 columns.
Wedge (mono-slope) added as a third roof shape. Flip checkbox for slope direction. Trapezoidal 3D prism shape.
Custom wall shape system: up to 6 walls as a general convex polygon (half-planes). Roll-off wall correctly extended by roofTravel in polygon mode. Caught and fixed a bug where the roof wall distance was not being extended before intersection.
Rectangular building, flat/peaked roof, roof-travel distance, local terrain horizon (.hrz import), full-sky coverage, GEM/AltAz mounts, full pointing constraints, 3D preview, dark/light mode, Save/Load, Reset, SRI hash, horizon-file export.