v1.2.0-2January 31, 2019
v1.2.0-1January 31, 2019
v1.2.0-0January 16, 2019
🚀 > As always, we owe a debt of gratitude to our contributors-- we mentioned you below next to the features/enhancements/fixes you contributed to. (Apologies to anyone we missed, there was a lot in this release! Let us know and we'll add you to the list.)
📚 > We especially want to thank those contributors who helped out with the documentation:
- Rachael Shaw
- Mike McNeil
- Ali Norouzi
- Ronny Medina
- Alex Schwarz
- Xavier Spriet
- Ian Harris
- Vladyslav Piskunov
- Michael Frederick
- Mark Strelecky
- Scott Reed
- Mario Colque
- Okoli Lemuel ✅ > - ultimate-tester
- AYEDOUN Fiacre
- Tim Wisniewski
- Tom Saleeba
- Daniel Harvey
- Julien Le Coupanec
- Bernardo Gomes
- Eli Peters
- Dennis Cheung
- Minh Tri Nguyen
Finally, big thanks to Dennis Cheung who did the painstaking work of compiling this changelog!
- 🆕 New model methods:
exitsargument may now be excluded from your
fnfunction in all helpers, actions2 definitions, and shell scripts.
- Cleaner usage for
.leaseConnection(). Functions provided as procedural parameters (i.e.
duringand iteratees) no longer expect a callback to be invoked, as long as you omit their 2nd callabck argument from the function signature.
- The bootstrap function (
config/bootstrap.js) and the
initializefunction of hooks no longer expect a callback to be invoked, as long as the callback argument is excluded from the function signature.
- 🆕 New chainable methods available on helper invocations:
- 0️⃣ Use vuejs VueRouter (and a virtual page example) by default, and make vuejs more apparent
- ⚡️ Update helper, action, and hook generators, plus a few other updates to boilerplate output from generators.
- ⚡️ Update boilerplate bootstrap and hook initialize functions.
- 0️⃣ Disable 'async' dependency when generated the expanded starter app, to avoid confusion. (Can always still be installed, it just won't be bundled by default anymore, and auto-globalization is also, of course, disabled.)
- ⚡️ Include FontAwesome 4 files, and update instructions for removal if desired
- ⚡️ Update check for production/staging in vuejs to assume we're in production if no SAILS_LOCALS are present
- 📚 Provide documentation tip on how to configure Mongo as default datastore w/ link to tutorial
- Take advantage of next-gen whelk.
- 👌 Improve Windows compatibility (for 'sails generate page', sails generate action, etc)
- 0️⃣ Exclude 'async' dep by default in all new apps
- ⚡️ Update boilerplate to take advantage of optional 'exits' argument in helpers, actions, and shell scripts.
- ⚡️ Use updated bootstrap for web app template
- 📈 Implement Google fonts/typekit/google tag manager/google analytics
- Include (hard-code) Bowser inline now
- 👌 Improve to also include 'is' rule
- Redirect away ALL unrecognized base subdomains (not just webhooks and click), but only do it in staging/production.
- 🛠 Fix "sails g page" with nested folders on Windows
- ➕ Add FileList and FormData to reserved list to protect them from mangling. (Should be fine anyway, but this protects against potential issues from changing uglify versions.)
- Take advantage of patch in Parasails 0.7.7
- ⚡️ Leverage .updateOne()
- ➕ Add 5 second timeout for all four of those calls, to protect user experience from any 3rd party API call issues. (For context, this is rare, but it happens. I've noticed Stripe go all 500 on a customer app twice in the last 6 months: once for about 28 minutes earlier this summer, and once last month for a split second. I've never seen it hang, but this is such a common thing with other 3rd party apis better to be safe than sorry. An error message after a reasonable wait time is a far better user experience than having to wait 2 whole minutes for the TCP timeout. And this way, any error handling logic to unroll stuff etc that gets added here will still be able to run.)
- ↔ Integrate Cloud SDK into Parasails
- 👉 Use top-level implementationSniffingTactic and pass through to whelk and MaA
- 👮 Force homogeneous sniffing tactic for helpers+actions.
- 👮 Force minimum SVRs (re implementationType: 'classical').
- 👍 Finish up support for smarter .bootstrap and .initialize. (Continued from 21bc1f1ab88dfa1064f2e312a4b1135b92763d2a)
- ➕ Add faux callbacks for easier debugging
- ➕ Add
createmethod to datastore fixture, and test "no validation errors" case. (Scott Gress)
- 🛠 Fix test descriptions for
- ➕ Add test cases for validations on primary key (Scott Gress)
- Hoist flag for determining whether to apply validation rules, and use it for both PKs and generic attributes. (Scott Gress)
- ➕ Add implementation-sniffing to .stream()
- ⚡️ Setup updateOne() method
- Set up destroyOne() and archiveOne(), and use an omen in the 'found too many' error in findOne() to improve the stack trace.
- Implement implementation sniffing in .transaction() and .leaseConnection().
- Enable ORM to accept attributes named 'length'. Replace
_.forIn()to enable ORM to accept attributes named 'length'. (Daniel Harvey)
- ➕ Add an isError check when handling errors thrown from validation rules to prevent potential issues in extreme edge cases (where something weird gets thrown)
- ✅ Clean up tests for greater clarity and usefulness
- ✅ Finish restructuring things to match latest conventions in parley, etc. Leave standalone/ alias for backwards-compatibility
- ⚡️ Update docs about other adapter methods
- 👌 Improve error messaging to assist in debugging
- Add E_TOO_MANY_FILES error code.
- ➕ Add Cloud.on() and Cloud.off(), improve error msgs, and remove idempotency guarantee
- ➕ Add typeof check to ensure reasonable behavior even with strange input.
- ✨ Enhance built-in catchall error msg for Cloud.on()
- ♻️ Refactor UMD approach to make it easier to see what's going on at a glance.
- ➕ Add experimental support for FileList instances (multi-file upload via Cloud SDK).
- 👌 Improve performance of +500K ops/sec by collapsing IIFE
- Setup for being able to use AsyncFunctions with .intercept() and .tolerate().
- ➕ Add new method: getInvocationinfo() -- a public API for accessing private info such as _timeout. Add .interruptions to getInvocationInfo().
- Introduce working impl of .retry()
- 📇 Clone (shallow) metadata on the way in during .retry(), just to avoid any potential edge cases with a fn attaching additional properties and that actually mattering for subsequent invocations with the same arguments.
- Take advantage of new getInvocationInfo() method in parley related to .retry()
- 👍 Implement partial support for blended tolerate/intercept with retry (Note: works only for completely parallel error conditions).
- ⚡️ Optimize AsyncFunction function constructor check.
- 👍 Allow implementationSniffingTactic to be customized.
- ➕ Add failsafe to ensure app lifts inside of Mocha tests. Related to https://github.com/balderdashy/sails/issues/4395 and https://github.com/balderdashy/captains-log/pull/22
- Also in new Sails apps: Force min 3.10.3 of lodash in new projects
- ⚡️ Also in new Sails apps: Update eslintrc templates to tolerate unused args and vars that begin with 'unused' (or are just named 'unused')
- Also in new Sails apps: Add 'custom' validation rule.
- Also in new Sails apps: Replace autofocus with focus-first, and ensure this feature is opt-in for and . Also add typeof check for bowser.
- Also in new Sails apps: Tolerate required: false, etc in
- Also in new Sails apps: Improve error msg in weird edge case
- 0️⃣ Also in new Sails apps: Allow completely numeric passwords by default when using 'isHalfwayDecentPassword' validation rule for
- ⚡️ Also in new Sails apps: Update email templates
- 💅 Also in new Sails apps: Add a couple opinionated-yet-reasonable global styles to the 'bootstrap-overrides' file
- Also in new Sails apps: Bump appveyor+travis files to always include Node 10
- 📚 Also in new Sails apps: Standardize redis url format to be consistent with site documentation for db (numerical database names only). Scott Reed
- 🚀 Also in new Sails apps: Ignore files generated by 'npm link' in recent NPM releases
- Also in new Sails apps: Add note about conditional requiredness and validation rules.
- Also in new Sails apps: Add autocomplete attributes to form fields where applicable
- Also in new Sails apps: Disable lesshint rule for border-boxing everything in bootstrap-overrides
- Also in new Sails apps: Fix mismatched tags in email templates
- Also in new Sails apps: Fix that silly checkbox alignment on login/signup templates
- Also in new Sails apps: Fix camelCasing issue in intermediate subdirectories for newly created view actions.
- Also in new Sails apps: Fix fullName validation on edit profile page (S.Slavchev)
- Also in new Sails apps: Don't include inputs in generated shell script.
- 👕 Also in new Sails apps: Make 'semi' and 'curly' lint violations burn yellow instead of burning red
- Also in new Sails apps: Tweak generated comment about 'no lodash'
- Also in new Sails apps: Add note about the function signature of 'leave'
- Also in new Sails apps: Simplify readme links
- 📄 Also in new Sails apps: Tweak inline docs for
- ⚡️ Also in new Sails apps: Bring in self-updating timestamp component for web app template
- ⚡️ Also in new Sails apps: Update model examples
- Also in new Sails apps: Use kebab-cased status to avoid database-dependent behavior in edge cases (b/c case sensitivity)
- Also in new Sails apps: Rename var and kebab-case desired effect strings for consistency
- Also in new Sails apps: Use _.extend for consistency
- 👕 Also in new Sails apps: Include moment in eslintrc-override
- Also in new Sails apps: Tweak , and then include a demo in the welcome page.
- Also in new Sails apps: Normalize indentation in "send template email" helper
- Also in new Sails apps: Make sure the HTML email contents are actually being logged properly
- Also in new Sails apps: Change method names on welcome page for consistency, and also use
this.modal, since there can only be one modal on the page at a time anyway
- Also in new Sails apps: Rearrange virtual page example
- 💻 Also in new Sails apps: Bring in unsupported browser overlay
- Also in new Sails apps: Change href so it makes more sense
- Also in new Sails apps: Expand comment re virtual pages.
- Also in new Sails apps: Expand comments in js-timestamp a bit.
- Also in new Sails apps: Rearrange note about filtering argins now that handleSubmitting exists.
- ✅ Also in new Sails apps: Don't specify testMode when calling out to Mailgun, to avoid confusion.
- Also in new Sails apps: Never indicate that the email was logged instead of sent if it wasn't.
- Also in new Sails apps: Add retries w/ exponentional back-off for idempotent / low-risk 3rd party API calls.
- 0️⃣ Also in new Sails apps: Add 'ensureAck' flag to sendTemplateEmail(), and change behavior to background the sending by default.
- Also in new Sails apps: Simplify rebuild-cloud-sdk script a bit.
- Also in new Sails apps: Use for instead of _.each()
- Also in new Sails apps: Fix typo introduced in 22df26e832aeef817a6e3c01561041eda83830cd
- 🙋 Also in new Sails apps: Tweak verbiage in boilerplate FAQ for clarity. (action not controller)
- Also in new Sails apps: Normalize capitalization in generated footer
- Also in new Sails apps: Include a placeholder logo image for the branding in the masthead
- 🌐 Also in new Sails apps: On homepage for web app template, add more space between "feature" sections on small screens
- 💅 Also in new Sails apps: Use consistent link styles all across the web app template, and also add some special blockquote styles
- Also in new Sails apps: Verbiage tweaks / capitalization normalizaish
- Also in new Sails apps: 'No matter how legal it is, capitalization should never look this ugly.' -mike, amateur lawyer
- 🙋 Also in new Sails apps: Add FAQ item with info about placeholders, and give the questions some more breathing room
- Also in new Sails apps: Cleanup and friendlify boilerplate legal documents
- 👍 Also in new Sails apps: Provide better example config
- Also in new Sails apps: Tweak constant name to match
- Also in new Sails apps: Fix inconsistent constants
- 🙋 Also in new Sails apps: Avoid find/replace conflicts with constants. Also, add the link we mention in the FAQ.
- Also in new Sails apps: Correct the boilerplate language
- 💅 Also in new Sails apps: Add clarifications to boilerplate stylesheet
- 💅 Also in new Sails apps: Remove custom
a:not(.btn)styles from homepage, because those are set elsewhere now
- Parasails: Tweak varname for clarity.
- Parasails: Rename private method for clarity.
- 👍 Parasails: Leave better error sniffability, but rip out attempt to actually use it from 173685357364baaf9e2e2b3c16307c3fa7ec5d44
- Parasails: An additional layer to Cloud.on() and Cloud.off() (intermediate commit to track concept of wildcard key -- ends up being too confusing for custom error handling, but might be worth revisiting as a kind of lifecycle callback in the future)
- Parasails: Rename "*" catchall handler to "error" and finish implementation
- Parasails: Rename to Cloud.listen() and Cloud.ignore(), add aliases, and improve error msgs.
- Parasails: Intermediate commit: Tracks how we'd approach making .listen() idempotent-- but actually this probably isn't the right granularity to do that (save that for parasails proper on a per-Vue-component basis)
- 👀 Parasails: Change .listen() and .ignore() back to .on() and .off(), and remove idempotency guarantee (that'll need to live at the component/Vue instance level in parasails proper -- see also https://github.com/mikermcneil/parasails/commit/36f87501cd174104e6b75a18b7c16d83ec74 edaa and https://github.com/mikermcneil/parasails/commit/b54258a9f244fabbbd3c89e35c7be5095c5d8dfa)
- Parasails: Add back conveniences for multiple bindings.
- Parasails: 'error' => '*'
- Parasails: Add uncaught error handler
- ⚡️ Parasails: Bring in most recent updates
- 🚚 Parasails: Remove double-binding
- ⚡️ Parasails: Update parasails.js (Mark Strelecky)
- Parasails: Throw error when upload request is no good because it contains structured data as text parameter values.
- Parasails: Add tip about uglify
- 💻 Parasails: Follow-up to 4941181912646ec27132afb82c2be32bb3cf6203 to make $.ajax() transport work with FileList instances (on browsers where this is supported).
- Parasails: Fix hard-coded version number in parasails.js file.
- 🔧 Parasails: Allow sparser shorthand for setting up virtual pages, while also implementing more error-checking and edge-case handling for various configurations of virtualPages, virtualPagesRegExp, and html5HistoryMode.
- Parasails: Improve 'did you mean?' intelligence and add two FUTURE nice-to-haves.
- 👮 Force [email protected]
- 🛠 Fix linting and global var issues for globals tests (Scott Gress)
- 🛠 Fix paths to Lodash for globals tests (Scott Gress)
- 🛠 Fix lint and global var issues in www test (Scott Gress)
- ✅ Use
tmpin www tests to attempt to fix Appveyor issues (Scott Gress)
- ➕ Address https://github.com/balderdashy/sails/commit/8168dffb8052c0a2df3de923a18c60dd27875915#diff-78ca47cd74fd541e85ff2100564371ddR656
- ✅ Use
tmpin remaining www test to try and address random Appveyor failures (Scott Gress)
- 👉 Use more accurate verb in secure cookie info msg
- Contextualize the 'yes secure cookies, no trustProxy' debug mesage.
- Clarify message and change it to be verbose
- Closes #4392 (by removing coffee-script, checksum, and istanbul devDependencies)
- Ignore 'npm link' collateral
- Stub implementation opts for helpers re upcoming opt-ins
- ➕ Add note about implementationSniffingTactic
- Implicitly set implementationSniffingTactic
- ➕ Add bookends about 'customize' for whelk and machine-as-action
- Don't use explicit implementationSniffingTactic yet.
- ⬆️ Bump machine runner SVR and remove unnecessary code
- Note optimization
- Setup for smarter .bootstrap and .initialize
- Correctly apply implementationSniffingTactic for helpers
- 0️⃣ Default value for implementationSniffingTactic
- ➕ Add note in 'sails run'
- Expand explanations in changelog.
- For compatibility, tolerate action identities that contain '$'.
- 🔄 Change variable name to prevent confusion with built-in 'module'.
- Follow-up to a22598eb26f108768be91a31f4baa8fc92a9c5c7 which covers the rest of the cases
- 🔄 Change var name for clarity (same idea as in 2eaaf968daae8f00ebc0007210baa32b5d50f7f0)
- ⚠ Log warnings if special actions-only props are in use in helper defs.
- ⚡️ Update changelog to reflect what's happening w/ the responses hook
- ⬆️ Bump skipper dep
- Clarify optional-ness of bootstrap callback in comment.
- ⚡️ Update error messages for bootstrap/initialize to reflect new reality.
- 2nd follow up to 97082b8e067a490531758f6bcbc471e08874c209 to allow for "$" in route bindings
- 🚀 Use prerelease of sails-generate
- 🛠 Fix sails-generate SVR
- 🔀 Pin merge-dictionaries
- 🛠 Fix test now that async is no longer included as a dep. in newly generated sails apps (thanks to await and sails.helpers.flow via organics)
- 🛠 Fix expectations of test to match correct child process output (follow up to c694f2d2b1db4b9f397c52f540b19d7d4a4125f4)
- 🛠 Fix one more test related to c694f2d2b1db4b9f397c52f540b19d7d4a4125f4
- ✅ Waterline: [PATCH] Fix typo and swap unit test description misplaced in fix #1554 to issue #4360 (Luis Lobo Borobia)
- Waterline: Add link to drawing demonstrating how Waterline works underneath the hood
- Waterline: Stub out the spots where implementationSniffingTactic needs to apply
- ⚡️ Waterline: Improve error msg when attempting to use a too-generic WHERE clause with updateOne/destroyOne/archiveOne
- Waterline: Don't use skipEncryption for archiveOne() and destroyOne() -- doesn't make sense.
- 📄 sails-hook-orm: Add missing comma and link to lifecycle hooks in docs (Tom Saleeba)
- ⚡️ sails-hook-orm: Update error message about adapter compatibility
- sails-hook-orm: Stub out the spots where implementationSniffingTactic needs to apply
- ⚡️ waterline-utils: Update boilerplate
- 👕 waterline-utils: Resolve lint issues
- waterline-utils: Ignore fun new files generated by 'npm link'
- waterline-utils: Add normalize-datastore-config from sails-mongo (needs more love)
- waterline-utils: Set 'protocol' property automatically.
- waterline-utils: Expose .normalizeDatastoreConfig()
- waterline-utils: Change .protocol -> protocolPrefix (and get rid of trailing colon)
- waterline-utils: Add missing change from prev. commit, and also set .protocolPrefix when appropriate, even if no url was specified.
- waterline-utils: Grab dictionary of models (w/ backwards compatibility)
- waterline-utils: Fix backwards conditional
- 🏗 anchor: Fix build status urls
- ⬆️ anchor: Bump validator version re https://snyk.io/test/npm/anchor?severity=high&severity=medium&severity=low#npm:validator:20160218 (without applying any of the necessary changes yet, if there are any). Also upgrade to latest eslintrc file, etc, and bump eslint dep.
- ✅ anchor: Fix out of date test label
- anchor: Tweak checkConfig error msgs for isBefore+isAfter
- anchor: Clean up checkConfig for isBefore and isAfter, and clarify another comment.
- anchor: Reroll isBefore and isAfter the dumb, explicit way.
- ✅ anchor: Added a few more tests.
- ⬆️ anchor: Add validator upgrade
- sails-hook-sockets: Fix typo in function being checked when preparing driver in case of unexpected failure (Luis Lobo Borobia)
- 📚 sails-hook-sockets: Modify deprecation message to recommend install Sails owned socket.io-redis, to match up documentation https://sailsjs.com/documentation/concepts/deployment/scaling (Luis Lobo Borobia)
- ⚡️ skipper: Update boilerplate.
- 👕 skipper: Add eslint dev dep
- 👕 skipper: Set up lint script and add docs for quota-related error codes in README
- 👕 skipper: Some lint fixes plus remove stringfile and 2 unnecessary deps.
- skipper: sailshq/lodash
- 👕 skipper: Improve linter
- skipper: Consolidate roadmap w/ sails core
- skipper: Consolidate contributor info
- 🚚 skipper: Remove old logger in favor of consistently using 'debug'
- 📚 skipper: Documentation
- skipper: Conslidate into lib/ (part 1)
- 🚚 skipper: Move index.js to lib/skipper.js
- 🚚 skipper: Remove standalone/ alias
- ✅ skipper: Latest SVR for skipper-adapter-tests
- Backport https://github.com/lodash/lodash/commit/d8e069cc3410082e44eb18fcf8e7f3d08ebe1d4a
- Flaverr: Fix bad error message
- Parley: Shorten error message and pull out exec countdown secs into a constant.
- ⚠ Parley: Tweak verbiage in warning msg one more time for further clarity.
- ⏱ Parley: Implement .timeout() and initial pass at .retry().
- Parley: Set up more of .retry(), and add relevant TODO about what needs to happen now
- Parley: Avoid 1MM ops/sec perf. loss by using .slice() alternative
- 🐎 Parley: 200k ops/sec to general-case performance (and take care of annoying arguments keyword usage)
- Parley: Implement IIFE but prepare for about-face since it takes away 1MM ops/sec
- Parley: Regain 1MM ops/sec by moving IIFE out
- 📄 Parley: Cleanup, deduplication, and docs
- Parley: +350K ops/sec
- Parley: Change where bindUserlandAfterExecLC lives, for consistency
- ⚡️ Parley: Rearrange for clarity, and update comments
- ⚡️ Parley: Boilerplate update
- 👍 Parley: Setup first pass at async function support for userland afterExec LCs
- 🚚 Parley: Remove usage assertion now that AsyncFunctions are supported
- Parley: Added _hasStartedButNotFinishedAfterExecLC
- Parley: Eliminate todos now that "one tick" flag takes afterexec LCs into account
- Parley: Rough .retry() impl
- Parley: Rip out retry from parley (realized it needs to live a level higher up in the stack)
- 🚚 Parley: Remove two now-unused reserved keys from blacklist
- ⚡️ Parley: Update examples
- 🚀 Parley: Add 'thenable' option for backwards-compatibility for older node releases (specifically important for .tolerate())
- Parley: Fix backwards conditional
- ⏪ Parley: Revert "3.6.0"
- Parley: Prevent throwing when no afterExec LC handler is specified
- Parley: Don't throw a special error when handler provided to .tolerate() throws -- instead just allow it through unscathed.
- ⬆️ Machine (runner for actions2, helpers, & shell scripts): Upgrade eslint
- Machine: Obey new 'instructionTimeout' meta key
- 📇 Machine: Reverse 8af993b01c1480aca45d7e7e2952cfd8d288a293 because all metadata isn't known at build time. (This will need more shuffling to accomplish)
- ⚡️ Machine: Update boilerplate and bump min parley version.
- Machine: Finish "Too many retries" error, and make note of situation with [Circular]
- 🚚 Machine: Disable old tests, remove now-irrelevant future note
- 0️⃣ Machine: More cleanup, after verifying it works w/ defaultArgins and defaultMeta.
- 🏗 Machine: Add note explaining why we don't pass in a build-time omen (or any omen) to .retry()'s extra .build() call.
- ⏱ Machine: Respect original invocation timeout
- 🚚 Machine: Remove strict idempotency check.
- 👍 Machine: Eliminate support for variadic usage (because it's potentially confusing/imprecise -- negotation rules and retry series can BOTH be arrays)
- Machine: Fix an oversight/edge case: an error message would have itself thrown an error.
- Machine: Fix typo in .retry().
- Machine: Setup for implementationSniffingTacticgls
- 🏗 Machine: Catch attempt to use AsyncFunction in sync:true method at build time instead of waiting until exec-time.
- Machine: Cursory setup of exits arg detection
- Machine: Don't freak out about new customization option
- Machine: Validate implementationSniffingTactic
- Machine: Eliminate old comments, and one trivial optimization
- Machine: Tweak comments and add clarification
- Machine: Handle implementationType: 'classical' for 'exits'-less functions.
- ✅ Machine: Skip 'await' tests for Node versions that dont support it.
- Machine: Avoid returning from .catch() (this is not tied to any known issue, just cleanup)
- Machine: Fix to properly simulate chaining: promise = promise.catch()
- ⚠ Machine: Swap around 71eb66400f73a52baf0a78a38c1b8d44061737ac so that .then() gets handled first. Otherwise, you get either an unhandled promise rejection OR a called-it-twice warning.
- whelk (shell scripts): Add note about customizations
- 👍 whelk (shell scripts): Add support for new
- whelk (shell scripts): Ensure at least [email protected]
- Defined a req.path for socket requests.
- Ensured req.path is good and stringy.
- ➕ Add documentation for new model methods in Sails 1.1.0.
- ⚡️ Sails 1.1.0 updates for .transaction() and .leaseConnection() -- also some follow up from b126f7b66a1c46be0208c2a81235e0584cc50225 for .stream()
- ⚡️ Update examples for .stream() in advance of sails 1.1.0
- ⚡️ Update Blueprint API docs for clarity
- ⚡️ Update Platzi course links
- ⚡️ Update adapterList.md (Ronny Medina)
- ⚡️ Update policies.md (Alex Schwarz)
- ⚡️ Update waterline.md
- ⚡️ Update dependencies.md
- Normalize capittalization
- ⚡️ Update upgrading.md
- ⚡️ Update routes.md
- ➕ Add link and clarify a bit further
- ⚡️ Update res.status.md
- ⚡️ Updated link (Simon)
- 🛠 Fix event documentation for
- ➕ Add note to upgrading guide re: i18n (see https://gitter.im/balderdashy/sails?at=5ac46d9cc574b1aa3e6533f6)
- 🛠 Fix commented-out code block
- 🛠 Fix getLocale link
- ⚡️ Update locales.md
- ⚡️ Update req.setLocale.md
- 🛠 Fix broken links in old 0.12 upgrading guide
- 🛠 Fix RESTful route examples for
- ⚡️ Update content for req.acceptsLanguages()
- ⚡️ Update content for req.acceptsCharsets(), and rename both files
- Clean up req.accepts() reference page.
- ⚡️ Update upgrading guide
- ⚡️ Update logging.md
- 🛠 Fixed typo in routing actions description (Scott Reed)
- 🛠 Fix action name in docs (Ian Harris)
- ⚡️ Update views.md
- 🛠 Fixed broken links to req.wantsJSON & req.allParams() (Vladyslav Piskunov)
- ⚡️ Update Lifecyclecallbacks.md
- ⚡️ Update cors.md link from cors.js to security.js (Michael Frederick)
- ⚡️ Update cors.md - Adjusting links and updating examples (Michael Frederick)
- ✂ Remove link to guide that doesn't exist anymore (fixes #1000)
- ⚡️ Update faq.md
- 🛠 Fix some links, and create a page in tutorials linking to the course/demo app
- Create req.hostname (Mark Strelecky)
- ⚡️ Update req.host.md and change to deprecated (Mark Strelecky)
- ⚡️ Update req.isSocket.md (Mark Strelecky)
- ⚡️ Update req.wantsJSON.md (Mark Strelecky)
- ⚡️ Update req.hostname
- 🛠 Fix docmeta tag
- ⚡️ Update req.isSocket.md
- ⚡️ Update req.wantsJSON.md
- ⚡️ Update res.send.md (Mark Strelecky)
- ➕ Add res headers to examples
- ➕ Add fragments to cors links. Update another link to use /documentation (Freddy)
- ⚡️ Update low-level-mysql-access.md
- ⚡️ Update mongo.md
- ⚡️ Update cors.md since there's no config/cors.js in 1.0 and the settings are in config/security.js (pavan)
- 🛠 Fix broken link (Scott Reed)
- ➕ Add the ) and } forgotten, to close the queries in the right way. (Mario Colque)
- ➕ Add hooks + a few tweaks
- ⚡️ Update hooks.md
- ⚡️ Update services.md
- ⚡️ Update sendNativeQuery.md
- ⚡️ Update findOrCreate.md
- Clarify sentence, and add link
- ➕ Add file extension
- ⚡️ Update req.host.md
- ⚡️ Update ExampleHelper.md (Okoli Lemuel)
- ⚡️ Update standalone-usage.md to 1.0 (ultimate-tester)
- 🌲 Correct syntax typo for log messages (Alex Schwarz)
- ⚡️ Update Validations.md (Okoli Lemuel)
- Take first pass at e-commerce page
- ✂ Remove irrelevant example
- ➕ Add note re: customToJSON does not support async functions (Scott)
- ➕ Add sails-hook-organics to the Hooks page (Pika)
- 🛠 Fix missing comma (Scott Reed)
- Waterline initialize function must be async (Scott Reed)
- ⚡️ Update sails.sockets.md (AYEDOUN Fiacre)
- 🛠 Fix custom model methods example (Tim Wisniewski)
- ➕ Add quotes to key in headers example re: dictionary keys (Tom Saleeba)
- 🛠 Fix typo in ActionsAndControllers.md (s-slavchev)
- 🛠 Fix typo in URL link (Daniel Harvey)
- ⚡️ Update GeneratingActions.md to fix typo manging => managing (Julien Le Coupanec)
- ⚡️ Update extending-sails.md to remove remove broken link (Julien Le Coupanec)
- ⚡️ Update Testing.md to add dd Semaphore (Julien Le Coupanec)
- ⚡️ Update To1.0.md (floriancummings)
- ➕ Add information about optional param. (Bernardo Gomes)
- ⚡️ Update sort.md to fix code example typo (Eli Peters)
- ⚡️ Update standalone-usage.md
- ➕ Add back and correct link
- ⚡️ Update Models.md
- ⚡️ Update To1.0.md
- ⚡️ Update globals.md to fix broken link for Services and Models (Minh Tri Nguyen)
- ⚡️ Update res.redirect.md (Julien Le Coupanec)
- ⚡️ Update res.status.md (Julien Le Coupanec)
- ➕ Add link to info about negotiating errrors
- ⚡️ Update errors.md
- Simplify examples.
- 🛠 Fix typo in .update() usage example.
- ⚡️ Update sails.config.bootstrap.md
- ⚡️ Update decrypt.md
- ⚡️ Update attributes.md
- 👌 Improve security
- ➕ Add note for future about new exit from .saveBillingInfo()
- ⚡️ Update package.json (Pika)
- 💅 Use
- Replace all special characters and skip encoding entirely. (Scott Gress)
- 🚑 Swap open with opn to remove critical error on audit (Peter Barrett)
- 🚚 Pin opn version number and move back to json5 (Peter Barrett)
- ✂ Remove unused dep
- 👀 Check
exitsagainst raw instead of built machine as it seems as though the built machine doesn’t expose the exits (Yuki von Kanel)
- ⚡️ Update debug to fix ReDoS vulnerability (Alec Fenichel)
- ✂ Remove auto setting JSON to LONGTEXT (Betanu701)
- ⚡️ sails-disk: Update eslint
- 👕 sails-disk: Don't test node 0.10 and 0.12 because eslint doesn't even run on them anymore
- 📌 MySQL: Pin debug version (Alec Fenichel)
- MySQL: [email protected] adjustment
- MySQL: Follow up to d41eb10e1804ccc884cf6e290fd5a340f8f12c0b
- ✅ MySQL: Test on Node 10
- 👕 MySQL: eslint for tests
- MySQL: Use the right port
- ⚠ MySQL: Get rid of ajv keywords dev install warning and clean up machine SVR
- ⚡️ MySQL: Update skipped test
- 👕 MySQL: Rename test files for easier quick-switching and add back linting for tests
- ⚡️ MySQL: Move the files (still need to update require paths-- see next commit)
- MySQL: Fix require paths (follow up to d9db8cda4fcd9ffb37b738402d855991991c892b)
- ⚡️ MySQL: Update travis.yml and remove Dockerfile
- MySQL: Normalize the license stuff
- MySQL: Fix those badge things
- PostgreSQL: Correctly raises error when you have bad model attributes (Tony Buser)
- PostgreSQL: Allow for other auto increment scenarios other than numeric (Andrew Greenstreet)
- 👕 PostgreSQL: Single quotes (eslint) and a couple of other minor adjustments to comments and varnames
- 👕 PostgreSQL: Improve linter
- PostgreSQL: Change it's => its
- ✅ PostgreSQL: Fix failing test (https://travis-ci.org/balderdashy/sails-postgresql/jobs/368925613). This is because https://github.com/balderdashy/sails-postgresql/pull/278 actually breaks normal usage (because logical types are not made accessible to the adapter in the per-table DDL spec passed into the define() adapter method- instead, another approach must be used)
- 🚀 PostgreSQL: Update node versions tested to include all LTS releases
- PostgreSQL: Improve error message
- ✅ PostgreSQL: Adjust tests to stop using 'integer' columnType for auto-incrementing pk
- PostgreSQL: Close https://github.com/balderdashy/sails-postgresql/pull/279
- PostgreSQL: Include additional number type property to model. This will cause the registerDatastore method to throw an error due to autoMigrations being undefined for anotherGood property on the model. (Andrew Salib)
- PostgreSQL: Check that property autoMigrations exists before checking its child property columnType resolving undefined errors (Andrew Salib)
- ⬆️ MongoDB: Upgrade 'machine' dependency to 15.0.0 (Yuki von Kanel)
- MongoDB: Use
.switch(...)where needed (Yuki von Kanel)
- 👀 MongoDB: Allow tests to run on PRs (hopefully) - see https://docs.travis-ci.com/user/environment-variables/
- MongoDB: Bump devdep SVRs
- sails-hook-dev: Recommend simple solution to setting up staging environment in readme.md
- https://github.com/balderdashy/sails-generate/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/sails/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/waterline/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/sails-hook-orm/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/waterline-utils/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/waterline-schema/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/anchor/compare/[email protected]%7B2018-03-29%7D...master - https://github.com/balderdashy/sails-hook-sockets/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/sails.io.js/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/socket.io-redis/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/skipper/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/rachaelshaw/sails-hook-uploads/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/sails-hook-grunt/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/lodash/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/connect-redis/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/flaverr/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/parley/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/node-machine/machine/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/node-machine/rttc/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/whelk/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/whelk/compare/[email protected]%7B2018-03-29%7D...master
- 🌲 https://github.com/balderdashy/captains-log/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/reportback/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/include-all/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/machinepack-redis/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/sort-route-addresses/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/sails-stringfile/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/parasails/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/sails-hook-organics/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/machinepack-http/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/machinepack-strings/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/machinepack-fs/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/machinepack-process/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/sails-disk/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/sails-mysql/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/machinepack-mysql/compare/[email protected]%7B2018-03-29%7D...master
- 🏗 https://github.com/sailshq/waterline-sql-builder/compare/[email protected]%7B2018-03-29%7D...master - https://github.com/balderdashy/sails-postgresql/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/sailshq/machinepack-postgresql/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/sails-mongo/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/sails-redis/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/balderdashy/skipper-disk/compare/[email protected]%7B2018-03-29%7D...master - https://github.com/balderdashy/skipper-s3/compare/[email protected]%7B2018-03-29%7D...master
- 📈 https://github.com/mikermcneil/sails-hook-apianalytics/compare/[email protected]%7B2018-03-29%7D...master - https://github.com/balderdashy/sails-hook-dev/compare/[email protected]%7B2018-03-29%7D...master
- 👕 https://github.com/mikermcneil/eslint/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/htmlhint/compare/[email protected]%7B2018-03-29%7D...master
- https://github.com/mikermcneil/lesshint/compare/[email protected]%7B2018-03-29%7D...master
v1.1.0-3August 24, 2018
⬆️ Sails v1.0 comes with a host of new features and improvements as well as some breaking changes to previous versions. Please see the migration guide if you're upgrading from a previous version of Sails!
- 📚 [ENHANCEMENT] Introduce Actions 2 -- ability to declare actions as Machines in individual files. See the Actions and controllers and Action target syntax docs for more info.
- 📚 [ENHANCEMENT] Introduce Helpers -- the successor to services. See the Helpers docs for more info.
- 🛠 [BUGFIX] Improve path resolution in moduleloader for Windows f13bb77
- 🛠 [BUGFIX] Fix output for virtual requests that have non 2xx/3xx status codes and no body 525c7c5
- 🚚 [REMOVAL] Remove support for (undocumented) "action/model" route syntax for binding routes to blueprint actions
- 🛠 [BUGFIX] Fix issue causing Sails to sometimes crash when using Redis sessions if it receives a request after the Redis server has unexpectedly disconnected 3f29dce
- [ENHANCEMENT] Add
sails.getActions()method to return a dictionary of registered Sails actions 5598179
- [ENHANCEMENT] Add
sails.registerAction()method to programmatically register a Sails action dd9af88
- 💻 [ENHANCEMENT] Add
exposeLocalsToBrowserlocal in all views
- [ENHANCEMENT] Add
sails.registerActionMiddleware()to programmatically register middleware to be applied to one or more actions 2c281d5
- [ENHANCEMENT] Allow explicitly defined actions in Sails config via
- 🛠 [BUGFIX] Default
req.options.populateto the value of `sails.config.blueprints.populate d8f4df8
- [ENHANCEMENT] Add
sails.reloadActions()method to reload actions from disk / config while an app is running df2ee46
- [ENHANCEMENT] Allow loaded modules (actions, controllers, policies, models, etc.) to have any file extension besides
app.jsfile. See the Using CoffeeScript tutorial for an example.
- ⬆️ [REMOVAL] Remove support for custom blueprints. These can easily be replaced by regular actions. See the migration guide for more info. 0fd4362
- 🚚 [REMOVAL] Remove support for blueprint route target syntax 0fd4362
- 🚚 [REMOVAL] Remove deprecated
- [ENHANCEMENT] Humanize config vars that are loaded from the environment 7eb6af6
- 🚚 [REMOVAL] Remove most Resourceful PubSub methods, leaving just
- [ENHANCEMENT] Expose Sails generator for programmatic use e008a6b
- ⬆️ [UPGRADE] Upgrade to Express 4.14.0. Thanks to josebaseba for his help in the transition to Express 4!
- 📚 [ENHANCEMENT] Improved CORS support. See the migration guide and CORS docs for more info.
- 🚚 [REMOVAL] Removed
req.validate()functionality. Use Actions 2 instead, which automatically validate parameters. 68fa8ff
- 📚 [ENHANCEMENT] Updated syntax for policies. See the migration guide and the policies documentation for more details. 66d2b2d
- 👀 [ENHANCEMENT] Automatically sort routes to avoid wildcards swallowing static routes. See the sort-route-addresses module for more info on route sorting.
- 🔒 [ENHANCEMENT] Combine CORS and CSRF hooks into new "Security" hook. See the migration guide for more details.
- 📚 [ENHANCEMENT] Update CSRF configuration and replace
/csrfTokenroute with an action that can be bound to any route. See the migration guide and CSRF docs for more info. 7328c05
- 0️⃣ [REMOVAL]
res.created()will no longer be included by default. 7988866
- 🛠 [BUGFIX] Ignore default installed hooks when searching
node_modulesfor hooks. #3855.
- 🔒 [SECURITY] Don't serve CSRF token via websockets 50b0684
- 📦 [INTERNAL] Bring EJS layout code into Sails rather than relying on the unmaintained
- ⬆️ [REMOVAL] Remove handlebars dependency and support for layouts in view engines other than EJS. See the migration guide for more details. ae7e656, 9f1f2fb
- ⬆️ [ENHANCEMENT] Don't set NODE_ENV based on Sails environment, except in special circumstances. See the migration guide for more details. cf20d07, abbf1f7
- [ENHANCEMENT] Make session hook
routesDisableduse Sails route address syntax (including regular expression syntax) aba8f2f
- [BUGFIX] Supply
res.locals._csrfto all routes when CSRF protection is enabled. Fixes #3865
- ⬆️ [REMOVAL] Remove Consolidate dependency -- view template engines are now configurable via the
sails.config.views.getRenderFnsetting. See the migration guide for more details. 6316452
- 🚚 [REMOVAL] Remove deprecated RPS "firehose" 86b88
- 🚚 [REMOVAL] Remove deprecated 0.9.x socket support 6464d8f
- 🛠 [BUGFIX] Update and standardize precedence of route param, query and body in
- 🚚 [REMOVAL] Remove JSONP support from blueprints. CORS is fairly ubiquitous now. effd6c3
- 🚚 [REMOVAL] Remove deprecated
- 🚚 [INTERNAL] Remove
- 🚚 [INTERNAL] Remove grunt, sockets and ORM hooks 48750d7, 07c59ce
- 🚚 [REMOVAL] Remove deprecated
- 🛠 [BUGFIX] Correctly load custom adapters (stored in either
FooAdapter.jsfiles or in subfolders) #3884
- [INTERNAL] Add benchmarks 6b4ba32
- 🍱 [ENHANCEMENT] Requests for assets will skip running session middleware by default 3c5ddf7
- 👍 [ENHANCEMENT] Support
routesDisabledfor sessions in virtual requests a00cf78
- 🔒 [INTERNAL] Standardize log level for warnings to always use "debug" except for warning related to security.
- 🚚 [ENHANCEMENT] Add 404, 500 and
startRequestTimerto middleware order automatically (and remove them from default sails.config.http.middleware.order) a22e4e7, f788e39
- 🚚 [REMOVAL] Remove the
handleBodyParserErrormiddleware from the stack, use the
onBodyParserErroroption in Skipper instead. f788e39
- 🛠 [BUGFIX] Take locale into account in views.render() #3833
- [ENHANCEMENT] Allow session adapter to be required directly 039d245
- 🚚 [REMOVAL] Remove support for Express 3 session adapters 628a55b
- ⬆️ [INTERNAL] Switch from i18n to i18n-2. See the migration guide for more details. 4a90de2
- 🛠 [BUGFIX] Fail to lift Sails if
connect-rediscan't initialize. #3590
- 🚚 [REMOVAL] Remove
method-overridefrom default middleware list. 575c4a3
- 👯 [BUGFIX] Use _.clone() instead of _.cloneDeep() for config overrides, to preserve things like Redis clients passed into config. 1b970b6
- ⚡️ [ENHANCEMENT] Update
sails.config.globalsfunctionality. See the migration guide for more details. 44c6d9b
- [ENHANCEMENT] Add
- [ENHANCEMENT] Add
- 🗄 [DEPRECATION] Deprecate
- ⚡️ [INTERNAL] Update default responses 510504e
- ⚡️ [REMOVAL] Remove update-via-POST blueprint route 5c3814d
- [INTERNAL] Disconnect Redis session client when Sails is lowering 80fb71b
- ⬆️ [UPGRADE] Upgrade EJS dependency to v2.5.3 6bfad70
- 🚚 [REMOVAL] Removed deprecated
- 👀 [REMOVAL] Removed 16 unused dependencies (see full list here)
👀 > Also see the Waterline changelog.
- 🛠 [BUGFIX] fix typo in error message (see https://github.com/balderdashy/sails/pull/3902) Thanks Johnny and @appdevdesigns!
- 🛠 [BUGFIX] backport fix for
_.isFunction()from Lodash 4 (see https://github.com/lodash/lodash/issues/2768 and https://github.com/balderdashy/sails/issues/3863) Thanks @adnan-kamili and @jdalton!
- ⚡️ [INTERNAL] rebase changelog updates from master 223567c
- 🛠 [BUGFIX] Fix issue where incorrect file size was computed for incoming (multi-)file uploads on skipper-disk and skipper-s3 #3847 (thanks @crobinson42, @NAlexandrov and @vbogdanov!) See also https://github.com/balderdashy/skipper/issues/109.
- 🛠 [BUGFIX] Internationalization fix (#3833 fixes #3889 (thanks @josebaseba!)
- 🚤 [INTERNAL] Added automated request latency benchmarks -- primarily in advance of 1.0 for the purpose of comparison (thanks @sgress454!)
- 🛠 [BUGFIX] Fixed issue with defined-in-app adapters being improperly loaded #3884 (thanks @richdunajewski!)