Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

IntellIJ Elixir

Elixir plugin for JetBrain's IntelliJ Platform (including Rubymine)
Collective - Host: opensource - https://opencollective.com/intellij-elixir - Code: https://github.com/KronicDeth/intellij-elixir

Remove tab at start of location for title of issues

github.com/KronicDeth/intellij-elixir - aad25891b1c0deadd25198543a6906ed3ba3e7c2 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't include "java.lang.Throwable: " in title of issues

The `Throwable` is necessary to get a stacktrace, but not a real error.

github.com/KronicDeth/intellij-elixir - de627ff8fef26f520acd061e4cda3d7781cb58b7 authored about 3 years ago by Elle Imhoff <[email protected]>
Merge pull request #2226 from KronicDeth/2122

Variants (completion) of defdelegate defined functions

github.com/KronicDeth/intellij-elixir - 0bd6f0c84469e3ccca1d19fee1499d109da1c3ca authored about 3 years ago by Elle Imhoff <[email protected]>
Variants (completion) for _text and _template functions from Mix.Generator.embed_text and embed_template

github.com/KronicDeth/intellij-elixir - 952fb7fe6573969c3c0e73585213e6ea41ab251c authored about 3 years ago by Elle Imhoff <[email protected]>
Add #2226 to changelogs

github.com/KronicDeth/intellij-elixir - 965aef66db215c6a16c3ecf771c3581678694b6c authored about 3 years ago by Elle Imhoff <[email protected]>
Variants (completion) for exception/1 and message/1 defined by defexception

github.com/KronicDeth/intellij-elixir - aeca5ebebeecbbbc8498d480c4321a2798fb816a authored about 3 years ago by Elle Imhoff <[email protected]>
Variants (completion) and Structure View for EEx.function_from_(file|string)

github.com/KronicDeth/intellij-elixir - 2167355240a87a43893e96f9e97c70e8d8fe40fe authored about 3 years ago by Elle Imhoff <[email protected]>
Fix LookupElementPresentation.putItemPresentation addTailText

Only append suffix of presentableText if it is prefixed by itemText.

github.com/KronicDeth/intellij-elixir - 1de791bf1df8a228477517a5d46d8767b0a9ba51 authored about 3 years ago by Elle Imhoff <[email protected]>
Implement call_definition_clause.Variant#executeOnDelegation

Fixes #2122

github.com/KronicDeth/intellij-elixir - acdf0cf57681805d189ecd501eb927f16eda28d8 authored about 3 years ago by Elle Imhoff <[email protected]>
Merge pull request #2223 from KronicDeth/client-elixir-references

Fix Elixir References inspection errors in client project

github.com/KronicDeth/intellij-elixir - 1e17bb5f481118f85cd326da59ee34a4c6bd0b8c authored about 3 years ago by Elle Imhoff <[email protected]>
Add #2223 to changelogs

github.com/KronicDeth/intellij-elixir - 206f83f861c6287ba1344c7892bf4ecc726b1094 authored about 3 years ago by Elle Imhoff <[email protected]>
Walk keyword keys as right operand of `in` in `from`

github.com/KronicDeth/intellij-elixir - e09020e5e26d70b4a28ae9d459b6a63e5af90513 authored about 3 years ago by Elle Imhoff <[email protected]>
Walk struct operations for type parameters

github.com/KronicDeth/intellij-elixir - d7d41d24b8ef679c86ac4cc2b030157ae4a3417d authored about 3 years ago by Elle Imhoff <[email protected]>
Only unquote `in` when an Erlang function, otherwise, use operators the same as Elixir for defs and calls.

* Fix apply Erlang arguments, so that they are inside `[]`.
* Don't require `MacroNameArity` for...

github.com/KronicDeth/intellij-elixir - b777fde87a911ca93abdd6bcc20c0e2550eb608b authored about 3 years ago by Elle Imhoff <[email protected]>
Rename .java to .kt

github.com/KronicDeth/intellij-elixir - 525ef42b4a4d13b3ef949ef6a4c27d5721af7ae6 authored about 3 years ago by Elle Imhoff <[email protected]>
Use apply with escaped atom when Erlang function call is an Elixir operator

Fixes #2221

github.com/KronicDeth/intellij-elixir - 5c23d3531bbff65b75833c65cb26f7a8cc30b2d3 authored about 3 years ago by Elle Imhoff <[email protected]>
Check keyword values for type parameters

github.com/KronicDeth/intellij-elixir - d53ce415cf97874f6ab34e07086caacaf169395f authored about 3 years ago by Elle Imhoff <[email protected]>
Check operands of two operations for type parameters

github.com/KronicDeth/intellij-elixir - e3e5a32032ebb80cf7287cdb7111832a0a5defd7 authored about 3 years ago by Elle Imhoff <[email protected]>
Stop looking for type parameters on qualified or unqualified alias

github.com/KronicDeth/intellij-elixir - da51db1a41ae3b68428520692b1e7651d4b7a631 authored about 3 years ago by Elle Imhoff <[email protected]>
Tests for Code.Identifier and String.Tokenizer

github.com/KronicDeth/intellij-elixir - 3890d3dc70f0cfb704322b130a51e3f5a3765234 authored about 3 years ago by Elle Imhoff <[email protected]>
Port String.Tokenizer.tokenize for use in Identifier.inspectAsKey

I was putting off porting all of `Identifer.inspectAsKey` by adding special cases as needed, but...

github.com/KronicDeth/intellij-elixir - f240e4833ded66d67db9686ad0a1f52c94133077 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve calls that are unquoted values to search for quote blocks in those functions.

Fixes #2217

github.com/KronicDeth/intellij-elixir - ff52922e610e21cbe009d7b7369b252c52e0f4f0 authored about 3 years ago by Elle Imhoff <[email protected]>
Quote keyword keys containing `-`

Fixes #2215
Fixes #2216

Fixes decompiling of `Elixir.Phoenix.HTML.Tag.beam`

github.com/KronicDeth/intellij-elixir - 1dba1b95eca0b0aea51745b0f6055a2dc0588066 authored about 3 years ago by Elle Imhoff <[email protected]>
Stop looking for qualifiers to prepend when reaching `=>`

github.com/KronicDeth/intellij-elixir - 59665fe17e261242e5383ae1c99ccb023bd991f1 authored about 3 years ago by Elle Imhoff <[email protected]>
The parent argument to AccumulatorContinue.childExpressionsFoldWhile should be this and not parent

When converting to an extension function I left `parent` in place because the argument is called...

github.com/KronicDeth/intellij-elixir - 58000fe1f47e452cb7729ca09986f48abba81553 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't use tailrec in function with body recursion

It causes issues with ElixirAccessExpression recursion sometimes.

github.com/KronicDeth/intellij-elixir - 8787c61b02a02ad01d526b88d20ab8d3d0d9fd78 authored about 3 years ago by Elle Imhoff <[email protected]>
Regression test for StackOverflowError in ElixirVisitor#visitLiteralSigilLine

github.com/KronicDeth/intellij-elixir - 86ddad8c658649b52b1fd60710948ea2ca8b80d1 authored about 3 years ago by Elle Imhoff <[email protected]>
Add #2214 to changelogs

github.com/KronicDeth/intellij-elixir - 00d294df92533966c40697713447f05d969e212f authored about 3 years ago by Elle Imhoff <[email protected]>
Fix infinite recursion in ElixirVisitor#visitLiteralSigilLine

github.com/KronicDeth/intellij-elixir - 77b8bea03faf0fb33d4654ca30521727f610610f authored about 3 years ago by Elle Imhoff <[email protected]>
take resolveInScope only if at least one valid

Checking only for an empty collection allowed any prefixes in the scope to override exact matche...

github.com/KronicDeth/intellij-elixir - 380184adf7713036c11e07aa3d32c883d5808d88 authored about 3 years ago by Elle Imhoff <[email protected]>
Check if project is not dumb in nameArityInAnyModule

Fixes #2006

github.com/KronicDeth/intellij-elixir - 4bb040d417c6540cfbcd692c5c010f913b9f8079 authored about 3 years ago by Elle Imhoff <[email protected]>
Check if Call isValid before using containingFile for locationString

Fixes #2011

github.com/KronicDeth/intellij-elixir - 1930557ff3a42ca9922113e19c859ef22c557863 authored about 3 years ago by Elle Imhoff <[email protected]>
Mark guards as runtime

Fixes #2009

* Mark anything unknown as runtime too
* Log unknown calls.

github.com/KronicDeth/intellij-elixir - 2ef36322d71cd885b22ab362e7bce269fb097c07 authored about 3 years ago by Elle Imhoff <[email protected]>
Merge pull request #2201 from KronicDeth/2073

Use callbacks as completions for calls

github.com/KronicDeth/intellij-elixir - 1114905a7f3ed56e29b894290d9951a6dbf11ed2 authored about 3 years ago by Elle Imhoff <[email protected]>
Add #2201 to changelogs

github.com/KronicDeth/intellij-elixir - 1a0e31e45614d0c1b985c5088a285709d09d8eb8 authored about 3 years ago by Elle Imhoff <[email protected]>
Completion for callbacks

Fixes #2073

Implement `call_definition_clause.Variants#executeOnCallback`

github.com/KronicDeth/intellij-elixir - 64812c096a46f134a456b7393ee6ab5678f40a8c authored about 3 years ago by Elle Imhoff <[email protected]>
Regression test for #2073

github.com/KronicDeth/intellij-elixir - 5fc24a834d0ff4e1c5767d3dd751e1c4b723542d authored about 3 years ago by Elle Imhoff <[email protected]>
Rename .java to .kt

github.com/KronicDeth/intellij-elixir - ef37a3121c076722d943e74df7a19d0f83463ac4 authored about 3 years ago by Elle Imhoff <[email protected]>
Stop highlighting types when `unquote_splicing/1` is reached

Fixes #2198

`unquote_splicing` is being used to splat arguments or fields of a struct into the ...

github.com/KronicDeth/intellij-elixir - b7bacb15d00ce0a1c03e1c72e9a9e82e5d4a9ab4 authored about 3 years ago by Elle Imhoff <[email protected]>
Regression test for #2198

github.com/KronicDeth/intellij-elixir - d4222d69c922b611a99035514303951ba25bb4ca authored about 3 years ago by Elle Imhoff <[email protected]>
Add #2199 to changelogs

github.com/KronicDeth/intellij-elixir - 20ddd15cc0ed26f6ac0eadf6c4e9d479bae3ff5e authored about 3 years ago by Elle Imhoff <[email protected]>
Merge pull request #2179 from KronicDeth/2010

Resolve as many references as possible in elixir-ecto/ecto

github.com/KronicDeth/intellij-elixir - 5d14ee8cc6bb8c5ca0a6468803d0d84695907960 authored about 3 years ago by Elle Imhoff <[email protected]>
Drop support for Elixir <= 1.6

Continuing support for Elixir <= 1.6 required special handling of the language level to support ...

github.com/KronicDeth/intellij-elixir - 679a9689cfe097018b9baa4e894d4550a84d7aac authored about 3 years ago by Elle Imhoff <[email protected]>
Port preferred and expand system from Callables to Modules

github.com/KronicDeth/intellij-elixir - 6e2f11f496785d250192a3eda60406af488c1ad2 authored about 3 years ago by Elle Imhoff <[email protected]>
./gradlew wrapper --gradle-version=7.3

github.com/KronicDeth/intellij-elixir - 9bf2c491bb276df3b4ac0bdb3a7ca956b73fc4a7 authored about 3 years ago by Elle Imhoff <[email protected]>
Update to IDEA version 2021.2.3

github.com/KronicDeth/intellij-elixir - 68472cb84207055b5db61a138a6ea47366b9f071 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't clean up MockLocalFileSystem

github.com/KronicDeth/intellij-elixir - 7f80c5157d2eeb86a09a89f8a156a2d0c98f2e7a authored about 3 years ago by Elle Imhoff <[email protected]>
Update testData for latest decompiler

github.com/KronicDeth/intellij-elixir - 80b90fe7767acaa81fd0f8bc2f0f9ef8fe3e84e8 authored about 3 years ago by Elle Imhoff <[email protected]>
Update gradle plugins

github.com/KronicDeth/intellij-elixir - 989a89d2717d8d60f6991d252dd1e6794caf0d2a authored about 3 years ago by Elle Imhoff <[email protected]>
Use function.macroNameArityMacro.macro when decompiling Erlang Abst clauses

Don't use `def` anymore when unexported and therefore private; use `defp` instead.

github.com/KronicDeth/intellij-elixir - 2658a5a0c82ef7ddddd96da0a78ad3e3e02280b3 authored about 3 years ago by Elle Imhoff <[email protected]>
If body cannot be decompiled, decompile as one-liner with `...` body

github.com/KronicDeth/intellij-elixir - 1425af28e28907b5912e76bbf9746116466b29d6 authored about 3 years ago by Elle Imhoff <[email protected]>
Convert BeamTest to Kotlin

github.com/KronicDeth/intellij-elixir - dcb24c676b29bc980465c33fec0f941b0fbacf51 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't decompile private macros and functions if > 500 definitions

fixup! Don't decompile private macros and functions if > 500 definitions

github.com/KronicDeth/intellij-elixir - ee3a6f39b3433f875a79c020245f813fc7189c5f authored about 3 years ago by Elle Imhoff <[email protected]>
Decompile Erlang one clauses as Elixir one-liners

github.com/KronicDeth/intellij-elixir - a2bdb02c6cb56c1d32ca96fb60b5f2811b747e5c authored about 3 years ago by Elle Imhoff <[email protected]>
Remove space after ... in decompiled private types

github.com/KronicDeth/intellij-elixir - a73b110fdeb76c982332653ed52f198944ef3ac6 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't decompile Abst clause bodies that exceed 1024 bytes

github.com/KronicDeth/intellij-elixir - ca00eabf49731375575706f0efd63e28aaf09d47 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't decompile call definition bodies if there are more than 500 definitions in a module

github.com/KronicDeth/intellij-elixir - 97d77a06b2cf51cf6e5560f357aa577d45ccecd0 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't append lines for clauses or after in Erlang receive when decompiling if empty

github.com/KronicDeth/intellij-elixir - 07cfadf67ce361fac00aa88b22d3c336a12e8202 authored about 3 years ago by Elle Imhoff <[email protected]>
Use Infix, Prefix, and Unquote decompilers for Erlang Abst chunk in addition to Dbgi chunk

github.com/KronicDeth/intellij-elixir - 697610e647359d9c57a51c485f069d9b1b6547aa authored about 3 years ago by Elle Imhoff <[email protected]>
Unquote local calls with non-callable in Erlang Abst decompiler

github.com/KronicDeth/intellij-elixir - 39cda23b824d15f44e0af046385a4def1d031a8f authored about 3 years ago by Elle Imhoff <[email protected]>
Use Infix, Prefix, and Unquote decompilers for Erlang Abst chunk specs

github.com/KronicDeth/intellij-elixir - 9709057fcdb2e15cb52d4c80d15298350360f6b3 authored about 3 years ago by Elle Imhoff <[email protected]>
Rename .java to .kt

github.com/KronicDeth/intellij-elixir - 2388974881234d0aa77e4914b8297756cc092a6f authored about 3 years ago by Elle Imhoff <[email protected]>
Don't use prependIndent because it indents blank lines too

This doesn't match `mix format` or the IntelliJ Elixir formatting.

github.com/KronicDeth/intellij-elixir - 4433e37e7db83ec640204098b237067f527fe718 authored about 3 years ago by Elle Imhoff <[email protected]>
Add #2179 to changelogs

github.com/KronicDeth/intellij-elixir - 20bdb0fe487a9826cd8f3a1d0784fd9046f5f7a1 authored about 3 years ago by Elle Imhoff <[email protected]>
Ignore decimals when resolving type parameters

github.com/KronicDeth/intellij-elixir - a36fbafa5740aaaadefa861acc2f76a8eaee2dac authored about 3 years ago by Elle Imhoff <[email protected]>
Add #2074 to changelogs

github.com/KronicDeth/intellij-elixir - 87d2bf8f85fa3552faa739fa298fa94ea1c6a7a9 authored about 3 years ago by Elle Imhoff <[email protected]>
Ignore aliases in parameter slots in typespecs

github.com/KronicDeth/intellij-elixir - 2d921fbc8cbdd46348d2699f0d88ad6990bd1a8e authored about 3 years ago by Elle Imhoff <[email protected]>
Check left operand of \\ for type parameters as they could appear when copying def with defaults

github.com/KronicDeth/intellij-elixir - ab1449898773b6146f2d12b8280e68e737a5f6b8 authored about 3 years ago by Elle Imhoff <[email protected]>
getElementDescription(ElixirAtom, ElementDeescriptionLocation)

Override getElementDescription for atoms to prevent StackOverflow while looking for a provider.

github.com/KronicDeth/intellij-elixir - 71f5b4cc9638c83ac596b461000324a271b6888f authored about 3 years ago by Elle Imhoff <[email protected]>
Bump version to 11.14.0

github.com/KronicDeth/intellij-elixir - f4ac0c242561059e89c163c5a2546ee3be85168d authored about 3 years ago by Elle Imhoff <[email protected]>
Adjust nameArityInterval in nameArityInAnyModule

Ensures that `fragment/1..` used in a `quote` can resolve to one in Ecto.Query.API.

github.com/KronicDeth/intellij-elixir - f8d86a6eb78892259e150b6cd864f06d56e1681d authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve bindings in Ecto.Query.windows/3

github.com/KronicDeth/intellij-elixir - 9000ca47707903b689520696fb35eac6b2ba37c1 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve variable that are the only child of quote

Ecto loves doing `quote do: query` or other variable names in the code and tests, so record thos...

github.com/KronicDeth/intellij-elixir - bd7609fa01dd88b684c6f4a08ba2912b95fc59fc authored about 3 years ago by Elle Imhoff <[email protected]>
Find enclosing macro call when keyword do is surrounded by parentheses

Previously, only `quote do: variable` would work, but now `quote(do: variable)` also works to fi...

github.com/KronicDeth/intellij-elixir - 239ab364b29e04100bbe9cbd42f3ec226d05c7ef authored about 3 years ago by Elle Imhoff <[email protected]>
Don't mark Calls with QualifiedBracketOperation qualifier as unresolvable

github.com/KronicDeth/intellij-elixir - 5ec3252c2d252eb5d3a84a19e000447189bf6249 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve bindings in Ecto.Query.lock/3

github.com/KronicDeth/intellij-elixir - eb899328e6e60262b9f33482f95cd487b88f8074 authored about 3 years ago by Elle Imhoff <[email protected]>
Extract ecto.query.Nested

github.com/KronicDeth/intellij-elixir - ad2f575b3f4ccfcf491f7208c1116760240d8b22 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve Ecto.Query.WindowAPI functions

github.com/KronicDeth/intellij-elixir - 36f3a5da08d77b16f1fc28317ea781fa1445aeca authored about 3 years ago by Elle Imhoff <[email protected]>
Add missing state.put(Query.Call, call) for join/3-4 executeOnIn

github.com/KronicDeth/intellij-elixir - b4dc2f9029943cb9bbf1ba59e4dcd676b05f2d05 authored about 3 years ago by Elle Imhoff <[email protected]>
Walk the operands of |> in select expressions

github.com/KronicDeth/intellij-elixir - 2d4bdc205955c135f3fa63978a6ecd94d923152a authored about 3 years ago by Elle Imhoff <[email protected]>
Don't check if qualified no argument calls on parenthetical can resolve

github.com/KronicDeth/intellij-elixir - 1507d31065c0a15ebd7627cbccece644e0b77706 authored about 3 years ago by Elle Imhoff <[email protected]>
Rename .java to .kt

github.com/KronicDeth/intellij-elixir - faaa73de156a6123a7364342c8bbe75fcce6b389 authored about 3 years ago by Elle Imhoff <[email protected]>
ModuleWalker and NameArityRangeWalker

Reduce code by abstracting common pattern for walking library APIs

github.com/KronicDeth/intellij-elixir - d306f5acedb62300fb3f9977ade92a89860ef872 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't check if qualified no argument calls on struct operations can resolve

github.com/KronicDeth/intellij-elixir - 4cc7c3527abe0a2ddd384a9bea8dc55594d556c3 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't descend into either branch of if or unless if entrance in either branch when resolving calls

If the definition were in one of the branch, it would already have been found on processing prev...

github.com/KronicDeth/intellij-elixir - 969429162b9b30a44e7c4b47f098acfb4b6b3aec authored about 3 years ago by Elle Imhoff <[email protected]>
Treat child of modulars as being at the same level if nested in if or unless

Prevents `test` in `if` in `supervisor_test.exs` in `ecto` from stack overflowing.

github.com/KronicDeth/intellij-elixir - aaa556817dd7b62f895839e1db50ed297f8490c0 authored about 3 years ago by Elle Imhoff <[email protected]>
Find modules declared in tests

github.com/KronicDeth/intellij-elixir - 0996878b2364d1d31217d5429cf0395a30da9add authored about 3 years ago by Elle Imhoff <[email protected]>
Walk preload binding and expression

github.com/KronicDeth/intellij-elixir - c1def897da38ba4f9c369e16a6f7d7ba41a40474 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve fragment in with_cte

github.com/KronicDeth/intellij-elixir - a90d74bf284f0eec09b6059a79e8a6622a0fa3f9 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve in update for Ecto.Query

github.com/KronicDeth/intellij-elixir - f0e0245986e956696ce335ad4033f32a56d2de91 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve call definitions inside describe blocks

github.com/KronicDeth/intellij-elixir - 33cf6a3a12a05e25b323de9eafedc0d75a07e050 authored about 3 years ago by Elle Imhoff <[email protected]>
Don't generate reference for join: .. in assoc(_, _) in a no parentheses from call

github.com/KronicDeth/intellij-elixir - 3cf22281fb21e610305adc637c1498afcad1ef79 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve require as: arguments as Aliases

github.com/KronicDeth/intellij-elixir - 95c9cdaf8f9414c12402625932ef9d3f41b3c170 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve variables in assert_receive and assert_received

github.com/KronicDeth/intellij-elixir - 55b275e8eea6c6214d24c3933eb0ca80cec3c22b authored about 3 years ago by Elle Imhoff <[email protected]>
Walk assert expression for variable declarations

github.com/KronicDeth/intellij-elixir - ae2f5ddcd860c1ddb368800b8ddef64305a3829e authored about 3 years ago by Elle Imhoff <[email protected]>
Check for earlier bindings of variables in right operand of = in assert

github.com/KronicDeth/intellij-elixir - 452dc3ad94108d5e51084ea2cff825660f5b1420 authored about 3 years ago by Elle Imhoff <[email protected]>
Resolve alias to modules defined inside the enclosing describe block

github.com/KronicDeth/intellij-elixir - 2e879c638d223feabe4478a5e2297a30661ce15d authored about 3 years ago by Elle Imhoff <[email protected]>
Ignore `at com.intellij.openapi.diagnostic.Logger` when calculating location for error report titles

github.com/KronicDeth/intellij-elixir - 6c96e28f3324cc720b6aa638757389b37f0f13db authored about 3 years ago by Elle Imhoff <[email protected]>
Don't generate reference for `var` in type restrictions

Related to elixir-ecto/ecto#3756

github.com/KronicDeth/intellij-elixir - 41c829934a85ede0648a03ba9da5ca3b3b58bd59 authored about 3 years ago by Elle Imhoff <[email protected]>
Handle `alias __MODULE__.{...}` in prependQualifier

Fixes #2153

github.com/KronicDeth/intellij-elixir - dc9029c6195ea4580777f70532c8a6cf1068e6ac authored about 3 years ago by Elle Imhoff <[email protected]>