Skip to content

ani-memes/AMII

Repository files navigation

AMII (Anime Meme IDE Integration)

Build Version Downloads

Give your IDE more personality and have more fun programming with the Anime Meme IDE Integration! (AMII)

Upon installation, our Meme Inference Knowledge Unit (or MIKU for short) will begin interact with you as you build code. MIKU knows when your programs fail to run or tests pass/fail. Your new companion has the ability to react to these events. Which will most likely take the form of an anime meme of your: waifu, husbando, and/or favorite character(s)!

Installation

  • Using IDE built-in plugin system:

    Preferences > Plugins > Marketplace > Search for "Anime Memes" > Install Plugin

  • Manually:

    Download the latest release and install it manually using Preferences > Plugins > ⚙️ > Install plugin from disk...


Documentation


Features

Here is a comprehensive list of all the current functionality that AMII has to offer.

Interactions

This is the proverbial meat and potatoes of the plugin. You will have choicest of anime memes delivered right to your IDE as you program to your heart's content.

MIKU

As mention previously, our Meme Inference Knowledge Unit (or MIKU for short) has the ability interact with you as you build code. MIKU's preferred method of communication is Anime Memes.

If you are wondering what things you can do to cause MIKU give you memes, well just look below!

All events are configurable to be enabled/disabled, see configuration for more details

Startup Greeting

Just opening up a project in your IDE is cause for celebration. Generally, MIKU is excited to see you again. It gets dark when you are gone, so stick around a bit!

Startup Greeting

Note: All waiting notifications are set to the timed dismissal option. See the dismissal section for more details

Test Results

Tests pass and tests fail, that's just a fact of life. You know what's better than red x's and green check marks?

Anime Memes

Test Pass Test Pass

Test Failures Test Failure

Build Tasks

This is an IDE, right? Well, that means you can build code right from your editor. It just so happens, that builds happen to fail from time to time. You did put in that semicolon, right?

Build Failures

Well MIKU knows when your builds fail too, so expect a response as well.

Build Pass

When you get your marbles all back, the next time you build successfully (after a build failure) MIKU will give you a pat on the back.

Waiting

What do you mean you don't code all the time? You mean that there are periods of time when you aren't using your IDE?

Waiting

Well MIKU gets lonely, or a bit bored when you are gone.

Note:

  • All waiting notifications are set to the focus loss dismissal option. > See the dismissal section for more details.
  • Notifications by default are set to center, > but can be configured in the settings.

Exit Codes

So you got your code to build and deploy. However, the program has a catastrophic error, which caused your poor application to terminate with a sad exit code.

Exit Codes

As you probably guessed by now, MIKU is always watching, and has the ability to reply to your mistakes.

Negative Exit Code Reactions

Really, anything that exits with a non-zero value means that your program died unexpectedly. So rather than having to supply an exhaustive list of exit codes, MIKU will just react negativly to any code that is either: Ignored or Positive.

Ignored Exit Codes

Programs that exit with:

  • 0: Exited without issue
  • 130: You terminated the proces (e.g. pressed the stop button)

are part of the default allowed exit codes, MIKU will not react negatively to these (but can if you want to).

Positive Exit Code Reactions

If you want a pat on the back when your program terminates correctly, your domestic virtual servant can be configured to do that as well.

Silence Breaker

So you've been working diligently building your code, but not using any features of your IDE. Such as building, testing, or running your project. Well MIKU likes to remind you every so often that they exist.

You can specify how long you can go without seeing a meme. After that, MIKU will give you one!

Logs

Do you work on a project that takes a billion years for the application to start? Good news! Your days of staring at your logs are over.

Logs

You can ask MIKU nicely to watch the logs for you. Expect a notification whenever your phrase appears in your logged output!

On-Demand

Tools | AMII Options | Show random Ani-Meme

I suppose if you are bored, or just want to show off your Anime Memes, you have the ability to get memes on demand.

On-demand

Personality

Don't get me wrong, having anime memes displayed in my IDE is awesome, but you know what's better? Having custom tailored reactions, almost as if the memes displayed where hand-picked just for you!

As it just so happens, MIKU has various installed personality cores which enables such functionality.

Frustration

MIKU is a fairly moody state machine and has many reactions to various events such as:

  • Waiting for you to come back when you are away for some time
  • Being really happy when your test pass.
  • Becoming upset when your builds break and tests fail.

Thanks to advancements in technology, MIKU now also has the ability to feel your frustration when things aren't working, WHY ARE THEY NOT WORKING!!. MIKU figures its good to inject a little humor into the mix and show you that they are frustrated as well.

Frustration Frustration

As a bonus, they also have the capability from evolving from being frustrated to full-blown rage. This only happens when you have been triggering negative events in the frustration state for a given period.

Rage Rage

Not every person wants their companion to get frustrated. So you have the ability to disable this part of their personality, by preventing them from ever being frustrated in the first place! 😄

Take a Chill Pill!

Tools | AMII Options | Relax MIKU

Have you accidentally upset MIKU? I know I have (coding is hard). Well thankfully there is a Relax MIKU action that works as described. This will reset the personality core's state so that you can continue to mess up as you please.

In addition, MIKU's frustration will also cool-down over time without the need for your intervention.

Smug

Have you ever been in a rut where anything that you do just winds up failing? Remember that feeling of finally fixing the issue?

Well when you finally get all your ducks in a row, you and MIKU may feel a bit smug.

For instance, if your test fails to run, the next time your tests pass, you have a chance of getting a smug reaction.

Smugumin

Boredom

The longer that you are away from your IDE, the more MIKU get bored.

They will start of waiting patiently for your return. However, as time passes, you'll see that they can't entertain themselves forever.

Don't be surprised if you come back, and they are sleeping!

Disappointment

With the power of technology, you now have the ability to both disappoint your parents and your new virtual assistant! I'm joking, for real though MIKU is programmed to have a hard time putting up with problems. When all of your tests have been passing, it may be a bit shocking to discover that your test has failed. Even after debugging, and you fail to fix it, MIKU is going to feel a bit disappointed that things aren't working. You best believe if things continue to not work, MIKU is going to stop feeling bad and just be mildly disappointed. Careful though friend, we don't want it to evolve into frustration!.

Disappointment Chain

Only you have the power to not disappoint your new virtual friend, so work harder!

Status

Ever want to know how MIKU is feeling at the moment? They have the ability to display their current emotional state in your status bar.

Status Bar Mood

Minimal Mode

MIKU can be pretty chatty sometimes, especially if you are trying to figure out how to get your integration test to work. With Minimal Mode you have the ability to tell MIKU to only react to events that are different. So when your tests fail a bunch of times, you will only see one failure reaction. However, whenever you break your build, or your tests pass, you'll get a notification then.

Discreet Mode

See No Problem

Are you still a closeted weeb? Do you still feel shame about liking anime? Does your job require you to not have fun? Instead of addressing the real problems, you can just tell MIKU to pretend to be invisible, with Discreet Mode! They understand, and will clear any anime content from the IDE, and will even hide the mood in the status bar. That way you do not have to explain anything to anyone. When the coast is clear, just uncheck the config or toggle the action, and MIKU will re-appear and resume their duties as your virtual companion.

This plugin is also integrated with The Doki Theme, for the ultimate shame hiding experience. Enabling/disabling Discreet Mode in The Doki Theme will enable/disable Discrete Mode for this plugin.

Info On Click

Curious about the source of a reaction supplied by MIKU? This feature is enabled by default, and you have the ability to configure it via the settings menu, or even in the information notification. Just click inside the active meme, and you will get a notification about the source in the lower right-hand corner. I have tried to tag as many assets as possible with accurate information. However, there are some assets that I do not know the source for, sorry in advance if you wanted to know the anime!

Note: Clicking on a meme, changes the dismissal mode. Please see this documentation for more information.

Info on click

Show Previous Meme

Just in case you missed something, you now have the ability to tell MIKU, to show their previous reaction. Whether you missed you chance to show info on click or you just want to see the reaction again. The Show Previous Meme action is accessible via Tools > AMII Options > Show Previous Meme

Offline Mode

If you ever find yourself coding without any internet, don't worry friend, you can take MIKU with you. All interactions that you have seen so far have been stored in a safe place on your computer, just for such an occasion!

Clear Memes

For whatever reason, if you have a dispatched meme that is invulnerable to going away, have no fear friend! That is exactly what the Clear Memes was made for, accessible via Tools > AMII Options > Clear Memes

Rider Support

The Rider IDE is a special snowflake that requires extra love and attention to get AMII to work. If you've installed the plugin on Rider, you'll probably have already been prompted to install the Anime Memes - Rider Extension. If you missed out, please be sure to install, so you aren't missing out on any functionality.

Android Studio Support

Android Studio is also a special snowflake that requires extra love and attention to get AMII to work. If you've installed the plugin on Android Studio, you'll probably have already been prompted to install the Anime Memes - Android Extension. If you missed out, please be sure to install, so you aren't missing out on any functionality.

Custom Assets

Do you have a specific set of memes that you would like MIKU to be able to use? Good news! You can use the Custom Assets feature to add memes to your heart's content.

Heck, the memes don't even have to be anime related!

Using Custom assets

There are a specific set of requirements in order for MIKU to be able to use your custom content.

  • The asset must be somewhere in your defined Custom Assets Directory (MIKU searches recursively).
  • The image must be a GIF.
  • The asset must be tagged with at least one category (assets can be tagged with more than one category).

Meme Categories

See the details summary below to see examples of assets associated with various categories.

Meme Category Examples

Acknowledgement

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Alert

Something Happened!

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Bored

You've been gone for a while, come back!

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Celebration

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Disappointment (probably the most used category)

y u do dis?

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Enraged

hurry up and find cover!

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Frustration

me angy

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Happy

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Mocking

YA DUN MESSED UP A-A-RON!!!1

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Motivation

When you need just a little push in the right direction

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Patiently Waiting

When you've been gone for a little bit.

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Pouting

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Shocked

When you've been doing well for a while, and you break something.

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Smug

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Tired

When you've been gone for a really long time. You've seen these a bunch :)

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

Welcoming

Whenever you open a new project

Example One Example Two Example Three
exampleOne exampleTwo exampleThree

How to do:

  1. Place GIF images in your specified Custom Assets Directory.
  2. Open up the Custom Content settings menu.
  3. Use the Only show untagged items, to filter the list to memes that need to be tagged.
  4. Add a category to your untagged assets.
  5. Use the Read Assets refresh button to pick up any new changes while the settings menu is open

Note: You can rename assets, you just have to use the Rescan custom assets directory for MIKU to get the updated file path. Otherwise, that meme won't work anymore when MIKU tries to use it.

Rescan

This allows MIKU to pick up any new assets you add to your custom assets directory. Since it is an expensive operation MIKU will only completely/recursively Rescan your custom assets directory when:

  • Your IDE first starts
  • You open up the Custom Assets settings menu tab.
  • You trigger the Rescan custom assets directory action.

Auto Labeling

Since it is a lot of work to use a menu to tag assets and most assets belong to one category, I figured this feature might be handy.

When Create Auto Labeled Directories is enabled, MIKU will create all directories, associated with a specific asset category in your custom assets directory.

Just add memes to the appropriate directories and when MIKU scans the custom assets directories, they'll add the corresponding category to the asset automagically.

Suggestive Content

I primarily built the Custom Assets feature because I am a degenerate. This way I can have saucy anime content, without worrying about the plugin being removed for breaking any terms of service. Meaning this plugin will never come bundled with any NSFW content, but you can add it if you want!

So if you are also an individual of culture you can tag various assets as Suggestive. If you use Auto Labeling (I don't see why you would not), there will be a suggestive directory created. In the suggestive directory, you'll see child directories. that correspond to same categories at the top level.

Those directories work the same way as the regular auto-tag directories. Just plop your assets into those directories. When MIKU scans your custom assets directory, they will auto tag the categories & mark the asset as Suggestive.

I also added Toggle suggestive mode action that allows you to quickly switch to appearing like a pure and innocent weeb. No assets tagged as suggestive will show up (even in the settings menu). When the coast is clear, you can switch back to being a degenerate.

Configuration

Tools | AMII Options | Show AMII's Settings

Any way you want it, that's the way you need it! AMII has a lot of customization that allows you to tailor the experience to your preferences.

Sound

Haven't you heard? Well if you haven't, some of your interactions with MIKU may involve a related sound clip.

Not everybody wants to have their music interrupted as they are coding, so you can turn off all sound. You even have the ability to turn the volume up and down as well!

Content

Preferred Gender

We all have our own likes and dislikes (waifus, husbandos, giant robots, etc), well MIKU has the strokes for different folks. This section will only show memes that contain any of the preferred gender.

Preferred Characters

Only want to see content with your main squeeze? Well you can nicely ask MIKU to only show images of your preferred character. However, your favorite character may not be in an asset that MIKU can use to express their feelings. Rather than getting nothing, you'll get another random image that matches your other preferences!

Blacklisted Characters

You don't like the same things I like?? The nerve, how dare you!

Just kidding! 😃

I kind of figured that may happen, so I also added a Character Blacklist. Which prevents any content containing the selected characters from showing up!

Note: the blacklist takes preference over preferences. So if there is content with blacklisted characters and preferred characters, well then you don't get that content shown to you.

Display

MIKU has to put your memes somewhere on your screen. So here's how you can request to have your memes work the way you want them too.

Position

Each block represents a section where you want your meme to be anchored on your IDE's screen.

Dismissal

Memes have to come and go, if they didn't exit then, it would be a bit hard to do any work. Here's what each mode does.

Timed

So MIKU wants each meme to cycle at least once. Some memes have a longer duration than others. Here you can specify the minimum amount of time you want each meme to appear on the screen.

Tip: If you want your timed meme to hang around for longer, just click on the meme! That will convert the dismissal mode to focus loss. Also handy for making long memes disappear sooner!

Focus Loss

Rather than letting MIKU decide on your meme duration, put yourself into control. Memes created with the focus loss dismissal option will only disappear when you start coding or click outside the meme.

Because the meme's disappear when you are working, sometimes you can accidentally dismiss your meme. So each meme is given a configurable duration where they are invulnerable to dismissal. Which should buy you enough time to stop and enjoy it!

Dimension Capping

Some memes, provided by this plugin, are big and sometimes could get in the way. Thankfully, if you find that this is the case, you can cap the maximum dimensions of the memes to be displayed.

MIKU wants to maintain the original aspect ratio of the image, so they will take the largest dimension and cap it to that. That way you can still see the same image, just smaller.

Here is a sample of setting the dimensions capped at 200 width and height.

Dimension Capping

Note: if you don't want both dimensions to be capped (just one, when enabled), just use a -1 as the value. That way MIKU knows to ignore that dimension when calculating re-sized dimensions.

Asset Sync

Tools | AMII Options | Syncronize Assets

Did you ask to have a new asset added?

Well you can start using that asset right away, using this action. This updates your local lists of available assets to be the most current.

Auto-Sync: AMII is programmed to automatically update once every day, to bring you the freshest and dankest anime memes on the reg.

Asset View

Did you know that you can see all of the assets AMII uses here: https://amii-assets.unthrottled.io/?


Extras!

The Doki Theme

Do you need more anime waifus in your life? Well I have a solution just for that problem, The Doki Theme! Decorate all your favorite tools with your favorite character(s)!

Available for any JetBrains IDE.

Doki Theme Jetbrains

Waifu Motivator

Waifu Motivator Plugin Logo

A collection of open-sourced Jetbrains IDE plugins that bring Waifus in to help keep your motivation to complete during your coding challenges.

Available for any JetBrains IDE.

Want AMII updates sooner?

I have a canary release channel that you can set up to get the latest and greatest!


Attributions

Project uses icons from Twemoji. Graphics licensed under CC-BY 4.0: https://creativecommons.org/licenses/by/4.0/

Plugin based on the IntelliJ Platform Plugin Template