All Versions
31
Latest Version
Avg Release Cycle
32 days
Latest Release
64 days ago

Changelog History
Page 1

  • v0.27.2 Changes

    April 12, 2021
    • โœ‚ Removed: legacy ecrypted cookies handling. #1470
    • โšก๏ธ Updated: Cookies resulting in encryption failure are ignored. #1470
  • v0.27.1 Changes

    April 09, 2021
    • ๐Ÿ›  Fixed: support for previous versions (<= 0.26.0) of encrypted cookies. #1467
  • v0.27.0 Changes

    April 09, 2021
    • โž• Added: support for Crystal 1.0 ๐Ÿฅณ #1445
    • โž• Added: Pulsar events for tracking before/after action pipes. #1423
    • โšก๏ธ Updated: link to raise an exception when passing both to and href. #1428
    • โž• Added: support for more HTML standard tags. #1433
    • โž• Added: new mount_instance method to mount an instance of a Component. #1446
    • ๐Ÿ›  Fixed: bug when using VueJS type attributes on HTML tags. #1452
    • โšก๏ธ Updated: the exception page to look like it belongs in Lucky. #1451
    • โšก๏ธ Updated: HTML tags to allow passing in a raw hash of attributes. #1453
    • ๐Ÿš€ Updated: the lucky build.release task to build in to the bin directory. #1454
    • ๐Ÿ›  Fixed: error message when passing wrong type values to HTML tags. #1456
    • Updated: lucky_cli dependency with new lucky_task shard. #1459
    • โšก๏ธ Updated: generated apps so LuckyFlow is only a development dependency. #608 in Lucky CLI
    • โšก๏ธ Updated: Auth modules in generated apps to be in an auth/ directory. #618 in Lucky CLI
    • โœ‚ Removed: LuckyCli::Task in to a separate shard. #622 in Lucky CLI
    • โž• Added: new LuckyTask shard to the ecosystem. View LuckyTask
    • โšก๏ธ Updated: avram_enum to allow parsing a String value. #639 in Avram
    • ๐Ÿ›  Fixed: bug when a column is defined as a DOUBLE, and using Float64. #637 in Avram
    • โšก๏ธ Updated: migrations to use Int64 by default allowing for better CockroachDB support. #641 in Avram
    • ๐Ÿ›  Fixed: database transactions to not require a Bool return type. #626 in Avram
    • โœ‚ Removed: deprecated raw_where methods. #653 in Avram
    • โž• Added: new where(&) method for wrapping queries in parenthesis. #652 in Avram
    • Added: new drop_foreign_key method. #654 in Avram
    • โšก๏ธ Updated: how table names are stored internally paving the way for faster compilation. #660 in Avram
    • โž• Added: new parameterize method for string helpers. #9 in Wordsmith
    • โž• Added: new Habitat.extend macro for extending existing configuration settings. #59 in Habitat
    • โž• Added: new development dashboard shard Breeze. View Breeze
    • โž• Added: new .env parsing shard LuckyEnv. View LuckyEnv
  • v0.26.0 Changes

    February 06, 2021
    • โšก๏ธ Updated: the compile-error for missing Page args. #1373
    • ๐Ÿ›  Fixed: flash messages to be discarded unless specifically kept. #1374
    • โž• Added: generating JSON::Any columns from lucky gen.model task. #1375
    • โž• Added: creating empty HTML tags passing in a Hash for options. #1377
    • โšก๏ธ Updated: action generators to use actual route instead of the route or nested_route methods. #1378
    • โšก๏ธ Updated: the compile-error for incorrect route helper usage. #1372
    • โšก๏ธ Updated: lucky gen.*.resource task to not shadow outer local variable. #1379
    • ๐Ÿ›  Fixed: uploaded files now have access to the tempfile before it's closed. #1381
    • โž• Added: new lucky gen.task task for generating a new Cli Task. #1322
    • โž• Added: new params.get_all method to get an Array of values from params. #1389
    • โœ‚ Removed: broken tag() overloads. #1394
    • โž• Added: support for Crystal 0.36. #1398
    • ๐Ÿ›  Fixed: empty HTML tags adding an extra space when generated. #1400
    • ๐Ÿ›  Fixed: issue with wrong types for form HTML methods when passing in an Operation Attribute. #1405
    • โšก๏ธ Updated: DB logging to be a little less excited. #589 in Lucky CLI
    • Removed: usage of the route and nested_route methods in generated apps. #594 in Lucky CLI
    • Added: some inline docs to using ENV["LUCKY_TASK"]. #595 in Lucky CLI
    • โž• Added: ability to pass --error-trace flag to precompiled lucky tasks. #596 in Lucky CLI
    • โšก๏ธ Updated: to Laravel Mix 6 for generated apps. #592 in Lucky CLI
    • ๐Ÿ›  Fixed: issue with generated apps Github Actions CI failing. #600 in Lucky CLI
    • โšก๏ธ Updated: Procfile for generated apps to call a binary named by the project instead of "app". #601 in Lucky CLI
    • โž• Added: a new Heroku Buildpack to build all proper targets. Accompanies #601 in Lucky CLI. view Heroku Buildpack
    • โž• Added: equality operators (==, ===) to avram_enum. #566 in Avram
    • ๐Ÿ›  Fixed: bug in associations that returned more records than they should have. #574 in Avram
    • โšก๏ธ Updated: error messages during migrations that were obscured. #577 in Avram
    • โž• Added: UUID primary keys are now generated in the database with a fallback using Crystal. #578 in Avram
    • Updated: validate_size_of to only take a String attribute. #579 in Avram
    • โž• Added: new validate_numeric validation for validating numbers. #580 in Avram
    • ๐Ÿ›  Fixed: issue with has_one preloads not loading the correct records. #581 in Avram
    • โšก๏ธ Updated: compile-error for attempting to use nilable attributes. #583 in Avram
    • โž• Added: new Avram::DeleteOperation objects for handling complex delete logic. #573 in Avram
    • โšก๏ธ Updated: how generics work in Avram::Attribute. #586 in Avram
    • โšก๏ธ Updated: custom type support to allow for better 3rd-party support in the future. #587 in Avram
    • โž• Added: new lucky db.console task to enter PSQL for your app. #592 in Avram
    • โšก๏ธ Updated: more support and transparency for custom DB types with new criteria method. #591 in Avram
    • ๐Ÿ›  Fixed: using the datetime-local tag to persist the Time. #603 in Avram
    • โšก๏ธ Updated: to the latest (0.23.x) crystal-pg version. #605 in Avram
    • โž• Added: support for using citext columns with new case_sensitive: false option. #608 in Avram
    • โž• Added: support for Array(UUID) columns. #609 in Avram
    • ๐Ÿ’พ Updated: SaveOperation after_save and after_commit callbacks to run even if no changes to the record are made. #612 in Avram
    • โœ‚ Removed: the after_completed callback in SaveOperations. also #612 in Avram
    • ๐Ÿ“‡ Rename: Avram::Box to Avram::Factory. #614 in Avram
    • โž• Added: new composite primary keys for migrations. #616 in Avram
    • ๐Ÿ›  Fixed: issues with has_one in SaveOperation not updating the associated record when doing updates. #596 in Avram
    • โšก๏ธ Updated: Avram::Operation to not call run if the operation is not valid?. #621 in Avram
    • โšก๏ธ Updated: LuckyFlow ChromeDriver to run in non-headless mode (head mode?). #112 in LuckyFlow
    • โž• Added: ability to use a non Chrome browser in LuckyFlow. #112 in LuckyFlow
    • ๐Ÿ’ป Added: the browser_binary option back in which lets use specify a different Chrome based browser. #114 in LuckyFlow
    • โž• Added: new pause method for LuckyFlow to pause execution of flow for debugging. #117 in LuckyFlow
    • โšก๏ธ Updated: runtime-error for duplicate defined routes. #45 in LuckyRouter
    • Added: have_delivered_emails spec expectation method for Carbo. #45 in Carbon
  • v0.25.0 Changes

    December 18, 2020
    • 0๏ธโƒฃ Rename: component with_defaults renamed to tag_defaults #1262
    • ๐Ÿ›  Fixed: send HSTS headers over HTTPS. #1268
    • โšก๏ธ Updated: memoize can be used on any Object #1270
    • โž• Added: tfoot() tag method. #1296
    • โž• Added: routes now support glob routing #1294
    • ๐Ÿ›  Fixed: passing a UUID in to a tag for text #1280
    • ๐Ÿ›  Fixed: calling route helper methods on actions with route_prefix set. #1298
    • โž• Added: clearing cookies with specific options passed in #966
    • ๐Ÿ›  Fixed: passing a name prop to a custom tag. #1309
    • โž• Added: blockquote() and cite() tag methods. #1317
    • โž• Added: type name in error message for action classes #1321
    • ๐Ÿ›  Fixed: params that use Bool with a default value of false #1352
    • โšก๏ธ Updated: generated start_server binary is now output to the bin directory instead of top-level. #1358
    • ๐Ÿ›  Fixed: HTTP status description in the log output. #1362
    • Updated: reverted the DATABASE_URL ENV. #551 in Lucky CLI
    • โšก๏ธ Updated: emails will print to the log in development for easier debugging. #555 in Lucky CLI
    • โšก๏ธ Updated: Tasks can use the output property for easier testing. Added an example option to task args. #557 in Lucky CLI
    • โž• Added: New generated Lucky projects will come with Github Actions out of the box. #559 In Lucky CLI
    • โšก๏ธ Updated: front-end package.json dependencies. #553
    • ๐Ÿ›  Fixed: Signal trap is properly caught when running lucky dev. #572 in Lucky CLI
    • โšก๏ธ Updated: the built-in seed tasks to better match the common structure. #584 in Lucky CLI
    • Added: new Lucky::Env.task? method will return true if ENV["LUCKY_TASK"] = "true" is set. #576 in Lucky CLI
    • โšก๏ธ Updated: Query objects no longer mutate which fixes calling aggregate methods without needing to clone. #411 in Avram
    • โšก๏ธ Updated: the error message when a required primary key is missing. #454 in Avram
    • Updated: fill_existing_with to be used with nilable columns. #452 in Avram
    • ๐Ÿ›  Fixed: Bool columns with a default false value. #461 in Avram
    • ๐Ÿ›  Fixed: belongs_to using the wrong key in some cases. #465 in Avram
    • ๐Ÿ›  Fixed: using optional Arrays in columns and migrations. #471 in Avram
    • Fixed: calling to_s or to_i on an enum column to get the enum's proper value. #474 in Avram
    • โšก๏ธ Updated: using raw_where will now be deprecated in favor of a unified where. #460 in Avram
    • ๐Ÿ›  Fixed: issues with invalid SQL with joins. #451 in Avram
    • โž• Added: a whole new interface for Avram::Operation. #469 in Avram
    • ๐Ÿ’พ Updated: Avram::SaveOperation callback methods after_save and after_commit work with blocks, and more. #481 in Avram
    • โž• Added: a compile-time error catch when passing a raw hash in to a SaveOperation. #485 in Avram
    • Removed: register_setup_step macro used for hooking in to the Avram model setup. #486 in Avram
    • โž• Added: new or() query method to perform WHERE x OR y SQL calls. #442 in Avram
    • โšก๏ธ Updated: database calls to be optimized for speed. #491 in Avram
    • Added: params.has_key_for? to check if params contains a key for an operation. #500 in Avram
    • โž• Added: conditional callbacks for Avram::SaveOperation. #495 in Avram
    • โšก๏ธ Updated: the has_many count method to not preload when just a number is being returned. #509 in Avram
    • ๐Ÿ›  Fixed: passing a file_attribute as a named arg to an operation. #514 in Avram
    • โœ‚ Removed: unique filtering on WHERE clauses. #518
    • โšก๏ธ Updated: error message when using remove incorrectly in migrations. #524 in Avram
    • โž• Added: error message when trying to generate a migration by a name that already exists. #528 in Avram
    • โž• Added: new custom errors for Operation objects. #534 in Avram
    • Updated: add_belongs_to can now set a unique index. #536 in Avram
    • ๐Ÿ›  Fixed: creating records by passing in values that match the default. #540 in Avram
    • Updated: how has_many through associations are defined to fix has_many through a has_many through association. #525 in Avram
    • โž• Added: new after_completed callback on Avram::SaveOperation which is called even if no updates are made. #544 in Avram
    • โž• Added: UUID primary key checks to the SchemaEnforcer. #546 in Avram
    • โž• Added: records already loaded in to memory can now preload associations. #542 in Avram, #553 in Avram, #561 in Avram
    • โž• Added: support for models to use VIEW. #555 in Avram
    • โž• Added: new defaults method for defining default query methods on Query objects. #564 in Avram
    • ๐Ÿ›  Fixed: setting two routes that use different path variable names. #38 in LuckyRouter
    • โž• Added: route globbing. #40 in LuckyRouter
    • ๐Ÿ›  Fixed: catching when duplicate routes are defined. #42 in LuckyRouter
    • Added: flow spec matcher method have_current_path. #96 in LuckyFlow
    • Fixed: flow spec have_text matcher method to check if the text is included and not exact. #99 in LuckyFlow
    • โž• Added: flow method to confirm and accept javascript modal boxes. #101 in LuckyFlow
    • โž• Added: flow to fill a select field. #104 in LuckyFlow
    • โž• Added: flow to select multiple values from a select field. #106 in LuckyFlow
    • โž• Added: flow method element.hover to hover over an element. #108 in LuckyFlow
  • v0.24.0 Changes

    September 05, 2020
    • Fixed: send_text_response default status to nil #1214
    • โž• Added: data method for Actions to return file contents #1220
    • โšก๏ธ Updated: Component m is renamed to mount #1226
    • โšก๏ธ Updated: Components with UrlHelpers like current_page? #1228
    • โž• Added: optional param routing #1229
    • โšก๏ธ Updated: docs on accept_format #1234
    • โšก๏ธ Updated: generator templates to use getter methods over instance variables #1236
    • โšก๏ธ Updated: our community to use Discord for community chat room #1237
    • โšก๏ธ Updated: compile-time error when path params are defined with dashes #1238
    • โšก๏ธ Updated: path helpers to render query params even if default value is passed #1239
    • โšก๏ธ Updated: redirect_back to disallow external referrers by default with config option #1241
    • 0๏ธโƒฃ Updated: generated api apps will use disable_cookies by default #535 in Lucky CLI
    • ๐Ÿ›  Fixed: generating an app with the name "app" will raise an error #543 in Lucky CLI
    • โšก๏ธ Updated: AppClient renamed to ApiClient #534 in Lucky CLI
    • ๐Ÿš€ Updated: generated projects to use --ignore-crystal-version flag when running shards install. NOTE: this is a temporary update, and will be reverted in a future release. Read Crystal Blog See commit
    • โž• Added: ability to set default values on model columns #424 in Avram
    • โž• Added: file_attribute for operations to specify a file from params #428 in Avram
    • โž• Added: new Database.delete strategy for cleaning up data in specs #426 in Avram
    • Added: create_function and drop_function to create SQL functions #427 in Avram
    • โšก๏ธ Updated: Avram::PostgresURL renamed to Avram::Credentials with a new interface #433 in Avram
    • Added: create_trigger and drop_trigger to create SQL triggers #436 in Avram
    • Added: association _count method to easily return a count of a has_many association #392 in Avram
    • โž• Added: new Pulsar shard for pub/sub style communication in Lucky See Pulsar
    • โž• Added: Pulsar instrumentation to Avram for subscribing to queries #441 in Avram
    • โž• Added: support for Array(Float64) in databases #443 in Avram
    • Updated: fill_existing_with option on add_belongs_to in migrations #444 in Avram
    • โž• Added: Box.build_attributes method to build the attributes of a model in specs #449 in Avram
    • ๐Ÿ›  Fixed: blank strings causing parse exceptions in save operations #448 in Avram
    • Updated: LuckyRouter with many performance and structural refactors #28, #30, #31, #32
  • v0.23.1 Changes

    July 07, 2020
    • ๐Ÿ›  Fixed: generated apps using deprecated mount instead of m #531 in Lucky CLI
  • v0.23.0 Changes

    June 27, 2020
    • โšก๏ธ Updated: password reset tokens to be URL safe #1118
    • โž• Added: radio input helper #1125
    • โž• Added: component file paths to rendered comments in markup for development #1126
    • Added: query_param_declarations method to Action classes #1122
    • ๐Ÿ›  Fixed: generating a model that already exists now raises an error #1127
    • โž• Added: select_prompt helper method #1124
    • โšก๏ธ Updated: lucky routes UI to now include query params #1128
    • โž• Added: route_prefix method for Actions to prefix all routes #1121
    • ๐Ÿ›  Fixed: error when deleting cookies that don't exist #1132
    • ๐Ÿ›  Fixed: handling ajax form submissions with TurboLinks #1133
    • ๐Ÿ›  Fixed: issue with ajax? method not returning correct value #1134
    • ๐Ÿ›  Fixed: security issue by escaping HTML helpers by default #1135
    • โšก๏ธ Updated: memoize to allow for arguments, and nil and false values #1139
    • โšก๏ธ Updated: model generator to provide more helpful error messages #1140
    • โž• Added: get_raw method to params along with striping blankspace on param get calls #1144
    • โœ‚ Removed: mount with deprecation in favor of new m method.
    • โž• Added: m helper method as a mount replacement with a new interface. #1151
    • โšก๏ธ Updated: String#squish method to be faster #1159
    • โœ‚ Removed: Lucky::SessionHandler and Lucky::FlashHandler. #518 in Lucky CLI
    • ๐Ÿ›  Fixed: issue with session cookies not being written at the right time. #1160
    • โž• Added: template HTML method for <template> tags. #1164
    • ๐Ÿ›  Fixed: flash messages being lost during multiple redirects. #1169
    • โž• Added: redirect_back for actions to redirect back to previous referrer #1168
    • โž• Added: component method to render a Component directly from an Action #1172
    • โž• Added: canonical_link HTML helper method. #1182
    • โž• Added: disable_cookies macro to stop cookies from being written on a specific action #1180
    • ๐Ÿ›  Fixed: setting samesite on cookies in your Lucky::CookieJar on_set #1183
    • ๐Ÿ›  Fixed: compilation bug in generated page when running lucky gen.page #1191
    • โž• Added: multipart: true option to form_for to set multipart enctype #1200
    • โž• Added: Lucky.root method to raise compile-time error directing people to use Dir.current instead. #1206
    • โž• Added: native CLI args to LuckyCli::Task. #466 in Lucky CLI
    • โšก๏ธ Updated: generated projects to disable StaticFileHandler directory listing by default. #510 in Lucky CLI
    • โšก๏ธ Updated: error action to return a 404 for Avra::RecordNotFoundError #524 in Lucky CLI
    • ๐Ÿ›  Fixed: select_count failing when postgres returns no counts. #357 in Avram
    • Added: support for postgres extensions with enable_extension, disable_extension, and update_extension. #356 in Avram
    • โž• Added: enum support for models with avram_enum macro. #339 in Avram
    • ๐Ÿ›  Fixed: the error message when using remove in migrations, and not passing a Symbol.
    • Added: rename and rename_belongs_to in migrations #366 in Avram
    • โž• Added: new lucky db.setup task which runs db.create and db.migrate. #361 in Avram
    • โž• Added: ability to set a custom index name for table indices. #386 in Avram
    • ๐Ÿ›  Fixed: using a custom primary key name of type UUID. #401 in Avram
    • โž• Added: checking for a connection to the PostgreSQL engine before running the lucky db.create task. #397 in Avram
    • ๐Ÿ›  Fixed: logging issues related to Crystal 0.35.0. #31 in Dexter
    • โšก๏ธ Updated: which selenium library was being used for LuckyFlow. #76 in LuckyFlow
    • Added: initial work to support using other browsers aside from Chrome in LuckyFlow. #79 in LuckyFlow, #88 in LuckyFlow
    • โž• Added: support to auto fetch latest webdrivers in LuckyFlow. #80 in LuckyFlow
    • ๐Ÿ›  Fixed: issue with really long stacktrace in LuckyFlow. #83 in LuckyFlow
    • Added: have_text expectation method for Flow specs. #87 in LuckyFlow
    • โž• Added: optional path param routing. #18 in LuckyRouter
    • โšก๏ธ Update: routing to ensure matching dynamic fragments all work. #23 in LuckyRouter
    • โž• Added: a little bit of speed to the routing lookup. #26 in LuckyRouter
    • โž• Added: a new validation option to Habitat settings. #49 in Habitat
    • ๐Ÿ“‡ Renamed: the internal Habitat Settings class to HabitatSettings to avoid name conflicts in some Lucky apps. #48 in Habitat
    • ๐Ÿ›  Fixed: bug when setting a default value in a Habitat setting that could potentially raise an exception. #51 in Habitat
  • v0.22.0 Changes

    June 16, 2020
    • โž• Added: support for Crystal 0.35.0
  • v0.21.1 Changes

    May 08, 2020

    ๐Ÿš€ This a release with a security fix. This only affects applications that use highlight, truncate or simple_format. These methods had potential to be used for XSS attacks if input is not escaped first. However, the risk is mitigated since Lucky defaults cookies to be read by HTTP only, and not through JS. The cookie value itself is also encrypted and signed.

    โฌ†๏ธ It is not best practice to rely purely on HTTP only cookies, so to be safe, we highly recommend upgrading to v0.21.1 as an extra layer of protection.

    ๐Ÿ‘€ See more details in #1135