Awesome Java has a "changelog" section under all projects. You can find it next to the "Repo" button in the header. There are two features that make it unique.

  1. It is an aggregation of parsed "" files and releases information from Github. This way, it is easier to see all changes in a single place and a uniform style.
  2. All changelogs are "emojified". This helps with identifying each change easier. Emojification is achieved by parsing each line and applying a specific emoji based on the first word or some other tokens.

The combination of the above two makes library changelogs on Awesome Java unique.

As you know, an example is worth a 1,000 words 🚀

Changelog examples

  • lucky 0.27.2 (April 12, 2021)
    • ✂ Removed: legacy ecrypted cookies handling. #1470
    • ⚡️ Updated: Cookies resulting in encryption failure are ignored. #1470
  • jennifer 0.10.0 (December 11, 2020)

    🔄 Changes


    • ➕ add crystal 0.35.0 support and drop 0.34.0 support


    • 👍 allow arbitrary Query instances as nested queries for CTEs
    • 🛠 fix failed nil assertion when eager load relations sequence with missing intermediate relation records
    • ➕ add IModelQuery#find(id) to retrieve record by primary key
    • ➕ add IModelQuery#find!(id) to retrieve record by primary key or raise Jennifer::RecordNotFound exception
    • ModelQuery(T)#to_a and ModelQuery(T)#find_by_sql ensure T has loaded actual table field count before making a request


    • 🔄 change model constructor hash argument type from Hash(String, Jennifer::DBany) to Hash(String, AttrType) (same for Symbol keys)
    • CommonMapping#attribute uses attribute getter
    • 👻 CommonMapping#attribute raises Jennifer::UnknownAttribute exception if model has no requested attribute and raise_exception = true
    • add CommonMapping#attribute_before_typecast which returns given attribute in database format using attribute converter
    • add Mapping#{{attribute}}_will_change! to mark {{attribute}} as changed one
    • #primary uses getter
    • any Mapping.mapping invocation creates AttrType alias to represent union of Jennifer::DBAny and any arbitrary type from fields definition
    • ⚡️ change Mapping#update_columns argument type to Hash(String | Symbol, AttrType)
    • ⚡️ Mapping#update_columns raises Jennifer::UnknownAttribute if key-value pairs include unknown attribute
    • Mapping#set_attribute to accept AttrType
    • 👻 Mapping#set_attribute raises Jennifer::UnknownAttribute exception if model has no requested attribute
    • ⚡️ Mapping#update_columns raises Jennifer::UnknownAttribute if key-value pairs include unknown field
    • Mapping#arguments_to_insert and Mapping#arguments_to_save use #attribute_before_typecast to collect attributes to store in a database
    • #add_{{relation}} accepts AttrType as a hash value type
    • 📇 rename EnumConverter to PgEnumConverter
    • ➕ add EnumConverter(T) to convert string to crystal enum
    • add JSONSerializableConverter(T) to convert JSON field to objects of T that support .from_json and #to_json methods
    • add TimeZoneConverter to convert time attributes from UTC to Jennife::Config.local_time_zone


    • ➕ add DBFormater as a proposed default logger formatter
    • 📇 change logging - emit Log::Metadata with query, args and time keys (as new crystal-db does)
    • 🛠 fix missing reconnect to database on connection lost


    • 🛠 fix a potential compilation issue that appears in certain edge cases for postgres adapter (#329)
      Adapter::BaseSQLGenerator now produces valid SQL when using multiple recursive CTEs (.with(..., true)) in a single query


    • 📇 rename TableBuilder::DB_OPTIONS to TableBuilder::DbOptions


    • ➕ add Jennifer::UnknownAttribute to represent case when unknown attribute is tried to be read/written
  • sublime-crystal 0.0.13 (December 10, 2020)

    🛠 Bugfixes:

    • #41 Avoid always applying primary.control scope to type
    • 🆓 #51 Free variable formatting
    • #56 Proper self? highlighting
    • #67 HEREDOCs with HTML tags in them breaks syntax highlighting

    👌 Improvements

    • #74 Improve indentation rules for class, module and def when using visibility modifiers