Header

AstroPlanner Beta Testing

Introduction

Anyone is free to download and test the latest beta version of the application. Please note that beta versions of the application have a built-in expiration date that is 120 days after the release date. After that date, you can still use it, but you'll be "nagged" to download a more recent release. This is to prevent bugs being reported on older beta versions that have already been fixed in later releases.

Click here for more information on how to report a bug.

V2.4 Notes:

This page last modified: 2026/08/01 17:57 (Pacific time)

Download

VersionRelease DateExpiry Date
2.4.1b102026/05/222026/09/19

Macintosh

64-bit Application (.dmg)Download221.5MB64-bit version. Intel-based Mac with MacOS 10.14 or later. Apple Silicon-based Mac with MacOS 11 or later.
64-bit Application (.dmg)Download165.3MBSpecial version for MacOS 10.11 through 10.13. Intel-only.

Windows

32-bit Application (.exe)Download136.4MiB32-bit version. Installer. Windows 8.1 or later
32-bit Application (.exe.zip)Download135.9MiB32-bit version. Zipped installer
64-bit Application (.exe)Download132.8MiB64-bit version. Installer. Windows 8.1 or later
64-bit Application (.exe.zip)Download132.3MiB64-bit version. Zipped installer
64-bit Application (.exe.zip)Download188.3MiBSpecial 64-bit version for Windows 7 SP1 through 8.0.
32-bit Application (.exe.zip)Download197.4MiBSpecial 32-bit version for Windows 7 SP1 through 8.0.

Both platforms

User Manual (.pdf.zip)Download82.8MiBV2.4 beta user manual

Note: Beta versions of the application typically do not include the user manual or scripting manual in order to reduce download size.

Release Notes

A list of unresolved bugs can be found here, and feature requests here.

Version: 2.4.1b11
Release Date: Soon
Fixes: 12, Enhancements: 3

ID:
8157

Status:
Implemented

Date:
2026/07/17

Support PiFinder export

Support object export to a text file for uploading to a PiFinder device.

Resolution:
Implemented.

ID:
8148

Status:
Implemented

Date:
2026/07/05

All-Sky Coverage Map enhancement

I have a proposal for a future version of the All-Sky Coverage map.

I find the map very interesting, but for practical purposes, such as determining whether an object is close to the telescope or needs to flip its meridian, it doesn't provide any help.

I'd like the map to show the currently selected object in a different color, and if the telescope is connected, its approximate position in the sky.

Resolution:
Implemented. Selected object/s now show in red with an outside red ring. Telescope pointing (where selected and applicable) shows as a larger purple ring with cross-hairs.

Bonus:
- There's now an option to draw the (0° altitude) horizon line on the chart.
- There's now an option to draw the meridian line on the chart.

ID:
8146

Status:
Fixed

Date:
2026/07/04

ScrollingImageCanvas.AnnotatePicture: ThreadAccessingUIException

Exception Type: ThreadAccessingUIException
Exception Message: A thread has attempted to manipulate a user interface element. This can only be done from the application's main thread.

1: Function DesktopListBox.RowCount.Get( int32 ) as int64
2: Function MainWindow.GetObjectIDFromList( MainWindow, double, double ) as string
3: Function MainWindow.!GetObjectID( double, double ) as string
4: Sub ScrollingImageCanvas.AnnotatePicture( ScrollingImageCanvas, Graphics, int64 )
5: Sub ScrollingImageCanvas.LoadImagesThread_Run( ScrollingImageCanvas, Thread )

Resolution:
Fixed.

ID:
8088

Status:
Fixed

Date:
2026/06/17

Image download for all objects - always prompted at app launch

Each time I launch AP, latest beta (but was also true with previous versions), I get prompted to "Download images for all objects in xxxx.apd plan document".
I always check the "Don't show this again" checkbox and select "No".
The checkbox doesn't seem to work.

Analysis:
The Yes/No dialog "Don't show this again" option assumes (if selected) that Yes is always wanted. Unfortunately, this isn't what you want to happen.

There's also a chance (I haven't checked yet) that this is happening before the preferences have been read in, although I doubt it.

Anyway, fixing this issue properly is a bit of a challenge, so I need to think about it more.

Resolution:
Fixed. Well, not really, However, the Yes/No message dialog now tells you how to switch off the option that's causing this (Image > Image Preferences > Automatic image download)

ID:
8086

Status:
Fixed

Date:
2026/06/17

SelectSolarSystemCollectionDialog.CheckButtons: Nil Object Exception

Exception Type: Nil Object Exception

1: Sub SelectSolarSystemCollectionDialog.CheckButtons( SelectSolarSystemCollectionDialog )
2: Sub SelectSolarSystemCollectionDialog.FromFileBtn_Pressed( SelectSolarSystemCollectionDialog, PDPushButton )
3: Sub DesktopWindow.ShowModal( DesktopWindow )
4: Function SolarSystemObjectCollection.GetCollectionToDownload( byref boolean ) as SolarSystemObjectCollection
5: Function MinorPlanetObjectCollection.GetCollectionToDownload( byref boolean ) as SolarSystemObjectCollection
6: Sub SolarSystemObjectCollection.StartImport( MainWindow )
7: Function MainWindow._NewImportMinorPlanetData_Action( MainWindow ) as boolean
8: Sub DesktopApplication._CallFunctionWithExceptionHandling()


Resolution:
Fixed.

ID:
8108

Status:
Fixed

Date:
2026/06/15

Issues refreshing from Catalog

After the latest update, the Objects to Refresh setting is still not holding and the Magnitude setting is actually not being refreshed. This is from an object which has had its ID changed. Steps to duplicate:
1. Open the attached document and select the object named "Kepler 16*"
2. Right click the object and choose Show Object in Catalog (This object is in the APASS North catalog)
*The magnitude of the object is 12.28 but it is currently set to 12.10
3. Go to Object > Refresh from Catalogues... Change "Objects to Refresh" to Selected Objects. Select only Magnitude under Select fields to refresh. Click Ok.
4. The magnitude remains at 12.10.
5. Go back into Object > Refresh from Catalogues.. "Objects to Refresh" has gone back to All Objects.

Analysis:
If the ID of an object being refreshed has been changed after adding it from a catalogue, and that new ID can't be found in the original catalogue, the object will not be refreshed.

Resolution:
Fixed. If the object ID has been changed and can't be found in the original catalogue, you'll now be asked if you'd like to update the object from the original catalogue entry.

(I can't reproduce the "Objects to Refresh setting is still not holding" issue, so I can't fix that)

ID:
8142

Status:
Fixed

Date:
2026/06/06

ASCOM.TrackingRates: Nil Object Exception

Exception Type: Nil Object Exception

1: Function ASCOM.TrackingRates() as M.DriveRates
2: Function ASCOMMount.GetTrackingRates() as untConstants.MountParam
3: Sub ASCOMMount.GetItem( oi8A1v )
4: Sub TelescopePaletteWidget.Initialise( TelescopePaletteWidget )
5: Sub TelescopePaletteWidget.mw.Set( TelescopePaletteWidget, int32, MainWindow )
6: Sub TelescopePaletteWindowWin.mw( TelescopePaletteWindowWin, assigns MainWindow )
7: Sub TelescopeMount.SetItem( oi8A1v )
8: Sub ASCOMMount.SetItem( oi8A1v )
9: Sub TelescopeMount.SetNoLock( paramarray oi8A1v )
10: Function MainWindow._TelescopeTelescopeControlPalette_Action( MainWindow ) as boolean
11: Sub DesktopApplication._CallFunctionWithExceptionHandling()


User description of above error trace:

Trying to connect to synscan wifi. Ascome driver. Synscan pro is running on iPhone. Connected trough tcp

Resolution:
Fixed. Hopefully.

ID:
7082

Status:
Fixed

Date:
2026/06/06

ASCOM.TrackingRates: Illegal Cast Exception

Exception Type: Illegal Cast Exception
Exception Message: _VariantString cannot be cast to OLEObject

1: Function ASCOM.TrackingRates() as M.DriveRates
2: Function ASCOMMount.GetTrackingRates() as untConstants.MountParam
3: Sub ASCOMMount.GetItem( oi8A1v )
4: Sub TelescopePaletteWidget.Initialise( TelescopePaletteWidget )
5: Sub TelescopePaletteWidget.mw.Set( TelescopePaletteWidget, int32, MainWindow )
6: Sub TelescopePaletteWindowWin.mw( TelescopePaletteWindowWin, assigns MainWindow )
7: Sub TelescopeMount.SetItem( oi8A1v )
8: Sub ASCOMMount.SetItem( oi8A1v )
9: Sub TelescopeMount.SetNoLock( paramarray oi8A1v )
10: Function MainWindow._TelescopeTelescopeControlPalette_Action( MainWindow ) as boolean
11: Sub Application._CallFunctionWithExceptionHandling()


message=_VariantString cannot be cast to OLEObject


Resolution:
Fixed. Hopefully.

ID:
8129

Status:
Fixed

Date:
2026/06/05

"Download images for all objects in the XXX plan document" NO + Don't show this again not honored

When launching the app, the message box mentioned in the bug title always shows up. “The Don’t show this again” checkbox is ignored.

Reproducible 100% of the time.

Analysis:
This because the "Don't show this again" checkbox assumes you will want the Yes option. If you always want the No option then you need to turn off this download feature via Image > Image Preferences > Automatic image download.

Resolution:
Fixed. The dialog now adds info on how to turn off the feature.

ID:
8135

Status:
Fixed

Date:
2026/06/04

Dk Start, Dk Dur and Dk End show "---" for observable object

For several objects the table shows „—-„ even thought the object is observable.

I encountered this behaviour when being on the Southern Hemisphere (location 23° 19' S and 17° 57' E), e.g. for the object M8 on April 19th 2026.
M8 is high up in the sky for most of the night, and the table shows „—„.

When switching the location to Australia, the behaviour looks more reasonable (i.e. then the table is populated with the respectived hours).

Is this a misunderstanding on my side, or a bug?

Analysis:
This is definitely a bug.

Resolution:
Fixed.

ID:
8082

Status:
Fixed

Date:
2026/06/03

Custom Highlighting Won't Load.

When trying to load a saved Custom Highlighting saved file (set.hrules), a bad file format message pops up with "file does not appear to be valid rule set file". This happens with older saved rule sets and new clean default rule sets. Attached is an image of the error and a saved set.hrules file.

Attachment: set.hrulesAttachment: Highlight Load Error.jpg

Resolution:
Fixed.

ID:
8099

Status:
Fixed

Date:
2026/05/28

RestoreDialog.items_MouseMove: Nil Object Exception

Exception Type: Nil Object Exception

1: Sub RestoreDialog.items_MouseMove( RestoreDialog, StripedListBox, int64, int64 )
2: Sub DesktopWindow.ShowModal( DesktopWindow )
3: Function App._BackupRestoreRestore_Action() as boolean
4: Sub DesktopApplication._CallFunctionWithExceptionHandling()


User description of above error trace:

chanhinh computers


Resolution:
Fixed.

ID:
8090

Status:
Implemented

Date:
2026/05/28

Object Property vs Time feature

I noticed that closing the window and reopening it "forgets" the setting "Selected object: transit time" but always shows the current time.

For me it would be useful to have two arrows in the window to be able to scroll forward/backward through the objects on the plan without having to close the window, right click the mouse, etc. and set "Selected object: transit time" every time.

Analysis:
Changed from a bug to an enhancement.

Resolution:
Implemented. Added buttons to let you move forwards or backwards through the plan objects.

ID:
8133

Status:
Fixed

Date:
2026/05/27

DesktopListBox.SortingColumn.Set: Out Of Bounds Exception

Exception Type: Out Of Bounds Exception

1: Sub DesktopListBox.SortingColumn.Set( int32, int64 )
2: Sub ObjectListbox.SetSortColumn( int64 )
3: Sub MainWindow.OnOpen( MainWindow, FolderItem, boolean )
4: Function App.OpenADocumentFile( FolderItem, byref MainWindow, string, boolean, boolean, int64 ) as boolean
5: Function App.OpenDocuments() as boolean
6: Sub App.Event_Opening()
7: Sub DesktopApplication._CallFunctionWithExceptionHandling()
8: Sub REALbasic._RunFrameworkInitialization()


Resolution:
Fixed.

ID:
8131

Status:
Fixed

Date:
2026/05/27

Observation logged in open session not (always) displayed.

Often, when working out observations, the nr. of observations already logged in the session are not displayed in the Observations tab. A restart of the application will fix this, but it seems to happen again when continuing to use the application again after putting the computer in standby.

Resolution:
Fixed. I hope.

Version: 2.4.1b10
Release Date: 2026/05/22
Fixes: 8, Enhancements: 2

ID:
8132

Status:
Fixed

Date:
2026/04/06

Observation database broken

Every time I am trying to edit observation session, or edit observation to add the time a session end, attachment of comment, the observation database book down. The session date suddenly jump to future date completely loosing any link with observation.��But, no crash, no warning, no error.�

Resolution:
Fixed.

ID:
8130

Status:
Fixed

Date:
2026/04/01

Observation date keeps being set in the future

When I create a new observation for an object, although I enter a date/time to match my observation (usually in the last 24h; e.g., 18-03-2026), the observation in the database is being set for 29-04-2026 after editing in the observation database page. Another observation which I entered today, for yesterday 21-03-2026, on editing in the observation database page is being listed (name, start, finish) as 02-05-2026.��Any thoughts on this?�

Analysis:
This occurs if you edit an observation where the observation date/time was specified as UT/GMT rather than Local. Also, if you change the observation time to that time outside the range of any sessions, the observation will become "orphaned" and inaccessible until/unless you manually create a new session, or modify the original session.

Resolution:
Fixed.

ID:
8125

Status:
Fixed

Date:
2026/03/04

Can't find GSC objects with New Object or catalog search, even if catalog is marked to search

When the GSC catalog is allowed for search, objects come up in Synonym searches but not in New Object or searches in the catalogue.

Steps to duplicate:
1. Go to File> Catalogue Manager> Coverage and Settings. Select Hubble Guide Star Catalogue and uncheck "Don't Search". Exit out.
2. Go to New Object and type in GSC0449-00871, then click All. No object was found and it asks for an exhaustive search.
3. Say No to the exhaustive search.
4. Click Show Catalogue and choose the Hubble Guide Star Catalogue
5. In the Find field, type in 0449-00871 for GSC. After a time it chimes and can't find the object.
6. In the attached document, find the object with ID APASS18532061+0116257. Right-click and choose Lookup Synonyms.
7. Select one of the instances of GSC0449-00871 and choose Add Selected. Now it works and adds it to the document.

Attachment: AstroPlannerV2-W32.prefsAttachment: 2025-10-21 thu 20206 Spring - Deacons, IC1396 Complex, Bet Lyr, Tweedledee.apd

Analysis:
GSC catalogue stores the "0449-00871" part as an integer number "44900871". A missing step in the code fails to remove the hyphen before searching (now fixed). Workaround: leave out the hyphen when searching.

Additionally it should be noted that the primary GSC ID in the catalogue has non-unique values. In particular there are two stars with the designation GSC0449-00871, about an arcsecond apart. I suspect a search will find the first one in the catalogue.

Resolution:
Fixed.

ID:
8123

Status:
Fixed

Date:
2026/02/23

Export of object Size always uses localised formatting

When exporting Size in Generic Text Export, it ignores the "Use localized formatting" setting and always outputs in the localized form.

Resolution:
Fixed.

ID:
8121

Status:
Implemented

Date:
2026/02/22

Plan templates for scripting and user-contributed plans

In General Preferences > Creating new plans, add the ability to choose templates for creating new plan documents in scripts, and via the plan creation wizard. Add a warning tooltip to the user-defined plans checkbox to warn against unexpected consequences.

Resolution:
Implemented.

ID:
8120

Status:
Fixed

Date:
2026/02/21

Plan not refreshing upon site change

It appears that the plan refresh is launched when the site changes. However, that does not always seem to be the case.

I have a highly obstructed back yard. I view from two different locations in the yard to get different views of the sky. They are each entered as a site in the resources. However, they both have exactly the same Long/lat.

It seems that the plan refresh is triggered if the Long/Lat is different when changing sites, but that it does not change if the new site has the same Long/Lat as the previous site.


Analysis:
This is because the alt/az of each plan object hasn't changed, and the application isn't taking into account that the user horizon has changed. This will happen if the date/time is fixed.

Resolution:
Fixed. Site change will change visibility if the date/time is fixed and two sites are identically located but the horizon differs.

ID:
8115

Status:
Implemented

Date:
2026/02/19

Improvements to generic text import/export

Improvements:
a. Better error reporting when setting up.
b. Ability to redefine XML/JSON keys when exporting.

Resolution:
Implemented.

ID:
8118

Status:
Fixed

Date:
2026/02/19

Picture.Save: Unsupported Format Exception

Exception Type: Unsupported Format Exception
Exception Message: This format is not supported

1: Sub Picture.Save( FolderItem, int64, int0, uint0, string(), int64 )
2: Function Utility.APSaveAsPicture( extends FolderItem, Picture ) as boolean
3: Sub ObsFilesContainer.SaveChangesBtn_Pressed( ObsFilesContainer, PDPushButton )
4: Sub DesktopApplication._CallFunctionWithExceptionHandling()


User description of above error trace:

Rotated an attached (linked) image and selected Save Changes


Resolution:
Fixed. If a bad picture format issue is detected it will inform the user rather than firing off an exception.

ID:
8112

Status:
Fixed

Date:
2026/02/19

Catalogs objects with no ID are difficult to manage

There are times when I do want to use catalog objects with no actual ID in the Galactic Dust Catalog. They cannot be actually added from the Synonyms search and you cannot search for them in the Name field of a catalog. It's hard to tell what catalog they came from in the FoV tab. It took me a long time to figure out where BDN99.01+4.01 came from when it showed up in FoV. Steps to duplicate:

There are times when I do want to use catalog objects with no actual ID in the Galactic Dust Catalog. They cannot be actually added from the Synonyms search and you cannot search for them in the Name field of a catalog. It's hard to tell what catalog they came from in the FoV tab. It took me a long time to figure out where BDN99.01+4.01 came from when it showed up in FoV. Steps to duplicate:

1. Go to New Object and add Be36 from the Bernes Dark Nebula catalog.
2. Right-click on Be36 and choose Lookup Synonyms.. Select the object with name BDN99.01+4.01 (but no ID) from the GDC catalog and choose Add Selected. Say No to replace the existing object.
*Nothing is added to the document
3. Repeat step 2 but say Yest to replace the object.
*Nothing is added to the document but Be36 is deleted.
4. Go to Object> Open Catalogue/s and open the Galactic Dust Cloud catalog.
5. In the Find field, choose Any from the drop-down and type BDN99.01+4.01
*It cannot find the object from the Name field.
6. Try it again by typing in "inc LDN1099,LDN1105" which is in the description field.
*Now it can be seen at the top of the list but can't be selected.
7. Select the object and choose Add Selected.
8. Delete the object, re-add Be36, select Be36, and go into FoV. Check the box to show objects from the Galactic Dust Cloud catalog.
9. Hover the mouse over the middle of the chart. It shows BDN99.01+4.01 in perins but there is no information about GDC so it's hard to tell where it came from (the GDC catalog only technically has LDN as an ID).

Attachment: AstroPlannerV2-W321.prefs

Resolution:
Fixed. GDC catalogue revised to have an ID (GDC).

ID:
8102

Status:
Fixed

Date:
2026/02/19

ObjectListbox.CellTextAt: Nil Object Exception

Exception Type: Nil Object Exception

1: Sub ObjectListbox.CellTextAt( int64, int64, assigns string )
2: Sub StripedListBox.SwapRows( int64, int64 )
3: Sub PlanObjectAssociation.!OrderList( MainWindow )
4: Sub MainWindow.AssociateOrdering( MainWindow )
5: Sub MainWindow.OnOpen( MainWindow, FolderItem, boolean )
6: Function App.OpenADocumentFile( FolderItem, byref MainWindow, string, boolean, boolean, int64 ) as boolean
7: Function App.OpenFileFromDisk( FolderItem, boolean, int64, int64, int64, int64 ) as MainWindow
8: Function App._FileOpen_Action() as boolean
9: Sub DesktopApplication._CallFunctionWithExceptionHandling()


Resolution:
Fixed.

Show all beta release notes for the current version