- Fixed: re-compilation time not resetting. #1894
- Fixed: missing
--with-page
flag ingen.action.browser
task 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_method
public. #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
Lucky
shard. #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_any
criteria method for array queries. #1042 in Avram - Added:
if_exists
option to DROP TABLE queries. #1043 in Avram - Added: support for camel case or snake case on
gen.migration
task. #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_error
expectation for specs with SaveOperations. #1062 in Avram - Refactor: use
postgres
as the default database fordb.create
anddb.drop
tasks. #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_format
for operation validations. #1065 in Avram - Refactor: built-in db related tasks are no longer precompiled. #1069 in Avram
- Refacor: built-in
gen.email
task 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
-n
flag tolucky gen.secret_key
to 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_words
that 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:
Date
header to response output. #1866 - Added: LuckyCLI releases now include binary packages in the release since v1.1.1
- Fixed: entering
Y
ory
in 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:
attrs
override for boolean attributes onselect_input
andmulti_select_input
. #981 in Avram - Updated: DB connections now support a retry. #990 in Avram
- Updated:
select_input
andmulti_select_input
to include theid
attribute. #992 in Avram - Added:
if_not_exists
andif_exists
options to migrationcreate
andalter
macros. #993 in Avram - Added: block overload for
preload
has_one
methods. #994 in Avram - Fixed: how the
verify_connection
task runs to catch some edge cases of it not working. #995 in Avram - Updated: migrator commands no longer use
Process.run
with theshell
option. #997 in Avram - Breaking change Refactor: all Avram models now use
DB::Serializable
instead 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_to
to disable adding an index. #1002 in Avram - Added:
create_sequence
anddrop_sequence
migration methods. #1003 in Avram - Added:
refresh_view
query method and materialized view option for materialized view models. #1004 in Avram - Added: support for
String
primary keys in models. #1000 in Avram - Added: new
String
,Int
, andFloat
criteria methods.length
,reverse
,abs
,ceil
, andfloor
respectively. #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_class
arg forhas_many
associations to specify which query class to use when an association is called. #1006 in Avram - Added: new
JSON::Any
critera methodshas_key
,has_any_keys
, andhas_all_keys
. #1015 in Avram - Added: more new
JSON::Any
criteria methodsincludes
andin
. #1016 in Avram - Added: new
IGNORE
constant which is an instance ofAvram::Nothing
used for ignoring column updates in operations. #1018 in Avram - Added: new
String
criteria methods to convert toto_tsquery
andto_tsvector
along with amatch
for 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
match
macro. #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-page
flag forlucky gen.action.browser
task. #1819 - Refactor:
RequestBodyReader
with a performance boost in actions. #1826 - Refactor: action route generation with a performance boost. #1829
- Refactor:
html
macro for actions with simpler code. #1836 - Added: config option to configure default redirect statuses. #1838
- Refactor: The
lucky
CLI no longer compiles when running-h
. #771 in LuckyCLI - Added: A new
lucky tasks
CLI command added to display available tasks. - Fixed: The
lucky dev
command 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 app
command. #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_numeric
and 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
nil
values 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_of
validation can now validate arrays. #960 in Avram - Added: PG extension
PG::NumericFloatConverter
for convertingFloat64
values from custom SQL. #958 in Avram - Refactor: SaveOperation
insert
andupdate
with 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
bytea
columns. #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
LuckyHXML
shard for generating Hyperview apps from Lucky. View Shard - Added: Brand new
LuckyTemplate
shard 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
.env
file. #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:
attrs
option tosumbit
tag helper. #1759 - Fixed:
previous_url
helper 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
SkipUniqueRoute
check. 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_HOST
for 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_user
method 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_date
query methods. #912 in Avram - Updated: more support for CockroachDB with
select_sum
query 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 watch
command as an alternative to browsersync. #1693 - Updated: Error actions now have access to
params
. #1716 - Updated:
lucky exec
allowing you to set your editor by$EDITOR
env. #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
memoize
method. #1726 - Added: new
exec_raw
escape hatch method forApiClient
to submit raw param data. #1728 - Fixed:
memoize
methods 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::Params
is constructed. #847 in Avram - Updated: compile-time catch when specifying both
default
andfill_existing_with
values in migrations. #852 in Avram - Added: new
change_default
method for migrations to change the default value of a column. #853 in Avram - Updated: references to
uuid-ossp
in favor ofpgcrypto
. #855 in Avram - Added: the ability to use the
@[Flags]
annotation andInt64
for enums. #856 in Avram - Added: new
extract()
method for timestamp queries. #861 in Avram - Added: new
Bytes
column support forbytea
columns. #860 in Avram - Breaking change Updated: named args to take precedence over param values when using Operations. #862 in Avram
- Added: new
grouped_checkbox
method for use with Array attributes. #863 in Avram - Fixed:
change_type
so 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_numeric
to 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_xpath
method 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_send
andafter_send
callbacks 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
ws
CLI utility with Wordsmith allowing you to process words from the CLI. #23 in Wordsmith
- Fixed: compilation issue when using the
Lucky::Subdomain
module. #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_url
page helper method. #1641 - Added: ability to make requests to actions directly in specs. #1644
- Fixed:
time_ago_in_words
always 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_ip
method 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-For
list. also #1675 - Updated:
MessageVerifier
to 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
app
instead 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_order
for 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_count
method for grouped count queries. #778 in Avram - Added:
AvramSlugify
is 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
generate
method forAvram::Slugify
to generate a slug without setting a value. #821 in Avram - Added:
validate_format_of
andvalidate_uniqueness_of
toAvram::I18Backend
for 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
size
method to LuckyCache. #10 in LuckyCache - Added:
clear_subscribers
method 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_key
task. #1556 - Updated: the
html_with_status
to allow Numbers, Symbols, and HTTP::Status. #1568 - Updated: the
lucky routes
task to print within a table (again). Added a new flag option to print params. #1569 - Added: new
path_without_query_params
Action 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:
route
andnested_route
macro 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 watch
task to be less greedy on recompiles. #1604 - Added: the
ajax
desired client format option for actions. #1603 - Added: a better help message for
lucky exec
to include options. #1602 - Added: new
previous_page
, andnext_page
Paginator helper methods. #1611 - Fixed: writing to the response body when making a HEAD call. #1609
- Breaking change Removed: the
lucky build.release
task. #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#listen
method to be abstract. #1622 - Added: new HTTP
context.request_id
andRequestIdHandler
. #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_manifest
to 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#listen
code to be a bit more concise. #699 in Lucky CLI - Added: new
Lucky::RequestIdHandler
to generated apps. #700 in Lucky CLI - Fixed: issue when
select_count
was 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
id
column. #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_to
to require thereferences
option 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.dump
task 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_validations
block macro. #751 in Avram - Added: new
validate_format_of
validation method. #752 in Avram - Fixed: sort order of migrations. #756 in Avram
- Added: new
Avram::I18nBackend
for setting language translations. #757 in Avram - Breaking change Renamed:
Operation::Status
enums 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
int32
andfloat64
task 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
context
to be passed in. #1488 - Added: new
time_from_now_in_words
text helper. #1493 - Added: new
multipart?
action request helper. #1495 - Updated: the generated delete action resource to use DeleteOperation. #1497
- Added: new
raw_json
Action response method. #1492 - Updated:
form_for
to allow passing boolean attributes. #1506 - Added: new module to disable FLoC. #1508
- Deprecated:
route
andnested_route
from 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::Serializer
with abstractrender
method. #1516 - Added: new
html_with_status
method 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
LuckyEnv
now. #650 in Lucky CLI - Removed: deprecated
normalize-css
package 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
User
model. #657 in Lucky CLI - Fixed: support for Crystal 1.1.0 when generating a new app. #644 in Lucky CLI
- Removed: the
Lucky::Env
module and replaced with theLuckyEnv
shard. #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_numeric
andvalidate_size_of
methods to allow for a custom error message. #670 in Avram - Updated:
db.drop
anddb.reset
tasks with a "quiet" option. #675 in Avram - Fixed: edge case with migrations using
fill_existing_with: false
. #676 in Avram - Added: new
Appdatabase.listen
method to listen forpg_notify()
calls to any number of channels. #677 in Avram - Added:
before_save
andafter_save
callbacks toAvram::Factory
. #678 in Avram - Fixed:
add_belongs_to
to support namespaced types. #685 in Avram - Updated: how
select_count
works 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_of
method to take a full query object. #701 in Avram - Added: new
any?
andnone?
query methods to return aBool
value based on records existing. #703 in Avram - Breaking change: removed
avram_enum
. You can now just use the native Crystalenum
type. #698 in Avram - Added: ability to use
CASCADE
when callingtruncate
. #702 in Avram - Added: new
SaveOperation.upsert
methods. #334 in Avram - Breaking change: renamed
DeleteOperation.destroy
toDeleteOperation.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::Env
in 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:
link
to raise an exception when passing bothto
andhref
. #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 thebin
directory. #1454 - Fixed: error message when passing wrong type values to HTML tags. #1456
- Updated:
lucky_cli
dependency with newlucky_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 usingFloat64
. #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
- Updated: the compile-error for missing Page args. #1373
- Fixed: flash messages to be discarded unless specifically kept. #1374
- Added: generating
JSON::Any
columns fromlucky 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
ornested_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
andnested_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 (
==
,===
) 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:
UUID
primary keys are now generated in the database with a fallback using Crystal. #578 in Avram - Updated:
validate_size_of
to only take aString
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 newcase_sensitive: false
option. #608 in Avram - Added: support for
Array(UUID)
columns. #609 in Avram - Updated: SaveOperation
after_save
andafter_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
toAvram::Factory
. #614 in Avram - Added: new composite primary keys for migrations. #616 in Avram
- Fixed: issues with
has_one
inSaveOperation
not updating the associated record when doing updates. #596 in Avram - Updated:
Avram::Operation
to not callrun
if 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_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 forCarbo
. #45 in Carbon
- Rename: component
with_defaults
renamed totag_defaults
#1262 - Fixed: send HSTS headers over HTTPS. #1268
- Updated:
memoize
can be used on anyObject
#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()
andcite()
tag methods. #1317 - Added: type name in error message for action classes #1321
- Fixed: params that use
Bool
with a default value offalse
#1352 - Updated: generated
start_server
binary is now output to thebin
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 anexample
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 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_with
to be used with nilable columns. #452 in Avram - Fixed:
Bool
columns with a defaultfalse
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
orto_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 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::SaveOperation
callback methodsafter_save
andafter_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 performWHERE 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 onAvram::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
- Fixed:
send_text_response
default status to nil #1214 - Added:
data
method for Actions to return file contents #1220 - Updated: Component
m
is 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_back
to disallow external referrers by default with config option #1241 - 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 toApiClient
#534 in Lucky CLI - Updated: generated projects to use
--ignore-crystal-version
flag 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_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
anddrop_function
to create SQL functions #427 in Avram - Updated:
Avram::PostgresURL
renamed toAvram::Credentials
with a new interface #433 in Avram - Added:
create_trigger
anddrop_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 onadd_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
- Fixed: generated apps using deprecated
mount
instead ofm
#531 in Lucky CLI
- 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, andnil
andfalse
values #1139 - Updated: model generator to provide more helpful error messages #1140
- Added:
get_raw
method to params along with striping blankspace on paramget
calls #1144 - Removed:
mount
with deprecation in favor of newm
method. - Added:
m
helper method as amount
replacement with a new interface. #1151 - Updated:
String#squish
method to be faster #1159 - Removed:
Lucky::SessionHandler
andLucky::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 yourLucky::CookieJar
on_set
#1183 - Fixed: compilation bug in generated page when running
lucky gen.page
#1191 - Added:
multipart: true
option toform_for
to set multipart enctype #1200 - Added:
Lucky.root
method to raise compile-time error directing people to useDir.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
, andupdate_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
andrename_belongs_to
in migrations #366 in Avram - Added: new
lucky db.setup
task which runsdb.create
anddb.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 toHabitatSettings
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
- Added: support for Crystal 0.35.0
- Added: support for Crystal 0.34.0
Log
class #506 in Lucky CLI - Added:
paginate_array
for 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_select
to accept more types #295 - Added: ability to pass boolean attrs in link helper methods #1032
- Removed: setting
needs
with?
. Lucky now generates a method ending in?
for you when the type isBool
#1034 - Added:
needs
on pages can now be accessed by a method and not just instance variable #1034 - Removed:
link
helper method with aString
path. #1035 - Added: new
Lucky::CookieNotFoundError
class. #1038 - Added:
cookies.deleted?()
method for checking if a cookie has been deleted. #1040 - Added: new
Lucky::Paginator
component with built-in styles for different different CSS frameworks. #1020 - Fixed:
needs
accidentally overwriting methods of the same name. #1046 - Updated:
label_for
to be a little more flexible withnil
text. #1047 - Updated: resource generator to be a little easier to read and digest. #1050
- Updated: development
ENV
now usesENV["DEV_PORT"]
instead ofENV["PORT"]
to fix issues with process managers. #1051 - Added: new
Lucky::CatchUnpermittedAttribute
mixin forShared::Field
component. #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 dev
watcher 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_address
if theX-Forwarded-For
header is set. #1059 - Added: a
current_page?
helper method for pages. #1074 - Added:
FormFields
component for generated resources. #1081 - Updated: all HTML tag methods explicitly return
Nil
now. #1083 - Updated: page markup to render directly to the IO instead of creating an additional string. #1084
- Added:
String#squish
method. #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.txt
file 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
UserSerializer
to 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_check
script 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_enforcer
for certain models. See Avram - Added:
Avram::Model#reload
to reload all of the attributes that may have been updated since the instance was created. See Avram - Added:
Query#reset_where
to reset the WHERE clause on a specific column. See Avram - Added: logging queries that fail. See Avram
- Fixed: using
fill_existing_with
when 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.new
to set attributes directly. See Avram - Removed: the
on
option forneeds
inSaveOperation
. 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_param
forUUID
allowing UUID to be passed in params #945 - Updated: watcher error message to be a little less abrupt #968
- Updated: generated migrations using the
table_for
macro #970 - Fixed: using
with_defaults
when the tag has content #972 - Added:
any?
andempty?
toflash
#977 - Fixed: allowing
false
values forneeds
#979 - Updated:
needs
to now infer a value ofnil
when the type is nilable #980 - Fixed: allowing the
-h
flag 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
needs
with 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-tace
flag tolucky watch
#957 - Fixed: generating resource.browser when using a
JSON::Any
column 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_sql
method 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_value
methods for attributes in Operations See Avram - Updated:
validate_size_of
andvalidate_inclusion_of
to allownil
values See Avram - Updated: error messages on some callbacks See Avram
- Fixed:
select_sum
when the column is any number type See Avram - Fixed: issues with
has_one
when 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_limit
query method - Added: New
reset_offset
query method
- Added: support for Crystal 0.31.1
- Fixed: how accept / content-type headers are handled #869
- Added:
ParamParsingError
for 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:
abbr
HTML tag #886 - Fixed: missing primary_key and timestamps in generated migrations #888
- Fixed:
pluralize
to take any Int #890 - Fixed: generation of migrations with resource see Commit
- Rename:
Lucky::HttpRespondable
toLucky::RenderableError
see Commit - Fixed:
accepts_format
, and a few other mime type issues #896 - Fixed: default curl requests to server not responding properly #899
- Rename:
handle_error
torender
inErrorAction
#903 - Rename:
render
tohtml
in 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_pair
allows for setting attributes, and returns instances see Avram - Added: ability to
clone
a query see Avram - Fixed:
add_belongs_to
in alter statement using wrong Int size see Avram - Fixed: incorrect error message from
SaveOperation
updates in 0.17 see Avram - Added:
between
query method see Avram - Added: ordering queries by
NULLS FIRST
andNULLS LAST
see Avram - Fixed: missing attributes from SaveOperation see Avram
- Added:
db.schema.restore
anddb.schema.dump
tasks see Avram - Added:
group
query method for doing GROUP BY see Avram - Updated: SchemaEnforcer see Avram
- Fixed: issue when calling
before
in 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_modules
directory see LuckyCli - Removed: cli
lucky init
task args see LuckyCli - Added: new
lucky init.custom
task to take args asinit
did before. - Fixed:
lucky init
to catch invalid project names properly. - Added: support for
browser_binary
in LuckyFlow see LuckyFlow
- Rename:
Avram::BaseForm
toAvram::SaveOperation
see Avram - Rename:
Avram::Field
toAvram::Attribute
see Avram - Update:
number_to_currency
now returnsString
instead of writing to the view directly. #809 - Fixed: bug in running
build.release
task. - Update: mounted components render comments to show start and end of component. #817
- Revert: returning
String
forhighlight
helper. #818 - Update: text helpers that write to the view moved to their own module. #820
- Rename:
fillable
topermit_columns
. see Avram - Added:
skip_if
option toLogHandler
. #824 - Rename:
Lucky::Exposeable
toLucky::Exposable
. #827 - Rename:
Lucky::Routeable
toLucky::Routable
. #827 - Added:
memoize
macro. #832 - Added:
table_for
macro. see Avram - Added:
xml
render method for Actions. #838 - Rename:
text
render action toplain_text
. #838 - Update:
responsive_meta_tag
to be flexible. #835 - Added:
Int16#to_param
andInt64#to_param
. - Fixed:
append/replace_class
with no default. #842 - Added: multi database support. see Avram
- Rename:
form_name
toparam_key
. see Avram - Fixed: 3rd party shards versions. #855
- Added: JSON support. see Avram
- Update: calling
first
ensures 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_all
toQuery.truncate
. see Avram - Fixed: model inference with table names. see Avram
- Rename:
virtual
toattribute
. see Avram - Rename:
VirtualForm
toOperation
. see Avram - Added: support for
Array
fields. 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_to
task. see Avram - Added:
db.migrations.status
task. see Avram - Added:
db.verify_connection
task. see Avram - Fixed: calling
lucky -v
from a lucky project failed. see CLI - Update: name convention for operations to be
VerbNoun
. see CLI - Added:
change_type
macro for migrations. see Avram
- Added: support for Crystal 0.30.0
- Removed
Lucky::Action::Status
. Use Crystal'sHTTP::Status
enum. #769 - CookieOverflowError is now checked when the cookie is set instead of later in middleware. #761
- Crystal 0.29.0 support added
- Rename
Lucky::BaseApp
toLucky::BaseAppServer
- Rename
Sentry
toLuckySentry
- Breaking change - Many text helpers now return a
String
instead 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
BaseHTTPClient
params #726 - Fixed passing
Symbol
for statuses in redirects #730 - More helpful errors #733, #732
- Crystal 0.28.0 support added
-
Use
Dexter
as the logger. luckyframework/lucky_cli#300 and luckyframework/lucky_cli#299 -
Move scripts from
bin
toscript
. Ignore all ofbin
directory in.gitignore
. See luckyframework/lucky_cli#288 and luckyframework/lucky_cli#301 -
App
insrc/app.cr
should 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_manifest
so that API apps don't need a blank manifest to compile. -
Pages ignore unused exposures #666
-
unexpose
andunexpose_if_exposed
have been removed because they are no longer necessary now that pages ignore unused exposures. -
is
in 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_eq
instead. avram#46