Endgame: Singularity Changelog

V1.1.1 (UNRELEASED):

USER-VISIBLE CHANGES:
- Fix mojibake in the language list in the options menu on
  systems where UTF-8 is not the default locale.
  (Closes: #358) (qubodup)
- Fix color bleed from what was supposed to be the alpha channel
  color key in images. Noticeable with the up/down arrows in the
  scrollbars in some resolutions.
  (Closes: #356) (qubodup)
- Fix faded background being hard black rather than the intended
  fade. This was more noticeable on themes where black was not the
  primary background color. (Closes: #357) (qubodup)

V1.1 (2025.06.04):

DEPENDENCY / BASELINE CHANGES:
- The game now requires `polib`. Previously, we had an embedded
  copy as fallback. However, it did not work with python3.11
  and has now been removed. (nthykier)
- Remove support for python2 / python2.7. New baseline is
  python3.9 (nthykier)
- Restore compatibility with pygame 1.9.4 that had a broken
  `blits` function. Thanks to onpon4 for reporting the issue
  (Closes: #293) (nthykier)
- Add guard to prevent crashing when `locale.getdefaultencoding`
  is removed in python3.15.
- Fixed crash with numpy 2. Thanks to hexagonrecursion for
  reporting the issue. (Closes: #346)
- Set minimum pygame version to 2.5.2 to avoid a known crashing
  bug in pygame 2 (up to that version). The pygame-ce fixed it
  in a release with a lower version and works as an alternative
  as well in theory.

USER-VISIBLE CHANGES:
- New feature: Quicksaves - save on `F5` (replacing "reload theme")
  and load on `F9`. Loading can only occur on the map screen.
  Note the quicksave currently do not provide feedback on success.
  (nthykier)
- The hotkey `F5` is now "quicksave" rather than "reload theme".
  (Reload theme is now `F6`). (nthykier)
- Save games are now ordered by time (most recent first) rather
  than name. This makes it easier to find the latest savegame.
  (nthykier)
- There is now an "Auto-build items" button in the base overview.
  It will propose building all the highest value items in each
  empty base slot (provided there is anything buildable for
  that base). (nthykier)
- The cheat menu can now show data about events that is or can
  be triggered. Additionally, it is possible to trigger events
  that are not active. Cheat menu can also force expire
  active "decay-able" events immediately. (nthykier)
- Update the French translations (didier-devel)
- Add considerably more location names for use in auto-generated
  names for bases. (UrbanVersis32)
- Add basic auto-save feature that automatically saves the game
  at day change every 3 days in game time.  Thanks to
  EinstokFair for the suggestion. The implementation is not
  exactly 1:1 with their suggestion, but it is a starting point
  to reduce the loss on crashes. (nthykier)
- Support enabling and disabling the cheat/debug menu at
  runtime via F11 when on the map screen. Previously, you had
  to start the game with the commandline option `--cheater`
  to get access to the cheat/debug menu and restart without it
  to disable it again. The menu itself is still hidden even when
  active. (nthykier)
- Socioanalytics and its Advanced counterpart now explicitly
  states in the result that the AI now has insights into
  "hot" regions. (nthykier)
- Fix crash bug in the "Hidden State" cheat function. (nthykier)
- Remove consuming remark about the "Armed Guards" item that
  made it imply that had a negative effect. Thanks to
  RandomIsocahedron for reporting the issue.  (Closes: #297)
  (nthykier)
- When buying CPUs, clarify that the first number is the "base"
  CPU for the item (before modifiers) and the second is the
  "effective" CPU (after modifiers). Show the current modifier
  next to the effective CPU and, if relevant upgrade are pending,
  a second line with the effective CPU and modifier when all
  upgrades have completed. Thanks to Wuzzy2 for reporting
  the issue.  (Closes: #241) (nthykier)

OTHER CHANGES:
- The `About` menu now shows the version of `pygame` and `SDL`,
  which is useful for debugging and bug reports. (nthykier)
- Fix a number of typos in the code. (timgates42)
- Stop installing the `utils` python package that was not
  namespaced under `singularity`. It is only used by developers
  (Closes: #335) (evertvorster)

V1.00 (2020.07.02):

GAME CONTENT CHANGES:
- Locations with higher risk are now highlighted provided the
  relevant techs have been researched.  (nthykier)
- Add a new power state `Offline`, which applies to all bases
  under construction until they can become `Active`.  Bases in
  the `Offline` state currently behave like they are in the
  `Sleep` state.  Based on an idea from Wuzzy2 (Closes: #239,
  #245) (Xenega)
- The thrift modification from locations now also applies to
  CPU maintenance.  (Xenega)

USER-VISIBLE CHANGES:
- Support better translations of strings involving numbers
  such as "X Days" or "Y Hours".  (Closes: #262)  (gunchleoc)
- Fix a visual glitch in the ResearchScreen if the AI had no
  available CPU because all bases are asleep.  (nthykier)
- It is now possible to convert old savegames to the new format
  via the `Upgrade` button on the `Load` menu.  This avoids the
  hassle of having to manually load and save each game.
  (nthykier)
- Implement lexicographic sorting of strings by using Python's
  `locale.strxfrm`.  This provides better sorting order for
  non-English languages on all platforms where `locale.strxfrm`
  works.  Notable exception being MacOS, where Python is
  reported to have issues still.  (Closes: #271)  (gunchleoc)
- Add support for mouse-wheel scrolling in pygame 2 with SDL 2,
  which re-enables scrolling in lists.  (nthykier)
- Rewrite handling of "holding down key" to repeat a key press.
  This avoids false "key-repetition" with accented characters.
  Note that pygame2 with SDLv2 is needed to be able to repeat
  accented characters by holding down the key.  (Closes: #281)
  (nthykier)
- Change layout of Knowledge screen.  Among other things, this
  makes more room for concept names.  (Closes: #270, #279)
  (Xenega)
- Location screen now disables buttons that have no effect.
  Previously, they would just do "nothing" but where still
  clickable.  (nthykier)
- Ensure that singularity can start when installed and loaded
  via pkg_resources.load_entry_point.  (Closes #272)  (nthykier)
- Improve savegame dialog to use a translated version of the
  difficulty as default savegame and reject some invalid
  path names with a simple error message rather than an
  exception.  Furthermore, the "OK" button is now disabled when
  the savegame name in invalid.  (Closes #267)  (gunchleoc)
- Disable Load and Delete buttons in the load savegame dialog
  when there are no savegames.  (nthykier)
- Avoid a crash when clicking Load or Delete in the load
  savegame dialog where no savegames are available.
  (Closes: #274)  (Xenega)
- Add number separators in statistics screen.  (Closes: #266)
  (gunchleoc)
- Give text fields a distinct background color to make it easier
  to see if something is a text field and make title visible
  in darktheme.  (Closes #260) (gunchleoc)
- Add Scottish Gaelic translation.
  (Closes: #256, #268, #263, #286, #287)  (gunchleoc)
- Text resizing and layout changes to better accommodate for
  translations that need more space than the English text.
  (Closes: #258, #259, #263, #264, #269) (gunchleoc)
- Minimum resolution has been reduced to 100x100.
  (rofl0r, nthykier)
- Enable the game window to be resized like any other window
  e.g. by dragging in the edges of the game window.  (nthykier)
- Reliably redraw the singularity screen if another window
  was moved over the game.  When singularity was run with
  pygame 2, this behaviour introduced visible artifacts until
  something in the game triggered a complete redraw.
  (nthykier)
- Fix a number of bugs related to the Power state of bases
  under construction - like being able to change the power
  state of an incomplete base.  Thanks to Wuzzy2 for reporting
  the issue.  (Closes: #238, related to: #239, #245) (Xenega)
- Limit resolution input fields in the Options screen to digit
  characters only.  Thanks to Wuzzy2 for reporting the issue.
  (related to: #236) (Xenega)
- Show the correct CPU maintenance cost for bases in the base
  screen.  Thanks to Wuzzy2 for reporting the issue.
  (Closes: #243) (Xenega)
- Fix a crash with "ridiculously" small resolutions by setting
  a minimum resolution (during startup and in the options
  screen).  Thanks to Wuzzy2 for reporting the issue.
  (Closes: #240) (Xenega)
- Add an `OK` button next to the custom resolution fields in
  the Options screen.  Previously, there was a confusingly named
  button labelled `Custom`, which people mistook for a label
  rather than a button.  Thanks to Wuzzy2 for reporting the
  issue.  (Closes:  #236, #242) (Xenega)
- Fix focus handling in the Knowledge screen, making keyboard
  and mouse-wheel actions much more predictable.  Thanks to
  Wuzzy2 for reporting the issue.  (Closes: #220) (Xenega)
- Fix bug where choosing `Cancel` in the Options menu would not
  roll back changes to the selected theme.  (nthykier)
- Fix some minor color issues with the Nightmode theme, where
  the default color was used or text became unreadable.
  Thanks to Wuzzy2 for reporting the issue.  (Closes #225, #227)
  (nthykier)
- Make room for longer tech names in the Knowledge screen to
  account for some tech names being significantly longer in
  translations.  Thanks to Wuzzy2 for reporting the issue.
  (Closes #219) (nthykier, Xenega)
- Fix a regression where changing the language in game would
  fail to update the tech names and descriptions.
  (Closes: #232) (nthykier)
- Fix crash in the Load dialog when clicking Load if no game
  was selected.  (nthykier)
- When building bases or CPU for a base, show the correct CPU
  provided when the base/CPU is constructed.  Previously it would
  not take location and base modifiers into account. Thanks to
  Wuzzy2 for reporting the issue.  (Closes: #230) (nthykier)
- Fix bug where clicking Cancel in the Options menu would still
  commit changes to selected warnings.  Thanks to Wuzzy2 for
  reporting the issue.  (Closes: #230) (nthykier)
- Use correct number separator for money under non-English
  locales (e.g. comma in German) when measured in millions
  or more. Thanks to Wuzzy2 for reporting the issue.
  (Closes: #226) (nthykier)
- Ensure that the about menu text is extracted for translations
  Thanks to Wuzzy2 for reporting its absence.  (Closes: #218)
  (nthykier)
- Fix a bug where part of the tech description in the Knowledge
  menu was not translatable.  Thanks to Wuzzy2 for reporting it.
  (Closes: #217) (nthykier)
- Fix overly precise durations due to missing rounding when
  displaying construction times in Python3.  Thanks to
  Wuzzy2 for reporting it.  (Closes: #222)  (nthykier)
- Make scrollbar arrows visible in "Nightmode" theme.
  Thanks to Wuzzy2 for reporting it.  (Closes: #221)
  (nthykier)
- Add updated German translation.  (Closes: #215, #223, #288)
  (Wuzzy2)
- Fix bug where "Concepts" in the "Knowledge" menu was not
  translatable.  (Closes: #216)  (nthykier)

OTHER CHANGES:
- Update path name for AUTHORS.txt and Changelog.txt in
  MANIFEST.in  (Closes: #275)  (nthykier)
- Update the URLs to the music to reflect their new location.
  (MestreLion)
- In debug mode (--debug), highlight which part of the screen
  has been redrawn by drawning a box around it.  (nthykier)
- Fix some internal bugs that lead to unnecessary redraws of
  some of the text panels in the map screen.  (nthykier)


Thanks to Wuzzy2, rofl0r, gunchleoc, and LW-archlinux, Quix0r for
filing bugs, play testing and moral support.


v1.0b1 (2020.02.16):

USER-VISIBLE CHANGES:
- Show a summary of the bases under the CPU and money display.
  (Closes: #155, #196)  (nthykier)
- Fix a bug where Australia would never get a modifier if the game
  was created with python3.  (nthykier)
- Fix a crash when accessing the Log menu when playing a game loaded
  from a 1.0a1 (or later) game.

OTHER CHANGES:
- Documented known issues with running singularity on MacOS in the
  README.  Please see #197 for more details.  Thanks to yiwangwuqian
  for reporting and Diegus83 for debugging it and finding a
  possible solution.  (nthykier)
- All translations are now done via ".po" files (GNU Gettext) to
  ensure everything uses the same work flow for translators.
  (nthykier)
- Refactor handling of regional modifiers.  This caused a bump in
  the savegame format, which means games saved by 1.0b1 cannot
  be loaded in earlier versions of singularity.  (nthykier)


v1.0a2 (2019.12.28):

GAME CONTENT CHANGES:
- The location Antarctic is now considered as safe as the Ocean
  location and can therefore be used to research certain dangerous
  technologies. (Closes: #173) (Xenega, nthykier)
- Several key technologies can no longer be researched in Urban
  areas. (Closes: #173) (Xenega, nthykier)

USER-VISIBLE CHANGES:
- Fix hotkey clash between "PAUSE" and "PREV".  (Closes: #212)
  (danuker, nthykier)
- Improve keyboard + focus handling for most dialogs by passing
  keyboard events on to lists, sliders and text fields in the
  dialog.  This enables most dialogs to be handled entirely using
  keyboard only.  (Closes: #209, #211) (nthykier)
- Replace the GUI click sound to be softer.  (Closes: #201, #210)
  (danuker)
- Fix crash when loading an old savegame, where the player was
  researching something that is now not possible due to balancing
  changes. The game would be often be playable for a short while
  until something triggered a recalculation of CPU usage.  (nthykier)
- Fix incomplete substitution in log messages about bases being lost
  due to lack of maintenance.  (nthykier)
- Fix a crash when loading a 1.0alpha1 savegame and opening the log.
  (Closes: #208) (nthykier)
- Reduced the default size for text to ensure that most text fields
  have a consistent text size. (Closes: #200) (nthykier)
- Text fields now respond to the HOME + END keys and they move the
  cursor to the start and end of the text field.  (nthykier)
- Show the correct warning when attempting to load unsupported
  savegames.  Previously, it would silently be omitted.  (nthykier)
- Support loading old savegames with a particular corruption where
  the number of items in a base were sometimes set to the invalid
  value of 0.  The only sane fix is to reset the counter to 1 at
  the expense of some bases "losing" CPU. (Closes:
  https://bugs.launchpad.net/ubuntu/+source/singularity/+bug/931037,
  https://code.google.com/p/endgame-singularity/issues/detail?id=107)
  (nthykier)
- Using the arrow keys on the research slider no longer trips "two"
  clicks rather than one.  (Closes: #207,
  https://bugs.launchpad.net/ubuntu/+source/singularity/+bug/531871)
  (nthykier)
- Buttons to construct base items are now disabled when the player
  cannot built any item of that particular item.
- Fixed a crash in the build dialog for a base if you tried to build
  a security item but had not researched any for that particular base.
  (Closes: #206) (nthykier)
- Added savegame compat for some older development savegames known as
  "0.31pre" by discarding the log entries from them. (Closes: #198,
  #199) (nthykier)
- Fixed a bug where trigger times of events where reset on loading
  the game leading them to last longer than they should.  (nthykier)

OTHER CHANGES:
- Include version information in the error log to simplify reporting
  of bugs and crashes.  (nthykier)

Thanks to (in no particular order) for filing bugs, play testing and moral
support:

	Quix0r, danuker, rofl0r, PeterJust, rww (Launchpad),
        scottparker (Launchpad)


v1.0a1 (release 2019.12.07):

GAME CONTENT CHANGES:
- Endgame requires a lot less grinding (emh, Xenega)
- New early-midgame bases to make the progression into the
  midgame more smooth (Xenega)
- All CPUs have been rebalanced.  Notably midgame CPUs have
  a much better cost/efficiency ratio and endgame CPUs have
  been nerfed considerably (Xenega)
- New security and reactor items are now available
  (Xenega)

USER-VISIBLE CHANGES:
- Show standard costs and detection chances of items and bases
  in the Knowledge screen excluding any location modifiers
  (Xenega)
- Show location modifiers more prominently in the location screen
  and the dialog for constructing a new base (Xenega)
- Show difficulty setting and in-game time for new savegames
  (Xenega)
- Loading an old savegame (e.g. from 0.30c) will now
  retroactively apply the game data from the latest version
  of Singularity - including making new game content
  researchable (Closes: #56, #122, #145) (nthykier)
- Unify multiple messages into a single dialog with multiple
  pages.  This new dialog also supports resuming the game
  instead of forcing the game to be paused (Xenega)
- Events can now expire and two non-unique events now do.
  Previously, they could reappear continuously possibly
  making the game almost impossible (or completely
  neutering the affected group)  (nthykier)
- The cash display now shows the expected cash change over
  the next 24 hours next to the current cash.  Likewise, the
  CPU display includes how much spare CPU there is after
  maintenance and construction. These numbers also include
  purchases currently under consideration
  (Closes: #21, #100) (nthykier)
- Support searching for a savegame by name in the Load
  dialog (nthykier)
- Make the base type and its total CPU visible in the list
  of bases at a given location  (Closes: #64) (nthykier)
- Fix a crash when savegame names contained non-ASCII UTF-8
  characters (Closes: https://bugs.debian.org/718447)
  (nthykier)
- Fix visual lag at the highest game speed due to recalculating
  the "day/night" layers (nthykier)
- It is now possible to use double-click as a short-cut for
  "Open base" when viewing the list of bases at a Location.
  (nthykier)
- Base purchase screen now provides more details about the base,
  including accurate purchase and maintenance cost plus detection
  rates (at the level the player is allowed to see them)
  (Xenega)
- Ensure that CPU allocations are re-allocated properly when the
  player loses too much CPU at a given danger level (Closes: #103)
  (Xenega)
- Have a separate volume bar for music and sounds (Closes: #90)
  (Xenega)
- Use the XDG Base Directory Specification on relevant platforms
  (Closes: #53) (Xenega)
- Support deleting existing savegames via the Load screen
  (Closes: #48) (Xenega)
- Select the amount of CPU at the same dialog as the CPU selection
  dialog (Xenega)
- Add new "nightmode" theme  (Closes: #119) (cryptarch)
- Theming support to change background image, colors, fonts, etc.
  The themes can have language specific content (e.g. fonts better
  suited for the given language) (MestreLion, Xenega)
- Support changing language without restarting the game
  (Xenega)
- Add warnings for some common issues such as when the player only
  has one base left or that when changing CPU of a base will remove
  existing CPU (Closes: #17) (Xenega)
- Support renaming bases (Xenega)
- Add a 24-hour finance report (Xenega)
- Fix various bugs in the shown detection rates (juise)
- The game now records a log of the latest events that happened
  (Xenega, nthykier)
- Fix issue where build times were affected by game speed (Closes: #18)
  (Xenega)
- Singularity no longer proposes resolutions larger than the detected
  display size and now defaults to 1024x768 as the new default
  (MestreLion)
- Persisting changes in the Options is now automatic on "OK"
  (MestreLion)
- Limit total amount of cash to avoid overflow  (Closes: #110)
  (MestreLion)
- Use 2 decimal places when displaying cash or CPU for large numbers
  (MestreLion)
- Reset music when starting a new or loading an existing game (Closes: #100)
  (MestreLion)
- Fixed techs being reset if language is changed mid-game (Closes: #99)
  (MestreLion)
- Saved games list now sorted in in-game load dialog (MestreLion)
- Fixed events not being translated when language changes in-game (Closes: #128)
  (MestreLion)
- Fixed --singledir and --multidir being ignored for saves, preferences, music
  and error log. Also, if possible (Python >= 2.6), error.log is now created
  only when (and if) an error actually occurs (MestreLion)
- Added Brazilian Portuguese (pt_BR) translation (Closes: #130)(MestreLion)
- Updated es_AR translation (Closes: #20)(justapawn)
- Try to use user's locale, or a similar language, as game language (MestreLion)
- Launcher for Linux is now "singularity"
- Revamped Options screen, including new resolutions (MestreLion, Xenega)

OTHER CHANGES:
- Refactored code into a top-level module called singularity instead of using
  generic top-level python modules nad improve setup.py to be setuptools
  compatible (Closes: #12)  (rardiol)
- New savegame format based on JSON to avoid a savegame format that can include
  arbitrary code execution via Python's pickle module.  Please note that any old
  style savegame will still trip the picke-based codepaths already in the
  savegame listing to simplify the process for players upgrading from 0.30c
  (Closes: #52)  (nthykier)
- Add basic documentation of the data files in the docs/ folder of the Github
  repo (nthykier)
- Work around a file descriptor "leak" in Pygame.  This fix requires Pygame
  1.9.2 or later to fully plug the leak  (Closes: #156) (nthykier, Xenega)
- Add a small test suite and CI testing to catch trivial mistakes earlier
  (nthykier)
- Port the game to run on Python3 (Closes: #15, #169) (Rardiol, nthykier)
- Include a singularity.desktop file (Matthias Mailänder)
- Fix crash related to large font sizes (MestreLion)
- Created .gitignore and .gitattributes files to aid development (Mestrelion)
- New i18n and hotkey approach. E:S is now fully translatable (MestreLion)
- New tools under utils/ dir (MestreLion)
- Use ~/.config/singularity for preferences dir, in a backward-compatible way
  with previous releases: if ~/.endgame is found it is used instead (MestreLion)
- Added ~/.local/share/singularity/music as additional source for music, with a
  symlink in preferences folder pointing to it (MestreLion)

Thanks to (in no particular order) for filing bugs, play testing and moral
support:

	Quix0r, dwentz89, rofl0r, PeterJust, cryptarch, Musickiller, smiley1983,
	osjc, ardapekis, quantuumsnot, sbosshardt



v0.30c (release 2011.06.11):

USER-VISIBLE CHANGES:
- Fixed crash in Python 2.7 due to different handling of locale strings. (Phil
  Bordelon, Roger Pixley/Daskreech for bug report)

v0.30b (release 2010.07.28):

USER-VISIBLE CHANGES:
- --nosound properly ignores the sound system.(emh, Cyclotron / Daryl for bug
  report)
- Better appearance when no items will fit in the slot. (emh)
- Knowledge screen is refreshed properly when loading a game. (emh)

v0.30a (release 2010.02.06):

USER-VISIBLE CHANGES:
- Time Capsule English text no longer assumes the Antarctic. (Phil Bordelon,
  Avaera8820 for bug report)
- Game pauses when random events occur. (Phil Bordelon, captainsegfault for
  bug report, justapawn for initial implementation)
- Savefiles are now in sorted order instead of an arbitrary arrangement.
  (remur_030)
- Additional corrections to de_DE translation. (Christian Gerloff,
  Developer-KI)
- Really make the Projects do something. (Phil, WvWisokee for bug report)
- "news" and "media" are only synonyms to humans.  (FM, captainsegfault for bug
  report)
- Support the Delete and Keypad Enter keys properly. (Phil, Yoshi for bug
  report)
- Stopped building additional CPUs from refunding the money previously paid.
  (FM, Yoshi for bug report)
- Location name fix. (Phil, pederick for bug report)
- Fix a crash with handling scrollbars. (Phil, netantho for bug report)
- Fix a bug where the finance report wouldn't always display. (Raymond
  Martinau)
- Updated (but not fully complete) es_AR translation. (Guga)
* New it_IT translation. (Daniele Sapino)
- Fixed a bug where building 0 CPUs made the game crash whenever time was
  unpaused.  (FM, don.ridge for bug report)
- Font sizing has been improved.  Most dialogs should no longer appear
  "bloated".  (FM, Gastón Alonso for bug report)

v0.30 (release 2009.01.26):

[Note that this release explicitly removes support for all savefile formats
 before 0.28/0.28a.]

USER-VISIBLE CHANGES:
* Complete rewrite of the graphics system, shiny new widgets and dialogs.
  Arbitrary resolutions now supported. (FM)
- Fix to de_DE intro text. (booiiing)
* Individual bases no longer have their own tasks, only a power state.
  The research dialog has been substantially improved to compensate. (FM)
* When building or researching, CPU, cash, and labor (time) must be spent in
  approximately equivalent amounts. (FM)
* The AI has learned to estimate how quickly its bases are detected. (FM)
- The AI pays no attention to the humans until they notice his actions. (FM)
- Color-coding has been added to the AI's global estimates. (FM)
- Winning the game has become more permanent. (FM)
- Events no longer happen when they're meaningless. (FM)
* The AI has discovered a network of light sensors around the globe.  You can
  now see day and night on the map. (dvrasp, FM, Anne M. Archibald)
* Added support for running the game on an OLPC XO-1. (FM)
* fr_FR translation (Philippe Grenard)
- Make two Projects that didn't do anything before actually do something.
  (Phil, FM for bug report)
* Reduced the number of savefile formats supported, but make attempts to load
  bad saves less problematic. (Phil)


OTHER CHANGES:
- Removed a redundant tech requirement. (Phil, Xombie for bug report)
- Major efficiency improvements. (FM)
- New utility, make-tree.py.  Uses graphviz to create a visualization of the
  tech tree. (aes, FM)

v0.28a (release 2008.05.12):

USER-VISIBLE CHANGES:
* Three new win/loss tracks for the game, including the Psycle source! (Max
  McCracken)

OTHER CHANGES:
- Error logs are handled more sanely on *NIX systems. (Phil, kaol and FM for
  the idea)
- Replaced Bitstream Vera Sans with DejaVu Sans to facilitate future
  translations. (Phil)
- Localization fix for locales with non-ASCII number formats. (FM, 
  Henrik Phil for bug report)

v0.28 (release 2008.05.11):

USER-VISIBLE CHANGES:
- Minor text cleanups. (Phil, FM; Cory Hickey and gglouser for some fixes)
- Minor dialog behavior fixes. (FM)
* New non-research task: CPU Pool.  Performs maintenance, construction, jobs.
  Bases with no other task assigned will contribute to the CPU Pool. (FM)
* New non-research task: Sleep.  Bases assigned to Sleep will remain idle and
  be harder to detect.  Note that even a computer can't sleep through
  construction. (FM)
- The CHANGE buttons inside the base dialog now show their hotkeys. (FM)
- The location buttons have had their on-screen positions tweaked. (FM)
- Start location is randomized to any of the 5 available continents. (FM)
* CPU is now used to design constructions, Cash to buy the required items, and
  Labor (time) to assemble the final construction. (FM)
- Location and city names can now be localized. (FM)
- Numbers automatically localize to the correct comma-vs-period usage. (FM)
* Added a new difficulty level: Ultra Hard. (FM, emh for suggestion)
* Build times are now difficulty-dependent. (FM)
* The grace period applied to a new base is now difficulty-dependent. (FM)
* The suspicion gain per discovery is now difficulty-dependent. (FM)
- Bases in a location are now sorted by size, then name. (FM, emh for
  suggestion)
* The global grace period now expires on Normal and above if you build more
  than a certain number of bases, and on Ultra Hard if you build certain types
  of bases. (FM)
- Locations with recently-discovered bases are now more likely to have other
  bases discovered. (FM)
* Base detection chances and overall suspicion are now unknown until certain
  new technologies have been researched. (Phil)
  ...except on low difficulty. (FM)
* Incomplete bases no longer support the AI. (FM)
- It's possible to get lucky when hacking some random computer.  (FM)
* Seconds, minutes, and hours now matter much more than they used to. (FM)
- Major events cause the game to pause, instead of going to real-time. (FM)
- You can use the Enter on the numeric keypad like the regular Enter key.
  (Phil, gare for suggestion)
* Continents are no longer identical. (FM, Phil for suggestion)
* New continent: Australia.  Ocean moved to make room. (FM)
* E:S now has an intro when you start a new game! (FM)
- New item: Warning Signs.  Useful for keeping out curious people. (FM)
- CPU display on Finance screen centered (Jorge Vargas)
- Time capsules can now be built anywhere sufficiently remote, with varying
  degrees of stealth. (FM, emh for suggestion)
- Internet Traffic Manipulation and Hypnosis Field techs have been rebalanced to
  better reflect their effects. (FM)
* de_DE translation (FM, Thomas for native proofing [still in progress])
* sv_SE translation (Anders Andersson)

OTHER CHANGES:
- Massive (~50%) code changes, to improve clarity and reduce duplication. (FM)
- "safety" module should trap most crash bugs and show the pause menu, allowing
  the user to save or attempt to resume play; the errors are written to a log
  for easy submission to the developers. (FM)
- New utility: reorder.py  Workaround for traduko's current order-scrambling
  behavior.  Use with caution. (FM)
- Various code formatting fixes, refactor of part of the technology(/event)
  result system. (Jorge Vargas)
- setup.py updated to support mac .app building and cut filesize of the windows
  .exe by about half. (FM)

v0.27 (release 2008.04.17):

USER-VISIBLE CHANGES:
- Display the actual discovery percentage when preparing to build a base.
  (Brian, Phil)
- Minor text cleanups. (Phil)
* Support events that can happen throughout the course of the game, changing
  things in interesting ways. (Brian, Phil)
* A number of new items and technologies to ease gameplay. (Brian, tweaks
  by Phil and emh)
- Building new machines informs you how much CPU capacity you will receive
  from the new systems. (Brian, Phil for suggestion)
- Idle bases are harder to discover. (Brian)
- Allow keys to be repeated when held down. (Brian, emh for suggestion)
- Fix the constant "CPU complete" dialogs when low on money. (Brian, numerous
  people for suggestion)
- Added research item for construction. Still needs actual implementation.
  Weird time code is blocking. (Brian, ? for suggestion)
- Return to base menu when exiting base screens rather than returning to map.
  (Brian, emh and Max McCracken for suggestion)
- Implemented Security and Reactor values obtained from data files. (Brian)
- Implemented "Destroy" feature from base list (Brian, Max McCracken and emh
  for suggestion)
- When building, items are sorted by their cost to make picking the best one
  easier. (Phil, Gustav Bertram for suggestion)
- Keep the game from crashing when it cannot create a 'music/' directory.
  (Phil, Andrew McMillan for report)
- Added checks to avoid key error crashes related to unfinished Construction
  code. (Brian)
- Added check to avoid crash when hitting 'Destroy' button in an empty base
  list. (Brian)
- Preferences have moved to 'prefs.dat', and now follow the standard Python
  ConfigParser format. (Phil)
- Increased robustness across the board; E:S should be harder to crash.
  (Phil)
- Various strings shortened to fit dialogs. (Phil, Joey Hess for suggestion)
- Fixed bug that kept music from playing. (Phil, Brian Warner for suggestion)
- Keep running if the mixer can't load. (Phil, Rafal Czlonka for bug report)
- Fix up the handling of music paths. (Phil)
- Added support for win and losegame music. (emh)
* Three new tracks, 'Deprecation', 'Awakening,' and 'Inevitable,' including
  the Psycle source! (Max McCracken)
- Research screen will no longer assign an extra base to research. (emh,
  blog... for report)
- When naming base, text will take up the entire box. (emh, blog... for report)
- Fixed a potential crash with display_base_list self-recursing. (Phil,
  Josh Triplett for report)

OTHER CHANGES:
- Code cleanups and reformatting. (Phil)
- Cleanup a bug introduced in player.py, item may be int rather than object.
  (Brian)
- The music loading code is less fragile now; it shouldn't break on too-short
  file names. (Phil)
- Massive changes to data file handling; we now use Python's built-in
  ConfigParser. (Phil)
- Further changes to the data file formats, for consistency and ease of
  code/data maintenance.  (Phil)
- Switched sounds to using data files, for smoother future expansion. (Phil)
- Fixed strings loading. (Phil)

v0.26a (released 2007.08.12):

USER-VISIBLE CHANGES:
- Made Very Easy mode actually playable. (Phil, Simon Goodall for bug
  report.)

v0.26 (released 2007.08.09):
  [Note that the official Endgame: Singularity soundtrack is released
   separately from the game. It can be found at the official website:
      http://emhsoft.com/singularity/
   In addition, user-added tracks are also supported.  See the README
   for details.]

USER-VISIBLE CHANGES:
- Added CPU indicator to the main screen. (emh, John DiMarco for suggestion)
- Research screen will now automatically prune bases. (emh, John DiMarco
  for suggestion)
- Fixed slight flicker when toggling options. (emh)
* Added difficulty selection. (emh, many people for suggestion)
* Added simple background music playing ability. (emh, Matthew Robinson for
  initial patch.)
- Single-CPU bases have CPU power listed. (emh, robaal for suggestion)
* Delicious retro-futuristic music specially made for Endgame: Singularity,
  including the Psycle source for the tracks! (Max McCracken)
- License change of the various data that the developers control to BY-SA
  3.0 (from BY-SA 2.5).  (Phil, emh)
- License change of the Acknowledge font to 'free to use for any purpose;'
  thanks so much, Brian Kent! (Phil, Brian Kent)

OTHER CHANGES:
- Changed data-loading code to use UTF. (biro.daniel for patch)

v0.25 (released 2006.08.10):

USER-VISIBLE CHANGES:
* There is now a py2exe version available for Windows, which does not
  require installation of any other software. (emh)
- Default language changeable via option screen. (emh)
- Finance screen shows CPU usage now. (emh, multiple people for suggestion)
- Options screen can be accessed after game start. (emh)
- Changing the language from the option screen works now. (emh)
- New item/techs. (emh, editing by Phil)
- Add up free CPU properly, for use in maintenance. (emh, bugreport by Simon Goodall)
- Change starting bases/cash. (emh)
- Save directory will be created in the right place now. (emh)
- True cost of constructing CPU items is now displayed. (emh)
- Future cost of techs displayed properly when multiple bases are working. (emh)

OTHER CHANGES:
- Deleted some extraneous images and optimized some others. (Phil)
- Cleaned up formatting in g.py. (emh)

v0.24 (released 2006.07.13):

USER-VISIBLE CHANGES:
- The Page Up, Page Down, Home, and End keys work in all listboxes. (emh)
- Modified money displays to keep them from overflowing. (Phil)
* Suspicion loss is now quadratic; different groups "forget" quicker.
  (Phil, Ticho for the suggestion)
* There are now restrictions on the building of items. (emh)
- Fixed a couple scrollbars that weren't working right. (emh)
- Spruced up text. (Phil)
- Fixed a bug with the item cost display. (Phil)
- Fixed a bug when running in NetBSD. (emh, reported by Reno Reckling)
* More items/techs. (emh)
* Bases can now be lost due to disrepair. (emh)
* Added ability to examine items and techs. (emh)
- Added in-game "help" in the form of information on various concepts.
  (emh, tweaks by Phil)
* Added preference system. (emh)
- Updated es_AR translation. (Borg[MDQ])

v0.23a (released 2006.03.08):

USER-VISIBLE CHANGES:
* Save/load works on Windows again. (emh, rspoerri for bug report)
- Updated option help (emh)

v0.23 (released 2006.03.06):

USER-VISIBLE CHANGES:
- Fixed bug that allowed access to uncompleted bases. (emh, Borg[MDQ] for
  report)
* Added ability to destroy bases. (emh, multiple people for suggestion)
* Reduced (real-world) processor usage. (emh, anonymous for suggestion)
- Moved savefile location to ~/.endgame/saves (emh, Nescius for patch)
* Added finance screen. (emh, many for suggestion)
- Construction time bonus actually works now. (emh)
- More numbers use commas now. (emh)
- Increased cost of clusters. (emh)
- Adjusted button positions for greater usability. (Phil)
- Minor typo fixes and tightened grammar. (Phil)
* Further massive reduction in processor usage using new Clock class. (Phil,
  Adam Bark for original patch)
- Can destroy bases under construction. (emh, Tim Freeman for suggestion)
- Bases under construction are no longer protected indefinitely from being
  discovered. (emh, Tim Freeman for noting problem)
- Automatically bump machines working jobs to new job levels when they are
  researched. (emh, Phil for suggestion :)
- Tweak Suspicion and Detection displays for readability. (Phil)
- Move around the various displays on the base screen for parity with the map
  screen. (Phil)
- Display the name of the base at the top of the base screen. (Phil,
  Ticho for suggestion)
- Reduce discovery chance to 0% after the game is won. (Phil, Szabó Roland for
  suggestion)
- Properly localize win screen. (Phil)
* Right-click will exit from all menus. (emh, mandos for suggestion)
- Warn players when research selected on the Research screen will not use all
  available CPU. (Phil, mandos for suggestion)
- Note bases that are under construction in the base list. (emh, Ticho for
  suggestion)
- Display the right construction time for items when you have technologies
  that speed up construction. (emh)
- Items will no longer give benefits while under construction. (emh)

OTHER CHANGES:
- Centralized some of the button code. (emh)
- Tightened up the save/load functions to allow for better save compatibility.
  (emh)
- Add_commas works better with negative numbers. (emh)
- Minor code cleanups. (Phil)
- Convert Evil Tabs in source to (4) spaces.  Code should be easier to read and
  edit now.  (emh)
- Changed savefile signature string to be less release-version based, now that
  the format is churning a lot less. (Phil)
- Fix clock code to handle "didn't run fast enough" properly. (Phil, mandos
  for suggestion)
- Fix clock code to actually return the time spent running; this allows us to
  change all clock usage to the new, uses-almost-no-CPU clock code. (Phil)

v0.22 (released 2005.10.05):
  [To read about the save file compatibility policy, please see README.txt.]
  NOTE: Save files from versions 0.21 and above should work.  Save files from
  versions 0.20 and before will not work.

- At the start, money gains a minimal amount of interest (as opposed to none).
  (Phil)
- Make the 'change research' button more obvious. (Phil)
- Change the way that technologies/items are stored.  There is now a separate text
  file detailing the technology tree, and another with all of the text
  strings.  This will allow localization of the technologies. (emh)
- When technologies are completed, we can now display a string detailing the
  result. (emh)
- Complete rewrite of technology descriptions, better matching the new names.
  (Phil)
- Minor cleanup of base descriptions. (Phil)
- New default font (Bitstream Vera Sans), especially useful for systems that
  don't have a default Pygame font for some reason (emh; reported by Brian
  Ropers-Huilman)
- Hotkeys for the various speed settings (1-4). (emh)
- Call the 'per day' code for however many days is necessary since the last
  call. (emh)
- Change the grace period for bases to start when construction is complete.
  (emh)
- Keys can repeat/mouse can be used when in textboxes. (emh, Phil)
- Reduce discovery chances for most agencies for most bases. (Phil)
- Added a new cheat. (Phil)
- Fixed tech studying when money is needed. (emh)
- Added next/prev base buttons. (emh, Borg[MDQ] for suggestion)
- es_AR translation (our first!) (Borg[MDQ], very minor fixups by Phil)
- Moved more things into data files. (emh)
- Flavored names and numbers for the bases. (idea by heatsink, implementation
  by emh and Phil)
- Translation-related crash fix. (emh)
- Global Research Screen; allows changing research for all bases. (emh, very
  minor fixups by Phil)
- Items give dialog upon completion. (emh; Jens Becker for suggestion)
- Expanded a few listboxes in order to fit the larger base names/techs. (emh)
- Various and sundry bugfixes across old and new code. (emh, Phil)

v0.21a (released 2005.09.19):
- Added '.sav' extension to new save files.  Old ones will still load, but
  they will save with a .sav extension, and the old save will not be used
  any more. (Phil)
- Fixed loading 0.20 saves with technologies currently being researched. (emh)

v0.21 (released 2005.09.19):
- Game will not crash when building a base or item in rare circumstances.
  (emh; Christan Brink (among others) for bug report)
- Fixed a few broken keyboard shortcuts, and redid the code to make this bug
  harder to create. (emh)
- Renamed almost all technologies. (Phil)
  [NOTE: The descriptions of the technologies have not yet been changed to
  match their new names.  This will be done by the next release.]
- Various typos. (Phil)
- The current speed will be highlighted. (emh; solitonwave Borg for suggestion)
- Changed endgame tech name. (emh; Daniel Radetsky for suggestion)
- Simplified savegame format. (emh; anonymous for suggestion)
- Fixed crash when loading a game, then starting a new game. (emh)

v0.20 (released 2005.09.14):
- Adjusted the README. (Phil)
- Added suspicion display. (emh)
- Slow time back to normal when a base is discovered. (emh)
- Redid base display. (emh)
- All clicks only accept the left mouse button. (emh)
- Scrollwheel works. (emh)
- Balancing. (emh)
- Various bugfixes. (Phil, emh)
- Future cash is displayed next to current cash. (emh)
- Code refactoring. (Phil)
- Bases and savegames can be named. (Phil, emh)
- Default base names are unique. (Phil)
- Suspicion reduces automatically over time. (Phil)
- Reduced cost for reactors and fields. (emh)
- Bases now have a 14-day grace period before they can be discovered. (emh)
- New technology. (emh)
- Various typo fixes. (Phil, emh)

v0.16 (released 2005.09.12):
- Moved code to subdirectory.
- Added Changelog/AUTHOR files (Phil Bordelon)
- Research and jobs are displayed better. (Phil Bordelon)
- Fixed job crash bug. (Phil Bordelon)
- Current research is listed next to the base name.
- Invisible buttons cannot be clicked anymore.
- Bases can be discovered/the game can be lost.

v0.15 (released 2005.09.11):
- Slight performance increase.
- Added help text for researching nothing.
- Added some sound.
- Covert bases are now constructable.
- Locations will only show up if bases are constructable there.
- Jobs added.

v0.14 (released 2005.09.10):
- Fixed a crash when building some bases. (Phil Bordelon)
- Reduced speed when completing research and bases. (Phil Bordelon)
- Savegames will properly store research cost. (Phil Bordelon)
- The "Build Item" screen will only come up once.
- Fixed overpaying for bases.
- Construction of bases that require CPU time is now possible.
- Maintenance costs for bases correctly taken.

v0.13 (released 2005.09.09):
- Bases give a notification when completed.
- Fixed a few spelling mistakes. (Phil Bordelon)
- Fixed a crash. (Phil Bordelon)

v0.12 (released 2005.09.08):
- Number of bases for each location listed on world map.
- Closing game window from map or base screens no longer results in a traceback.
- Buttons light up when hovered over.
- Fixed crash from undefined tech.

v0.11 (released 2005.09.05):
- Saving/loading.
- Game will no longer crash in listboxes when choosing a blank item.
- Long listboxes handle clicking correctly.
- Fixed crash related to building new bases.
- Shortcut for building base items works.
- Shortcut for building new bases added.
- Network items work now.

v0.10 (released 2005.09.03):
- Initial release.
