Roadmap

What works in current version:

  • database format should be unlikely to change, but in case it will be necessary old DB schema will be migrated to new one on the fly (you will have to save the file).
  • Streams - calendar-alike view, used mostly for entering your data and assigning meta-data to them
  • Accounts - view for checking you account history and current saldo
  • Search - view for searching particular entries or minibalances, with some basic report view
  • Mini-balances - for creating balances/sets of entries, that otherwise are not mutually correleted. Can be also considered as ‘static filters’. Supports advanced balances like Shared Payments/Pool/Debt and Investment.
  • translations available for English and Polish. Please note that error messages on statusbar are currently displayed always in english.
  • importing from existing CSV drivers (German and Polish banks). Note that history files you get from those banks are not standarized, and are changing from time to time, so it will very likely happen that importing particular line or even whole file will result in error. In that case please contact me with as much data as you can provide me in order for me to fix it.
  • importing from mobile client CostPal Mobile (using Dropbox)
  • downloading official currencies rates and use them to calculate balances on the fly
  • supports Windows and Linux

What does not:

  • Filters/Reports - not implemented, scheduled for v1.0. This is the single most important feature that is just not there yet.
  • support for your particular bank account - I cannot do anything if you don’t provide me with exported CSV files from bank I don’t have access to

Future features / maybes:

  • support for Polish API (for downloading all history of bank account on the fly)
  • encryption of database (?) (but you can store files on encrypted virtual VeraCrypt drive)
  • budget plan module (?)
  • generating some figures (?)

CostPal - release notes

v0.9.7 - 24.12.2023 - 8th public beta version
  • import drivers:
    • new: driver for SkyCash
    • updated drivers for Igoria, CA2019, CA, BNP
    • fixed: for IgoriaCard driver, account saldo had neutral sign, leading to wrong calculation and comparison
    • fixed: for CA2019 driver in some cases a date of booking was used, instead of date of real operation. Reverted that as it was improper for some other transactions, and also to be consistent with other drivers.
    • fixed: parsing bug with alternative newlines in IgoriaCard csv file
  • big enhancement - new ExposeManager and SelectAndScroll classes:
    • with those new implementations going back to previous view preserves selected item and scroll position. Is more flexible than previous implementation, for instance can select an item and scroll to it, but also select item while scroll to fixed vadj.
    • reduced memory footprint due to storing multiple ‘*.instance’ views (now we store only single view, needed for recent views functionality, and cases like import view where only single instance will exist throughout app lifetime) Storing view as reference for caching calendar date was also changed.
    • it made possible to improve redraw of ‘CW’ markers when their position has been changed
  • enhancement - state of minibalances and mb categories:
    • changed display state of minibalances - open is small green rectangle, when closed it’s colored grey, and when closed and any underlaying item is not yet closed - it’s colored red.
    • state of minibalance categories (ie. sum of all items underneath) is now also displayed in same fashion as minibalances, but as a bigger rectangle
    • state of minibalances is now also displayed on breadcrumbs
    • added missing refreshing of mb and mb cat state change on a breadcrumbs bar
  • enhancements and new functionalities:
    • enhancement: tempfiles are now implemented as BytesIO to not leak out data to the filesystem. Also small refactor related to tempfile classes. Note: remove_tempfile() must be now called separately from restore_from_tempfile()
    • added in many places when database is reloaded or restored a call to garbage collector to force removal of unreachable objects to keep memory usage down (that feature however was disabled in the end due to: gc.collect() was causing UI to stuck for many seconds!)
    • when switching to and from streams.joint we now use calendar date, for selecting empty entries this is important to preserve current selected day, (similar to when creating new DayEntry from empty entry)
    • redesigned horizontal separators and prev/next day buttons in import, search report and streams.joint views
    • when adding new stream/account/minibalance, scroll to very bottom to make newly added item fully visible
    • in mb recent list for display purposes remove most recent item as it points to the current view, so making it accessible in menu does not make sense
    • improved handling of exposing descriptor field, it must be updated by only a single entry (I found it could be updated by multiple entries, when group of entries was used)
    • rewritten code for delete_new_entry()/discard_editing()/quit_editing()/pop_editing_context() for streams, accounts and minibalances views
    • added free_resources() mechanism to many objects with hope for less memory usage
    • in streams.joint and import views added updating current calendar date on a (disabled) calendar
    • use GuiListWithSep in few more GuiList subclasses to reduce unnecessary code
    • streams.joint view: now it is possible to go back to this view (previously it always forcibly switched back to streams.instance and user had to manually enable it back)
    • many enhancements to GuiCalendar class
    • some other minor changes and cleanups
  • dbm window:
    • fixed: due to additional callback on_entry_activate() being installed in subclasses, validation of items was effectively skipped
    • fixed: missing validation of newly added aliases
    • fixed: validation allowed empty items (!)
    • fixed: GTK warning in get_last_iter()
    • enhancement: added informational hints helpful for first time user
    • enhancement: instead of generic ‘new item’, newly created items are more specific
    • enhancement: clear statusbar when validation of items was successful
    • changed newly added aliases to ‘AAA, aaa’
    • some refactoring, changing name of classes
  • import preferences:
    • when new item is added to the list, it will scroll down to bottom to show it (also implemented for lists in DatabaseMeta window)
    • action buttons are now disabled or enabled depending if an item was selected (also implemented for lists in DatabaseMeta window)
    • change order of columns to more convenient one
    • rows are now also custom sorted using driver names, with mapping idx as secondary sort key
    • multiple mappings for the same driver cannot be now accepted, if the same bank account number is repeated
    • added possibility to enable/disable mappings that are no longer needed by user (they cannot be simply removed if some entries were already imported using them)
    • added possibility to hide mappings for accounts already closed
    • row is displayed now with grey bg if mapping is disabled, and column with driver is displayed now with bold font to hint that some entries were already imported using that mapping)
    • added hints at the bottom with useful info for the user
    • fixed: small bug when normalizing aliases for bank account numbers
    • fixed: missing dbm.set_dirty() when enabling/disabling a mapping
  • import:
    • use everywhere a custom sort order for more convenient displaying list of import drivers (also renamed displayed drivers names due to that)
    • for drivers that support aggregation of other bank accounts, display appropriate hint after selecting driver in import window
    • mappings disabled by user are now hidden from selection in import window
    • detect if importing history for credit card account, and use that info to properly compare and display account’s saldo after importing (currently implemented only for CA2019 driver)
    • corrected code for calculating and displaying account saldo after import
    • fixed: when join and feed during import is used, mb hint was lost
    • fixed: in join_entries_and_feed() mb_hint field don’t have to be always provided
    • fixed: if during import user saved a database to another file and refreshed import view, he found entries he already imported still on list of entries to import. That’s because session_idxs were cleared during save_during_import().
    • fixed: in import csv - add missing part for skipping over disabled mappings when recognizing bank account
    • enhancement: when feeding scroll to right DayEntry instead to the very top (which could have been quite incorrect when having large number of streams)
    • fixed: during import when Feed, then Cancel, and then Accept on any Entry/EntryExtended was resulting in canceled import entry to dissappear (as when properly fed without cancelling)
    • fixed: in some rare cases there was a selection glitch when fed to an existing day entry in import view
  • DB format changes:
    • added new schema migration at load time, due to introduction of new ‘disabled’ field in import_account_mappings
    • allow neutral ‘0.00’ amount for ‘account - incoming transfer’, as it’s possible with mb hint ‘investment - interests’
  • Accounts View:
    • fixed: issue with including ‘account - end-of-day status’ in account balance, when entries were placed in the same day but in a different stream, and was processed after end-of-day entry in a previous stream.
    • enhancement: added displaying balance difference calculated from ‘account - end-of-day status’. Also changed methods to staticmethods, to be useful in other views in the future. This required removing fixing height of entries to 20px (seems unnecessary anyway).
  • Search View:
    • fixed: in search view, under Where tab, in specific case widgets where not hidden correctly, so they were shown over the others
    • fixed: in search report when searching for mbs and then clicking mb, show_in_minibalances_view() was causing exception as mb_cache was not yet built (happens only when no ‘Minibalances’ navigation section has been accessed before)
  • Minibalance View:
    • fixed: when reopen/close a minibalance, wrong item was being reselected. The same issue was with open/close an account.
    • fixed: some entries in minibalance view were displayed with incorrect sign
    • in minibalances view, don’t unnecessarily reload current view when clicked on the last breadcrumb
    • fixed: switching to top-level mb, using mb recent list, resulted in incorrect breadcrumbs
    • fixed: when mb was red and closed, and then assigned sub mb that is not closed, status of mb cat was not updated
  • bugfixes:
    • fixed: incorrect calculating of amounts when one of entered amounts had no sign
    • fixed: bug in edit metadata window - when adding new currency selection caused exception due to item not yet added to real DBM data.
    • fixed: bug when creating new db - when adding new item in the initial metadata window, search view could be non existing yet.
    • fixed: bug in scroll_to_bottom_cb() callback
    • fixed: enhanced callback handlers on_focus_out() and on_key_press(), as sometimes it tried to disconnect already disconnected callback
    • fixed: bug with Enter not working for accepting entry (missing focus on comment field)
    • fixed: corrected handling of ‘vadj_value’ as it interferes with vadj positioning when reloading import view
    • fixed: corrected scrolling to subentry with ‘last_selected_subentry’. Appropriate code was also rewritten for ‘show in stream’ request.
    • fixed: handle case in navigation list when GTK’s tree selection path was already selected
    • fixed: ‘Streams’ was being removed from path bar at import abort
    • fixed: removing entry from real data when it’s a new entry (not existing in real data)
    • fixed: switching initially to import view was resulting in double switch to the same view
    • fixed: when editing DayEntry in streams.instance context, using calendar arrows caused exception
    • fixed: cut and paste of entry inside DayEntry resulted in disabled DnD functionality
    • fixed: when in process of adding new stream/account/minibalance and clicking navigation list to change view, new item should be discarded, instead it was not only saved in DB but also invalid (validation was not performed)
    • fixed: issue with utf-8 for comment field in *.instance views, when using text_box()
    • fixed: added bypass for GTK calendar bug, when clicking on calendar day belonging to prev/next month, two events are generated instead of one, with first one having invalid date
    • fixed: moved focus_manager.pop_context() before edit_manager.pop_context(), as now in edit manager we delete GTK resources that focus manager tries to use
  • others:
    • updated homepage docs
v0.9.6 - 15.03.2020 - seventh public beta version
  • import drivers:
    • new: driver for Santander PL
    • new: driver for Credit Agricole PL (new format introduced in 2019 with new web UI)
    • BNP driver: updated format
    • Dropbox driver: fix parsing of tags
  • bugfixes:
    • fixed: deleting account was failing at missing SelectPart.check_remove()
    • fixed: previous change to remove starting param edit at importing new entry was not good. We have to start it, but try accept immediately. That way in case of fail we have some error displayed on status bar (previously nothing), and also param will still be in edit mode, so user can edit it right away.
    • fixed: Enter did not work after canceling new imported entry (previous changes in rev.156 were incomplete)
    • fixed: if accepted initial amount, focus on comment field, which is the same behaviour when editing existing entry
    • fixed: already_imported_lines was not initialized in the case where new mapping was added to a driver after the first file import has finished, and then user started importing another file using that new mapping
    • fixed: unable to add any mb hints to ‘account - charge/fee’ entries, necessary for loan/credit pay off
    • fixed: entry amount displayed incorrectly, if assigned to more than 1 minibalance (I had a case of investment entries, that were incorrectly displayed in common mb view)
    • fixed: py2exe: disable annoying popup after app closes
  • others:
    • reindent CHANGELOG
v0.9.5 - 12.01.2020 - sixth public beta version
  • import:
    • added showing current saldo after importing csv on status bar
    • after bank import, if saldo is available in csv, compare it with current account state and display the difference on status bar
    • lines already imported during session are now stored as indexes, so duplicate lines can be handled correctly.
    • added ‘line_to_ignore’ mechanism as necessary to handle cases when next csv line is consumed completely to create a single entry (not to be shown to user at all)
    • at import, don’t start edit of amount field of imported entry, as usually it will already contain valid value and will be validated automatically (one click less for the user)
  • import drivers:
    • CA driver: many enhancements
    • Dropbox: added support for transaction hints (from most recent CostPal Mobile)
    • new: BNP Paribas (xlsx), Igoria Card (csv)
  • DB format changes:
    • adding support for ‘provision_account’ to EntryType_Transfer
  • Streams View:
    • enhanced params of GuiExtendedEntry, dropping using of set_sensitivity() in favor of clickable, deletable item with red color of invalid param
    • common entry now requires account to be assigned, defaults to cash/main account, automatic migration is also added
    • in descriptor field, currencies assigned to account are not displayed anymore, as for multi-currencies accounts that was proven to clutter readability
    • when editing entry, fields are now displayed with smaller font if they cannot fit with normal font. That required changing code for rendering invalid fields.
    • when editing entry, there is now info icon next to it, providing informative tooltip
    • now Accept button can also be used for accepting field under edit (for better usability)
  • Search View:
    • first basic implementation of Search Report view
    • search and report: disabled OR/AND filtering, changed some titles, removed not yet working options, as preparation for release
    • added support for additional period search options
    • added proper assigning to income and expense sections for entries with amount_balance fields
    • set_current_date() now works properly for report paging
    • fixed: disallow search by mb type + report, as we don’t support it
    • fixed: when run app for first time, and then doing search by mb type, ‘Where’ page was empty
    • fixed: some search mb criterias were picked up even when criteria was ‘any’
    • search report: if no entry found, use current date as sensible fallback
  • Accounts View:
    • added displaying end-of-day saldo in accounts view
  • Minibalance View:
    • redesigned display of SharedPool/Payments/Debts into columns
    • details of SharedPayments/Pool/Debts are now displayed with distinct color and only if mini-balance is open
  • enhancements and new functionalities:
    • adding ExchangeRatesManager for converting currencies
    • added preview on status bar of current invest/loan value for minibalances and when selecting accounts, also info about currency conversion on single entries
    • redesigned stream markers, now BG color is used as FG color
    • accounts markers:
      • implemented markers for accounts, that are shown next to entry type
      • in preferences they can be disabled (saved also in config.ini)
      • when enabled, entry type is bold for better readability
      • added also markers for group entries and recently imported entries
  • visual and usability:
    • added better icons for switch on/off functionality
    • added edit icon, also increased size of some elements in RMB menu
    • changed colors of few elements
    • enhancing displaying group entry
    • enhanced editing of some items like streams, accounts, mbs and mb cats, their fields also have additional labels
    • labels are now displayed also when editing entry, day entry and group entry
    • items have now dashed decoration during editing
    • subtext for streams and mini-balances is now bit bigger but grey instead of black (for better readability)
    • enhanced slightly ‘Empty’ items for better readability
    • changed vertical sizes/spacing of minibalances and minibalance categories so they are more consistent
  • others:
    • enhancements to recent menu, extending to 10 items
    • reselecting minibalance after close/open, also reselecting entry when descriptor window closes (so preview on statusbar is shown again)
    • limiting sign of from-to amounts in information+exchange, as they lack sense
    • when meta-data window is started from descriptor window, restoring of dbm is not supported (quit button does nothing). Restoring will be possible in the future with undo/redo functionality.
  • bugfixes:
    • fixed: issue with deviation amount having improper currency
    • fixed: issue with amount balance not being copied before calculate
    • fixed: issue with SharedPayments, balance for external person was not calculated
    • fixed: ‘account - end of day status’ was tolerating neutral nonzero amount and also was displayed always without sign
    • fixed: setting icon+text at extra bar button was resetting label attrs
    • fixed: ‘CW’ markers were not updated when entries had their sizes changed during start/accept editing
    • fixed: restoring DB was pointless in some cases (closing file during import or when there was nothing to import)
    • fixed: bug related to provision_account, code was also refactored as existing one became too confusing (see utils.py and DatabaseStreams.py)
    • fixed: amount undefined not supported if mb hint was used
    • fixed: missing currency exchange in filter condition
    • changed order of entries_view.load_data() in skip_or_feed(), this was necessary and I think this could have caused rare events of desynchronizing of state machine in the past
    • fixed: ‘view->streams.joint’ was removed at abort import, and not recreated, making switching to joint mode not working after abort
    • fixed: grabing focus after deleting newly imported entry so Enter will work afterwards (deleting normal entry did not cause such issue)
    • fixed: adding new currency alias was not possible anymore, since the introduction of amount_balance in info entry type
    • fixed: when during import new mini-balances were added and import was aborted, restoring of DB had an exception, because quit_all() callback in edit manager was calling eventually reinit and load_data() on previous objects (!) with already restored new dbm data. Introduced remove_all() to remove old callbacks instead.
    • fixed: after hiding descriptor window, focus was not restored to element that previously had it (usually edit box of selected entry)
    • fixed: accept_try() for fromto_amount param was not called properly, causing a proper fields to be rendered as invalid
    • fixed: clicking prev/next day buttons in import view was switching focus to those buttons, causing Enter to do something else than what expected on feed button
    • fixed: bug with joining provisions and comments in join_entries_and_feed()
v0.9.4 - 12.11.2017 - fifth public beta version
  • import (general):
    • fixed: bug at import, with changing date of day entry, it was then incorrectly ordered in streams view
    • fixed: bug at import, if cancel feed was done at other date than fed
    • fixed: bug at import, when editing day entry was discarded (using Escape key)
  • import csv:
    • enhancement: drivers CreditAgricole PL and Postbank DE
    • mb hints related: import csv now uses mb hints
  • DB format changes:
    • new: now EntryExtended_Information supports amount balance instead of single amount
    • added new EntryExtended type ‘account - incoming transfer + exchange’, as I had to use it in csv import for the first time
    • added ‘provision_account’ descriptor field to ‘account - internal transfer’ entry as third optional account field, as it’s needed in some cases
    • mb hints related: removed accumulative_interests param, now it’s part of mb hints
    • mb hints related: added migration of DB to new schema (v1), schema now is saved in meta.yaml. Many existing extended entries were migrated to related mb hint.
    • adding SharedPool.HINT_NAME_11, SharedPayments.HINT_NAME_7, SharedPayments.HINT_NAME_8 as I realized they are needed (no other way of detecting that the hint refers to external person)
  • Accounts view:
    • fixed: hidding undefined amount in accounts view
  • Minibalances view:
    • new: extending mini-balances to contain categories, period, persons and other mini-balances
      • reimplemented balance calculations to include sub mini-balances
      • added needed compatibility checks for mini-balances optional fields
    • new: showing assigned minibalances in Minibalances view
    • mb hints related: assigned mb hints are additionally displayed in minibalances view for convenience
    • fixed: case with empty loan value was displaying empty brackets
    • fixed: now regenerating mb cache with every reload (without it eg. assigned mbs were not refreshed)
    • Investment minibalance:
      • now open investments calculate in profit also charges/fees, not only interests
    • SharedPool/SharedPayments minibalance:
      • adding SharedPool.HINT_NAME_11, SharedPayments.HINT_NAME_7, SharedPayments.HINT_NAME_8 as I realized they are needed (no other way of detecting that the hint refers to external person)
      • fixed: improved calculation of SharedPool in terms of external payments
      • fixed: SharedPool - skip if empty balance coming from assigned persons
  • Search View:
    • reshaped UI, now using comboboxes as they are more sparse, also show elements only if they are needed to not clutter the display
    • extending Search view by adding minibalance criterias
    • mb hints related: added filter parts for searching mb hints
    • moved selecting of item type from Filter page to Select page
    • using mb_cache now
    • extracted match_period()
    • fixed: selection in navigation list
    • fixed: combobox in minibalances was accepting scroll events
    • fixed: search.py - incorrect check_visibility() call for entry type filter part
    • fixed: now regenerating mb cache with every reload (without it eg. assigned mbs were not refreshed)
    • some other fixes
  • main enhancement and new functionalities:
    • (big change) introduction of minibalance hints:
      • rewrote MinibalanceType and EntryExtended classes, introduced MinibalanceHintType
      • added ‘mb_hints’ descriptor field (list of strings)
      • assigned mb hints are additionally displayed in minibalances view for convenience
      • added migration of DB to new schema, schema now is saved in meta.yaml
      • added filter parts for searching mb hints
      • removed accumulative_interests param, now it’s part of mb hints
      • import csv now uses mb hints
    • introducing new minibalance type Shared Debts
    • new: now EntryExtended_Information supports amount balance instead of single amount
    • new: introduced user-friendly dialog for selecting new DB template, also extracted generic dialog class
    • displayed AmountBalances have now extra space for better readability
    • new: added possibility to show all streams for given date at once (smilar to import view)
    • new: added AmountUndefined
    • added MBRecentManager for managing list of recently opened mini-balances
  • others:
    • veryfying Linux support (tested on Ubuntu 14.04):
      • changing to importlib as otherwise locale module was not working
      • other things for unifying visuals
    • code refactoring:
      • refactored GuiSelectDataList and GuiSelectDataWindow
      • refactored recent opened files list into RecentManager
      • some refactoring and cleanups in DBM methods
      • refactored breadcrumbs for mini-balances
      • refactored Search view
      • extracted ClassRegistryMeta
      • refactoring in entry_ext.py
    • small enhacements to separators
    • minor: ‘Empty’ elements are now dark grey instead of dark green
    • due to new CostPal Mobile app and Dropbox API, location of default dropbox dir has changed
    • descriptor edit: now it’s possible to remove desc fields that are not supported by the given configuration (unsupported ones are colored red)
    • descriptor edit: added possibility to unset minibalances and mb hints if they are set but at the moment greyed out
    • minor: changed some texts in lang.py
    • adapted examples to new DB schema and improved them
    • disabled forced renaming of old example files as inconvenient, now only warning is printed
  • general bugfixes:
    • fixed: bug in DatabaseStreams.check_for_remove()
    • fixed: bug in GuiEntry.discard_editing()
    • fixed: bug with ‘view->streams.joint’ in reload_all()
    • fixed: bug with counting entries related to a person
    • fixed: when setting period, sometimes it tried to set empty period which resulted in exception
    • fixed: bug in get_mb_references() related to counting references
    • fixed: previously at discarding changes made to entry under edit, descriptor was not restored
    • fixed: import issue in __init__.py (manifested in DatabaseStreams.py)
    • fixed: indices for amount balance were calculated with unicode, causing wrong coloring of currency aliases with unicode characters
    • fixed: Entry was missing validation of descriptor
    • fixed: canceling editing of Entry was not restoring descriptor (also in case when entry just was converted and it’s descriptor was modified)

v0.9.3 - 30.08.2016 - fourth public beta version

  • import (general):
    • fixed: extended entry was missing showing as greyed out in import view
    • fixed: blocking import actions in import view if editing group entry
    • fixed: trying to fix bug in cancel_feed()
    • fixed: during import, in case of GuiEntryGroupList, descriptor field was incorrectly positioned
    • fixed: bug in import view, when moving entry from one stream to another, when there was only a single entry within day entry, view became stalled
    • fixed: bug at import when path contained polish signs
    • fixed: missing check when changing date of DayEntry in import view
    • fixed: some other issues
  • import csv:
    • new: added driver for Deutsche Bank PL
    • new: added driver for Alior Bank PL (only rudimentary, based on csv converted from Meritum Bank)
    • enhancement: drivers CreditAgricole PL and Postbank DE
  • DB format changes:
    • enhancement: removed MyLoan and FinanceInstrument entry types as redundant (separate minibalance type was added to fill the gap)
    • enhancement: moved Extra.ENTRY_NAME_3 to Transfer.ENTRY_NAME_9
    • enhancement: ‘person’ in Descriptor is now multi-value field, mostly for SharedPayments/SharedPool
    • migrated DBM schema due to new multi-level minibalances nesting feature
    • enhancement: added automatic migration of database
    • adapted examples to new DB schema
  • SharedPool/SharedPayments minibalance:
    • new: SharedPayments/Pool mini-balances now have 2 amounts like Investment have. First is amount that database owner has actually spent, second is unchanged and shows overall payments/pool status. Note that only first one is propagated to mini-balance category.
    • fixed: small bug when creating new SharedPayments/Pool with no entries/no persons assigned
  • Investment minibalance:
    • enhancement: much better balance calculation for mini-balance Investment
    • enhancement: Investment minibalances are now calculated regardless of open/closed state
    • enhancement: for Investment check if no related entry occurs on the same day after status entry (suggesting a user’s mistake)
    • enhancement: for Investments which have a profit estimated in the future, don’t count it in mb cat balance and display it as greyed out
  • main enhancement and new functionalities:
    • (big change) new Search view (completely functional, just no reports functionality yet)
    • (big change) rewritten Minibalances view to new multiple-level mini-balances design
      • added checkbox show/hide closed minibalances in Descriptor window
    • (big change) rewritten Accounts view with intence to replace DBM interface
      • added extra bar with show/hide closed accounts button
      • added checkbox show/hide closed accounts in Descriptor window
      • hiding closed accounts at import time
      • removed accounts support from DBM window
    • new Filter view (just stub for now)
    • new Logs view
    • categories are now first to choose in descriptor window
    • added moving of mini-balance between mini-balance categories
    • added reordering of entries for EntryDay and EntryGroup
    • enhancement: date and weekday in Streams view is now more visually readable
    • enhancement: status of account/investment is never accounted as normal balance, so display it as grey
    • enhancement: names of extended entries are now custom sorted for better readability
    • enhancement: optimized accounts view (4-6x faster) and minibalances view (50-150x, sic!) by limiting number of iterations needed to get all needed items for these views to minimum
    • enhancement: in accounts, minibalances and search entries list views showing date only for the first item in the group for better readability
    • enhancement: for group balance added separate balance for greyed out entries
    • enhancement: introducing minibalance types (Common, Investment, SharedPayments, SharedPool, CreditLoanOrInstallment, ItemValue)
    • enhancement: added checking if item can be removed if still referenced by Search view, also adapt selected streams indexes if reordered
  • others:
    • enhancement: synthetised Period class from GuiPeriodSelect class
    • enhancement: removed shadow from scrollWin2 as I realized it was possible
    • enabled icons inside buttons once I realized it was possible
    • added create_custom_stock_button() for stock icon + custom text buttons
    • enhancement: synthesized ExposeManager and SelectAndScrollMixin classes
    • enhancement: synthesized show_in_stream_view() function
    • enhancement: synthesized GuiCommonViewEntry class
    • enhancement: moved helper functions to account.py and minibalance.py modules
    • enhancement: narrowed height of GuiCommonViewEntry
    • enhancement: GenericEntryExtended has now to_string() method for getting class names
  • general bugfixes:
    • fixed: numerous issues with cut-paste
    • fixed: bug in finish_paste_entry(): trying to remove objects that were already out of display (unparented)
    • fixed: bug in finish_paste_entry(): import view was becoming unresponsive during paste
    • fixed: bug in get_param_by_type()
    • fixed: new examples were not replacing old ones in user home dir, introduced better handling of that issue
    • fixed: possibility to move empty minibalance was not disabled
    • fixed: after converting entry to extended one and then cancelling it immediately, original entry was not being selected again
    • fixed: is_balance_shared_xxx functions were working incorrectly
    • fixed: import mappings treeview in preferences window was drawn outside of valid area
    • fixed: in case of unicode currency alias (eg. €) fromto amounts were displayed with some garbage
    • fixed: in accounts view there was assumption that view always contains a date (like in streams view), so sometimes entry was selected, sometimes not. Now it is limited, coherent and not needed calendar buttons are also disabled.
    • fixed: using “” in Entry comment was wrongly parsed, greedynes was hence added
    • fixed: missing check for empty minibalances in Descriptor window
    • fixed: entry ‘extra - info’ without amount field was not displayed in search results
    • fixed: for a long time there was bug in get_supported_params_generic() causing accepting incorrect params combinations (eg. when amount was not provided at all!)
    • fixed: discovered bug with wrong usage of AMOUNT_FIELDS, led to introduction of get_accounted_amount_fields()
    • fixed: some bugs related to calculating balance for mini-balances and checking mb type compatibility
    • fixed: exception from get_current_date() when creating day entry in new empty stream and no calendar was used for this view yet
    • fixed: select_day() in GuiPeriodSelect was not selecting day on first calendar widget if range type

v0.9.2 - 07.06.2015 - third public beta version

  • import (general):
    • introduced new import window
    • rewritten a lot of general import-related code, especially already imported lines handling, removed unneeded error handling code
    • distinct separation between bank account csv import vs. dropbox csv import (for convenience and technical reasons eg. dropbox does not use of mapping id)
    • added automatic migrating of older DBU structures ‘default_import_accounts’ (if present) to new ‘import_account_mappings’ in DBM
    • added checking consistency of current bank account during loading up
    • rewritten some other import-related code
  • import csv:
    • improved all drivers (mostly CA, mBank and Meritum)
    • added new driver: ING Bank Śląski PL
    • added using mappings for recognizing internal transfers
    • added reading bank account number from csv header if possible, also reading account number of given transaction
    • added in all drivers utilizing an actual date of transaction if possible
    • now we read all details once with load_details()/get_lines_and_details(), not only that was required by date sorting, but also increases performance
    • added possibility for drivers to skip particular entries (if they are redundant, eg. separate cash withdrawal provisions)
    • added passing from_amount and to_amount thru get_details(), also from_account and to_account
    • extracted subtract_provision_str() function
    • fixed: already imported lines were not preserved for restore purpose if user aborts the import (aside of DBS/DBM/DBU)
    • some small bugfixes
  • DB format changes:
    • added support for ‘import_account_mappings’ (DBM)
    • removed support for ‘default_import_accounts’ (DBU)
  • preferences window:
    • rewritten whole window, added support for defining import account mappings, using new concept (entering real bank account number, that will be used when recognizing if transfer is between user’s internal accounts, and also for separating already imported dumps)
    • fixed: disallowed changing of driver combo if driver for given mapping was already used
    • fixed: minor bug when parsing entered bank account aliases in preferences window
  • main enhancement and new functionalities:
    • new: added support for estimating ‘ca.’ entries (with precision deviation) and properly displaying it
    • new: instead of displaying profit from investment if mini-balance is closed and investment value if it’s open, now both values are displayed whenever possible, true also for mini-balance category
    • enhancement: now at focus-out edited cell content is saved (in preferences and DBM windows)
    • enhancement: now in case of parsing errors appropriate error message is displayed on status bar
  • others:
    • enhanced make_balance_attrs()
    • cleaned up code for displaying balance labels
    • added copying of CHANGELOG
    • updated screenshots to english version
  • general bugfixes:
    • fixed: extended entry ‘account status’ was calculated only for a single currency, which is not suitable for multi-currency accounts like cash account
    • fixed: copy/pasting text with newlines inside was causing silent parsing errors (!), introduced normalize_newlines()
    • fixed: pressing Enter in GuiExtendedEntry was causing accepting of entry without actual checking for acceptable
    • fixed: improved app’s dirty flag handling in case save occured during import
    • fixed: added checking of aliases to bank account check
v0.9.1 - 14.05.2015 - second public beta version
  • now supported on WindowsXP SP3 (32bit)
  • DB format changes:
    • removed ‘main_stream_idx’ from meta.yaml
    • SharedPayments.ENTRY_NAME_2 amount is now ‘-‘ instead of ‘+’ (manual adaptation required!)
    • SharedPool.ENTRY_NAME_4 amount is now ‘-‘ instead of ‘+’ (manual adaptation required!)
  • import csv (Meritum Bank driver):
    • fixed: old csv for savings account for Meritum Bank was having malformed header, causing whole csv as unrecognized
    • fixed: operation code 8001617 not recognized
    • fixed: ‘Lokata nr … zerwanie’ was incorrectly mapped
    • fixed: also corrected mapping for “Odsetki - Kapitalizacja odsetek” and “Odsetki - Podatek od odsetek (podatek belki)”
  • import csv (Dropbox driver):
    • added saving recent import dir location in config.ini
    • added mapping to cash withdrawal for neutral amounts and extra information for zero amounts
  • SharedPool minibalance:
    • limited usage of additional entry types to Extra informational
    • added new type SharedPool.ENTRY_NAME_5 - shared pool - my recompense of other’s payment
    • fixed wrong calculation, lead to conceptual changes
    • db format change: SharedPool.ENTRY_NAME_4 amount is now ‘-‘ instead of ‘+’
    • removed assumption of using multi persons as ‘persons’, not used so far anyway
    • fixed: bug with wrong person displayed in SharedPayments/SharedPool (idx used instead of id)
  • SharedPayments minibalance:
    • Extra informational entry type is now supported
    • added new type SharedPayments.ENTRY_NAME_5 - shared payments - other’s recompense of other’s payment, using ‘to_person’ and ‘from_person’ descriptor fields
    • fixed wrong calculation, lead to conceptual changes
    • db format change: SharedPayments.ENTRY_NAME_2 amount is now ‘-‘ instead of ‘+’
    • removed assumption of using multi persons as ‘persons’, not used so far anyway
    • fixed: bug with wrong person displayed in SharedPayments/SharedPool (idx used instead of id)
  • Investment minibalance:
    • fixed: proper calculating of Investment balance in case no interests capitalization is provided by user
  • main enhancement and new functionalities:
    • enhancement: removed ‘main_stream_idx’ from meta.yaml, it is not used anymore once I realized there is no point of making a single stream special and unremovable. As a consequence stream marker is now possible to be set up for every stream.
    • new: implemented drag and drop mechanism for streams, mini-balances and mini-balance categories, so it is now possbile to reorder them
    • new: rewritten calendar navigation to have best usability, bigger buttons and changing of week possibility
    • new: DBM and descriptor windows sizes are now shared and preserved in config.ini
    • new: now it is possible to access DBM window from within descriptor window
    • new: added to import history view possiblity to change current date
  • others:
    • empty descriptor field is now 400px in height, much easier to click
    • added accept button also for normal entries (for consistency)
    • accept button does not catch a focus now
    • repositioned/resized some gui elements
    • logo in better resolution, required for Android
    • added ‘to_person’ and ‘from_person’ keys support in Descriptor
    • changed examples due to db format change
    • more space for amount balance in accounts and mini-balances views
  • general bugfixes:
    • fixed: bug with displaying in preferences assigned account from ‘default import account’ (idx used instead of id)
    • fixed: bug with navigation list becoming enabled after closing preferences window
    • fixed: ‘join and feed item’ function was falsely assuming that item always has a provision field
    • fixed: already imported list was unnecessary emptied at saving file, which was causing loss of already imported entries with next save file (when done during single import)
    • fixed: normalize amount balance when calculating balance so zero amount in cases like ‘300 EUR 0 PLN’ is not displayed
    • fixed: incorrect copying of examples when running from sources repository
    • fixed: when length of account/minibalance balance was too long, right pane was forced to resize
    • fixed: recent menu is now disabled if no items
    • fixed: rethinked cut/paste mechanism, fixing 2 bugs, now we start edit after pasting and we refresh content of the affected day entries only
    • fixed: bug in streams view, a case when there was a whole month empty inbetween in a whole-year context
    • fixed: entering empty space as currency alias was allowed
    • fixed: in streams and import history views, descriptor field at the very bottom was in case of too long descriptor field incorectly positioned
    • fixed: now balance label in accounts and minibalances views is properly right-justified
    • fixed: make sure entries are enabled back in import view, in case we switch between views
    • fixed: day entry was not quitting if param was still in edit
    • fixed: scroll to the top when feeding, useful especially for ‘join and feed’
    • fixed: no empty day entries are now created when canceling import or switching to another view when during feeding
    • fixed: disabled possibility to use a zoom context scale with a mouse button, as it’s jerky and slow
    • fixed: for some time there was a bug with week-context in streams instances
    • fixed: some rare bug with descriptor field positioning
    • fixed: exception in import view when date is None (ie. no entries to import)
    • fixed: when activating navigation buttons, quit all active editing contexts before changing a date (which will usually reload a view), also when activating manual day selection by user
v0.9 - 27.04.2015 - first public beta version
  • supported on Windows7 (64bit)
  • database format is considered final, only small bugfixes are expected (if any)
  • featured views:
    • Streams - calendar-alike view, used mostly for entering your data and assigning meta-data to them
    • Accounts - for checking you account history and current saldo
    • Mini-balances - for creating balances/sets of entries, that otherwise are not mutually correleted. Can be also considered as ‘static filters’. Supports advanced balances like Shared Payments/Pool and Investment.
  • translations available for EN and PL countries (please note that even for PL version, error messages on statusbar are currently displayed in english)
  • importing from few CSV drivers (3 polish and 2 german bank accounts)
  • importing from Dropbox (using CostPal Mobile app)
  • added windows portable package with py2exe
  • added windows installer with Inno Setup
  • added documentation with guide and screenshots, generated with Sphinx (reST)
  • prepared 5 examples (4x EN and 1x PL databases)

CostPal Mobile - release notes

v1.0 - 15.03.2020:
  • completely rewritten
  • UI redesigned
  • added reminders
  • considered stable, only potential bugfixes will follow
v0.9.4 - 22.10.2017:
  • adapted to use new Dropbox API
  • changed location of imported/exported csv files
  • added support for typing multiple currencies in single amount field (eg. -3e+2zl)
  • some small bugfixes