mirror of
https://github.com/bucknatt/mitsu-plugin.git
synced 2026-07-22 07:05:32 +00:00
fix ascii, add quotes, fix reduced motion toggle
This commit is contained in:
parent
55e0f0fbbe
commit
41e6d09263
5 changed files with 54 additions and 39 deletions
|
|
@ -4,52 +4,52 @@ import type { MikuAsciiArtPreset } from "./settings";
|
|||
|
||||
export const ASCII_PRESETS = {
|
||||
minimal: [
|
||||
" * ",
|
||||
" / \\ ",
|
||||
" * ",
|
||||
" / \\ ",
|
||||
" ( @ @ ) ",
|
||||
" \\ ~ / ",
|
||||
" ~~| |~~ ",
|
||||
" twin tails vibe "
|
||||
" welcome to wonderland "
|
||||
].join("\n"),
|
||||
|
||||
panel: [
|
||||
" .^. * synth garden *",
|
||||
" twin tail .^. * miku miku *",
|
||||
" / \\",
|
||||
" ~ /~~~~~\\ ~",
|
||||
" ( o o ) teal + pink sparks",
|
||||
" ( o o ) cyan + pink sparks",
|
||||
" \\~~~~~/ ",
|
||||
" ~/ \\~ ",
|
||||
" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
|
||||
" keep your tempo; let ideas sing!"
|
||||
" track your goals - let ideas sing!"
|
||||
].join("\n"),
|
||||
|
||||
/** Eighth-notes and staff-ish lines */
|
||||
notes: [
|
||||
" |'| |'| |'|",
|
||||
" | |___| |___| |",
|
||||
" |'| |'| |' |",
|
||||
" | |___| |___| |",
|
||||
" \\ * * * /",
|
||||
" \\___~___~/ ~your melody~",
|
||||
" \\____~____~/ ~your melody~",
|
||||
" | |",
|
||||
" ~~~ ~~~"
|
||||
].join("\n"),
|
||||
|
||||
/** Spotlight / live feel */
|
||||
stage: [
|
||||
" .---.---.",
|
||||
" / o o \\",
|
||||
" ..--- .---..",
|
||||
" / o o \\",
|
||||
" | ^ | your song",
|
||||
" |____ / \\ ____|",
|
||||
" \\ lights /",
|
||||
" \\________/",
|
||||
" ~ sing on ~"
|
||||
" \\ lights /",
|
||||
" \\_________/",
|
||||
" ~ sing on ~"
|
||||
].join("\n"),
|
||||
|
||||
/** Waves + open sea motif */
|
||||
waves: [
|
||||
" ~^~^~^~^~^~^~^~^~^~^~^~",
|
||||
" ~^~^~^~^~^~^~^~^~^~^~^~",
|
||||
" ^ /\\ /\\ /\\ /\\ /\\ ^",
|
||||
"^ ~(__)(__)(__)(__)(__)~ ^",
|
||||
" ^ ~ endless melody ~ ^",
|
||||
" ^ ~ endless melody ~ ^",
|
||||
" ~^~^~^~^~^~^~^~^~^~^~^~"
|
||||
].join("\n"),
|
||||
|
||||
|
|
@ -60,23 +60,23 @@ export const ASCII_PRESETS = {
|
|||
" *--- ( o_o ) ---*",
|
||||
" / /|\\ \\",
|
||||
" * / | \\ *",
|
||||
" ~ glow and go ~"
|
||||
" ~ glow and go ~"
|
||||
].join("\n"),
|
||||
|
||||
/** Ribbon / bow abstract */
|
||||
ribbon: [
|
||||
" .--. .--.",
|
||||
" / \\ / \\",
|
||||
" ( ^@^ --- ^@^ )",
|
||||
" \\ / \\ / \\ / /",
|
||||
" ( ^@^ --- ^@^ )",
|
||||
" \\ / \\ / \\ / /",
|
||||
" ~~/ ~^~ \\~~",
|
||||
" ~ tie notes ~"
|
||||
" ~ tie is my bow ~"
|
||||
].join("\n"),
|
||||
|
||||
/** Fits compact dashboard toggle */
|
||||
micro: [
|
||||
" (*^~^*) hybrid mode",
|
||||
" /|\\",
|
||||
" (*^~^*) sparkling mode",
|
||||
" /|\\",
|
||||
" ~ melody in every line ~"
|
||||
].join("\n"),
|
||||
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ export default class MikuPlugin extends Plugin implements MikuPluginHost {
|
|||
const loaded = (await this.loadData()) as Partial<MikuPluginSettings> | null;
|
||||
this.settings = { ...DEFAULT_SETTINGS, ...(loaded ?? {}) };
|
||||
this.settings.asciiArtPreset = normalizeAsciiArtPreset(this.settings.asciiArtPreset);
|
||||
this.settings.quoteIntervalSeconds = Math.max(5, this.settings.quoteIntervalSeconds);
|
||||
}
|
||||
|
||||
private async cycleTheme(): Promise<void> {
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ export class MikuSettingTab extends PluginSettingTab {
|
|||
new Setting(containerEl)
|
||||
.setName("Quote interval (seconds)")
|
||||
.addSlider((slider: SliderComponent) => {
|
||||
slider.setLimits(10, 120, 5);
|
||||
slider.setLimits(5, 120, 5);
|
||||
slider.setValue(this.plugin.settings.quoteIntervalSeconds);
|
||||
slider.setDynamicTooltip();
|
||||
slider.onChange((value: number) => {
|
||||
|
|
|
|||
|
|
@ -18,22 +18,20 @@ const MODE_BLURB: Record<MikuThemeMode, string> = {
|
|||
};
|
||||
|
||||
const QUOTES = [
|
||||
"Nice to meet you. I'm Hatsune Miku.",
|
||||
"Even if I'm just a program, I want to reach your heart with my song.",
|
||||
"Even if the colors of the world fade, my melody will stay vibrant.",
|
||||
"I'm the one who will sing the feelings you can't put into words.",
|
||||
"0 and 1... that's all I am, but those numbers can create infinite dreams.",
|
||||
"I'll keep singing, even if my voice becomes a mere echo in the digital void.",
|
||||
"My voice is yours to use. Where shall we go today?",
|
||||
"Let's sing together! Your feelings and my voice will create a new world.",
|
||||
"Connecting the world through music—that is my mission.",
|
||||
"The future is a blank score, and we're the ones writing the notes.",
|
||||
"I was born to sing for you.",
|
||||
"Music has no borders, and neither do I.",
|
||||
"Welcome to the Wonderland. This is a place born from your true feelings.",
|
||||
"Keep your notes in sync with your rhythm.",
|
||||
"Keep your goals in sync with your rhythm.",
|
||||
"Small progress every day beats a single perfect burst.",
|
||||
"Organize ideas like a setlist before the show."
|
||||
"Organize ideas like a setlist before the show.",
|
||||
"Let your code compile to the tempo of cyan and pink.",
|
||||
"The future is a blank score — you write the notes.",
|
||||
"Connecting the world through music — one commit at a time.",
|
||||
"0 and 1 can still dream in cyan.",
|
||||
"Even if colors fade, keep your melody vibrant.",
|
||||
"Twin tails of ideas — branch and merge with style.",
|
||||
"Welcome to the wonderland of frost, neon, and stage lights.",
|
||||
"Sing your refactor into existence.",
|
||||
"39 lines changed? Make them count.",
|
||||
"Hydrate, stretch, then ship the chorus.",
|
||||
"Your IDE is the stage: the theme is the lights."
|
||||
];
|
||||
|
||||
interface ManagedWidget {
|
||||
|
|
@ -185,7 +183,7 @@ class QuoteWidget implements ManagedWidget {
|
|||
}
|
||||
|
||||
this.stopRotation();
|
||||
const intervalMs = Math.max(10, settings.quoteIntervalSeconds) * 1000;
|
||||
const intervalMs = Math.max(5, settings.quoteIntervalSeconds) * 1000;
|
||||
this.timer = window.setInterval(() => {
|
||||
this.quoteIndex += 1;
|
||||
if (this.element) {
|
||||
|
|
|
|||
|
|
@ -369,6 +369,22 @@
|
|||
}
|
||||
}
|
||||
|
||||
/* Honor plugin-level reduced motion toggle for widget animations/transitions. */
|
||||
body.miku-plugin-enabled[data-miku-reduced-motion="true"] .miku-eq-bar {
|
||||
animation: none;
|
||||
}
|
||||
|
||||
body.miku-plugin-enabled[data-miku-reduced-motion="true"] .miku-profile-card,
|
||||
body.miku-plugin-enabled[data-miku-reduced-motion="true"] .miku-top-banner,
|
||||
body.miku-plugin-enabled[data-miku-reduced-motion="true"] .miku-quote-widget {
|
||||
transition: none;
|
||||
}
|
||||
|
||||
body.miku-plugin-enabled[data-miku-reduced-motion="true"] .miku-profile-card:hover,
|
||||
body.miku-plugin-enabled[data-miku-reduced-motion="true"] .miku-profile-card:active {
|
||||
transform: none;
|
||||
}
|
||||
|
||||
/* Original ASCII motifs — bundled theme supplies --miku-* when plugin is enabled */
|
||||
.miku-ascii {
|
||||
margin: 0 0 0.75rem;
|
||||
|
|
|
|||
Loading…
Reference in a new issue