RSS Amplifier

Ash Chronicle · Jun 21, 2025

Ash Chronicle: Issue #20

0
Sign in to vote or save

Zach Daniel · Ash Chronicle

Welcome to Ash Chronicle — your quick, informal digest of what’s new and notable in the world of Ash Framework. Got something cool? Drop it in the #showcase channel on Discord!

ElixirConf EU released my launch of Ash AI, and Code and Stuff released an introduction video to it. Christian makes really amazing videos and I’m super hyped about the idea of him making more Ash content. Go follow him 😎

Kamaro Lambert has a great series on Ash with a bunch of useful tips, and his most recent one is about reusing business logic with calculations.

A reddit post about the good the bad and the ugly of learning Ash was posted, and the original poster actually provided something you almost never see: two applications both with and without Ash. Worth checking out!

A low severity CVE was issued for AshAuthentication due to the fact that we weren’t invalidating tokens server-side on sign-out. Please read the CVE and upgrade accordingly.

I’ve so far had a mixed experience with phoenix.new when comparing it to my local agentic development setup. Some things are beyond impressive, and many of these are actually delightful little touches that are hard to notice because they feel so natural. The magically provisioned infrastructure aside:

  • The agent has the ability to pop open a virtual browser window in line to preview changes.

  • When it runs its terminal commands, it sends them to a terminal that you can still type in. Anyone who has seen an agent hang running a command that was waiting for user input knows the frustration of having to stop it and tell it to rerun with `--yes`.

  • It’s fun to follow the agent around and watch it work. Also really annoying that you can’t unfollow the agent to go make some small tweak while its working.

  • The `browser` tool given to the agent is a stroke of genius, completely obviating AFAICT the need to have something like puppet tools to open browsers etc.

With that said, there are some things that I’d really like to see improved:

  • The pricing is the opposite of transparent as I’ve got zero idea what $20 gets me, when it is going to run out etc. Nothing feels worse than that “I’m just one prompt away from this PoC I’m making” to then get told you have to put more quarters in the machine.

  • Now that I’ve got all these new agent prompting and context setting skills, the inability to really use them is very frustrating. There isn’t a way to add a context file that persists (i.e `AGENTS.md`), and because the tokens/context stuff is all completely hidden from you, there is no way to know what information you give the agent is actually remaining in its context window. This makes it hard to “drive”. Remember, agents aren’t intelligent (yet), they are code fire hoses that have a low skill barrier but a high skill ceiling.

  • I think the system prompt kinda screws me up and I’d rather be able to just disable it entirely. I’m sure it’s amazing for people with…different standards than me. I’ve got my own patterns and workflows, and I’m particular about how my tech is built, and I want to be able to take my patterns and run them in this cool new sandboxed magic agentic development environment.

Prior to the most recent set of releases, if the data layer wasn’t capable of raising errors, we didn’t let them do `update_query` or `destroy_query` operations. This was a pretty big limitation on `AshSqlite` which has now been restricted. With all that said, you still can’t do atomic validations meaning that there will be many cases where we switch to doing piecemeal updates.

  • A new `mix ash` command, showing the Ash version and list of available `ash.` prefixed commands

  • Allow using `update_query` and `destroy_query` callbacks even when `expr_error` is not supported.

  • Add support *back* for regexes in match constraints/validations. Fun fact: OTP 28.1 is going to support regexes at compile time again 🤣. So we’ll be in some temporary limbo but the status quo WRT regexes will return to normal.

  • show action when inspecting an `Ash.Query`

  • Add `assert_stripepd test helper by Samuel Wrenn

  • Better error message on unexpected argument inputs to code interfaces by Abhishek Tripathi

  • Install usage rules by default, linking to dependency folders automatically.

  • JSON processor for providers that do not support json_schema or tool calling by Abhishek Tripathi

  • improvement: Usage rules mcp integration (#60) by Barnabas Jovanovics

  • more context in error messages (#56) by Abhishek Tripathi

  • When using Adapter.CompletionTool (for anthropic) add the cache_control (#51) by Rodolfo Torres

  • more realistic handling of example generation (#50) by Abhishek Tripathi

  • Support for private repositories

  • Use hex to support looking up org package versions

  • Add missing `—only` flag documentation for install task

  • Add `Igniter.Test.refute_creates`

  • Don’t disable protocol consolidation when creating projects

  • Add `Igniter.rm` and track removed files across operations

  • add `:regex_as_mfa` type, for better OTP28+ compatibility (which actually it turns it won’t be necessary and everything can just use `{:struct, Regex}` in `OTP 28.1`.

  • Add sortable_fields option, similar to filterable_fields by Jechol Lee

  • Add a verifier for argument types option to ensure that all fields are actions, and all subfields are fields.

  • Revoke tokens on logout. See the CVE above.

  • Revoke tokens on logout. See the CVE above.

  • Add `on_mount_prepend`, for prepending on mount hooks to the various route builders in Phoenix by Aidan Gauland

  • Add a `create_schemas_in_migrations?` callback to tell the migration generator not to generate “CREATE SCHEMA IF NOT EXISTS” migrations

  • Optimize/simplify boolean functions like `&&` and `||`. They are expensive operations and when we know that the left and right are exclusively booleans/references we can be smarter and use `and` and `or`.

  • Support `update_query` and `destroy_query`

  • Add `archive_related_authorize?` and default it to `true`. See the changelog in the project for more information and an upgrade guide.

No posts

Read the original on ashchronicle.substack.com

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.