- Fixed:
Lucky::Responserequire for definingdebug_messageon custom response types. #1927 - Fixed: Compilation error on Windows. #1929
- Updated:
Lucky::UploadedFilenow checks for the file being empty. #1942 - Updated:
Lucky::BaseHTTPClientnow allowsIOinexec_raw. #1944 - Added: new Rate Limiting for actions. #1945
- Fixed: params nil value when passing a query param key without a value. #1946
- Refactor: added new
Lucky::Serialzablemodule to replaceLucky::Serializerclass allowing you to make your serializers structs if you wanted. #1947 - Fixed: params no longer raise when passing empty nested params. #1950
- Updated: Added method override to allow passing a NamedTuple to
Lucky::BaseHTTPClient#exec. #1952 - Fixed: error with
send_jsonspec method when your response had thestatuskey. #1954 - Updated: content-type check to match the RFC with performance improvement. #1955
- Updated: avoid intermediate strings for performance improvement. #1958
- Updated: added lots of extra types throughout the codebase. #1959
- Updated: All bash scripts are now written in Crystal for better cross-platform support. #875 in LuckyCLI
- Fixed: PG issue on Windows. #1071 in Avram
- Added: support for Crystal 1.16 by removing variables that use
?. #1083 in Avram - Added: null sorting to
order_by. #1081 in Avram - Fixed: issue with nested array params passed to operation attributes. #1085 in Avram
- Fixed: operations now raise an error when using the wrong callback for that operation. #1086 in Avram
- Updated: Using the query bulk update will now update
updated_at. #1091 in Avram - Refactor: all query
where_*methods are now moved to thejoin_*methods. #1090 in Avram - Added: ability to set separate reader and writer databases. #1089 in Avram
- Added: new table locking mechanism. #1076 in Avram
- Added: more performance improvements by avoiding intermediate strings in Avram. #1095 in Avram
- Added: more types in Avram. #1094 in Avram
- Added: types to Wordsmith. #28 in Wordsmith
- Updated: Wordsmith codebase to remove redundant to_s calls. #31 in Wordsmith
- Added: new
IOmethod overloads to Wordsmith. #32 in Wordsmith - Fixed:
LuckyEnvnow raises when it catches duplicate keys in your .env file. #36 in LuckyEnv - Added: dynamic environment aware .env loading. #37 in LuckyEnv
- Added: type-safe ENV method generation. #39 in LuckyEnv
- Fixed: re-compilation time not resetting. #1894
- Fixed: missing
--with-pageflag ingen.action.browsertask help text. #1895 - Refactor: lucky routes to pull from the router instead of holding a second array in memory. #1898
- Updated: error message when booting Lucky and the watcher config is missing. #1896
- Fixed: compatibility with Crystal 1.13.x and later. #1900
- Fixed: invalid query string for array params. #1908
- Refactor: make
form_methodpublic. #1915 - Added: new
MaximumRequestSizeHandler. #1916 - Fixed: deprecation warning for Crystal 1.13. #1918
- Fixed: compilation error with updated ExceptionPage. #1910
- Updated: to latest ExceptionPage. #1921
- Added: support for Windows with the core
Luckyshard. #1919 - Refactor: all built-in tasks are no longer precompiled. #1919
- Updated: url link to PostCSS in generated webpack.mix. 65f2d3df in LuckyCLI
- Added: ability to run uncompiled tasks from Crystal files. #871 in LuckyCLI
- Refactor: generated page templates with clear args. #935 in Avram
- Fixed: issue with type casting on
select_min/max. #1040 in Avram - Added:
have_anycriteria method for array queries. #1042 in Avram - Added:
if_existsoption to DROP TABLE queries. #1043 in Avram - Added: support for camel case or snake case on
gen.migrationtask. #1046 in Avram - Added: array param options for raw where query values. #1044 in Avram
- Updated: error message when there's issues connecting to your DB. #1047 in Avram
- Updated: DeleteOperations to run in a transaction. #1055 in Avram
- Added:
have_errorexpectation for specs with SaveOperations. #1062 in Avram - Refactor: use
postgresas the default database fordb.createanddb.droptasks. #1058 in Avram - Refactor: all calls to tables and column names are now quoted in constructed SQL queries. Allows for defining columns that may conflict with reserved SQL words. #1059 in Avram
- Added:
validate_url_formatfor operation validations. #1065 in Avram - Refactor: built-in db related tasks are no longer precompiled. #1069 in Avram
- Refacor: built-in
gen.emailtask is no longer precompiled. #95 in Carbon
- Updated: exception page which includes syntax highlighting now. #1850
- Refactor: Action call body with a clear compile error and ability to do short-circuit returns. #1857
- Added: new
-nflag tolucky gen.secret_keyto configure key size. #1856 - Refactor: routes with query params optimization. #1854
- Deprecated: Lucky now prefers Crystal 1.10 or later
- Added: overload to
distance_of_time_in_wordsthat takes aTime::Span. #1860 - Added: compilation time to terminal output during development. #1855
- Refactor: lucky gen tasks are now using LuckyTemplate for Windows compatibility. #1861
- Added:
Dateheader to response output. #1866 - Added: LuckyCLI releases now include binary packages in the release since v1.1.1
- Fixed: entering
Yoryin LuckyCLI Wizard. #857 in LuckyCLI - Updated: Generated Github Actions CI file with latest actions versions. Nexploit NPM is no longer required for SecTester. #859 in LuckyCLI
- Added: new Scoop package installer for installing LuckyCLI on Windows. Scoop it up
- Fixed: a few compatibility issues with CockroachDB. #980 in Avram
- Added:
attrsoverride for boolean attributes onselect_inputandmulti_select_input. #981 in Avram - Updated: DB connections now support a retry. #990 in Avram
- Updated:
select_inputandmulti_select_inputto include theidattribute. #992 in Avram - Added:
if_not_existsandif_existsoptions to migrationcreateandaltermacros. #993 in Avram - Added: block overload for
preloadhas_onemethods. #994 in Avram - Fixed: how the
verify_connectiontask runs to catch some edge cases of it not working. #995 in Avram - Updated: migrator commands no longer use
Process.runwith theshelloption. #997 in Avram - Breaking change Refactor: all Avram models now use
DB::Serializableinstead of the deprecatedDB.mapping. #996 in Avram - Updated: all "UPDATE" statements with a subquery are now wrapped allowing bulk updates when a join exists. #998 in Avram
- Added: an option to
add_belongs_toto disable adding an index. #1002 in Avram - Added:
create_sequenceanddrop_sequencemigration methods. #1003 in Avram - Added:
refresh_viewquery method and materialized view option for materialized view models. #1004 in Avram - Added: support for
Stringprimary keys in models. #1000 in Avram - Added: new
String,Int, andFloatcriteria methods.length,reverse,abs,ceil, andfloorrespectively. #1010 in Avram - Added: an option to specify an alias for join tables with
Avram::Join. #1013 in Avram - Added: support for
Array(SomeEnum)columns. #1009 in Avram - Added: support for custom column converters. #1009 in Avram
- Added: new
base_query_classarg forhas_manyassociations to specify which query class to use when an association is called. #1006 in Avram - Added: new
JSON::Anycritera methodshas_key,has_any_keys, andhas_all_keys. #1015 in Avram - Added: more new
JSON::Anycriteria methodsincludesandin. #1016 in Avram - Added: new
IGNOREconstant which is an instance ofAvram::Nothingused for ignoring column updates in operations. #1018 in Avram - Added: new
Stringcriteria methods to convert toto_tsqueryandto_tsvectoralong with amatchfor simple full-text search. #1019 in Avram - Added: new Firefox driver for LuckyFlow. #162 in LuckyFlow
- Added: support for attachments in Carbon. #88 in Carbon
- Fixed: Carbon emails can be JSON serialized. #92 in Carbon
- Fixed: the location where Carbon emails are generated with
lucky gen.email. #93 in Carbon - Updated: CarbonSMTP Adapter support on Email shard dependency. #18 in CarbonSMTPAdapter
- Added: support for attachments in CarbonSMTPAdapter. #20 in CarbonSMTPAdapter
- Fixed: generated docs on
matchmacro. #1790 - Fixed: memoized memthods that use an external arg name. #1817
- Added: configurable timeout for browser reload in development. #1822
- Added: config option to silence stacktraces from logs. #1821
- Added: new
--with-pageflag forlucky gen.action.browsertask. #1819 - Refactor:
RequestBodyReaderwith a performance boost in actions. #1826 - Refactor: action route generation with a performance boost. #1829
- Refactor:
htmlmacro for actions with simpler code. #1836 - Added: config option to configure default redirect statuses. #1838
- Refactor: The
luckyCLI no longer compiles when running-h. #771 in LuckyCLI - Added: A new
lucky tasksCLI command added to display available tasks. - Fixed: The
lucky devcommand now shows in the CLI help menu. - Updated: generated apps
docker-compose.yml. #799 in LuckyCLI - Refactor: LuckyCLI app generation no longer ueses the
crystal init appcommand. #800 in LuckyCLI - Added: initial work on getting the LuckyCLI to work on Windows. #804 in LuckyCLI
- Refactor: pg client tools are no longer a requirement for Avram. #942 in Avram
- Fixed: queries not logging when turning up logger level. #945 in Avram
- Fixed: error message when using
validate_numericand passing a float. #948 in Avram - Added: JSON serialized Array columns. #949 in Avram
- Updated: to PG v0.27.0. #951 in Avram
- Fixed: saving
nilvalues when using Upsert operations. #957 in Avram - Refactor: escape hatch to allow storing empty strings from param values. #956 in Avram
- Updated: the
validate_size_ofvalidation can now validate arrays. #960 in Avram - Added: PG extension
PG::NumericFloatConverterfor convertingFloat64values from custom SQL. #958 in Avram - Refactor: SaveOperation
insertandupdatewith small performance boost. #962 in Avram - Added: new
X_preloaded?methods to check if an association has already been preloaded. #961 in Avram - Breaking change Removed: Avram's initialized logging and subscribing to Pulsar events by default. Each app will add this in to control when/if it happens. #967 in Avram
- Fixed: handing bytes outside of ASCII range for
byteacolumns. #975 in Avram - Added: support for other postgres index types other than btree. #971 in Avram
- Updated: SecTester to v1.6 with new Crystal repeater. #30 in LuckySecTester
- Updated: Carbon is now supported on Windows. #82 in Carbon
- Updated: LuckyFlow is now supported on Windows. #156 in LuckyFlow
- Fixed: support for Chrome v115+ with chromedriver in LuckyFlow. #159 in LuckyFlow
- Added: Brand new
LuckyHXMLshard for generating Hyperview apps from Lucky. View Shard - Added: Brand new
LuckyTemplateshard for better template generation across platforms. View Shard - Updated: LuckyTask is now supported on Windows. #14 in LuckyTask
- Breaking change Refacor: LuckyTask API to avoid conflicts with common names used for CLI args. #25 in LuckyTask
- Updated: Habitat is now supported on Windows. #80 in Habitat
- Updated: LuckyEnv is now supported on Windows. #28 in LuckyEnv
- Added: ability to reference previous ENV vars as variables in the
.envfile. #31 in LuckyEnv - Updated: LuckyRouter is now supported on Windows. #63 in LuckyRouter
- Updated: LuckyCache is now supported on Windows. #13 in LuckyCache
- Updated: Pulsar is now supported on Windows. #22 in Pulsar
- Updated: Wordsmith is now supported on Windows. #25 in Wordsmith
- Added: Inline SVG files. #1761
- Added:
attrsoption tosumbittag helper. #1759 - Fixed:
previous_urlhelper when the referrer is the current page. #1743 - Fixed: issue with SSE Watcher for live reloading. #1748
- Fixed: issue with nil values in JSON params. #1762
- Fixed: issue with block HTML tags using a custom wrapper. #1763
- Removed: the optional
SkipUniqueRoutecheck. All routes must be unique. #1764 - Updated: Accept header handling for more robustness. #1769
- Updated: Crystal minimum supported version to be 1.6.0 or later. #1774
- Updated: the Lucky watcher to always use the specified host in development. #1786
- Added: ENV
DEV_HOSTfor overriding the development host with an ENV var. #1788 - Updated: generated Dockerfile for development with several fixes. #787 in LuckyCLI, #793 in LuckyCLI
- Updated: generated
current_usermethod is memoized by default now. #508 in LuckyCLI - Updated: generated apps are compliant with Crystal 1.7+ #790 in LuckyCLI
- Fixed: casting issue with AvramParams and Array values. #895 in Avram
- Fixed: multi select options with Arrays from columns. #897 in Avram
- Fixed: submitting only a file in a form with no other permitted params. #894 in Avram
- Updated: avoid refetching associations that have already been preloaded. #901 in Avram
- Breaking change Updated: Always pass the record to DeleteOperation blocks. #887 in Avram
- Updated: more support for CockroachDB with
.any?query method. #900 in Avram - Added: new
updated?andcreated?SaveOperation methods. #904 in Avram - Added: new function criteria with new
trim, andas_datequery methods. #912 in Avram - Updated: more support for CockroachDB with
select_sumquery method. #921 in Avram - Updated: better Int column support for CockroachDB. #920 in Avram
- Fixed: compilation issue with preloading optional associations. #925 in Avram
- Updated: Authentic with better primary key agnostic support. #77 in Authentic
- Updated: Small performance boost with the router. #60 in LuckyRouter
- Updated: to lastest Bright security SecTester. #27 in LuckySecTester
- Breaking change Removed: Avram is no longer a dependency of Lucky. #1620
- Fixed: path output when generating a component. #1694
- Updated: Lucky to run on Crystal 1.4 or later as a minimum. #1696
- Removed: the deprecated verifier code. #1697
- Added: new Live-Reload for
lucky watchcommand as an alternative to browsersync. #1693 - Updated: Error actions now have access to
params. #1716 - Updated:
lucky execallowing you to set your editor by$EDITORenv. #1715 - Added: ability to set custom content-type responses in actions. #1719
- Updated: exception page so javascript is no longer required for it. #1723
- Updated: the error message when you forget to add a type to args in a
memoizemethod. #1726 - Added: new
exec_rawescape hatch method forApiClientto submit raw param data. #1728 - Fixed:
memoizemethods can now end in?or!. #1727 - Added: Experimental option to have type-safe assets built using Vitejs. #1729
- Breaking change Removed: default integration with Turbolinks. #1737
- Updated: generated apps using LuckyFlow are compatible with latest Flow updated. #760 in Lucky CLI
- Updated: generated apps that specify "no auth" no longer include Authentic. #761 in Lucky CLI
- Updated: generated apps now have the ability to remove Avram. #764 in Lucky CLI
- Removed: the tasks file generation task. #770 in Lucky CLI
- Fixed: issue with generated apps that would try to encrypt bad passwords. #773 in Lucky CLI
- Updated: the error message when generating an app in a directory that doesn't exist. #772 in Lucky CLI
- Fixed: issue with generated Dockerfile causing it to not boot. #775 in Lucky CLI
- Updated: generated apps no longer include Turbolinks by default. #779 in Lucky CLI
- Breaking change Added: Lucky as an optional extension to Avram. #772 in Avram
- Breaking change Added: Array param support to operations and changed how
Avram::Paramsis constructed. #847 in Avram - Updated: compile-time catch when specifying both
defaultandfill_existing_withvalues in migrations. #852 in Avram - Added: new
change_defaultmethod for migrations to change the default value of a column. #853 in Avram - Updated: references to
uuid-osspin favor ofpgcrypto. #855 in Avram - Added: the ability to use the
@[Flags]annotation andInt64for enums. #856 in Avram - Added: new
extract()method for timestamp queries. #861 in Avram - Added: new
Bytescolumn support forbyteacolumns. #860 in Avram - Breaking change Updated: named args to take precedence over param values when using Operations. #862 in Avram
- Added: new
grouped_checkboxmethod for use with Array attributes. #863 in Avram - Fixed:
change_typeso it can change from one nilable type to another nilable type. #869 in Avram - Updated: Factory callbacks now return
self. #866 in Avram - Fixed: JSON::Any columns that are nilable to return nil properly. #878 in Avram
- Updated: the arg names to
validate_numericto avoid confusion. #867 in Avram - Added: the ability to customize the session key used for sign-in with Authentic. #75 in Authentic
- Breaking change Added: new Driver registration for LuckyFlow allowing for custom web drivers. #133 in LuckyFlow
- Breaking change Updated: LuckyFlow to not depend directly on Selenium. #135 in LuckyFlow
- Added:
find_xpathmethod for LuckyFlow drivers. #141 in LuckyFlow - Added: "Webless" driver support to LuckyFlow. #137 in LuckyFlow
- Breaking change Updated: and abstracted LuckyFlow extensions for Lucky, Avram, and Authentic. #152 in LuckyFlow
- Added: the ability to add mailer layouts for HTML templates. #70 in Carbon
- Added:
before_sendandafter_sendcallbacks for emails with delivery short circuiting. #72 in Carbon - Fixed: issue when generating a new email and using the word "Email" duplicating it. #74 in Carbon
- Updated: LuckySecTester is officially released with v0.1.0. View Shard
- Added: new
wsCLI utility with Wordsmith allowing you to process words from the CLI. #23 in Wordsmith
- Fixed: compilation issue when using the
Lucky::Subdomainmodule. #1686
- Fixed: logging empty request_id #1630
- Updated: references to community chat and general housekeeping #1633
- Updated: error message on incorrect usage of
default_format#1638 - Updated: error message on incorrect usage of routes #1639
- Added: new
previous_urlpage helper method. #1641 - Added: ability to make requests to actions directly in specs. #1644
- Fixed:
time_ago_in_wordsalways rounding down. #1651 - Updated: Turbolinks redirect support to allow for replace in the future. #1650
- Updated: compiling "done" notice to be more prominent. #1653
- Added: ability to enable/disable forgery protection app-wide. #1657
- Breaking change Fixed: parsing JSON values for params. #1661
- Breaking change Updated: Lucky::ForceSSLHandler middleware to match X-Forwarded-Proto == https exactly, which previously accepted uppercase and only required https to be part of the value #1662
- Breaking change Updated: the primary branch name from "master" to "main". #1667
- Added: new Content-Security-Policy header module. #1673
- Added: new
remote_ipmethod with a config to customize the header lookup. #1675 - Breaking change Updated: the remote_ip lookup to use the last valid IP instead of the first in the
X-Forward-Forlist. also #1675 - Updated:
MessageVerifierto handle different types of token data. #1674 - Added:
[]and[]=Methods toLucky::CookieJar. #1678 - Fixed: issue with generated CI not connecting to postgres. #719 in Lucky CLI
- Added: built-in process runner Nox. #710 in Lucky CLI
- Breaking change Removed: built-in support for other process runners like Overmind through
lucky dev. #720 - Removed: references to TravisCI from old Crystal setup. #722 in Lucky CLI
- Updated: default watcher port to use 3000 instead of 5000. #727 in Lucky CLI
- Added: Docker setup for local development out-of-the-box. #738 in Lucky CLI
- Fixed: ameba linting issue with new Lucky apps. #739 in Lucky CLI
- Updated: default target name to be
appinstead of your app's name for easier building with Docker. #742 in Lucky CLI - Added: new integration with Bright Security (formerly Neuralegion) SecTester for Security specs out-of-the-box. #743 in Lucky CLI
- Added:
random_orderfor queries. #765 in Avram - Removed: old compile-time deprecation errors. #744 in Avram
- Updated: running DB specs in a transaction instead of truncating. #780 in Avram
- Added:
group_countmethod for grouped count queries. #778 in Avram - Added:
AvramSlugifyis now integrated asAvram::Slugify. #786 in Avram - Fixed: JSON parsing to/from the DB when the value was a String but should have been a JSON object. #806 in Avram
- Fixed: issue with some query cache methods not returning correctly. #810 in Avram
- Added: helpful error when required association is not loaded in preload. #812 in Avram
- Added: default time values in SQL for the default timestamps. #820 in Avram
- Added: a unique index to the migrations table to avoid duplicate migration versions. #815 in Avram
- Added: properties to error classes for better error customization with I18n. #823 in Avram
- Added: new
generatemethod forAvram::Slugifyto generate a slug without setting a value. #821 in Avram - Added:
validate_format_ofandvalidate_uniqueness_oftoAvram::I18Backendfor better error message support. #830 in Avram - Added: new LuckySecTester shard as a thing wrapper around the NeuraLegion SecTester
- Added: new task to generate email templates. #60 in Carbon
- Added: new
sizemethod to LuckyCache. #10 in LuckyCache - Added:
clear_subscribersmethod to Pulsar to clear events of subscribers. #18 in Pulsar - Added: extra log metadata when using
emit()with Dexter. #45 in Dexter - Added: support for passing unsubscribe group data to Sendgrid. #8 in Carbon Sendgrid Adapter
- Fixed: the binary name generated for the
gen.secret_keytask. #1556 - Updated: the
html_with_statusto allow Numbers, Symbols, and HTTP::Status. #1568 - Updated: the
lucky routestask to print within a table (again). Added a new flag option to print params. #1569 - Added: new
path_without_query_paramsAction method. #1572 - Added: option to set a different manifest filename when not using laravel-mix. #1578
- Fixed: an issue when passing optional params that were not a String. #1582
- Fixed: Ameba always being installed even when your app doesn't depend on it. #1589, #736 in Avram, #62 in Carbon
- Added: support for using namespaces when generating resources from the CLI. #1588
- Added: DeleteOperation when generating a model from the CLI. #1594
- Fixed: verifying secret messages that may contain "--". #1596
- Removed:
routeandnested_routemacro helpers. #1597 - Fixed: the use of boolean attributes rendering invalid values in HTML. #1598
- Added: new Pulsar event to fire when an HTTP request is fully completed. #1601
- Updated: the
lucky watchtask to be less greedy on recompiles. #1604 - Added: the
ajaxdesired client format option for actions. #1603 - Added: a better help message for
lucky execto include options. #1602 - Added: new
previous_page, andnext_pagePaginator helper methods. #1611 - Fixed: writing to the response body when making a HEAD call. #1609
- Breaking change Removed: the
lucky build.releasetask. #1612 - Updated: Avram is no longer required for parsing params. #1616
- Breaking change Removed: support for Crystal versions below 1.0.0. #1618
- Breaking change Updated: the
Lucky::BaseAppServer#listenmethod to be abstract. #1622 - Added: new HTTP
context.request_idandRequestIdHandler. #1610 - Added: documentation clarity for the route style checking. #668 in Lucky CLI
- Updated: require position for the config directory to be higher in the stack. #676 in Lucky CLI
- Updated: the
load_manifestto use "public/mix-manifest.json" by default. #679 in Lucky CLI - Fixed: issue when booting a Lucky app would clash with Elixir's
mix. #682 in Lucky CLI - Fixed: the error page returning a 200 response. #684 in Lucky CLI
- Updated: the GithubActions CI for generated apps to allow for testing multiple versions of Crystal. #685 in Lucky CLI
- Added: a max limit for password sized in Authentic password validations. #692 in Lucky CLI
- Added: special "flow" tags to a generated app's specs. #693 in Lucky CLI
- Added: new sample "app config" file for generated apps. #694 in Lucky CLI
- Updated: the
AppServer#listencode to be a bit more concise. #699 in Lucky CLI - Added: new
Lucky::RequestIdHandlerto generated apps. #700 in Lucky CLI - Fixed: issue when
select_countwas called before an update causing a failure. #715 in Avram - Fixed: issue when inheritng from a SaveOperation that had attributes. #718 in Avram
- Fixed: issue when passing an enum number as a String. #720 in Avram
- Breaking change Removed: UUID generation on the Crystal side for the
idcolumn. #725 in Avram - Updated: the error message for unpermitted columns to be a little clearer where they come from. #723 in Avram
- Added: new
includes()query method for Array columns. #733 in Avram - Added: compile-time catches for common mistakes with attribute usage. #738 in Avram
- Updated: the pending migration notice to be a lot more clear in development. #737 in Avram
- Updated:
add_belongs_toto require thereferencesoption when using a namespace. #742 in Avram - Updated: all validation methods to now return a Bool based on if they passed or not. #744 in Avram
- Updated: the
lucky db.schema.dumptask to include the migrations table data. #743 in Avram - Fixed: missing low level DB methods. #750 in Avram
- Added: new escape hatch to skip default validations, and allow blank strings to be saved. #746
- Added: new
default_validationsblock macro. #751 in Avram - Added: new
validate_format_ofvalidation method. #752 in Avram - Fixed: sort order of migrations. #756 in Avram
- Added: new
Avram::I18nBackendfor setting language translations. #757 in Avram - Breaking change Renamed:
Operation::Statusenums toOperation::OperationStatus. #759 in Avram - Added: new query cache mechanism. #763 in Avram
- Added: brand new LuckyCache shard.
- Added: Dynamic Email templates with Carbon SendGrid adapter. #5 in Carbon SendGrid
- Added: new
int32andfloat64task args. #3 in LuckyTask - Added: faster routing! #54 in LuckyRouter, #55 in LuckyRouter
- Updated:
ENV["LUCKY_TASK"]to be nilable. #21 in LuckyTask
- Updated: The exception page to use new backtrace shard. #1465
- Updated: some Lucky internals with "Spring Cleaning". #1478, #1481, #1483, #1489, #1496, #1511, #1513, #1514, #1521, #1522, #1529, #1532, #1535, #1540, #1542, #1544, #1543
- Updated: components so they no longer require
contextto be passed in. #1488 - Added: new
time_from_now_in_wordstext helper. #1493 - Added: new
multipart?action request helper. #1495 - Updated: the generated delete action resource to use DeleteOperation. #1497
- Added: new
raw_jsonAction response method. #1492 - Updated:
form_forto allow passing boolean attributes. #1506 - Added: new module to disable FLoC. #1508
- Deprecated:
routeandnested_routefrom actions. #1510 - Updated: performance with
params. It's now attached tocontext. #1509 - Updated: api actions generated will always be in the
api/namespace. #1512 - Updated:
Lucky::Serializerwith abstractrendermethod. #1516 - Added: new
html_with_statusmethod to render HTML pages with non-200 status. #1507 - Breaking change: HTML fields that require an Operation Array attribute will now generate a param name appended with
[]. #1523 - Added: new
multi_select_input. #1518 - Added: the ability to define Array query params in actions. #1527
- Added: standardized route style checked. #1536
- Added: native subdomain support for actions. #1537
- Added: new unique route enforcer. #1538
- Updated: Carbon sendgrid is now a separate adapter. #624 in Lucky CLI
- Updated: default components no longer need
context. #641 in Lucky CLI - Updated: some LuckyCli internals with "Spring Cleaning". #646, #647, #648, #651, #649, #666 (in Lucky CLI)
- Updated: generated apps will use
LuckyEnvnow. #650 in Lucky CLI - Removed: deprecated
normalize-csspackage and replaced withmodern-normalize. #652 in Lucky CLI - Added: new generated apps will enforce route styles by default. #653 in Lucky CLI
- Updated: new generated apps will use case-insensitive email columns for the
Usermodel. #657 in Lucky CLI - Fixed: support for Crystal 1.1.0 when generating a new app. #644 in Lucky CLI
- Removed: the
Lucky::Envmodule and replaced with theLuckyEnvshard. #655 in Lucky CLI - Fixed: passing special args to precompiled tasks. #656 in Lucky CLI
- Updated: some Avram internals with "Spring Cleaning". #669, #681, #683, #704, #705, #708 (in Avram)
- Updated:
validate_numericandvalidate_size_ofmethods to allow for a custom error message. #670 in Avram - Updated:
db.dropanddb.resettasks with a "quiet" option. #675 in Avram - Fixed: edge case with migrations using
fill_existing_with: false. #676 in Avram - Added: new
Appdatabase.listenmethod to listen forpg_notify()calls to any number of channels. #677 in Avram - Added:
before_saveandafter_savecallbacks toAvram::Factory. #678 in Avram - Fixed:
add_belongs_toto support namespaced types. #685 in Avram - Updated: how
select_countworks to allow counting withdistinct_on. #687 in Avram - Fixed: datetime parsing from form inputs. #693 in Avram
- Fixed: compile-time error when you have a typo in your constant name (i.e. Boolean instead of Bool). #700 in Avram
- Updated: the
validate_uniqueness_ofmethod to take a full query object. #701 in Avram - Added: new
any?andnone?query methods to return aBoolvalue based on records existing. #703 in Avram - Breaking change: removed
avram_enum. You can now just use the native Crystalenumtype. #698 in Avram - Added: ability to use
CASCADEwhen callingtruncate. #702 in Avram - Added: new
SaveOperation.upsertmethods. #334 in Avram - Breaking change: renamed
DeleteOperation.destroytoDeleteOperation.delete. #707 in Avram - Fixed: compile-time error when no columns are defined in a model. #706 in Avram
- Added: new JSON serializable object columns. #695 in Avram
- Updated: the
current_user?method to be memoized for performance. #64 in Authentic - Updated: Authentic to catch potential development issues when setting the
secret_key. #65 in Authentic - Fixed: minor performance issue when setting a slug in AvramSlugify. #10 in AvramSlugify
- Updated: irregular inflects with
human -> humans. #14 in Wordsmith - Fixed: customizing inflections with Wordsmith. #18 in Wordsmith
- Fixed: URI decoding path parts in the Lucky Router, also a small performance gain. #51 in Lucky Router
- Added: the environment predicate methods from
Lucky::Envin toLuckyEnv. #13 in LuckyEnv - Updated: Email Previews in Breeze are easier to add in. #41 in Breeze
- Fixed: using file uploads with Breeze requests. #43 in Breeze
- Added: storing before/after pipes in Breeze. #36 in Breeze
- Fixed: issue when running specs on an app using Breeze. #42 in Breeze
- Removed: legacy ecrypted cookies handling. #1470
- Updated: Cookies resulting in encryption failure are ignored. #1470
- Fixed: support for previous versions (<= 0.26.0) of encrypted cookies. #1467
- Added: support for Crystal 1.0 🥳 #1445
- Added: Pulsar events for tracking before/after action pipes. #1423
- Updated:
linkto raise an exception when passing bothtoandhref. #1428 - Added: support for more HTML standard tags. #1433
- Added: new
mount_instancemethod 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.releasetask to build in to thebindirectory. #1454 - Fixed: error message when passing wrong type values to HTML tags. #1456
- Updated:
lucky_clidependency with newlucky_taskshard. #1459 - Updated: generated apps so
LuckyFlowis 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::Taskin to a separate shard. #622 in Lucky CLI - Added: new
LuckyTaskshard to the ecosystem. View LuckyTask - Updated:
avram_enumto allow parsing a String value. #639 in Avram - Fixed: bug when a column is defined as a
DOUBLE, and usingFloat64. #637 in Avram - Updated: migrations to use
Int64by default allowing for better CockroachDB support. #641 in Avram - Fixed: database transactions to not require a
Boolreturn type. #626 in Avram - Removed: deprecated
raw_wheremethods. #653 in Avram - Added: new
where(&)method for wrapping queries in parenthesis. #652 in Avram - Added: new
drop_foreign_keymethod. #654 in Avram - Updated: how table names are stored internally paving the way for faster compilation. #660 in Avram
- Added: new
parameterizemethod for string helpers. #9 in Wordsmith - Added: new
Habitat.extendmacro for extending existing configuration settings. #59 in Habitat - Added: new development dashboard shard
Breeze. View Breeze - Added: new .env parsing shard
LuckyEnv. View LuckyEnv
- Updated: the compile-error for missing Page args. #1373
- Fixed: flash messages to be discarded unless specifically kept. #1374
- Added: generating
JSON::Anycolumns fromlucky gen.modeltask. #1375 - Added: creating empty HTML tags passing in a Hash for options. #1377
- Updated: action generators to use actual route instead of the
routeornested_routemethods. #1378 - Updated: the compile-error for incorrect route helper usage. #1372
- Updated:
lucky gen.*.resourcetask 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.tasktask for generating a new Cli Task. #1322 - Added: new
params.get_allmethod 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
routeandnested_routemethods 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-traceflag 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:
Procfilefor 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 (
==,===) toavram_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:
UUIDprimary keys are now generated in the database with a fallback using Crystal. #578 in Avram - Updated:
validate_size_ofto only take aStringattribute. #579 in Avram - Added: new
validate_numericvalidation for validating numbers. #580 in Avram - Fixed: issue with
has_onepreloads not loading the correct records. #581 in Avram - Updated: compile-error for attempting to use nilable attributes. #583 in Avram
- Added: new
Avram::DeleteOperationobjects 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.consoletask to enter PSQL for your app. #592 in Avram - Updated: more support and transparency for custom DB types with new
criteriamethod. #591 in Avram - Fixed: using the
datetime-localtag to persist the Time. #603 in Avram - Updated: to the latest (0.23.x) crystal-pg version. #605 in Avram
- Added: support for using
citextcolumns with newcase_sensitive: falseoption. #608 in Avram - Added: support for
Array(UUID)columns. #609 in Avram - Updated: SaveOperation
after_saveandafter_commitcallbacks to run even if no changes to the record are made. #612 in Avram - Removed: the
after_completedcallback in SaveOperations. also #612 in Avram - Rename:
Avram::BoxtoAvram::Factory. #614 in Avram - Added: new composite primary keys for migrations. #616 in Avram
- Fixed: issues with
has_oneinSaveOperationnot updating the associated record when doing updates. #596 in Avram - Updated:
Avram::Operationto not callrunif the operation is notvalid?. #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_binaryoption back in which lets use specify a different Chrome based browser. #114 in LuckyFlow - Added: new
pausemethod 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_emailsspec expectation method forCarbo. #45 in Carbon
- Rename: component
with_defaultsrenamed totag_defaults#1262 - Fixed: send HSTS headers over HTTPS. #1268
- Updated:
memoizecan be used on anyObject#1270 - Added:
tfoot()tag method. #1296 - Added: routes now support glob routing #1294
- Fixed: passing a
UUIDin to a tag for text #1280 - Fixed: calling route helper methods on actions with
route_prefixset. #1298 - Added: clearing cookies with specific options passed in #966
- Fixed: passing a
nameprop to a custom tag. #1309 - Added:
blockquote()andcite()tag methods. #1317 - Added: type name in error message for action classes #1321
- Fixed: params that use
Boolwith a default value offalse#1352 - Updated: generated
start_serverbinary is now output to thebindirectory instead of top-level. #1358 - Fixed: HTTP status description in the log output. #1362
- Updated: reverted the
DATABASE_URLENV. #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
outputproperty for easier testing. Added anexampleoption 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.jsondependencies. #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 ifENV["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_withto be used with nilable columns. #452 in Avram - Fixed:
Boolcolumns with a defaultfalsevalue. #461 in Avram - Fixed:
belongs_tousing the wrong key in some cases. #465 in Avram - Fixed: using optional Arrays in columns and migrations. #471 in Avram
- Fixed: calling
to_sorto_ion an enum column to get the enum's proper value. #474 in Avram - Updated: using
raw_wherewill now be deprecated in favor of a unifiedwhere. #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::SaveOperationcallback methodsafter_saveandafter_commitwork 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_stepmacro used for hooking in to the Avram model setup. #486 in Avram - Added: new
or()query method to performWHERE x OR ySQL 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_manycount method to not preload when just a number is being returned. #509 in Avram - Fixed: passing a
file_attributeas a named arg to an operation. #514 in Avram - Removed: unique filtering on
WHEREclauses. #518 - Updated: error message when using
removeincorrectly 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_tocan 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 throughassociations are defined to fix has_many through a has_many through association. #525 in Avram - Added: new
after_completedcallback onAvram::SaveOperationwhich is called even if no updates are made. #544 in Avram - Added:
UUIDprimary 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
defaultsmethod 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_textmatcher 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.hoverto hover over an element. #108 in LuckyFlow
- Fixed:
send_text_responsedefault status to nil #1214 - Added:
datamethod for Actions to return file contents #1220 - Updated: Component
mis renamed tomount#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_backto disallow external referrers by default with config option #1241 - Updated: generated api apps will use
disable_cookiesby default #535 in Lucky CLI - Fixed: generating an app with the name "app" will raise an error #543 in Lucky CLI
- Updated:
AppClientrenamed toApiClient#534 in Lucky CLI - Updated: generated projects to use
--ignore-crystal-versionflag when runningshards 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_attributefor operations to specify a file from params #428 in Avram - Added: new
Database.deletestrategy for cleaning up data in specs #426 in Avram - Added:
create_functionanddrop_functionto create SQL functions #427 in Avram - Updated:
Avram::PostgresURLrenamed toAvram::Credentialswith a new interface #433 in Avram - Added:
create_triggeranddrop_triggerto create SQL triggers #436 in Avram - Added: association
_countmethod to easily return a count of a has_many association #392 in Avram - Added: new
Pulsarshard 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_withoption onadd_belongs_toin migrations #444 in Avram - Added:
Box.build_attributesmethod 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
- Fixed: generated apps using deprecated
mountinstead ofm#531 in Lucky CLI
- Updated: password reset tokens to be URL safe #1118
- Added:
radioinput helper #1125 - Added: component file paths to rendered comments in markup for development #1126
- Added:
query_param_declarationsmethod to Action classes #1122 - Fixed: generating a model that already exists now raises an error #1127
- Added:
select_prompthelper method #1124 - Updated:
lucky routesUI to now include query params #1128 - Added:
route_prefixmethod 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:
memoizeto allow for arguments, andnilandfalsevalues #1139 - Updated: model generator to provide more helpful error messages #1140
- Added:
get_rawmethod to params along with striping blankspace on paramgetcalls #1144 - Removed:
mountwith deprecation in favor of newmmethod. - Added:
mhelper method as amountreplacement with a new interface. #1151 - Updated:
String#squishmethod to be faster #1159 - Removed:
Lucky::SessionHandlerandLucky::FlashHandler. #518 in Lucky CLI - Fixed: issue with session cookies not being written at the right time. #1160
- Added:
templateHTML method for<template>tags. #1164 - Fixed: flash messages being lost during multiple redirects. #1169
- Added:
redirect_backfor actions to redirect back to previous referrer #1168 - Added:
componentmethod to render a Component directly from an Action #1172 - Added:
canonical_linkHTML helper method. #1182 - Added:
disable_cookiesmacro to stop cookies from being written on a specific action #1180 - Fixed: setting
samesiteon cookies in yourLucky::CookieJaron_set#1183 - Fixed: compilation bug in generated page when running
lucky gen.page#1191 - Added:
multipart: trueoption toform_forto set multipart enctype #1200 - Added:
Lucky.rootmethod to raise compile-time error directing people to useDir.currentinstead. #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_countfailing when postgres returns no counts. #357 in Avram - Added: support for postgres extensions with
enable_extension,disable_extension, andupdate_extension. #356 in Avram - Added: enum support for models with
avram_enummacro. #339 in Avram - Fixed: the error message when using
removein migrations, and not passing a Symbol. - Added:
renameandrename_belongs_toin migrations #366 in Avram - Added: new
lucky db.setuptask which runsdb.createanddb.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.createtask. #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_textexpectation 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
validationoption to Habitat settings. #49 in Habitat - Renamed: the internal Habitat
Settingsclass toHabitatSettingsto 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
- Added: support for Crystal 0.35.0
- Added: support for Crystal 0.34.0
Logclass #506 in Lucky CLI - Added:
paginate_arrayfor paginating Arrays #1108 - Improve error logging #1114
- Improve http status logging #1114
- Upgraded: Dexter to v0.2.0
- Type-safe log configuration
- New JSON formatter
- Helpers for testing logs
- Fix for issues with the system check in Procfile.dev #505 in Lucky CLI
- Added: support for Crystal 0.34.0
- Fixed: error on some generated pages from missing sourcemap #1019
- Updated:
options_for_selectto accept more types #295 - Added: ability to pass boolean attrs in link helper methods #1032
- Removed: setting
needswith?. Lucky now generates a method ending in?for you when the type isBool#1034 - Added:
needson pages can now be accessed by a method and not just instance variable #1034 - Removed:
linkhelper method with aStringpath. #1035 - Added: new
Lucky::CookieNotFoundErrorclass. #1038 - Added:
cookies.deleted?()method for checking if a cookie has been deleted. #1040 - Added: new
Lucky::Paginatorcomponent with built-in styles for different different CSS frameworks. #1020 - Fixed:
needsaccidentally overwriting methods of the same name. #1046 - Updated:
label_forto be a little more flexible withniltext. #1047 - Updated: resource generator to be a little easier to read and digest. #1050
- Updated: development
ENVnow usesENV["DEV_PORT"]instead ofENV["PORT"]to fix issues with process managers. #1051 - Added: new
Lucky::CatchUnpermittedAttributemixin forShared::Fieldcomponent. #1052 - Added: new methods in Actions for accessing params from different sources like
from_json,from_query,from_form, andfrom_multipart. #1053 - Updated: generated pages to have some default text pointing to the location of the file to edit. #1057
- Fixed: incorrect pluralization of resources on
NewPage. #1058 - Updated: all action "callbacks" are officially named "pipes". All pipes only log when halted by default. #1062
- Updated: the
lucky devwatcher does not print which file changes because you know you just changed that file. #1065 - Added: a new HTTP handler to set the
request.remote_addressif theX-Forwarded-Forheader is set. #1059 - Added: a
current_page?helper method for pages. #1074 - Added:
FormFieldscomponent for generated resources. #1081 - Updated: all HTML tag methods explicitly return
Nilnow. #1083 - Updated: page markup to render directly to the IO instead of creating an additional string. #1084
- Added:
String#squishmethod. #1085 - Updated: error message from returning invalid type in Actions. #1086
- Added: ability to set custom directory when generating a new Lucky project See LuckyCli
- Added: ability to set your postgres DB port with ENV var. See LuckyCli
- Added: a
robots.txtfile to generated web apps by default. See LuckyCli - Added: new compiling spinner graphic for a cleaner UX. See LuckyCli
- Updated: some comments on the generated main app file. See LuckyCli
- Added: lots of internal documentation. (many small commits to LuckyCli)
- Updated: generated
UserSerializerto inherit fromBaseSerializer. See LuckyCli - Updated: cookies to default to
http_only. See LuckyCli - Updated: node dependencies in generated web apps. See LuckyCli
- Added: new
system_checkscript along with some refactors to make checking that your app is setup a lot easier. See LuckyCli - Removed: ability to pass a raw hash to an
Avram::SaveOperation. See Avram - Added: ability to
skip_schema_enforcerfor certain models. See Avram - Added:
Avram::Model#reloadto reload all of the attributes that may have been updated since the instance was created. See Avram - Added:
Query#reset_whereto reset the WHERE clause on a specific column. See Avram - Added: logging queries that fail. See Avram
- Fixed: using
fill_existing_withwhen you already had data in your table. See Avram - Added: bulk updating records straight from a query object. See Avram
- Added: new "soft delete" feature. See Avram
- Fixed: saving empty array columns when the column can't be
nil, but it can be[]. See Avram - Updated:
SaveOperation.newto set attributes directly. See Avram - Removed: the
onoption forneedsinSaveOperation. See Avram - Fixed: connecting to databases running on a unix domain socket. See Avram
- Added: new shard for turning an Avram column in to a URL slug. AvramSlugify
- Added: missing docs for time helpers #943
- Added: HTML boolean attributes to checkbox and textarea helpers #955
- Fixed: generated templates with proper naming conventions #956
- Added:
to_paramforUUIDallowing UUID to be passed in params #945 - Updated: watcher error message to be a little less abrupt #968
- Updated: generated migrations using the
table_formacro #970 - Fixed: using
with_defaultswhen the tag has content #972 - Added:
any?andempty?toflash#977 - Fixed: allowing
falsevalues forneeds#979 - Updated:
needsto now infer a value ofnilwhen the type is nilable #980 - Fixed: allowing the
-hflag for the watch task #958 - Added: gzip response for assets when it's configured #983
- Added: Lucky API docs are now generated from the CI which is deployed to Github pages #989
- Fixed: when using
needswith different values in random order and Lucky would not compile #993 - Added: more context to the resource generator See commit
- Added: ability to pass Crystal's
--error-taceflag tolucky watch#957 - Fixed: generating resource.browser when using a
JSON::Anycolumn type #997 - Fixed: issue when using HTML boolean attributes with custom tags #1010
- Added: the option to define columns in the model generator #1009
- Updated: permitting columns generated from the resource generator #1014
- Added: new
to_prepared_sqlmethod to generate fully prepared sql for debugging See Avram - Fixed: cloning distinct queries See Avram
- Added: new predicate methods variants for boolean columns See Avram
- Added: new
changed?,changes, andoriginal_valuemethods for attributes in Operations See Avram - Updated:
validate_size_ofandvalidate_inclusion_ofto allownilvalues See Avram - Updated: error messages on some callbacks See Avram
- Fixed:
select_sumwhen the column is any number type See Avram - Fixed: issues with
has_onewhen your model is namespaced, and how it's queried See Avram - Fixed: aggregate query methods to work on all number types See Avram
- Fixed: bug when using a Box that had no columns See Avram
- Updated: preloads to only call when there are parent records. This is a query optimization update. See Avram
- Added: support for Crystal 0.33.0
- Added: support for Crystal 0.32.0
- Fixed: debug page in development with reset context
- Updated: lucky exec works more like a REPL
- Updated: Log time measured with monotonic
- Fixed: Record deletion when primary key is UUID
- Fixed: Setting empty array as default to array column
- Added: Overflow cast catch from Int64 to Int32
- Fixed: UUID primary key issue in SaveOperation
- Fixed: required attribute validations on custom before_save callbacks
- Added: New
reset_limitquery method - Added: New
reset_offsetquery method
- Added: support for Crystal 0.31.1
- Fixed: how accept / content-type headers are handled #869
- Added:
ParamParsingErrorfor when parsing JSON params fails #874 - Updated:
Lucky::BaseHTTPClient#875 - Updated: shell scripts for POSIX compliance #879
- Added:
date_input,time_input,datetime_input#877 - Added: support for HTTP
PATCH#885 - Added:
abbrHTML tag #886 - Fixed: missing primary_key and timestamps in generated migrations #888
- Fixed:
pluralizeto take any Int #890 - Fixed: generation of migrations with resource see Commit
- Rename:
Lucky::HttpRespondabletoLucky::RenderableErrorsee Commit - Fixed:
accepts_format, and a few other mime type issues #896 - Fixed: default curl requests to server not responding properly #899
- Rename:
handle_errortorenderinErrorAction#903 - Rename:
rendertohtmlin Actions #905 - Update: error message when missing type declaration for
needs#907 - Fixed: model generation allowing for non alphanumeric characters #910
- Updated: make more errors renderable #911
- Fixed: help messages now display for precompiled tasks #923
- Updated: default help messages for tasks #923
- Fixed: issue with precompile tasks running in some directories #924
- Added: SQL logging see Avram
- Updated: error message when postgres isn't running see Avram
- Updated:
Box.create_pairallows for setting attributes, and returns instances see Avram - Added: ability to
clonea query see Avram - Fixed:
add_belongs_toin alter statement using wrong Int size see Avram - Fixed: incorrect error message from
SaveOperationupdates in 0.17 see Avram - Added:
betweenquery method see Avram - Added: ordering queries by
NULLS FIRSTandNULLS LASTsee Avram - Fixed: missing attributes from SaveOperation see Avram
- Added:
db.schema.restoreanddb.schema.dumptasks see Avram - Added:
groupquery method for doing GROUP BY see Avram - Updated: SchemaEnforcer see Avram
- Fixed: issue when calling
beforein SaveOperation see Avram - Added: JWT auth generation for API apps see LuckyCli
- Updated: Serializers to be smarter with collections see LuckyCli
- Updated: webpack to ignore
node_modulesdirectory see LuckyCli - Removed: cli
lucky inittask args see LuckyCli - Added: new
lucky init.customtask to take args asinitdid before. - Fixed:
lucky initto catch invalid project names properly. - Added: support for
browser_binaryin LuckyFlow see LuckyFlow
- Rename:
Avram::BaseFormtoAvram::SaveOperationsee Avram - Rename:
Avram::FieldtoAvram::Attributesee Avram - Update:
number_to_currencynow returnsStringinstead of writing to the view directly. #809 - Fixed: bug in running
build.releasetask. - Update: mounted components render comments to show start and end of component. #817
- Revert: returning
Stringforhighlighthelper. #818 - Update: text helpers that write to the view moved to their own module. #820
- Rename:
fillabletopermit_columns. see Avram - Added:
skip_ifoption toLogHandler. #824 - Rename:
Lucky::ExposeabletoLucky::Exposable. #827 - Rename:
Lucky::RouteabletoLucky::Routable. #827 - Added:
memoizemacro. #832 - Added:
table_formacro. see Avram - Added:
xmlrender method for Actions. #838 - Rename:
textrender action toplain_text. #838 - Update:
responsive_meta_tagto be flexible. #835 - Added:
Int16#to_paramandInt64#to_param. - Fixed:
append/replace_classwith no default. #842 - Added: multi database support. see Avram
- Rename:
form_nametoparam_key. see Avram - Fixed: 3rd party shards versions. #855
- Added: JSON support. see Avram
- Update: calling
firstensures proper order by. see Avram - Update: specifying primary keys is more explicit now. see Avram
- Added: custom primary key name support. see Avram
- Added: column and primary key support for
Int16. see Avram - Rename:
Query.destroy_alltoQuery.truncate. see Avram - Fixed: model inference with table names. see Avram
- Rename:
virtualtoattribute. see Avram - Rename:
VirtualFormtoOperation. see Avram - Added: support for
Arrayfields. see Avram - Rename: association query methods now prefixed with
where_. see Avram - Added: query method to bulk delete. see Avram
- Update: association query methods no longer take a block. see Avram
- Added: support for polymorphic associations. see Avram
- Added:
db.rollback_totask. see Avram - Added:
db.migrations.statustask. see Avram - Added:
db.verify_connectiontask. see Avram - Fixed: calling
lucky -vfrom a lucky project failed. see CLI - Update: name convention for operations to be
VerbNoun. see CLI - Added:
change_typemacro for migrations. see Avram
- Added: support for Crystal 0.30.0
- Removed
Lucky::Action::Status. Use Crystal'sHTTP::Statusenum. #769 - CookieOverflowError is now checked when the cookie is set instead of later in middleware. #761
- Crystal 0.29.0 support added
- Rename
Lucky::BaseApptoLucky::BaseAppServer - Rename
SentrytoLuckySentry - Breaking change - Many text helpers now return a
Stringinstead of appending to the view (cycle,excerpt,highlight,pluralize,time_ago_in_words,to_sentence,word_wrap) #781 - Added new asset host option #795
- Added new secure header modules #735
- Added fallback routing #731
- Updated SSL Handler with HSTS option #734
- Components are now classes instead of modules #714
- Fixed
BaseHTTPClientparams #726 - Fixed passing
Symbolfor statuses in redirects #730 - More helpful errors #733, #732
- Crystal 0.28.0 support added
-
Use
Dexteras the logger. https://github.com/luckyframework/lucky_cli/pull/300 and https://github.com/luckyframework/lucky_cli/pull/299 -
Move scripts from
bintoscript. Ignore all ofbindirectory in.gitignore. See https://github.com/luckyframework/lucky_cli/pull/288 and https://github.com/luckyframework/lucky_cli/pull/301 -
Appinsrc/app.crshould now inherit fromLucky::BaseApp. See https://github.com/luckyframework/lucky_cli/pull/287/files for an example. -
Prefix id params with the resource name #659
-
Added Action#url_without_query_params #662
-
Added
Lucky::AssetHelpers.load_manifestso that API apps don't need a blank manifest to compile. -
Pages ignore unused exposures #666
-
unexposeandunexpose_if_exposedhave been removed because they are no longer necessary now that pages ignore unused exposures. -
isin queries has been renamed toeq. For example:UserQuery.new.name.not.is("Emily")should now beUserQuery.new.name.not.eq("Emily"). If passing in something that could beNil, one must usenilable_eqinstead. avram#46