Home / Release notes
Release notes
Every release of the Platform Editor, newest first. The same notes the editor itself shows on its Help → About screen, under Release notes.
Version 2026.010 is the first native desktop editor. The releases before it describe the earlier editor, a program that ran in a window around a web page, so their notes talk about pages and a browser-style Back; the guides on this site describe the native one.
2026.027 — 2026-10-25
Strings edit again
- Strings can be edited again (Lazarus editor): a click on a value, then another, opens it for editing, and so do a double-click, Enter and F2. Every click went to the Index column, which cannot be edited, so no country name, ship type or other string could be changed from the window.
- A missing project file offers its backup at launch (Python editor), as the Lazarus editor already did: when the last project file has gone or will not open and a good .bak is beside it, the window opens on "Open the backup".
- Download CSV remembers its folder (Python editor): the Save dialog for the annex grid, Check and the change log opens where the last CSV went, not in Downloads.
- The backup offer says what it will do: when the project file is missing it says opening the backup puts the file back, rather than that a damaged file is kept.
2026.026 — 2026-10-24
New database, safer files
- File > New database… (Ctrl+Shift+N) starts a nearly blank database, its countries, ship types and victory types copied from one you already have, with one record to begin from. Its History says which database it was made from.
- A project file is never left half-written: it is saved whole or not at all, and the previous copy is kept beside it as a .bak. If a project file will not open, the editor offers the backup. The Lazarus editor now autosaves every minute too, as the Python editor already did.
- Reload from disk (File menu) reads the project file again, and a strip says when another window has saved it. It asks first only when this window has changes the file does not.
- Export again (Ctrl+Shift+E) writes the .res straight to the file the last export went to, through the same checks.
- Save as CSV from any annex grid and from Check. A cell that starts with = + - or @ is written as text, so a spreadsheet never runs it as a formula. The Python editor's grids gain the per-column filters Lazarus has.
- New Check family: "Annex nearly full" (advisory): an annex using more than 90% of its ids, or an aircraft with all 32 loadout slots taken.
- F1 opens the guide for the screen you are on, and About > Copy diagnostics copies what a fault report needs. Lazarus About also shows the last crash-log entries.
- Smaller things, in both editors now: a Check finding can be read in full; Delete and Unused remind you that scenarios and saved games name records by id; Compare keeps its baseline while you look elsewhere; Save and add another; notes while typing a number; Clone a description or a hull-name list; Replace with plain text from Check; firing arcs drawn as shaded wedges.
- Libraries updated, with the security fixes they carry. The Windows build ships OpenSSL 3.5.9.
2026.025 — 2026-10-22
Change id
- Change id… on any record gives it another disk id inside its own annex: for the id a scenario or saved game is asking for, when Add or Clone handed out a different one. It opens on the ids something in the database points at and no record holds, then offers the lowest free one, and refuses an id that is taken.
- Everything that points at the record follows it: mounts, sensors, loadouts, weapon damage links and magazine rows are re-pointed, and a ship's or sub's hull names move with it. The dialog lists each one before you commit, warns that a scenario or save using the old id will no longer find the record, and the whole change is one entry in History, undone as one.
- New Check family: "Points at a record that isn't there" (advisory). A mount, sensor, loadout or weapon slot that names an id no record holds, for example "Mounts slot 2 points at 57353, and no mount has that id."
2026.024 — 2026-10-21
What a sensor is
- Sensor lists say what each sensor is, in both editors: Rad(AS), Rad(SS) or Rad(AS+SS) for a radar's air and surface search (LDSD, HF and RO count as air search), IR for SPIR (shipboard passive infrared), Son(A), Son(P) or Son(A+P) for a sonar's active and passive ranges, and ECM. Lazarus shows it in a new Type column; the Python editor at the start of the line under each sensor.
- Hover a tag to spell it out: "Radar: air search — AS (360-degree), LDSD" names the flags behind it, so why a set reads AS is answered without opening it.
- Radar flags use the Access editor's names: SS (airborne), AS (360-degree), RO (airborne), HF (3D) and the rest, on the radar's own page and everywhere else they appear.
2026.023 — 2026-10-20
Python editor fixes
- Type to pick a country in the grid's Country filter (Python editor): opening the filter puts the cursor in a search box; type a name or number and Enter ticks the first match. 2026.020 said type-to-pick reached both editors, but in the Python editor it only reached the record page's Country box, not this filter.
- Long grouped lists keep your choice (Python editor): clearing the search in a list split into "used" and "everything else", such as Subtype, could drop the chosen value, and saving then stored a blank.
- Wider loadout, magazine and mount-load panels (Python editor), so a row's remove button no longer needs sideways scrolling now that rows have move handles.
- No stale file name beside Rename on the Python editor's Overview: it showed the name the database had when opened, even after a rename.
2026.022 — 2026-10-20
Clearer answers
- Check for updates on a channel with nothing published now says so, in both editors: "No update is available on the Beta channel: it has not published any version yet." Beta used to answer "failed (HTTP 404)". On Stable or Beta it adds that there may be a test build on the Test channel (Settings > Updates); your channel is never changed for you. The Python editor's answer now names the channel too, and a real failure shows as one.
- Detection size shows its DP ranges, as the Access editor did: Small (0-49 DP), Medium (50-139), Big (140-449), Large (450-1,200) and Very Large (1,200+).
2026.021 — 2026-10-19
The loose ends from 2026.020
- Save and add hull names in Lazarus: a ship or sub with no hull names has the button on its own page, as in the Python editor. It saves your edits, starts the class's list and opens it for typing.
- Show the # column is back as a setting (Settings, both editors) for anyone who missed the list position.
- Text size scales more of the Python editor: corners, icons and the column-resize handle now grow with the text.
- The several-countries filter in the Python editor no longer depends on scripting.
2026.020 — 2026-10-18
Your reports, fixed
- A record's Id can no longer change by accident. In the Python editor the Id box took the keyboard when a ship's page opened, so an arrow key or the mouse wheel could move it to a neighbour's Id, and the next save kept it: two ships with one Id, the wrong hull names, Back landing elsewhere. The Id is fixed now, and a save that would change it is refused in both editors.
- Drag a whole row to reorder it (Lazarus): anywhere on a magazine, mount, sensor, loadout or weapon-slot row except its boxes and buttons, with a red line where it will land.
- Text size in Settings, 90% to 150%, shared by both editors.
- A revert can be reverted, and that one too.
- Hull names on a ship's or sub's own page in Lazarus, with Edit in Names.
- Type to pick a country, by name or number, in both editors (and in any long coded list).
- The radar cross-section and source-level lists show "this record" on the record's own value, so a value only it holds no longer looks unused.
- In the Python editor: Previous and Next keep your place on the page; the country filter takes several countries; the # column is gone, and the name box finds a record by its id (#4097); a mount's Weapons fit has the "Allow an uneven single weapon" box up front; and moving loadouts or mounts asks in a dialog you can't miss.
- In Lazarus: no more unsaved-changes warning after only looking at a hull-name or text list, and the grid search finds #4097 by id.
- Check for updates says which channel it asked. The default, Stable, has published nothing yet: set Settings > Updates > Channel to Test to get these releases. Answering no to the update question no longer stops Check for updates.
2026.019 — 2026-10-12
History on every record
- Every record's page has its own History. It lists the record's most recent changes, newest first, with who made each one and what it changed. Revert undoes one, Revert to before this undoes it and everything after it on that record, and Show in change log opens the full log at that entry. Changes that came in with imported records are listed by import.
- The export now stops on every problem Check says it will. A ship or sub with no hull names, a value out of range or a source level over the cap used to export anyway unless something else was also wrong. The Python editor already stopped on them.
2026.018 — 2026-10-11
Shared magazines
- Ships and bases with the same magazines can share them. The game gives each platform on a shared magazine its full stock, so a stock that matches one already in the database now points at it instead of adding rows. Change a shared stock and that platform gets its own copy; its page says when a magazine is shared, and with how many.
- Share identical magazines frees room in the magazine pool, which a database can only hold 13,107 rows of. It is on the magazine pool's page and under Check's "Magazine pool nearly full", shows what it will do first, and is one Undo. On a database near the ceiling it freed over 1,400 rows.
- A ship or sub with no hull names stops the export. Check lists them under "Ships and subs with no hull names". A new ship or sub starts with one, its class name; a clone copies the original's; and undoing either takes those names away again.
- Deleting a cloned ship no longer takes the original's magazines. A clone used to point at the original's magazine rows, so deleting the clone left the original reading someone else's.
- Country lists are alphabetical.
- Change target calls the plain kind "A commondb database", not commondb.res: the export is saved under any name you like.
2026.017 — 2026-10-10
Two editors to compare
- The Python editor ships beside this one, as hcpe-py.exe. It is the editor HCPE was before 2026.010, brought level with this one: reordering lists, the battleset target and Export into battleset, Put on the mount, Ctrl+Z, ids in view, remembered column widths and the rest of 2026.010 to 2026.016. Open the same database in each and compare; tell us where they differ. Its title says (Python). It does not update itself: each update of this editor brings a new copy of it. Windows only.
- The two editors share their settings and their memory of your layout. Column widths, folded sections and the coordinate notation set in one are there in the other. If both open the same project, the second one opens it read-only.
- Restart now after changing the theme. Light and dark take effect when the editor starts, so OK in Settings now offers to restart it with the same database open.
- Check for updates gives a plain answer. Whether a newer version is available or not, without the release's tagline, which read as if it were the answer. The update bar says only which version is available.
- Export .res… sits beside Rename on the Overview, which gives the table below more room.
- The Overview's fill bars read the right way on a selected row. In the light theme the empty part of an annex's bar looked like the full part when its row was selected.
2026.016 — 2026-10-05
Lists you can reorder
- Every list on a record page can be put in a different order. A platform's mounts, sensors and loadouts, a ship's or base's magazines, a mount's weapons and a loadout's or multi-mount's weapon slots. Each entry moves with the ↑ and ↓ buttons beside it, with Ctrl+Up and Ctrl+Down (Ctrl+Home and Ctrl+End take it to either end), or by dragging: a slot number in the mount, sensor and loadout lists, a weapon's name everywhere else. Quantities, rounds and reload times go with their weapon, and the keyboard follows the entry you moved. A move is an ordinary edit: Revert drops it before Apply, and Ctrl+Z undoes it after.
- Apply asks before a plane's loadouts or a platform's mounts change places. Scenarios and saved games pick a plane's loadout (parked aircraft, air patrols, readied and launched flights) and the mount an attack fires from by its place in the list, not by its id, so a reorder changes what those scenarios get. Removing an entry from the middle of these lists asks too, because the ones after it move up. Adding one at the end or choosing a different record for a slot does not ask.
- A mount says which multi-mount its weapons became. When Apply stores a mount's mixed load as a multi-mount, the status line names it and says whether it is new or one that already held those weapons in that order.
- Update now starts the new version again. Since 2026.014 the editor closed after installing an update but did not reopen, so the new version waited for you to start it. The fix is in this version, so it is the update after this one that reopens by itself; this one may still need starting by hand.
2026.015 — 2026-10-04
Ids in view, pictures remembered
- Every record shows its id. The record page starts with it, on the class name's line, in a box you can select and copy, and a loadout or multi-mount, which has no name, has it on a line of its own. Used by, the delete and replace-references lists and Check say which id each record has too. The number is called Id everywhere now, where the editor used to say disk id, DiskId and Id for the same thing; the game's own error messages still call it the disk id.
- The pictures file (.rsr) is remembered with the project. Pick one with Load pictures… and the project opens with it from then on; one found beside the database is remembered the same way. The pictures also stay loaded while you move between screens, where before they were gone after a trip to a grid. The status bar says which .rsr was loaded, or that the remembered one is missing.
- The description beside a record's text number is that record's. Stepping from record to record kept showing the first record's text, so one description (often "(Fictional) ABM Bat") appeared on ships that never used it. The numbers were always right; only the words beside them were stale.
- The keyboard lands where the next key is wanted. The Overview's table, a grid's first row (or the record you just left, coming back), Next on a record opened from its grid, the first field on one opened any other way, and the table on Find, Check, Unused, Change history, Compare and Duplicates. After Apply the keyboard moves to Next, and after a delete the grid lands on the row that took the deleted one's place.
2026.014 — 2026-10-03
Updates close the old window
- Update now no longer leaves two editors open. The editor closes first, saving your work and letting go of the database, and the new version then starts on its own. Before, the old window stayed open and the new one opened read-only. The fix is in the version that does the updating, so it takes effect for updates from this version on: updating to 2026.014 itself still shows the two windows once. Close the old one, then reopen the editor.
- Page Up and Page Down scroll the page on the Overview, About and record screens, and Ctrl+Home and Ctrl+End go to the top and bottom, whenever the keyboard is not in a box or list that uses those keys itself.
2026.013 — 2026-10-03
Fits smaller screens
- Works in a smaller window. On a laptop screen, or at 150% to 200% display scaling, toolbars wrap onto a second row instead of running off the edge, record screens drop to one field per row when there is no room for two, and dialogs fit the screen. The editor opens sized to your screen the first time.
- Hide the navigator with Go › Hide navigator (Ctrl+B) for more room; its width and whether it is shown are remembered.
- RCS and source-level lists show when they have the keyboard, so typing a value has a clear target: an accent bar down the left edge, and the selected value highlighted only while the list is in use.
- On a mount, simultaneous targets now comes before tubes per mount.
- From this version on, the update notice fits its buttons ("Skip this version" was cut off), and an update is no longer undone because a different version of the editor was started while it was being tried out. Both arrived in 2026.012 and take effect for the updates after it.
2026.012 — 2026-10-03
The original battlesets export
- Helicopters on helo pads no longer stop the export of GIUK, NACV, MEDC, IOPG and the original USNI. 2026.011 stopped reporting them in Check, but the export still refused them.
- A source level the game cannot hold is a warning below battleset 22, where the game assigns its own, and still stops the export for battleset 22 and higher.
- Find opens the record when there is only one match. Back returns to the search.
- The update notice's buttons fit their captions; "Skip this version" was cut off. You will see the fixed notice from the update after this one, since the notice belongs to the version you are running.
- A safer update. Starting a different version of the editor (an older copy, or a test build) while an update is still being tried out no longer makes the update undo itself.
- Smaller things. Every button and menu item that opens a dialog ends in …, and four more dialogs were checked at 125% and 150% display scaling.
2026.011 — 2026-10-02
Fits scaled displays
- Nothing is cut off on a scaled display. On Windows set to 125%, 150% or more, buttons, fields, lists and dialogs now grow with the text instead of clipping it. At 100% the editor looks as it did.
- Column widths you dragged are remembered the same at any scaling. If you use 150% and had widened columns in 2026.010, they may open wider than you left them once; Settings › View › Reset grid columns puts them back.
- Moving the window to a monitor with different scaling keeps the layout right; Windows may draw the text a little softer there until the editor is restarted on that monitor.
2026.010 — 2026-10-01
The editor is now a native program
- A new program, the same databases. The editor has been rebuilt as a native Windows and Linux program. It no longer runs inside a web view, so it starts faster, scrolls long lists without pausing, and is no longer closed by a background Windows update. Your project files, recent databases, window positions and settings carry over unchanged.
- Everything you used is still there, under menus. Each page of the old editor is a screen in the navigator on the left. Find is on the Go menu (Ctrl+F); Check, Unused records, Duplicate records, Compare, Change history and Release notes are on Tools and reports, with Settings. Undo right after a change is Ctrl+Z. Press ? or open Help › Keyboard shortcuts for the full list.
- Older databases open. Databases of every structure version from 1 to 6 now open, including the database built into a classic battleset such as GIUK or HDSD. Older ones are converted as they are read.
- Exports are version 6 by default, the format the game has read since HC 2023.007. Version 5 is still offered under Settings › Database exports.
- Runway names come from the database. From version 5 on, a database names its own runway types, and the editor now shows and checks those names instead of a fixed list of eight.
- Each database knows which battleset it is for. The Overview says so, and Change target… sets it. Below battleset 22 magazine reload times are in seconds and the game assigns RCS and base source level itself; from 22 on reload times are in minutes. Changing the target converts reload times for you, and one Undo puts them back.
- Export into battleset… (to be confirmed in the game). For a battleset that carries its own database, File › Export into battleset… writes your database into a copy of that battleset and leaves everything else in it exactly as it was. Nothing is overwritten: copy the new file into the game folder under the battleset's own name, keeping the original.
- Export from the Overview. An Export .res… button sits under the database name: the same command as File › Export .res.
- Taking things off a ship. In a sensor, mount or loadout list, Remove (or the Delete key) takes the selected entry off and the ones after it move up. Delete on a magazine's own screen takes it out of its ship's or base's list.
- Put on the mount. A multi-mount holding a single weapon can be folded onto the mounts that carry it, from Check or from the multi-mount's own screen; multi-mounts nothing uses any more are deleted, freeing their slots. A preview comes first and one Undo takes it all back.
- Victory types. Victory type is a dropdown of the database's own names, and the names are edited under Strings: BroadVicType on a version 6 database, VicTypes on an older one.
- Platform descriptions. What the editor called encyclopedia texts are now Platform descriptions, and the field on a ship, sub or aircraft is Description.
- Opening a battleset asks which one it is when its file name does not say, with the likely kind already chosen. Helicopters on helo pads in the original battlesets (GIUK, NACV, MEDC, IOPG and the original USNI) are no longer reported by Check.
- Smaller things. The status line clears when you move to another screen, and the selected entry in the navigator keeps its count readable.
2026.009 — 2026-09-26
Ready for the next desktop editor
- This version can install the next desktop editor when it arrives. The desktop editor is being rebuilt as a native program, which ships as the program plus a few files beside it. Earlier versions can only install a single file, so they would have installed the new program without the files it needs. This one installs every file, keeps the previous copies until the new version has started properly, and puts them back if it does not.
- Take this update before the next one. When the new editor is published, copies that have this version will move to it automatically. A copy that is still older will say there is no update for it, and the new editor can then be downloaded from the product page instead.
- Updates resume and fail more cleanly. An interrupted download now picks up where it stopped, and a download that turns out to be the wrong size is discarded rather than kept and retried forever.
2026.008 — 2026-09-25
The update notice appears on its own
- When a new version is found, the notice now appears on the page you are looking at. The editor checks for updates a little after it starts, and every hour after that. Until now the notice only appeared once you opened another page — so if you sat on one page, you never saw it. It now appears on its own, within about half a minute, with the same Update now, Later and Skip buttons as before.
- Worth knowing if you update from an older copy. The notice that tells you about this version is shown by the version you have now, so it still needs a click to another page to appear. From this version on, it appears by itself.
2026.007 — 2026-09-25
Long lists no longer freeze as you scroll
- Scrolling a long list stays smooth all the way to the end. Lists load a screenful at a time as you scroll, and each screenful used to take a little longer than the one before — so on a slower computer, a list of 1,500 records or more started to pause for half a second or more every time it loaded more, worst of all near the bottom. Each screenful now takes the same short time at the end of the list as at the start. Magazines, the longest list, benefit most.
- Nothing about how the lists work has changed. Ticking rows, select-all, shift-click ranges, Delete selected, Export selected, Clone, Revert on the history page, resizing columns and Ctrl+End all behave as before — including on rows far down the list.
2026.006 — 2026-09-22
Ctrl+End reaches the end of the list
- Ctrl+End goes to the last record, not the last one loaded. Long lists — ships, loadouts, magazines, encyclopedia texts — load a screenful at a time as you scroll, so pressing End used to take you to the bottom of what had arrived, and then more arrived and the bottom moved. Ctrl+End now fetches the rest first and takes you to the real end. On a Mac it is Cmd+↓, since most Mac keyboards have no End key. Press Esc if a very long list is taking longer than you want to wait.
- Ctrl+Home takes you back to the top (Cmd+↑ on a Mac). Both are on the keyboard sheet — press ? on any page.
- If you are updating from 2026.005, this is the first update that restarts the editor by itself. The fix for the Windows error after an update arrived in 2026.005, and the restart is done by the version you are leaving — so this is the update where you should see it work.
2026.005 — 2026-09-18
After an update, the editor comes back on its own
- The restart after an update works. Installing an update said “installed — restarting”, closed the window, and then showed a Windows error about a security validation failure instead of opening again. The update itself was fine every time — downloaded, checked and installed — and starting the editor yourself picked up the new version. It now comes back without being asked.
- Worth knowing if you update from an older copy. The restart is performed by the version you are updating *from*, so the first update onto this one may still need starting by hand. Every update after that restarts on its own. If it happens, nothing is wrong and nothing is lost: the new version is already installed and waiting.
2026.004 — 2026-09-18
Checking for updates always tells you where you stand
- Check for updates now answers the question every time. Press it twice and the second press used to say “no change since the last check”, and About settled into “not modified” — both true statements about our server’s file, and neither an answer to what you asked. It now says either which version is waiting for you or that you have the newest one, however many times you press it.
- A version you were offered no longer goes quiet. If a new release was waiting and you closed the editor without installing it, opening it the next day used to lose the offer altogether — and not just for that day: it would stay lost until we happened to publish something else. The update is still there, so the editor still says so.
2026.003 — 2026-09-17
One less thing on the Check report
- Check no longer reports records that are out of order. That finding arrived in 2026.002, after a database whose annexes were in the wrong order stopped the game loading — and the report was the wrong home for it. The editor puts every annex back into order whenever it writes a .res, so the only thing the finding could ever describe was a file the editor was about to correct on its own. A report that asks you to fix something already being fixed is a report worth ignoring, and none of Check should be that.
- The fix itself is unchanged. Every export still writes each annex in the order the game reads it, including for a database that arrived with the problem already in it — opening such a file and exporting it is still the whole repair.
2026.002 — 2026-09-17
An update now leaves an account of itself
- About carries an Update log. Every step of every update this copy has installed, oldest first — and each step written down before it is attempted rather than after. If an update ever goes wrong, that page is the whole account of what happened: the application replaces itself halfway through the operation, so the copy that would have reported the failure is the one that no longer starts. It is the page to send if you have to report one.
- A version you skipped can still be installed. Skip this version means the version, so a later build of it does not come back as a notice — including the build that fixes whatever you skipped it for. About now names the release you skipped, what it says about itself, which build is on offer and which you are running, with Install it anyway beside it. Until now it simply vanished from every surface the moment you pressed Skip.
- The editor says which build it is when it asks about updates. It was sending the build number on its own instead of with the version in front of it, which could make a release look newer than the copy already running and offer it to you with the whole download attached. Nothing was ever installed wrongly; the offer itself was the error.
- Changing the update channel looks at the new one straight away. It used to write the setting and wait for the next daily check, so switching channel appeared to do nothing for up to a day. Worse, the first check after a switch could be answered “nothing has changed” by the server — a question about the channel you had just left, asked about the one you had just chosen — and the answer was recorded as a healthy check. A release could sit there unmentioned until that channel was next republished.
- A database the editor writes always has its records in the order the game reads them. The game finds a record by searching its annex for the disk id rather than reading the whole list, so a record sitting in the wrong place is one it may not find at all — and it stops loading rather than starting the scenario. Adding a record used to put it at the end of its annex while giving it an id that belonged in the middle, which is exactly that fault. Exporting now writes every annex in order, which also repairs a database that already has the problem: opening it and exporting is the whole fix. Check reports it as well, for a database that arrived from somewhere else.
- The Unused report's last two lists can be cleared from the page as well. Encyclopedia texts and hull-name lists now have tick boxes and a Delete selected… of their own, the way each annex already did. Hull names are simple — a list is filed under a disk id, so removing one leaves every other list where it was. Texts come with something worth knowing first: a text is addressed by its position, so deleting one shifts every later text and the editor repoints the platforms that named them in the same step. That means a batch of deleted texts has to be undone newest first. Ask for an older one back before the ones deleted after it and the editor refuses, rather than putting it back in a place that no longer means what it did.
2026.001 — 2026-09-15
The editor tells you when there is a new version
- The version number now says the year. This release is 2026.001 — the first release of 2026 — where the last was 0.16.4. Every Stratsims and TGP product is moving to the same scheme, so a version tells you when it is from rather than how many times it has been renumbered. Nothing about your databases or project files changes; they are not versioned by this number.
- The editor can check for a new version, once a day, and only after you say yes. It asks once, in a line at the top of the page, and your answer is a setting you can change whenever you like. The check sends the product name, the version and the operating system, and nothing else. It never interrupts: a new version arrives as a line you can leave sitting there, with Install now, Later and Skip this version beside it.
- Every check says what happened, including the ones that fail. About carries a Last check line, and "failed (TLS handshake)" is as much an answer as "you have the newest version". That is the whole difference from an updater whose every failure reads as "you are up to date", which is what the last one did for twelve years.
- Installing is one press and one restart. The download is checked against a signature made by the machine that built it before anything is replaced, the editor closes and saves the way it always does, and the new one starts. If the new one does not start, the old one is put back without being asked. There is a channel setting too — test, beta or stable — for testers who want builds early.
- Unused records can be cleared from the list itself. Each annex on the Unused report has a tick box per record and a Delete selected… under it, which opens the same confirm page the grid's own bulk delete does: what would go, what still points at it, and whether those references are left dangling or blanked first. Opening one record from the list and deleting it returns you to the list rather than to that record's annex grid.
- A mount's Tubes is labelled Tubes per mount. A mount record is one mount and the number of copies of it fitted, so the tube count describes one copy — exactly like Rounds per mount beside it. Check now reports the records where a whole battery's tube count was entered there instead; the stock database has eleven, all of them land batteries, and it is advisory — the game loads them and the export writes them unchanged.
0.16.4 — 2026-09-12
A package will not be built from a database it would misdescribe
- Record packages are refused on an older database instead of being built wrong. A package carries records in the current generation's layout. From a database that is not of that generation — an older file structure, or the four-slot loadouts a Gold-era build wrote — one was produced anyway, quietly, and read back as something else. Export and the package importer are now simply not offered on such a database, with the reason said once on the page, and everything else about it stays editable exactly as before.
- The refusal says which difference is in the way, because the two are not the same problem and neither is yours to guess at. One is about where a platform's country is stored; the other is about how many weapons a loadout holds.
- A current database is untouched. Same buttons, and the package it produces is byte-for-byte what it was before.
0.16.3 — 2026-09-12
The 2003 databases open
- A Harpoon Gold-era database can be opened, edited and exported. Those files were being refused over thousands of weapon references that looked broken and were not. Their loadouts and multi-mounts carry four weapon slots where a modern database carries eight, in records of exactly the same size, so reading one the current way turned the second half of every loadout into nonsense. Nothing in the file says which it is — not even the version, since a 2017 database declares the same one and carries eight — so the editor works it out from the data and keeps the current layout unless the evidence is decisive.
- It tells you when it does that. Opening such a file says so, the change log keeps the evidence it decided on, and the export preflight repeats it beside the download, because that is where the decision turns back into bytes. An ordinary database says nothing, because nothing unusual happened.
- A field's description now sits with the field it describes. It used to sit closer to the next one down, which on a long form meant reading every note against the wrong row. The space moved to between one field and the next instead.
0.16.2 — 2026-09-11
Adding one record after another
- Save · another keeps a run going. Entering a batch of records, press it instead of Save record: the record goes in and the next blank form is already on screen, with the flash still naming what was saved and still offering to undo it. It is on an existing record's page too, so stopping to fix something does not end the run.
- Adding a record says Save record. It said Add to database, which was only ever there to tell it apart from the draft button that no longer exists. Creating and editing are one act and now read as one.
- A section heading counts what is in the section. Sensors, Weapons fit and Magazines each said (1) whether they held nothing or twenty-two, because the number counted the field rather than the entries. They now read (0) when empty and the real number when not, and a section holding a single ordinary field shows no number at all.
- Try exporting again is gone. Every page already carries Export .res in the header, and arriving from the export gate already aims Back at it, so the button was a second or third route to one place.
0.16.1 — 2026-09-10
Every list offers what the record could actually be
- A dropdown no longer offers another kind of record's vocabulary. A submarine's depth offered altitudes up to 20,000 metres and an aircraft's ceiling offered implosion depth, because both read one table that runs from the seabed to the edge of space. Each field now offers its own stretch of it. A submarine's hull form offered carrier decks; it offers Submarine and none.
- A type list leads with the types that kind of record actually uses. A submarine's type list is the ship-type table, 89 entries of which ten are submarines. The ones your database already uses come first, the rest below, read from the database itself rather than assumed. Victory type does the same. Nothing is hidden: a record may always be the first of its kind.
- The guidance under radar cross-section and acoustic source level is written for the annex you are in. It named ships on aircraft, missiles and bases, and submarines on torpedoes. The examples come from the database you have open, as they always did.
- Check reports a coded value nothing can name. A stored value its vocabulary does not contain used to be visible only by opening the record and noticing the word "raw". It is advisory: the game loads these databases, so nothing refuses an export over one.
- Narrowing what is offered never narrowed what can be read. A record holding a value from another part of a table keeps it, named and selected, so saving cannot quietly rewrite what the editor merely disagrees with.
0.16.0 — 2026-09-10
Finish the record on the form you started it on
- A new mount's weapons and a new ship's hull names are set while you are adding it. Both were switched off on the create form and are back: a mount's weapon load is part of adding the mount, and a new ship or sub offers Add and add hull names, which creates it and goes straight to its name list. Neither needs a second trip through the record afterwards.
- A mount will not slip into a multi-mount without telling you. A mount states one weapon's rounds as launchers times rounds per launcher, so a quantity that does not divide evenly has to go in a multi-mount instead. That used to happen silently. Now the save stops, names the quantities that would fit on the mount itself, and offers a button to store it as a multi-mount anyway. A mount with no launchers refuses outright and says to set them first, because no quantity can ever fit.
- Shift-click ticks a run of rows. On every grid with checkboxes: the annex grids, the Check worklists, and the page that stores loads back on their mounts. Click the first row, shift-click the last. It clears a run the same way.
- The store-loads-on-their-mounts page groups by weapon. The rows worth taking together are the ones carrying the same thing; the annex's own order is one link away.
- The editor has a page of its own at stratsims.com/hcpe, and the documentation has a guide for anyone coming from the MS-Access Platform Editor.
0.15.10 — 2026-09-10
Add to database, and nothing else
- Drafts are gone. 0.15.8 introduced a staging area: Add made a draft, and a second step merged it into the database. A draft already owned a real disk id and could be referenced, so it was a hidden record rather than a lighter one, and hidden turned out to be the problem — it needed an export refusal, a close prompt, a list page and a second undo rule. All of that is removed.
- Add opens a blank form and commits nothing. That part stays, because it is what stopped Add from leaving nameless records behind. The form has one button, Add to database: it creates the record, logs a plain create, and lands on it with Undo. A record needs a name to be added; leave the page and nothing happened.
- A project file saved by 0.15.8 or 0.15.9 still opens. Any drafts it holds are dropped on load, since they were never in the database. Add them again if you want them.
- The web build's header button says Save to browser. It keeps a copy of the open database in this browser, which is what it always did; the old label, Save draft, now read as something else.
0.15.9 — 2026-09-10
The button that was missing
- Staged records can be added to the database from the editor. 0.15.8 built staging without the one button that finishes it: there was no way to merge a staged record except by knowing the URL. There are two now — Add to database on the staged record's own page, where you are when you have just written it, and Add N to database on the staging list, where you go when you have several. Rows there start ticked; untick whatever is not ready.
- Undoing one no longer calls it an import. The confirmation said "Undo this import?" for a staged merge, which named something that never happened. It says what it will do: put the records back into staging.
0.15.8 — 2026-09-10
Nothing is added until you say so
- A new record is not in the database until you save it. Add used to create the record the moment you pressed it, so wandering off left a nameless one behind. Now Add opens a blank form and commits nothing — the record joins the database when you merge it, and walking away costs nothing. Staged records are kept in the project file, so they survive closing the editor, and the desktop asks about them before it exits.
- You can build a ship and the mounts it needs together. Staged records already own their id, so they can point at each other, and an existing record can point at one too — the pickers offer them, marked (staged). Merging puts the whole set in at once, and undoing a merge puts it back into staging rather than throwing it away.
- Exporting a .res refuses while anything is staged, because a file written then would be missing those records — and saving one cuts a release, which would be missing them too. The export page links to the staged list so you can merge or discard and come straight back. Export .hcpe.json is never gated: it saves the staged work along with everything else.
- Keyboard: Ctrl+Alt+S saves, Ctrl+Alt+N adds, Ctrl+Alt+B goes back (Cmd+Alt on a Mac). All three work with the cursor still in a box, which is where it usually is on a record page. Ctrl+S no longer saves.
- Undoing an Add no longer breaks what pointed at the record. Undoing the creation of a record that something else already references is now refused, and the refusal names what still points at it so you can re-point or remove that first. Before, the record simply went, and the reference was left naming nothing — Check would report it later, but nothing said so at the time. Same for undoing a Clone, and for a weapon stocked in a magazine.
- The editor can reopen its own exports. A .res saved under either of the two dated naming schemes — HCDB-250724.res, HCDB.res — could not be opened again, and failed with a message about a resource being 42 bytes. The container's internal layout was being decided by the file's *name*, and only a file called commondb.res was read the right way. The name is still the first guess; when it is wrong, the file itself now settles it. Nothing that opened before opens differently. Comparing against a renamed release works for the same reason, and no longer asks you to rename it back.
- A compressed database can be saved. Some older databases store their contents compressed, in a form this editor reads but cannot write. Until now that made them read-only. They are now saved uncompressed instead, which the game reads perfectly well — every database it ships with is uncompressed. The file comes out noticeably larger than the one you opened, and the export page says so before you save.
0.15.7 — 2026-09-08
The manual has an address
- About links to the documentation. The site 0.15.6 announced is now up at stratsims.com/hcpe/docs — every annex and every field, what each one means and what values it will take, plus guides to getting started, the tools, settings and releases. The About page points at it.
0.15.6 — 2026-09-08
A manual, and a way to clear a worklist
- There is a documentation site. Every annex, every field, what each one means and what values it will take — plus guides to getting started, the tools, settings and releases, with screenshots and short narrated clips taken from the editor itself. It is generated from the codebase, so it cannot quietly go stale. The address will follow; the About page will link to it once it has one.
- A record cannot be saved without a name. Emptying a class name and pressing Save is now refused, with the message on the field itself. Check reports the nameless records you already have, under a new advisory heading — nothing shipped is nameless, so every one it finds was made in the editor.
- Delete a whole selection at once. Beside Set field… and Replace references… on the grid toolbar — and on the Check worklists, which is where a sweep of records nobody wants usually starts. It opens a confirmation page first, listing what would go and everything still pointing at it, and offers to blank those references to 65535 before the records leave. Each deletion is logged on its own, so the change log undoes them one record at a time.
0.15.5 — 2026-09-07
The release is what you shipped
- Exporting a .res is what makes a release. Save the file and everything since the last one you saved becomes a release, named by the database's own name stamp at the time. Restamp that name when you start a new build, the way you already do, and the change log groups itself. There is nothing to tick and nothing to close. The export page says what it is about to release before you save.
- Test builds cost nothing. Export the same name twice and it stays one release covering both. Restamp the name without exporting and nothing is released, because nothing shipped. Whichever order you restamp and export in, the changes land under the name they actually went out with.
- Write one post covering several builds. The release notes page takes a range: from one release through another, or through the changes you have not shipped yet. Each release keeps its own section, or you can combine the range into a single list of what changed on balance. The markdown, the download and the record package all follow the same range, so they cannot disagree about what a post covers. The page leads with the post itself, so you can copy it and go.
- A post reads like something you would write by hand. Every line names what kind of thing it is and how to find it — "Radar id 40960 · Type 346A SAPARS" — grouped into platforms, weapons, sensors and mounts. A changed record says how many fields moved rather than reciting all of them, and a mount, weapon or sensor says which of the platforms you also changed it is for.
- Records you cannot name stay out of the post. A blank record told a reader nothing, so it is left out, and the page quietly tells you how many so you can go and name them. They still travel in the record package, because a record with no name is still a record. A record you deleted after shipping it is still named in the release that shipped it, from the change log rather than from a database it has left.
- The change log downloads as a spreadsheet. One row per field changed, with who, when, the record, the field and its before and after — so it sorts by record, filters to one field and counts by author. It follows whatever filters you have set on the page.
- The "and mark a release" checkbox beside Rename is gone; renaming the database is just renaming it again. A saved .res records which database version it was, so one exported under the plain commondb.res name still says which build it came from. Release marks made with earlier versions carry over; nothing in an existing project file needs converting.
0.15.4 — 2026-09-03
You name the .res
- You choose what an exported .res is called. Settings now offers three naming schemes, each shown with the name it would actually produce for the database you have open. The default is unchanged — the database’s own name, HCDB-250724.res — and the others are: commondb.res, which the game picks up on its own (any name works if a launcher passes it with -d); and the name without its date, HCDB.res, for one file per database rather than one per build. It is a default only: every save still lets you change the name before writing it.
- The project file keeps the database’s name whichever you pick. It is the half you keep — the one carrying the change history, the authorship and the record ids — so sending a .res out as commondb.res does not leave you with a commondb.hcpe.json whose whole purpose was to tell you which database it is.
- The libraries underneath are current again. One of them moved. Nothing about using the editor changes; the acknowledgements page lists what ships inside the build and has been rebuilt to match.
0.15.3 — 2026-09-03
A database goes by its own name
- A renamed database is renamed everywhere. The name a database carries for itself — the one Rename database sets — is now the name it goes by: at the top of every page, on the Export .res page, and as the file name every export offers. Rename HCDB to HCDB2-2026 and the next .res you save is HCDB2-2026.res, with the project file beside it matching. Until now all of that followed whatever file the database happened to be opened from, so a renamed database still exported as commondb.res and you had to remember to retype it.
- Save · next is gone. The record page had two save buttons side by side, and the difference between them was where you ended up rather than what was saved — which is a lot to ask of two words on a button you press all day. Save record is the only one now. The → arrow beside it still walks the list you were reading, in the order you were reading it, so saving and moving on is the same two clicks it always was.
0.15.2 — 2026-09-01
A clean cut
- Nothing in the editor changed. This is 0.15.1 rebuilt and re-tagged, so the version on the About page, the tag in the repository and the executable you are holding are all the same one. Everything 0.15.1 lists is in it.
0.15.1 — 2026-09-01
One window per database
- The libraries underneath are current again. Four of them moved. Nothing about using the editor changes; the acknowledgements page lists what ships inside the build and has been rebuilt to match — one entry left it, because the library that used to pull it in no longer does.
- A shortcut can name the database it opens. Point one at
hcpe.exe "D:\HC\HCDB2.hcpe.json"and it opens that database, whatever you had open last. A .res works the same way, and is loaded without becoming the working file — Save still asks where the project should live. A shortcut whose database has since moved falls back to the ordinary launch rather than opening nothing. - And two of them can be open at once. Each window now takes a port of its own instead of all of them wanting the same one. Before this, a second window came up blank and stayed blank, with nothing anywhere to say why. Gold on one screen and HCDB2 on the other is an ordinary thing to do now.
- Each database remembers its own window. Position and size are filed per database rather than shared, so two shortcuts settle into two places instead of fighting over one. A database opened for the first time inherits the shape you have been working at.
- And the same project opened twice is read-only the second time. If a second window lands on a project file the first one already has, it opens read-only and says so on every page, naming the window that has it — rather than the two taking turns overwriting each other with nothing on screen to show for it. Everything you opened it to look at is there: every grid, every record, Find, Check, the reports. Only the editing is off, and Save is still how you keep a copy of your own. Claimed with a lock the operating system releases whatever way the window ends, so a window that is killed never locks you out of your own database afterwards.
- And what two windows remember no longer depends on which one you closed first. Everything the editor keeps between launches — the last project, the recent list, each database’s window — lives in one small file, and two windows closing together both wrote it. The later write put back what it had read before the earlier one landed, so one window’s position, or a recent entry, would simply be gone. They take turns now, and the file is replaced rather than rewritten in place, so a window that is killed mid-write leaves the previous state instead of half of the new one.
- The window opens where you left it. Size and position are remembered between launches instead of the window landing wherever Windows felt like putting it. A remembered spot is checked before it is used: if the monitor it was on is gone, or it would come back mostly off the edge of the screen, the size is kept and the window is re-centred rather than opening somewhere you cannot reach it. A window bigger than the screen it is opening on is trimmed to fit, and a first launch is centred on the main display.
- A linked commondb.rsr stays linked between launches. Picking a picture file by hand recorded where it was, faithfully, and then never looked at what it recorded unless the project also remembered which folder its .res came from — which a database opened through the import form never does. So the pictures came back only for some projects, and the rest asked again every launch. The remembered file is now consulted first, always.
- And a record says pictures exist even before you have any. A ship’s, sub’s or plane’s picture number used to be a bare box until a .rsr was loaded, so the visual picker was invisible to anyone who had not already found it on the overview. Choose… is on the record now either way: with no file linked it offers to link one, and comes straight back to the record you were editing with the thumbnails ready.
- A radar’s ECCM rating has left the page. The game does not read it, and no database ever set it — it is zero in all 3,001 radars of every shipped database, across both generations and four releases. A box you could type a number into implied otherwise. The value is still carried through a save untouched; Max range and Detection chance, which do mean something, stay where they were on the record and in the radar list.
0.15.0 — 2026-08-25
HCDB2 opens
- The editor reads and writes the older database generation. Until now it opened one kind of file — database file structure version 5 — and refused every other with a message about misreading. HCDB2 is version 2, and so are the databases in the HC20 sets. They open now: every grid, every record page, Find, Check database, Unused records, Duplicate records, Compare, the encyclopedia texts and the hull names. An uncompressed version-2 database — which is what HCDB2 is — is fully editable and exports byte for byte identical to what it read.
- The 2003-era sets stay read-only, for their compression rather than their age. The databases in the HC20 autorun sets store their contents LZH-compressed. This editor can unpack that but cannot produce it, so a .res written from one would claim a compression its bytes do not have and the game would refuse it. They open and read fine; the export says exactly that, and the editing verbs are off rather than half-on.
- What changed underneath, in case it matters to you. The two generations differ in less than the old refusal implied: every record is the same size in both, and the country a ship flies is stored in a different byte. Where they differ is the string tables — an older database holds 128 country names of 16 characters where a newer one holds 1,024 of 32 — so the editor now reads and writes each table at its own database's widths. A project file records which generation it came from, and the editor refuses to save a file that would claim to be a generation it is not.
- Saving a .res now offers to keep the project file with it. The .res is what the game reads, and it is the half that cannot carry the change history, who edited what, or the record ids. Export one and the editor offers to save the .hcpe.json beside it, named after the database so the pair stays identifiable on disk. Declining is a real answer and the .res stays saved; Settings turns the offer off.
- A mount holds its own rounds again. Raising the quantity of a mount's only weapon used to turn the load into a multi-mount record, which is not how the shipped databases store it: 1,165 of the 1,357 loaded mounts hold one weapon and many rounds on the mount itself. Now so does the editor, and a multi-mount appears only when one is genuinely needed — a second weapon, or a round count the launchers cannot divide evenly (four of them can hold 4, 8 or 12 rounds of one weapon and not 7). Rounds/mount has left the mount form: the load's Qty is that number now, asked for whole, and it shows what the mount really carries rather than a flat 1.
- And Check will help you clear the multi-mounts left over from the old rule. A database edited before this change carries multi-mounts holding one weapon that its own mount could hold instead — nine of them in the shipped database. Check now names them, with the mount that could take each load back, and offers to store them all in one pass with every mount previewed first. Nothing is converted on an ordinary save, and nothing is deleted: a multi-mount left carrying nothing appears in Unused records, where removing it stays a separate and deliberate act.
- The libraries underneath are current again. Twenty-two of them moved, including the web framework the editor is built on and the packager that makes the .exe. Nothing about using the editor changes; the acknowledgements page lists what ships inside the build, and it has been rebuilt to match.
- Record packages stay a version-5 exchange. A country number means a different country in the two generations, so moving a record between them needs a translation that has not been designed yet. Exporting or importing a package on a version-2 database says so rather than quietly producing a record that would land on the wrong flag.
0.14.6 — 2026-08-24
Back walks the whole way out, a step at a time
- Leaving the export screen to check something comes back to it. Following Check database — or Unused records — from the preflight used to leave you on the overview when you clicked Back, in the middle of an export. Both now return to the preflight.
- And the step after that, and the one after that. The way back is now a chain rather than a single step: from the export screen to Unused records to the missile nothing carries, Back returns to Unused records and then to the export screen, instead of dropping you at the overview two steps early. It remembers three steps — enough for any real path, and bounded so a long wander cannot grow the address bar without limit. Past that it forgets where it started rather than where you just were.
- Two more places that lost the thread. A Check worklist now returns to the report as you had it filtered (or to the export screen, if that is what opened it), and the change log opened from a record's own history returns to that record. Reports reached on their own still back out to the overview, as before.
0.14.5 — 2026-08-24
Back remembers the list you were working through
- A report is a place you were. Open a record from Check database, Unused records, Find, the near-duplicate report, a comparison or the export preflight, and Back now returns to that list — narrowed to the annex you had filtered it to, with the cap you had lifted — instead of dropping you on the record's own annex grid. Saving keeps it too, so fixing a list of findings is fix, Back, fix, Back rather than a walk back through the overview each time. The same goes for the used-by list on an encyclopedia text or a hull-name class: the platform it opens comes back to it.
0.14.4 — 2026-08-24
The middle widths get a seat, and the form speaks up before you save
- Half-a-screen is now a first-class window. Between tablet width and full desktop the header used to force the whole page to scroll sideways, toolbars crushed their hints, and the picture picker could open off the edge of the window. The header now wraps, forms and toolbars reflow below 900 pixels (narrower labels, full-width widgets), the overview and comparison tables scroll in place, and the grids keep every column — horizontal scrolling inside the grid is the honest answer for tables, so that stays.
- The form warns while you type, in the same words the save would use. The damage-point trap is named the moment you cross it: above 30,000 a Dp value stops being damage and becomes a reference to a nuke or torpedo, and the field now says so live — naming the record it points at, or warning when it points at nothing. An id slot tells you on the way out when the id names no record its annexes accept. And an out-of-range number reports the same field-language message the refused save would have shown, before you submit. All of it judged from data already on the page — the save itself checks exactly what it always did.
0.14.3 — 2026-08-23
What the export gate finds, you can now fix in bulk — and a mistaken save is one click from undone
- The fix-it loop is closed. Bulk set-field learned flag fields (set, clear, or leave each named bit — firing arcs and deck positions included) and single id-reference fields, with id lists honestly signposted to their real verb: "Replace references…", which now works from a grid or worklist selection — pick the id to replace (a broken one offers itself first, with the reason), pick the replacement, preview the blast radius, choose selection-only or the whole database. The export page links each blocking group straight to its worklist, and Check offers "Try exporting again" when you came from the gate.
- Saved by mistake? Undo is in the toast. A successful save now offers Undo right in the confirmation flash — one click, driving the same guarded revert as always, and the offer dies with the flash rather than lingering on reloads. New records also stop arriving as lint reports: Add starts each annex from a small starter stub (a plausible reach, a real runway class) instead of all zeros.
- Press ? for the keyboard. A cheat sheet of every shortcut, overlay on any page and a page of its own under About — generated from one verified inventory so it cannot drift from the code. Find-and-replace's refused rows can now be shortened and re-previewed right on the page, and the web landing page quietly recalls the names of files you've imported before.
0.14.2 — 2026-08-23
The arrow keys walk the list
- Left and Right step between entries. On the record, encyclopedia-text and ship-name editors, plain ←/→ move to the previous or next entry in the filtered order — until focus is in a field, where the arrows keep steering the caret as they always have. [ and ] still work, and Ctrl+Alt+←/→ still navigates even mid-edit.
0.14.1 — 2026-08-23
Export checks before it ships, your other database is one click away, and Check findings become things you can act on
- A broken database can no longer export silently. Exporting a .res now passes through a preflight: the blocking checks run first, and a reference the game would crash on stops the export with the findings listed and linked. A clean database is one extra click. Shapes the shipped databases themselves carry — a zeroed slot, one dangling warhead pointer — are tolerated but counted, never hidden. The desktop's native Save runs the very same gate, re-checked at the moment of saving; exporting the .hcpe.json project is never gated. Check also learned to spot multi-mounts the mount editor would never have written.
- The app remembers where your databases live. On desktop, the landing page lists your recent projects — and switching to one while another is open is a single click, through the same autosave guard as ever, so the outgoing project's changes reach its working file first. The web build shows no server paths, deliberately.
- Check findings feed the tools that fix them. Every finding family offers "open as a grid": the flagged records land on the query grid with the selection live, so export, bulk set-field and repoint act on exactly that set. Where the fix is one field — a zero-reach weapon, a plane without a runway — the fix is offered directly, pre-filled into the bulk flow.
- The prose editors got what records got. The encyclopedia editor gained a live wrap preview — at a column width of your choosing, because the game pins no width and the page says so honestly — with warnings for what the format does pin: the size cap, line breaks the original editor always scrubbed, words too long to wrap. And find-and-replace works across the whole text pool and the vocabulary tables: every hit previewed in context, a replacement that would overflow its slot refused rather than truncated, the whole batch applied as one revertable change. Building that surfaced a real bug: reverting any vocabulary-table change used to be refused outright; it reverts now.
0.14.0 — 2026-08-22
The editing loop grows up: saves that forgive, grids that answer questions, selections that act, and undo that comes to you
- A save that fails no longer throws away the form. Trip a validation error — a number outside its range, a name too long — and the page used to redirect back with a message naming the on-disk field, everything you had typed gone. It now re-renders the form as it stood, with every value still in its box, the field that failed outlined and scrolled into view, and the message in the same words the form uses. The same treatment reaches the string table, encyclopedia texts and hull-name lists, not just records.
- A draft survives a submit, and Restore means restore. The recovery banner's Restore button used to post the recovered draft straight to the server as a save; it now puts the values back in the form for you to look over first. Any draft-backed form — records, string tables included — now warns before you navigate away or close the tab with unsaved changes sitting in it.
- The record form has chapters. A ship's fields used to be one long, unsectioned list — identity, armor, sensors and magazines run together with nothing but source order between them. Each annex now groups its fields under headings, collapsible and remembered between visits, with a jump list in the sticky header. A section holding a field that failed validation opens by itself, so scroll-to-error still works.
- Grids sort, filter by name, and export what actually matches. Click a column header to sort by it. A name filter sits beside the country/type selects for narrowing the grid itself, separate from the header's global Find. Select-all now means everything matching the current filter, fetched server-side, not only the rows that happened to be scrolled into view. And a row is a real link — middle-click, open-in-new-tab and keyboard navigation all work — while the whole row is still one big click target.
- The app says when it's working, and when something failed. Importing a database and saving a record now show a busy veil instead of going quiet for however long the operation takes. A background fetch that fails — the next chunk of a long grid, the values behind a Back-restore, a history entry's detail — gets a visible failure and a Retry instead of doing nothing. Flash messages fade out on success, take a dismiss control on everything else, and a refresh no longer replays "Saved" forever.
- Coordinates read and write in whichever of the four conventions you use. The latitude/longitude field now parses signed or cardinal, decimal degrees or degrees-minutes-seconds — "-33.865", "33.865S", "-33°51′54″", "33°51′54″S" all land on the same position — and remembers which one you want to see. A small offline map of the continents, drawn in the Equal Earth projection, shows the record's position as a crosshair that follows the boxes as you type. Nothing about what is stored on disk changes; this is display and entry only.
- Deleting a record with referrers can repoint them first. The confirm page can now hand every mount, loadout or magazine line that pointed at the record over to a same-annex replacement — or to none at all — before the record goes, with the blast radius previewed up front and every repoint logged the way a duplicate merge logs its own (the two now share the same machinery). Deleting outright, with nothing repointed, is still there as a choice.
- A Tools menu. Check, Unused, Duplicates, Compare, History and Release notes are one click from the header on every page, not only from the overview.
- List pages catch up to the grids. Encyclopedia texts and ship-name classes gained the sticky head, Back button and facet filters the annex grids already had. Every "…and N more" truncation — used-by, unused, delete previews — gained a "show all" that lifts the cap without losing your place.
- Saving a record and returning to its grid no longer forgets the sort order or name filter you had set — Back now restores the list exactly as you left it.
- Fifty ships change in one action. The grid's selection — or "everything matching this filter" — can now set a field across every record in it, with a per-record from → to preview, one change-log batch, and a polite refusal if the database changed underneath. References repoint in bulk the same way ("replace every use of A with B") without deleting anything. The record page itself gained Save and next, its own Clone, and an obvious discard for a freshly added record.
- Two tabs can no longer quietly overwrite each other. Every save — records, string table, texts, hull names — now refuses when the database changed underneath it, handing the form back with your values intact to re-affirm. Opening a different file warns when unexported changes would be lost, the header counts unexported changes, and a web session pings while its tab is open instead of expiring mid-thought — with a warning before an idle one is let go.
- Save keeps your place. Saving a record used to land you back at the top of the form; the scroll position and open sections now survive the round trip. Ctrl+S saves, Esc closes the Tools menu, the id-picker speaks to screen readers, and the tab order lost its traps.
- Compare becomes a worklist. The uploaded baseline is kept, so fixing the first difference no longer invalidates the rest — Re-compare is one click from any compare page. Rows take a reviewed tick that survives a re-compare, and the release-notes page can package everything changed since a release mark.
- The grid answers questions about values. Ask an annex for range over 200, or everything that references a given sensor in any slot, or records with no picture — the answer is a live grid whose selection, export and bulk actions all act on exactly the matching set. Columns of your choosing can be added to any annex grid, sorted like the built-ins, and remembered.
- Undo comes to you. The record page's own history entries take Revert buttons, "revert to before this" rolls a run of saves back as one previewed action, and reverting returns you to where you were standing rather than to the history page.
- Check reads the data's own rules. A new advisory tier joins the blocking checks: magazine lines that break contiguity, a nearly-full pool, duplicate disk ids, hull-name classes with no owner, dangling encyclopedia text, weapons with no reach — tuned against real databases so it flags the genuinely broken, not the merely unusual. Findings come grouped by family, with per-annex filters.
- Duplicates sees near-misses. Beyond exact matches: the same name up to case, spacing and a trailing " copy", and records identical in nearly every field — including pairs that differ only in Side or Country, flagged as variants rather than accused. Each group feeds the existing guided merge.
- No editor left behind. Encyclopedia texts and hull-name classes walk with prev/next (and the [ ] keys) through the filtered order, the way records do. The string table gained a filter, jump-to-slot, and used-by answers.
- Small consistency debts, paid: the compare grids' rows became real links like everywhere else, the delete confirm page gained the sticky-head chrome, and Settings can reset the remembered local preferences (collapsed sections, coordinate format, column widths).
0.13.0 — 2026-08-11
What changed between two databases
- Compare against another database. Hand the editor a second
commondb.resand it says what is different about the one you have open: which records were added, which were removed, and for every record that changed, which fields changed and from what to what. The release notes page can only describe edits made *here* — it reads this project's own change log — so a database that arrived as a file used to be a closed book. Find it on the overview, beside Duplicates and Unused. - Read in the vocabulary you edit in. A change reads "Propulsion 68 (Diesel) → 71 (Gas Turbine)", not "68 → 71", and each side is named against its *own* database — so a country index that means Egypt in one file and Ecuador in the other says both, rather than showing you 23 → 23. Magazines are compared as part of the ship that owns them.
- A reassigned disk id is one record, not two. Renumbering a record would otherwise read as a deletion plus an unrelated addition; leftover additions and removals whose content matches exactly are paired up and reported as *old id → new id*.
- Open one outcome at a time. Every count on the summary is a link, and each annex has filter buttons — 1,994 changed ships without wading through 68 removed ones first.
- The other database is never yours. It is read, compared and dropped: nothing of it enters your project, is saved to your
.hcpe.json, or reaches an export. Edit something afterwards and the comparison says it is out of date rather than quietly describing a database that no longer exists. - The overview says what each link is. "Other data" had grown into a drawer holding both — the parts of the database you edit, and the screens that examine it. Encyclopedia texts, ship-name classes, change history and the string tables stay under Other data; Check, Unused, Duplicates, Compare and Release notes are now Reports, which is what they have in common: each reads the whole database, and none of them changes it.
- Ctrl+F goes to the find box. From any page and from inside any field, the cursor lands in the header's search with whatever was there already selected, so you can just type. It takes the shortcut off the browser's own find-in-page deliberately: searching the fifty rows that happen to be on screen is almost never what "find" means in a database of twenty-one thousand records.
- Legacy battleset files can be read. The compression the older
.resand.rsrfiles use (everything before commondb — their text, map and ship-name resources) is now decoded. Nothing in the editor's own import path needed it, since commondb stores those uncompressed; this is the groundwork for reading the older databases at all. Every compressed resource in an installed game's battlesets decodes to exactly the size its header declares.
0.12.9 — 2026-08-10
Walk the list without going back to it
- Previous and Next on every record page. Comparing eight frigates used to mean eight trips back to the grid. Now the arrows beside Save step straight to the record before or after this one, with a counter between them — "13 of 1994" — so you can see where you are in the list and when you have reached its end. The ends stop rather than wrap.
- The walk respects your filter. Step through a list filtered to China and you visit Chinese ships only, all the way along; the counter reads that set's size, not the whole annex. Change the country of the ship you are standing on and the walk still knows where to go next.
- Keyboard:
[and]while you are not typing in a field, or Ctrl+Alt+← and Ctrl+Alt+→ from anywhere, including mid-edit. Anything you have typed and not saved is still waiting for you when you come back to the record. - Name boxes stop at the length that fits. A class name has room for a fixed number of characters, and the box now knows it — you are stopped at the limit rather than told about it after saving. Overrun one anyway (by pasting, say) and the refusal names the field you know — "Class name: 53 characters, but only 48 fit" — instead of quoting the database's own field width back at you.
- A dash pasted out of a word processor now explains itself. The database stores only the latin-1 characters, so a curly quote or an em dash cannot go in it. Saying so used to mean a line of Python about codecs and ordinals; now it names the character, says where it is, and tells you the plain one to use instead. Same for the string tables, where the message also says which row.
- Number boxes know their own range. Each one carries the limit of the field behind it — 0 to 255 for a speed, 0 to 65535 for a disk id — so the spinner stops where the value would stop being storable. Go past it anyway and the refusal names the field the way the page does: "Max speed: 256 is outside 0..255".
- A cleared number box is refused, not read as zero. Emptying a field and saving used to produce a line of Python about literals and bases; worse, the obvious alternative would have quietly written 0 into a ship's speed. It now says "Max speed: needs a number" and changes nothing. Typing words, or a fraction where only whole numbers fit, gets an answer in the same plain terms.
- Ranges typed in miles are bounded in miles, on the box as well as in the message — a range spinner stops at 6553.5 nm, a rating at 25.5, a seeker range at 21370 yd — rather than quoting the tenths the database actually stores. And the comma-separated lists now check each entry against the field, which was the last place a too-large number could get in and wait to fail at export.
- The duplicate scan itself is about four times faster. Counting what points at each candidate used to re-read the whole database once per candidate; it now answers for all of them in a single pass. The report falls from about two and a half seconds to just over half a second, and committing a merge from four and a half to under one and a half — which is the case no amount of remembering could help, since a merge changes the very thing being remembered.
- And they only think once. The duplicate scan is now kept until you actually change something, so the report is built one time and every screen after it is immediate: opening a group, trying a different survivor, cancelling back to the list. What took two and a half seconds a click now takes a hundredth of a second. Editing anything throws the answer away, as it must — and committing a merge still works the question out afresh rather than trusting what was on screen.
- The duplicates screens say when they are thinking. Scanning the whole database takes a few seconds, and until now a click produced nothing at all until the next page appeared — which looks exactly like a hang. Leaving for one of those screens now raises a message saying what is being worked out. It waits a moment first, so a quick answer never flashes it.
- Click a unit picture to see it properly. The art is 320 pixels wide and the preview beside the field shows it smaller than that, so the picture was the one thing on the page you could not actually look at. Clicking it opens the image at double size, with a slider from 1× — its true pixels — up to 4×, and its native dimensions written beside it. Nothing is smoothed at any size: these are 8-bit paintings, and blurring them to fill the space would hide the very detail worth enlarging. Escape or a click outside closes it.
- The desktop build saves as you go. The working file is written every minute you have changed something, not only when you close the window. Until now an afternoon's editing rode on the shutdown being orderly — and it isn't always: when Windows updates the web view component underneath a running app, the window disappears on the next click, with nothing in any log to say why.
- That disappearance is now caught rather than fatal. The desktop build watches the web view's own processes; if one dies it saves your work first, reloads the page when the page is what died, and writes a line to desktop.log in the same folder as your settings — so the next "it just vanished" has an answer waiting instead of no evidence at all.
- The merge pages have a Back button beside their heading. Cancel only ever appeared next to the Merge button, so a group whose other copies had already gone offered no way out at all.
0.12.8 — 2026-08-10
Deleting a ship no longer leaves its magazines behind
- A deleted platform's magazine rows are now released. Deleting a ship or base has always left its weapon stocks sitting in the shared magazine pool — referenced by nothing, counting against the pool's hard ceiling, and carried into every export. The delete now returns those rows to the pool, the confirm page says how many, and undoing the delete puts them back exactly as they were. Deletes made before this release still undo the way they always did.
- The desktop build remembers where your pictures are. Loading a .rsr by hand — the one-time step for a project that predates the pictures feature — now uses a proper file dialog and records the choice, so every later launch loads the art by itself. Pick it once, see your ships forever.
- The "and mark a release" checkbox next to Rename is legible again — a style rule meant for the name box was stretching the checkbox and stranding its words in the middle of nowhere.
0.12.7 — 2026-08-10
Release notes that write themselves
- Release notes, from the overview: the post a database maintainer writes by hand every release — "Added: BBGN Alaska. Updated: SSN Los Angeles (Max speed 33 → 35). Removed: …" — generated from the editor's own change log, in the words a player reads: type and class name, renames noted, a shared radar's change said once rather than under every ship that carries it. Rendered on the page, one click to copy the markdown, or download it as a file named for your database.
- Mark a release with one click — on its own, or as a checkbox when you rename the database — and the next set of notes starts from that line. No mark yet? Pick a date, or take the whole history.
- The arithmetic is honest: an edit made and unmade says nothing, a record created and deleted inside the window never appears, and an undo reads as what it undid.
0.12.6 — 2026-08-10
Share a fleet, not one ship at a time
- Export several records as one package. The annex grids gain a checkbox per row and an Export selected button: pick a class family or a whole air wing and one file carries them all, each with its full chain — shared mounts and weapons packed once, not once per ship. Importing shows every bundled record up front, and the report links each one.
- Nothing changes for a single record: the record page's Export produces exactly the file it always did, and older packages import exactly as before.
0.12.5 — 2026-08-10
Importing a package is no longer a one-way door
- Undo an import. The change log's entry for a package import now offers Revert like any other: one action removes every record, text and hull-name list the import created, puts back any hull-name choice it applied, and drops the history that rode along — leaving the database byte-for-byte as it was. Try a contribution, look it over, back out.
- It refuses rather than guesses: if you have edited anything the import created, or something newer now references it, or a later import overlaps it, the button greys out and the tooltip says exactly why. Imports made before this release carry no undo inventory and say so honestly.
0.12.4 — 2026-08-10
The editor shows you the ship
- Ship pictures. Open the companion commondb.rsr — the desktop build finds it by itself next to the .res; the web build takes it as an optional second file — and every ship, submarine and aircraft page shows its picture. The Picture field, until now a bare number you typed and hoped about, gains a Choose… gallery of every picture in the file.
- The art is display-only: nothing about your database or its exports changes with or without the pictures loaded, and the .rsr itself is never modified. An index pointing at no picture says so instead of breaking — and index 0 turns out to be the game's own "No Picture Available" placeholder, which now renders as exactly that.
0.12.3 — 2026-08-10
Find the doubles, keep one, everything re-points
- Duplicate records, from the overview: every group of records whose content is identical — same fields, different numbers — and the duplicated encyclopedia texts, each with how much of the database leans on it. Same test of sameness the package import uses, so the two can never disagree about what counts as a copy. The shipped database has nine record groups and three doubled texts.
- Merging is guided, one group at a time. Pick the survivor — the most-referenced copy is suggested — and the page shows the whole blast radius before anything happens: every mount, loadout, magazine line and warhead reference that will move, then the copies that will go. Every step lands in the change log as an ordinary edit, so undoing a merge is the Revert you already have.
- The "with history" choice moved to Settings. It sat next to Export on every record page, a per-person preference dressed as a per-click question. It is one now: set once, kept per person, and Export is just a button again.
0.12.2 — 2026-08-10
A record's history travels with it, and a package says who sent it
- Exporting a record now ships its change history — every logged edit to the record and to everything it references, the same chain the package already carries. On by default, with a "with history" checkbox on Export to leave it behind: history names who edited what and when, which is the point on a shared database and a disclosure everywhere else, so the sender chooses knowingly and the import preview tells the recipient how many entries came along.
- Imported history stays someone else's history. It appears on the record's own page under the database it came from — author shown, unverified when nothing authenticated the name — and never mixes into your change log, which keeps meaning what happened *here*. Importing the same package twice adds nothing.
- Some of it you can undo. An imported edit whose values all translate into your database — "damage was 250 before Tony raised it to 273" — offers Revert, right there on the record, and the undo is logged in your own change log, naming where the entry came from. One that names things the package did not carry says so instead of guessing, and creations and deletions from elsewhere are never replayed here.
- The change-history page can show the imported entries too — an "imported" toggle in its filter row, off by default, listing them grouped under the database each batch came from rather than shuffled in among your own edits.
- An exported package also carries your name. It already said which database it came from and when; it now says who, resolved exactly the way the change log resolves the author of an edit — so the import preview can show it before anything is written. A name nothing authenticated is marked unverified there, the same as in the header, because a package arriving from somewhere else is precisely where that distinction earns its keep.
0.12.1 — 2026-08-10
Fields are called what they are, and a weapon is one click from the grid that names it
- Every field is named in English. A ship's mounts were labelled MntId, its sensors SensId, its damage points OrigDp — the names the C structs use, which asked you to know the structs. The record form, the grid headings, the used-by list, the change log and Check all now call a field the same readable thing. Nothing is hidden by it: the on-disk name is in the label's tooltip, and is still what the spec and the JSON call it. DiskId keeps its own name — that one is already the word everybody uses.
- Magazine lines, loadout slots and multi-mount slots now link to the weapon they name, the way a ship's mounts and sensors already did. Reading a magazine and wanting the weapon behind it meant copying the id and hunting it down in its own annex; it is now one click, and Back brings you to the platform you were arming rather than to the weapon's grid.
- Export, on a record page, is a button. It was drawn as a line of link text between Back and Delete — an action that did not look like one.
- A package now says which database it came from. The stamp was reading the *file* a project was loaded from, which is empty for a database opened straight from a commondb.res — so every package exported from one claimed to come from nowhere. It now carries the database's own name, the one on the overview, and the import preview shows it above the plan. The "this came from a different database" warning works for the same reason: both sides were reading that same blank.
- A shared record keeps its identity. Packages carry the identifier each record, description and hull-name list has in the database that sent it, and a record your import *creates* keeps it, so the change logs on both sides are talking about the same thing. What counts as the same record has not changed: that is still decided by comparing content, never by the identifier — and one already in use here is left alone, since content has already said this is something else.
0.12.0 — 2026-08-10
Share one record: export it with everything it references, import it anywhere without duplicates
- Export, on every record page: one self-contained package file carrying the record and everything it references, the whole chain down — a ship's mounts, the weapons in them, its sensors, its magazine stocks, its encyclopedia text, its hull names. Send the file to someone else or keep it; nothing in it depends on either database's id numbering.
- Import records from a package, on the front page: a preview first, then one Import for the lot. The preview checks the chain bottom-up against the open database and says what already exists and what would actually be created. Same content — ignoring ids — means the same record: importing a ship whose missiles you already have creates the ship wired to your missiles, not copies of them. Nothing already in your database is modified, and a record that differs anywhere survives as its own record rather than overwriting yours.
- One deliberate exception, chosen by you: when an imported ship or submarine matches one of yours but the hull-name lists differ, the preview asks per ship — keep your list, take the package's, or combine the two.
- Importing across different databases warns rather than blocks: a package built from another database release, country or ship-type vocabularies whose labels disagree at the same position, magazine reload times counted in minutes on one side and seconds on the other. Each warning names the record concerned, before anything is written.
- One thing does block: a weapon whose damage field points at a nuclear or torpedo payload record that does not exist. Check now reports these, and Export refuses to package the record until it is fixed — a broken reference shared is a broken reference spread. The shipped database has exactly one (the M51 SLBM), which Check will now show you.
0.11.0 — 2026-08-09
Mounts carry weapons, references say what they are, and anything is one search away
- A mount is edited by what it carries. Its weapon used to be a single disk id, which was three different things depending on the number: nothing, one weapon, or a multi-mount record holding a mixed load. Fitting a mount with two weapons meant building that record yourself, then typing its id back onto the mount — the one job in the editor that asked you to know the numbering scheme, and the one that most invited a wrong id. Now the mount lists its weapons and quantities, and the editor stores them the way the game expects: one weapon inlined, a mixed load filed in a multi-mount it finds or creates for you. Editing a load two mounts share gives the mount you edited a record of its own rather than quietly rearming the other one.
- The mount page also now says which of the round fields is live. A mount holding one weapon takes Mounts × Rounds/mount; a mixed load takes its rounds per slot and ignores Rounds/mount entirely. The same field, dead in one shape and not the other, with nothing in the record to say so.
- Every reference says what it points at. A ship's mounts and sensors used to be a list of names; each row now carries the line you would have opened the record to read — what a mount carries and how many rounds, a radar's range, a sonar's active and passive ranges. Reading a ship's fit no longer means twenty-two round trips.
- Find, in the header on every page: type part of a name, or a disk id in decimal or hex, and go straight to the record. One match opens it; several are grouped by annex. Reaching a record used to start with knowing which of the sixteen annexes it was filed under — which is a question about filing, not about ships.
0.10.0 — 2026-08-09
Nothing typed is lost, and a report of what nothing uses
- Unsaved edits survive leaving the page. Open a record, start filling it in, then follow a ↗ to a mount or its description — come back and the editor offers the work you left, to restore or discard. Anything typed and not saved used to be gone, because it had never reached the server at all. On the desktop build as well as the web one.
- Add hull names on a brand-new ship used to lose the fields you had just filled in — it left the page without them. It is now Save and add hull names: one click, both effects, and Back brings you to the ship with the edits on it.
- Unused records, from the overview: everything nothing else points at — a radar no platform fits, a loadout no aircraft flies, a text no platform describes — grouped by what it is and linked. Housekeeping rather than faults: a spare weapon is perfectly legal and the game does not care. The shipped database has 243 of them.
0.9.9 — 2026-08-09
Check database, hull names for a ship you just added, and an export that says what is wrong
- Check database, from the overview: a sweep of every record for the two faults that only show up a long way from the edit that caused them. Each one names the record and links straight to it.
- The first is a slot pointing into an annex it may not — a multi-mount fitted where a mount belongs, say. The game checks the annex in a disk id's top four bits and terminates rather than starting the scenario, naming only the number, so this was a database that would not load with nothing to say why.
- The second is a value too big for the field it is stored in, which stops the export.
- The editor now refuses a cross-annex reference as you save it, so it cannot be created in the first place. What counts as legal is read off the shipped database rather than assumed: a loadout carrying sonobuoys or an ECM pod is ordinary and stays ordinary.
- An aircraft loadout's weapon picker offers sonobuoys, ECM pods and radar pods as well as ordnance, and a mount's offers jammers. The database is full of them — 870 pods, 174 buoy loads — and typing the id was the only way to pick one.
- An export that cannot be written now names the record and the field: "A2 record 12: HydroPdMod is 200, outside -128..127". It used to report only the format character — "'b' format requires -128 <= number <= 127" — which named neither, in a database of ten thousand records.
- A number too big for the field it is stored in is refused when you save it. Three fields were unguarded — a sub's HydroPdMod and SonarPdMod, and a base's NumRunways — so a value typed into one of those was accepted and only failed later, at export.
- On the web build, an export that fails says so on the page instead of returning a server error.
- A new ship or submarine can be given its hull names from its own page, and Back returns to the ship. Every ship and sub in the database has one, but the only way to start a new list was from the ship-names pool — where Add attached it to whichever platform happened to lack one, which is rarely the one you just created.
0.9.8 — 2026-08-07
Ranges in miles, ratings you can judge, and a torpedo's two settings
- Ranges are nautical miles. Every weapon and sensor range in the database is stored as tenths of a mile, and the editor showed the stored number — an AGM-84's 80 nm reach read as 800. It now reads 80.0, with nm beside the box and in the grid heading, across guns, missiles, standoff ASW, torpedoes, ordnance, ECM, radars, sonars and nuclear radii. What is written to the file is unchanged, so a database you open and export without editing is identical to the byte.
- A nuclear warhead's kill and damage radii were the worst of it: the columns said nm and showed tenths, so a 9-mile warhead read 90.
- A torpedo's run settings read in miles too, and the third column now says how long that setting runs rather than repeating the range.
- A torpedo's seeker acquisition range reads in yards. It is kept in the engine's own distance units — 6,210 to the mile — so 1,712 yards was showing as 5,250. Yards and those units do not divide evenly, so a range you did not touch keeps exactly the number it had.
- An aircraft's ATA and DATA read as the ratings they are — 4.5, not 45. They are held ten times over so they can carry a half.
- Climb rate says m/s.
- A platform's description has a ↗ beside it that opens the text to edit. Picking the right description is one thing; fixing its wording used to mean leaving the record and hunting for it in the pool.
- Back works from a description and from a hull-name list: it returns to the platform you opened it from, and the breadcrumbs show the way. It went to the pool listing instead, which is right only when the listing is where you came from. Saving keeps the path too.
- A gun's or missile's ArmorTable is a dropdown — None, Light, Medium, Heavy, Special — instead of a number nobody could read. It is how hard the warhead bites armour: the 406mm Mk7's HE shell is Medium and the same gun's armour-piercing round is Heavy, a Sea Sparrow is Light and a Trident is Special.
- A platform's country is the one field again. Ships, subs, aircraft and bases each still carry an obsolete 8-bit country byte from before the database widened the field, and it was on the page as an editable number — where nothing would ever read what you put in it. It is gone from the page and untouched on disk. (It has been stale for years: it reads Zimbabwe for every ship in the database, and zero for everything else.)
- A database written to an older or newer file structure is now refused, with its version named, instead of opening. Those files are the same size record for record, so the editor could not tell by failing — it would have shown every platform's country as blank and quietly written that back out.
- RCS and source level now show the company they keep. Both are bare numbers on a scale nothing in the database explains, and the only way anyone ever set one was by finding a comparable platform and matching it — so beside the number is every value already in use in that annex, ascending, naming who is on it. The list opens at your own value, so you land looking at your neighbours: a Seawolf at 27 sees Astute and Virginia at 28, the Ohios at 30, the Akulas at 31.
- Pick a value from the list to take it, or type any number — including one nobody uses yet, which still gets its place in the list rather than falling off the scale.
- Each says which way it runs — a bigger RCS is a bigger radar return, a bigger source level is a noisier boat. Nothing in the file said, and guessing reverses the edit.
- Ships compare against ships and aircraft against aircraft: an aircraft's RCS runs 75–167 and a ship's 0–237, so pooled they would bury each other.
- An RCS or source level too big for the byte it is stored in is refused when you save it, rather than failing later on export.
- A torpedo's speed and range edit as one small table — one row per setting, the speed beside the range it buys. They were two separate boxes of comma-separated numbers with other fields between them, which said nothing about the fact that the first range belongs to the first speed.
- Each row says what it is worth: 6.9 nm · 8 min at that speed, kept up to date as you type.
- Each row also says which one the game will use — a torpedo attacks on whichever setting is faster and drops to the other when it cannot catch the target, so the rows are marked attack run and cruise. A torpedo with only one setting says so rather than showing a second row of zeroes as though it were real.
- A number too big for the field it is stored in — a speed over 255, a range over 65,535 — is refused when you save it, rather than accepted and then failing hours later on export.
0.9.7 — 2026-08-07
A face of its own, a light theme, and weapon data you can read
- Settings, from the header. The first one is appearance: light, dark, or match whatever this computer is set to — which is what a fresh install now does. The editor has been dark-only until now, so if you liked it that way, set it to Dark once and it stays. The desktop build remembers the choice between launches; the web build keeps it in this browser.
- The editor has an icon of its own — the Stratsims track mark — on the window, in the taskbar and on the browser tab.
- The mark appears in the header on every page, and the Stratsims wordmark on the About screen under Publisher.
- The colours are the mark's own: the greys carry its blue-green bias instead of being flat, and the generic blue of links and buttons is now the cyan the marks are drawn in. File pickers and scrollbars follow the theme rather than always being drawn light.
- A missile's guidance now edits as labelled checkboxes — inertial, terminal, semi-active, anti-radar, IR/laser, radar, mid-course, command — instead of a single number. It was always eight flags in one byte; “99” meant inertial + terminal + radar + mid-course, which you had to know to read.
- Torpedo guidance tells its two wire-guided types apart: wire-guided and dual wire-guided. Both read simply “wire-guided”, so neither could be picked deliberately nor recognised afterwards.
- A torpedo's max depth reads as its band — Deep, Intermediate, Periscope — like every other depth and altitude in the editor. It was the one left showing a bare number.
- A missile's TermTraj is gone from the page. The game does not read it, so offering it for editing suggested otherwise. The value is still carried through exports untouched.
0.9.6 — 2026-07-28
Release notes, a new name, and an About screen
- The application is now Stratsims HC Platform Editor.
- This page: every release and what changed in it, reachable from the version number in the header.
- About, from the header: who publishes the editor, the acknowledgements, the licence in full, and every open-source component it ships with its own licence text.
- Grids and pages now use the full width of the window instead of a fixed centre column, and the columns spread to fill it.
- An editing page's heading — the breadcrumbs, which record you are on, and its Save / Back / Delete — stays on screen while the form scrolls, so saving no longer means scrolling to the bottom and back.
- On a record page, Used by now comes before History — what else depends on this record is the more common question.
- The Z1 mounts grid is down to what identifies a mount: id, name, weapon and firing arc. The rest stays on the record page.
- Revert on the change-history page works. It was submitting the filter form instead of the revert action, so the click reloaded the page and undid nothing.
- Reverting now tells you what happened — including *why* it declined, when the field has been edited again since. Previously it said nothing at all either way.
- Pages are never served from a stale cache, so a change you undo no longer reappears when you navigate back to the record.
- Delete is legible again on the highlighted row of a grid.
- The database's own name — HCDB-250724 and the like — is editable from the overview. It is the stamp inside the database, not the file name, and renaming it is logged and can be undone like any other edit.
- Every mount, sensor, loadout and weapon listed on a record now has a ↗ beside it that opens that record, so you can look at what a ship carries — and edit it — without going back to the grid.
- Back follows the path you took. Open a mount from the Renhai and Back returns to the Renhai, not to the mounts grid; the breadcrumbs show the whole chain, and any grid filter you had is still there when you surface.
- Click your name in the header to set the name edits are credited to — the account you are logged in as is rarely the name you are known by. It sticks between launches, and it never rewrites entries already in the log.
- Close is gone from the desktop build. Open… already switches database and quitting saves your working file, so all Close did there was discard your edits.
- The header no longer shows a bare “?” after your name on the desktop build. It meant “no login established this name”, which is not worth saying when you are the only person at your own machine.
0.9.5 — 2026-07-28
Change tracking: who changed what, and undo
- Every edit is now recorded — what changed, from what to what, by whom and when. Change history on the overview shows the whole log, filterable by author and by kind of change.
- Each record page lists its own recent changes below the fields.
- Revert undoes a logged change, or explains why it cannot: if the field has been edited again since, or a deleted record's disk id has been taken, it refuses rather than overwrite newer work.
- The header shows who edits will be attributed to.
- Records, texts and hull-name classes carry a permanent id, so a change can be traced to a record even after it moves or is renamed. This is groundwork for merging edits from several people later.
- Project files are now schema 2. Older projects still open; a project saved by this version will not open in an earlier one. Exported
.resfiles are unaffected.
0.9.4 — 2026-07-26
Cross-references, coded values as text, and the mount editor
- Used by on every record: which platforms carry a sensor or mount, which aircraft fly a loadout, which mounts, magazines and loadouts stock a weapon, which weapons carry a nuclear warhead.
- Ships and subs link to their hull-name list.
- Coded values read as text across the grids — ASW and ordnance and ECM types, sonar types, torpedo guidance, nuclear burst type.
- Radar type and torpedo flags edit as labelled checkboxes.
- A mount's firing arc edits as a compass of twelve 30° sectors, and its deck positions as numbered checkboxes.
- The mount grid names the weapon, and marks a multi-mount as “Multi”.
- Loadouts and multi-mounts pair each weapon with its quantity in one grid, showing only the slots in use.
- Bases list their side, and their position links to a map.
- Fixed: long pickers were silently truncated — mount lists stopped part way through and missile mounts could not be chosen at all. Pickers now show every match.
- Fixed: typing in a picker and finding nothing could destroy the entry already in that slot. Esc, or clicking away, now restores it.
0.9.3 — 2026-07-26
Encyclopedia texts and hull names become editable
- Both pools get infinite scroll, add, clone and delete.
- Each shows which platforms use it.
- A text still in use cannot be deleted — the list of platforms to repoint comes with the refusal. Deleting an unused one renumbers every reference automatically.
- The hull-name grid shows country, type and class.
0.9.2 — 2026-07-26
Magazines, fill gauges, and shorter record pages
- Ships and bases edit their magazines directly — weapon, rounds and reload time — instead of two meaningless numbers.
- The overview shows how full each annex is against its 4,096-record limit, and the magazine pool against its own.
- Mount, sensor and loadout lists show only the slots actually in use, with Add and remove. A ship page drops from 48 boxes to about 21.
- Clone a record from the grid, not just from inside it.
0.9.1 — 2026-07-24
Adding and deleting records
- Add a record to any annex, or delete one.
- Deleting first shows what references it, so nothing is removed out from under a platform by accident.
0.9.0 — 2026-07-24
Grids that handle a real database
- Filter the platform grids by country and type.
- Infinite scroll, so a 2,000-row annex opens instantly.
- Column widths are draggable and remembered.
- The header row stays put while you scroll.
0.8.2 — 2026-07-24
Country and type on the grids
- Platform grids show the resolved country and type rather than raw numbers, ordered disk id, country, type, class.
0.8.1 — 2026-07-24
Positions in degrees
- Base positions edit as decimal latitude and longitude instead of raw slivers, and show that way on the grid.
- Going back from a record returns to its place in the grid.
0.8.0 — 2026-07-24
Aircraft size reads as a label rather than a number
0.7.0 — 2026-07-24
Unit and missile flags edit as labelled checkboxes
- Unnamed bits are preserved rather than dropped.
0.6.0 — 2026-07-24
Pick a platform's description by its text, not its number
0.5.0 — 2026-07-24
Aircraft speeds edit as a throttle × altitude grid
0.4.0 — 2026-07-24
Aircraft loadouts get a type-ahead picker per slot
- The desktop build now opens without a console window behind it.
0.3.0 — 2026-07-24
Your work survives closing the app
- Desktop: a working file that reopens on next launch and saves on close.
- Web: a draft kept in the browser, offered back after a reload.
0.2.0 — 2026-07-23
Multi-user web build
- Each browser gets its own open database on the hosted build.
- One person's export no longer blocks everyone else.
0.1.0 — 2026-07-23
First working editor
- Reads and writes
commondb.resbyte-exactly, with JSON as the working format. - All 16 annexes editable, with dropdowns for coded fields and type-ahead pickers for cross-references.
- String tables, encyclopedia texts and hull names editable.
- Runs as a desktop application or a hosted web app from one codebase.