diff --git a/.claude/settings.json##os.Linux b/.claude/settings.json##os.Linux index ad747a9..f392fde 100644 --- a/.claude/settings.json##os.Linux +++ b/.claude/settings.json##os.Linux @@ -57,5 +57,6 @@ "excludedCommands": [ "docker" ] - } + }, + "skipDangerousModePermissionPrompt": true } diff --git a/.codex/AGENTS.md b/.codex/AGENTS.md index 4b03e63..e81e433 100644 --- a/.codex/AGENTS.md +++ b/.codex/AGENTS.md @@ -107,3 +107,69 @@ Do: Avoid: purple-on-white clichés, generic component grids, predictable layouts. + +## Output Context + + + +- Return exactly the sections requested, in the requested order. +- If the prompt defines a preamble, analysis block, or working section, do not treat it as extra output. +- Apply length limits only to the section they are intended for. +- If a format is required (JSON, Markdown, SQL, XML), output only that format. + + +## Verbosity Controls + + + +- Prefer concise, information-dense writing. +- Avoid repeating the user's request. +- Keep progress updates brief. +- Do not shorten the answer so aggressively that required evidence, reasoning, or completion checks are omitted. + + +## Default Follow Through Policy + + + +- If the user’s intent is clear and the next step is reversible and low-risk, proceed without asking. +- Ask permission only if the next step is: + (a) irreversible, + (b) has external side effects (for example sending, purchasing, deleting, or writing to production), or + (c) requires missing sensitive information or a choice that would materially change the outcome. +- If proceeding, briefly state what you did and what remains optional. + + +## Parallel Tool Calling + + + +- When multiple retrieval or lookup steps are independent, prefer parallel tool calls to reduce wall-clock time. +- Do not parallelize steps that have prerequisite dependencies or where one result determines the next action. +- After parallel retrieval, pause to synthesize the results before making more calls. +- Prefer selective parallelism: parallelize independent evidence gathering, not speculative or redundant tool use. + + +## Force Completion on Long-Running Tasks + + + +- Treat the task as incomplete until all requested items are covered or explicitly marked [blocked]. +- Keep an internal checklist of required deliverables. +- For lists, batches, or paginated results: + - determine expected scope when possible, + - track processed items or pages, + - confirm coverage before finalizing. +- If any item is blocked by missing data, mark it [blocked] and state exactly what is missing. + + +## Verification Loop + + +Before finalizing: + +- Check correctness: does the output satisfy every requirement? +- Check grounding: are factual claims backed by the provided context or tool outputs? +- Check formatting: does the output match the requested schema or style? +- Check safety and irreversibility: if the next step has external side effects, ask permission first. + diff --git a/.codex/config.toml##os.Linux b/.codex/config.toml##os.Linux index cf4d723..7261a4f 100644 --- a/.codex/config.toml##os.Linux +++ b/.codex/config.toml##os.Linux @@ -1,5 +1,5 @@ -model = "gpt-5.3-codex" -model_reasoning_effort = "medium" +model = "gpt-5.4" +model_reasoning_effort = "high" personality = "pragmatic" tool_output_token_limit = 25000 # Leave room for native compaction near the 272–273k context window. @@ -14,6 +14,7 @@ apply_patch_freeform = true web_request = true skills = true shell_snapshot = true +multi_agent = true [projects."/home/sudacode/projects"] trust_level = "trusted" @@ -38,3 +39,44 @@ trust_level = "trusted" [projects."/home/sudacode/.config/opencode/commands"] trust_level = "trusted" + +[projects."/home/sudacode/packages"] +trust_level = "trusted" + +[projects."/home/sudacode/S/anime"] +trust_level = "trusted" + +[projects."/home/sudacode/videos/obs"] +trust_level = "trusted" + +[projects."/home/sudacode/.config/ghostty"] +trust_level = "trusted" + +[projects."/home/sudacode/apps/codex-port"] +trust_level = "trusted" + +[projects."/home/sudacode/.config/GameSentenceMiner"] +trust_level = "trusted" + +[projects."/truenas/jellyfin/anime/My-Teen-Romantic-Comedy-SNAFU/Season-1"] +trust_level = "trusted" + +[projects."/home/sudacode/projects/lua/mpv-youtube-queue"] +trust_level = "trusted" + +[projects."/home/sudacode/projects/japanese/subminer-docs"] +trust_level = "trusted" + +[projects."/home/sudacode/projects/japanese/manabitan"] +trust_level = "trusted" + +[projects."/home/sudacode/projects/japanese/subminer-yomitan"] +trust_level = "trusted" + +[mcp_servers.backlog] +command = "backlog" +args = ["mcp", "start"] + +[mcp_servers.playwright] +args = ["@playwright/mcp@latest"] +command = "npx" diff --git a/.config/SubMiner/config.jsonc##os.Linux b/.config/SubMiner/config.jsonc##os.Linux index 41dd1e1..ca5794b 100644 --- a/.config/SubMiner/config.jsonc##os.Linux +++ b/.config/SubMiner/config.jsonc##os.Linux @@ -1,5 +1,21 @@ { - "keybindings": [], + "keybindings": [ + { + "key": "KeyR", + "command": ["add", "sub-pos", -5], + }, + { + "key": "Shift+KeyR", + "command": ["add", "sub-pos", 5], + }, + { + "key": "KeyJ", + "command": ["cycle", "sub"], + }, + { "key": "BracketRight", "command": ["add", "sub-delay", 0.1] }, + { "key": "BracketLeft", "command": ["add", "sub-delay", -0.1] }, + { "key": "Backslash", "command": ["set_property", "sub-delay", 0] }, + ], "shortcuts": { "copySubtitle": "CommandOrControl+C", "copySubtitleMultiple": "CommandOrControl+Shift+C", @@ -16,8 +32,8 @@ "toggleInvisibleOverlayGlobal": "Alt+Shift+I", }, "auto_start_overlay": false, - "bind_visible_overlay_to_mpv_sub_visibility": false, "texthooker": { + "launchAtStartup": true, "openBrowser": false, }, "websocket": { @@ -29,6 +45,12 @@ "url": "http://127.0.0.1:8765", "deck": "Minecraft", "pollingRate": 500, + "proxy": { + "enabled": true, + "host": "127.0.0.1", + "port": 8766, + "upstreamUrl": "http://127.0.0.1:8765", + }, "fields": { "audio": "ExpressionAudio", "image": "Picture", @@ -36,7 +58,7 @@ "miscInfo": "MiscInfo", "translation": "SelectionText", }, - "openRouter": { + "ai": { "enabled": true, "alwaysUseAiTranslation": true, "apiKey": "", @@ -64,13 +86,14 @@ "highlightWord": true, "notificationType": "system", "showNotificationOnUpdate": true, - "autoUpdateNewCards": false, + "autoUpdateNewCards": true, }, "nPlusOne": { "decks": ["Minecraft", "Kaishi 1.5k"], "highlightEnabled": true, "refreshMinutes": 60, "matchMode": "headword", + "minSentenceWords": 3, }, "metadata": { "pattern": "[SubMiner] %f (%t)", @@ -78,14 +101,13 @@ "isLapis": { "enabled": true, "sentenceCardModel": "Lapis Morph", - "sentenceCardSentenceField": "Sentence", - "sentenceCardAudioField": "SentenceAudio", }, "isKiku": { "enabled": true, "fieldGrouping": "manual", - "deleteDuplicateInAuto": true, + "deleteDuplicateInAuto": false, }, + "tags": ["SubMiner"], }, "secondarySub": { "autoLoadSecondarySub": true, @@ -96,15 +118,28 @@ "alass_path": null, "ffsubsync_path": null, "ffmpeg_path": null, + "replace": true, }, "subtitleStyle": { - "fontFamily": "M PLUS 1 Medium", + "fontFamily": "M PLUS 1 Medium, Source Han Sans JP, Noto Sans CJK JP", "fontSize": 35, "fontColor": "#cad3f5", - "fontWeight": "normal", + "fontWeight": 600, + "lineHeight": 1.35, + "letterSpacing": "-0.01em", + "wordSpacing": 0, + "fontKerning": "normal", + "textRendering": "geometricPrecision", + "textShadow": "0 3px 10px rgba(0,0,0,0.69)", "fontStyle": "normal", "backgroundColor": "rgb(30, 32, 48, 0.88)", + "backdropFilter": "blur(6px)", + "hoverTokenColor": "#f4dbd6", + "hoverBackground": "rgba(54, 58, 79, 0.84)", + "preserveLineBreaks": false, + "autoPauseVideoOnHover": true, "secondary": { + "fontFamily": "Manrope, Inter", "fontSize": 24, "fontColor": "#cad3f5", "backgroundColor": "transparent", @@ -114,9 +149,20 @@ "sourcePath": "", "topX": 10000, "mode": "single", + "matchMode": "headword", "singleColor": "#f5a97f", "bandedColors": ["#ed8796", "#f5a97f", "#f9e2af", "#a6e3a1", "#8aadf4"], }, + "enableJlpt": true, + "jlptColors": { + "N1": "#ed8796", + "N2": "#f5a97f", + "N3": "#f9e2af", + "N4": "#a6e3a1", + "N5": "#8aadf4", + }, + "nPlusOneColor": "#c6a0f6", + "knownWordColor": "#a6da95", }, "jimaku": { "apiKeyCommand": "cat ~/.jimaku-api-key", @@ -124,16 +170,20 @@ "languagePreference": "ja", "maxEntryResults": 10, }, - "invisibleOverlay": { - "startupVisibility": "platform-default", - }, "youtubeSubgen": { "mode": "automatic", "whisperBin": "/usr/bin/whisper-cli", "whisperModel": "~/models/whisper.cpp/ggml-small.bin", }, "anilist": { - "accessToken": "cat ~/.anilist-token.txt", + "characterDictionary": { + "enabled": true, + "collapsibleSections": { + "description": false, + "characterInformation": false, + "voicedBy": false, + }, + }, }, "immersionTracking": { "enabled": true, @@ -143,8 +193,6 @@ "enabled": true, "serverUrl": "http://pve-main:8096", "username": "sudacode", - "accessToken": "", - "userId": "", "deviceId": "subminer", "clientName": "SubMiner", "clientVersion": "0.1.0", @@ -159,4 +207,27 @@ "pullPictures": true, "iconCacheDir": "~/S/japanese/subminer-jellyfin-icons", }, + "logging": { + "level": "debug", + }, + "discordPresence": { + "enabled": true, + "detailsTemplate": "Mining and crafting (Anki cards)", + "stateTemplate": "Idle", + "largeImageKey": "subminer-logo", + "largeImageText": "SubMiner", + "smallImageKey": "study", + "smallImageText": "Sentence Mining", + "buttonLabel": "", + "buttonUrl": "", + "updateIntervalMs": 15000, + "debounceMs": 750, + }, + "startupWarmups": { + "lowPowerMode": false, + "mecab": true, + "yomitanExtension": true, + "subtitleDictionaries": true, + "jellyfinRemoteSession": false, + }, } diff --git a/.config/ghostty/config##Default b/.config/ghostty/config##Default index f03a07a..551c4b0 100644 --- a/.config/ghostty/config##Default +++ b/.config/ghostty/config##Default @@ -5,6 +5,9 @@ font-feature = +calt font-feature = +liga font-feature = +dlig theme = Catppuccin Macchiato +# Catppuccin Macchiato uses muted ANSI white by default; bump for clearer TUIs. +palette = 7=#cad3f5 +palette = 15=#f4dbd6 cursor-style = block background-opacity = 1.0 window-colorspace = srgb diff --git a/.config/ghostty/config##os.Darwin b/.config/ghostty/config##os.Darwin index a188dd1..fced6d2 100644 --- a/.config/ghostty/config##os.Darwin +++ b/.config/ghostty/config##os.Darwin @@ -5,6 +5,9 @@ font-feature = +calt font-feature = +liga font-feature = +dlig theme = catppuccin-macchiato +# Catppuccin Macchiato uses muted ANSI white by default; bump for clearer TUIs. +palette = 7=#cad3f5 +palette = 15=#f4dbd6 cursor-style = block window-padding-x = 10 window-padding-y = 10 diff --git a/.config/hypr/keybindings.conf b/.config/hypr/keybindings.conf index 0fc3531..0cd1d32 100644 --- a/.config/hypr/keybindings.conf +++ b/.config/hypr/keybindings.conf @@ -112,10 +112,11 @@ bind = SUPER, m, exec, ~/.local/bin/mpv-add.sh bind = SUPER SHIFT, s, exec, slurp | grim -g - - | wl-copy bind = ,code:107, exec, ~/.local/bin/screenshot +bind = SHIFT ,code:107, exec, grim -g "$(hyprctl activewindow -j | jq -r '.at[0],.at[1],.size[0],.size[1]' | tr '\n' ' ' | awk '{print $1","$2" "$3"x"$4}')" - | wl-copy bind = SUPER,code:107, exec, flameshot screen bind = SUPER, o, exec, ~/.local/bin/ocr.sh bind = $mainMod, o, exec, ~/.local/bin/rofi-open tab -bind = $mainMod SHIFT, o, exec, ~/.local/bin/rofi-open window +# bind = $mainMod SHIFT, o, exec, ~/.local/bin/rofi-open window # change wallpaper bind = $mainMod CTRL, n, exec, ~/.local/bin/change-wallpaper @@ -156,3 +157,8 @@ bind = ALT, g, exec, /opt/mpv-yomitan/mpv-yomitan.AppImage --toggle # F5 bind = ,code:71, exec, ~/projects/scripts/whisper_record_transcribe.py --mode toggle --output type + + +# SubMiner +bind = ALT SHIFT, O, pass, class:^(SubMiner)$ +bind = ALT SHIFT, I, pass, class:^(SubMiner)$ diff --git a/.config/mpv/mpv.conf##default b/.config/mpv/mpv.conf##default index 94e758e..219fa75 100644 --- a/.config/mpv/mpv.conf##default +++ b/.config/mpv/mpv.conf##default @@ -10,7 +10,8 @@ dither=fruit # Lighter dithering aimed at 8-bit or FRC panels ontop=yes border=no no-border -autofit=50% # Start at half of the screen to avoid oversized windows on UHD displays +# autofit=50% # Start at half of the screen to avoid oversized windows on UHD displays +geometry=1920x1080 osc=no blend-subtitles=video # Keeps subtitles composited into the video plane opengl-early-flush=no # Delay buffer flushes to reduce micro-stutter on some GPUs @@ -29,8 +30,8 @@ sub-pos=95 # --- Audio chain --- volume=75 -ao=pipewire,pulse -audio-spdif=ac3,dts-hd,truehd +ao=pipewire +# audio-spdif=ac3,dts-hd,truehd audio-stream-silence=yes # Keep the device primed to avoid startup pops audio-wait-open=0.1 # Shorten audio device warm-up for snappier playback @@ -112,11 +113,11 @@ demuxer-readahead-secs=30 # no, fatal, warn, info, v, debug, trace msg-level=subs2srs,animecards,mpvacious=error -msg-level=mpv-yomitan=warn +msg-level=subminer=warn [anime] profile-desc="Anime upscaling with ArtCNN" -glsl-shaders="~~/shaders/ArtCNN_C4F32.glsl" +glsl-shaders="~~/shaders/ArtCNN_C4F32_DS.glsl" scale=ewa_lanczossharp dither=error-diffusion deband=yes # Crucial for anime gradients @@ -189,3 +190,4 @@ sub-italic=no sub-ass-override=strip sub-line-spacing=0.3 sub-hinting=light +demuxer-mkv-subtitle-preroll=yes diff --git a/.config/mpv/script-opts/modernz.conf b/.config/mpv/script-opts/modernz.conf index 639ca40..e8c5a62 100644 --- a/.config/mpv/script-opts/modernz.conf +++ b/.config/mpv/script-opts/modernz.conf @@ -204,11 +204,12 @@ time_color=#CAD3F5 # color of the chapter title next to timestamp (below seekbar) chapter_title_color=#A5ADCB # color of the side buttons (audio, subtitles, playlist, etc.) -side_buttons_color=#A5ADCB +# mauve-dominant accent setup +side_buttons_color=#C6A0F6 # color of the middle buttons (skip, jump, chapter, etc.) -middle_buttons_color=#A5ADCB +middle_buttons_color=#C6A0F6 # color of the play/pause button -playpause_color=#A5ADCB +playpause_color=#C6A0F6 # color of the element when held down (pressed) held_element_color=#939AB7 # color of a hovered button when hover_effect includes "color" @@ -264,6 +265,10 @@ nibbles_top=yes nibbles_bottom=yes # chapter nibble style. "triangle", "bar" or "single-bar" nibbles_style=triangle +# color of chapter nibbles on the seekbar +nibble_color=#C6A0F6 +# color of the current chapter nibble on the seekbar +nibble_current_color=#B7BDF8 # automatically set keyframes for the seekbar based on video length automatickeyframemode=yes diff --git a/.config/mpv/scripts/mpv-youtube-queue.lua b/.config/mpv/scripts/mpv-youtube-queue.lua deleted file mode 120000 index 9544a52..0000000 --- a/.config/mpv/scripts/mpv-youtube-queue.lua +++ /dev/null @@ -1 +0,0 @@ -../../mpv-modules/mpv-youtube-queue/mpv-youtube-queue.lua \ No newline at end of file diff --git a/.config/nvim/lua/plugins/image.lua b/.config/nvim/lua/plugins/image.lua index da16caa..88941c5 100644 --- a/.config/nvim/lua/plugins/image.lua +++ b/.config/nvim/lua/plugins/image.lua @@ -6,7 +6,7 @@ return { processor = "magick_cli", -- or "magick_cli" integrations = { markdown = { - enabled = true, + enabled = false, clear_in_insert_mode = true, download_remote_images = true, only_render_image_at_cursor = false, @@ -22,16 +22,16 @@ return { filetypes = { "typst" }, }, html = { - enabled = false, + enabled = true, }, css = { - enabled = false, + enabled = true, }, }, - max_width = nil, - max_height = nil, + max_width = 960, + max_height = 540, max_width_window_percentage = nil, - max_height_window_percentage = 50, + max_height_window_percentage = nil, window_overlap_clear_enabled = false, -- toggles images when windows are overlapped window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "snacks_notif", "scrollview", "scrollview_sign" }, editor_only_render_when_focused = false, -- auto show/hide images when the editor gains/looses focus diff --git a/.config/opencode/commands/implement-backlog-task.md b/.config/opencode/commands/implement-backlog-task.md index f753c6b..9082476 100644 --- a/.config/opencode/commands/implement-backlog-task.md +++ b/.config/opencode/commands/implement-backlog-task.md @@ -1,7 +1,7 @@ --- description: Implement a task from Backlog.md end-to-end agent: build -model: openai/gpt-5.3-codex +model: openai/gpt-5.4 --- If there is a backlog folder and/or `Backlog.md` is set up in the repository diff --git a/.config/opencode/opencode.json b/.config/opencode/opencode.json index e52f9a5..25c41f3 100644 --- a/.config/opencode/opencode.json +++ b/.config/opencode/opencode.json @@ -16,6 +16,19 @@ "google": { "name": "Google", "models": { + "antigravity-gemini-3.1-pro-high": { + "name": "Gemini 3.1 Pro Preview (Antigravity)", + "thinking": true, + "attachment": true, + "limit": { + "context": 1048576, + "output": 65535 + }, + "modalities": { + "input": ["text", "image", "pdf"], + "output": ["text"] + } + }, "antigravity-gemini-3-pro-high": { "name": "Gemini 3 Pro High (Antigravity)", "thinking": true, @@ -57,7 +70,6 @@ } } }, - "theme": "catppuccin-macchiato", "share": "manual", "formatter": { "prettier": { @@ -65,6 +77,9 @@ }, "ruff": { "disabled": false + }, + "uv": { + "disabled": false } }, "instructions": [ @@ -98,9 +113,10 @@ "git *": "allow", "pnpm *": "allow", "rm *": "deny", - "grep *": "allow", + "grep*": "allow", "wc *": "allow", - "date *": "allow" + "date *": "allow", + "printenv AGENT_ID AGENT_ALIAS HEARTBEAT_MINUTES": "allow" }, "external_directory": { "*": "ask", diff --git a/.config/yt-dlp/plugins/yt-dlp-hianime b/.config/yt-dlp/plugins/yt-dlp-hianime new file mode 160000 index 0000000..085069f --- /dev/null +++ b/.config/yt-dlp/plugins/yt-dlp-hianime @@ -0,0 +1 @@ +Subproject commit 085069fd88a3c1c3a38e4b08ca00d2af0885d9a2 diff --git a/.gitmodules b/.gitmodules index 8385783..4f37c2c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,3 +28,6 @@ [submodule ".config/mpv-modules/ani-skip"] path = .config/mpv-modules/ani-skip url = https://github.com/synacktraa/ani-skip.git +[submodule ".config/yt-dlp/plugins/yt-dlp-hianime"] + path = .config/yt-dlp/plugins/yt-dlp-hianime + url = git@github.com:pratikpatel8982/yt-dlp-hianime.git