- 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