This commit is contained in:
2026-03-07 17:47:22 -08:00
parent dc58b9092e
commit 501ddd943f
15 changed files with 256 additions and 38 deletions

View File

@@ -57,5 +57,6 @@
"excludedCommands": [ "excludedCommands": [
"docker" "docker"
] ]
} },
"skipDangerousModePermissionPrompt": true
} }

View File

@@ -107,3 +107,69 @@ Do:
Avoid: purple-on-white clichés, generic component grids, predictable layouts. Avoid: purple-on-white clichés, generic component grids, predictable layouts.
</frontend_aesthetics> </frontend_aesthetics>
## Output Context
<output_contract>
- 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.
</output_contract>
## Verbosity Controls
<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.
</verbosity_controls>
## Default Follow Through Policy
<default_follow_through_policy>
- If the users 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.
</default_follow_through_policy>
## Parallel Tool Calling
<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.
</parallel_tool_calling>
## Force Completion on Long-Running Tasks
<completeness_contract>
- 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.
</completeness_contract>
## Verification Loop
<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.
</verification_loop>

View File

@@ -1,5 +1,5 @@
model = "gpt-5.3-codex" model = "gpt-5.4"
model_reasoning_effort = "medium" model_reasoning_effort = "high"
personality = "pragmatic" personality = "pragmatic"
tool_output_token_limit = 25000 tool_output_token_limit = 25000
# Leave room for native compaction near the 272273k context window. # Leave room for native compaction near the 272273k context window.
@@ -14,6 +14,7 @@ apply_patch_freeform = true
web_request = true web_request = true
skills = true skills = true
shell_snapshot = true shell_snapshot = true
multi_agent = true
[projects."/home/sudacode/projects"] [projects."/home/sudacode/projects"]
trust_level = "trusted" trust_level = "trusted"
@@ -38,3 +39,44 @@ trust_level = "trusted"
[projects."/home/sudacode/.config/opencode/commands"] [projects."/home/sudacode/.config/opencode/commands"]
trust_level = "trusted" 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"

View File

@@ -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": { "shortcuts": {
"copySubtitle": "CommandOrControl+C", "copySubtitle": "CommandOrControl+C",
"copySubtitleMultiple": "CommandOrControl+Shift+C", "copySubtitleMultiple": "CommandOrControl+Shift+C",
@@ -16,8 +32,8 @@
"toggleInvisibleOverlayGlobal": "Alt+Shift+I", "toggleInvisibleOverlayGlobal": "Alt+Shift+I",
}, },
"auto_start_overlay": false, "auto_start_overlay": false,
"bind_visible_overlay_to_mpv_sub_visibility": false,
"texthooker": { "texthooker": {
"launchAtStartup": true,
"openBrowser": false, "openBrowser": false,
}, },
"websocket": { "websocket": {
@@ -29,6 +45,12 @@
"url": "http://127.0.0.1:8765", "url": "http://127.0.0.1:8765",
"deck": "Minecraft", "deck": "Minecraft",
"pollingRate": 500, "pollingRate": 500,
"proxy": {
"enabled": true,
"host": "127.0.0.1",
"port": 8766,
"upstreamUrl": "http://127.0.0.1:8765",
},
"fields": { "fields": {
"audio": "ExpressionAudio", "audio": "ExpressionAudio",
"image": "Picture", "image": "Picture",
@@ -36,7 +58,7 @@
"miscInfo": "MiscInfo", "miscInfo": "MiscInfo",
"translation": "SelectionText", "translation": "SelectionText",
}, },
"openRouter": { "ai": {
"enabled": true, "enabled": true,
"alwaysUseAiTranslation": true, "alwaysUseAiTranslation": true,
"apiKey": "", "apiKey": "",
@@ -64,13 +86,14 @@
"highlightWord": true, "highlightWord": true,
"notificationType": "system", "notificationType": "system",
"showNotificationOnUpdate": true, "showNotificationOnUpdate": true,
"autoUpdateNewCards": false, "autoUpdateNewCards": true,
}, },
"nPlusOne": { "nPlusOne": {
"decks": ["Minecraft", "Kaishi 1.5k"], "decks": ["Minecraft", "Kaishi 1.5k"],
"highlightEnabled": true, "highlightEnabled": true,
"refreshMinutes": 60, "refreshMinutes": 60,
"matchMode": "headword", "matchMode": "headword",
"minSentenceWords": 3,
}, },
"metadata": { "metadata": {
"pattern": "[SubMiner] %f (%t)", "pattern": "[SubMiner] %f (%t)",
@@ -78,14 +101,13 @@
"isLapis": { "isLapis": {
"enabled": true, "enabled": true,
"sentenceCardModel": "Lapis Morph", "sentenceCardModel": "Lapis Morph",
"sentenceCardSentenceField": "Sentence",
"sentenceCardAudioField": "SentenceAudio",
}, },
"isKiku": { "isKiku": {
"enabled": true, "enabled": true,
"fieldGrouping": "manual", "fieldGrouping": "manual",
"deleteDuplicateInAuto": true, "deleteDuplicateInAuto": false,
}, },
"tags": ["SubMiner"],
}, },
"secondarySub": { "secondarySub": {
"autoLoadSecondarySub": true, "autoLoadSecondarySub": true,
@@ -96,15 +118,28 @@
"alass_path": null, "alass_path": null,
"ffsubsync_path": null, "ffsubsync_path": null,
"ffmpeg_path": null, "ffmpeg_path": null,
"replace": true,
}, },
"subtitleStyle": { "subtitleStyle": {
"fontFamily": "M PLUS 1 Medium", "fontFamily": "M PLUS 1 Medium, Source Han Sans JP, Noto Sans CJK JP",
"fontSize": 35, "fontSize": 35,
"fontColor": "#cad3f5", "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", "fontStyle": "normal",
"backgroundColor": "rgb(30, 32, 48, 0.88)", "backgroundColor": "rgb(30, 32, 48, 0.88)",
"backdropFilter": "blur(6px)",
"hoverTokenColor": "#f4dbd6",
"hoverBackground": "rgba(54, 58, 79, 0.84)",
"preserveLineBreaks": false,
"autoPauseVideoOnHover": true,
"secondary": { "secondary": {
"fontFamily": "Manrope, Inter",
"fontSize": 24, "fontSize": 24,
"fontColor": "#cad3f5", "fontColor": "#cad3f5",
"backgroundColor": "transparent", "backgroundColor": "transparent",
@@ -114,9 +149,20 @@
"sourcePath": "", "sourcePath": "",
"topX": 10000, "topX": 10000,
"mode": "single", "mode": "single",
"matchMode": "headword",
"singleColor": "#f5a97f", "singleColor": "#f5a97f",
"bandedColors": ["#ed8796", "#f5a97f", "#f9e2af", "#a6e3a1", "#8aadf4"], "bandedColors": ["#ed8796", "#f5a97f", "#f9e2af", "#a6e3a1", "#8aadf4"],
}, },
"enableJlpt": true,
"jlptColors": {
"N1": "#ed8796",
"N2": "#f5a97f",
"N3": "#f9e2af",
"N4": "#a6e3a1",
"N5": "#8aadf4",
},
"nPlusOneColor": "#c6a0f6",
"knownWordColor": "#a6da95",
}, },
"jimaku": { "jimaku": {
"apiKeyCommand": "cat ~/.jimaku-api-key", "apiKeyCommand": "cat ~/.jimaku-api-key",
@@ -124,16 +170,20 @@
"languagePreference": "ja", "languagePreference": "ja",
"maxEntryResults": 10, "maxEntryResults": 10,
}, },
"invisibleOverlay": {
"startupVisibility": "platform-default",
},
"youtubeSubgen": { "youtubeSubgen": {
"mode": "automatic", "mode": "automatic",
"whisperBin": "/usr/bin/whisper-cli", "whisperBin": "/usr/bin/whisper-cli",
"whisperModel": "~/models/whisper.cpp/ggml-small.bin", "whisperModel": "~/models/whisper.cpp/ggml-small.bin",
}, },
"anilist": { "anilist": {
"accessToken": "cat ~/.anilist-token.txt", "characterDictionary": {
"enabled": true,
"collapsibleSections": {
"description": false,
"characterInformation": false,
"voicedBy": false,
},
},
}, },
"immersionTracking": { "immersionTracking": {
"enabled": true, "enabled": true,
@@ -143,8 +193,6 @@
"enabled": true, "enabled": true,
"serverUrl": "http://pve-main:8096", "serverUrl": "http://pve-main:8096",
"username": "sudacode", "username": "sudacode",
"accessToken": "",
"userId": "",
"deviceId": "subminer", "deviceId": "subminer",
"clientName": "SubMiner", "clientName": "SubMiner",
"clientVersion": "0.1.0", "clientVersion": "0.1.0",
@@ -159,4 +207,27 @@
"pullPictures": true, "pullPictures": true,
"iconCacheDir": "~/S/japanese/subminer-jellyfin-icons", "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,
},
} }

View File

@@ -5,6 +5,9 @@ font-feature = +calt
font-feature = +liga font-feature = +liga
font-feature = +dlig font-feature = +dlig
theme = Catppuccin Macchiato theme = Catppuccin Macchiato
# Catppuccin Macchiato uses muted ANSI white by default; bump for clearer TUIs.
palette = 7=#cad3f5
palette = 15=#f4dbd6
cursor-style = block cursor-style = block
background-opacity = 1.0 background-opacity = 1.0
window-colorspace = srgb window-colorspace = srgb

View File

@@ -5,6 +5,9 @@ font-feature = +calt
font-feature = +liga font-feature = +liga
font-feature = +dlig font-feature = +dlig
theme = catppuccin-macchiato theme = catppuccin-macchiato
# Catppuccin Macchiato uses muted ANSI white by default; bump for clearer TUIs.
palette = 7=#cad3f5
palette = 15=#f4dbd6
cursor-style = block cursor-style = block
window-padding-x = 10 window-padding-x = 10
window-padding-y = 10 window-padding-y = 10

View File

@@ -112,10 +112,11 @@ bind = SUPER, m, exec, ~/.local/bin/mpv-add.sh
bind = SUPER SHIFT, s, exec, slurp | grim -g - - | wl-copy bind = SUPER SHIFT, s, exec, slurp | grim -g - - | wl-copy
bind = ,code:107, exec, ~/.local/bin/screenshot 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,code:107, exec, flameshot screen
bind = SUPER, o, exec, ~/.local/bin/ocr.sh bind = SUPER, o, exec, ~/.local/bin/ocr.sh
bind = $mainMod, o, exec, ~/.local/bin/rofi-open tab 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 # change wallpaper
bind = $mainMod CTRL, n, exec, ~/.local/bin/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 # F5
bind = ,code:71, exec, ~/projects/scripts/whisper_record_transcribe.py --mode toggle --output type 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)$

View File

@@ -10,7 +10,8 @@ dither=fruit # Lighter dithering aimed at 8-bit or FRC panels
ontop=yes ontop=yes
border=no border=no
no-border 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 osc=no
blend-subtitles=video # Keeps subtitles composited into the video plane blend-subtitles=video # Keeps subtitles composited into the video plane
opengl-early-flush=no # Delay buffer flushes to reduce micro-stutter on some GPUs opengl-early-flush=no # Delay buffer flushes to reduce micro-stutter on some GPUs
@@ -29,8 +30,8 @@ sub-pos=95
# --- Audio chain --- # --- Audio chain ---
volume=75 volume=75
ao=pipewire,pulse ao=pipewire
audio-spdif=ac3,dts-hd,truehd # audio-spdif=ac3,dts-hd,truehd
audio-stream-silence=yes # Keep the device primed to avoid startup pops 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 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 # no, fatal, warn, info, v, debug, trace
msg-level=subs2srs,animecards,mpvacious=error msg-level=subs2srs,animecards,mpvacious=error
msg-level=mpv-yomitan=warn msg-level=subminer=warn
[anime] [anime]
profile-desc="Anime upscaling with ArtCNN" profile-desc="Anime upscaling with ArtCNN"
glsl-shaders="~~/shaders/ArtCNN_C4F32.glsl" glsl-shaders="~~/shaders/ArtCNN_C4F32_DS.glsl"
scale=ewa_lanczossharp scale=ewa_lanczossharp
dither=error-diffusion dither=error-diffusion
deband=yes # Crucial for anime gradients deband=yes # Crucial for anime gradients
@@ -189,3 +190,4 @@ sub-italic=no
sub-ass-override=strip sub-ass-override=strip
sub-line-spacing=0.3 sub-line-spacing=0.3
sub-hinting=light sub-hinting=light
demuxer-mkv-subtitle-preroll=yes

View File

@@ -204,11 +204,12 @@ time_color=#CAD3F5
# color of the chapter title next to timestamp (below seekbar) # color of the chapter title next to timestamp (below seekbar)
chapter_title_color=#A5ADCB chapter_title_color=#A5ADCB
# color of the side buttons (audio, subtitles, playlist, etc.) # 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.) # color of the middle buttons (skip, jump, chapter, etc.)
middle_buttons_color=#A5ADCB middle_buttons_color=#C6A0F6
# color of the play/pause button # color of the play/pause button
playpause_color=#A5ADCB playpause_color=#C6A0F6
# color of the element when held down (pressed) # color of the element when held down (pressed)
held_element_color=#939AB7 held_element_color=#939AB7
# color of a hovered button when hover_effect includes "color" # color of a hovered button when hover_effect includes "color"
@@ -264,6 +265,10 @@ nibbles_top=yes
nibbles_bottom=yes nibbles_bottom=yes
# chapter nibble style. "triangle", "bar" or "single-bar" # chapter nibble style. "triangle", "bar" or "single-bar"
nibbles_style=triangle 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 # automatically set keyframes for the seekbar based on video length
automatickeyframemode=yes automatickeyframemode=yes

View File

@@ -1 +0,0 @@
../../mpv-modules/mpv-youtube-queue/mpv-youtube-queue.lua

View File

@@ -6,7 +6,7 @@ return {
processor = "magick_cli", -- or "magick_cli" processor = "magick_cli", -- or "magick_cli"
integrations = { integrations = {
markdown = { markdown = {
enabled = true, enabled = false,
clear_in_insert_mode = true, clear_in_insert_mode = true,
download_remote_images = true, download_remote_images = true,
only_render_image_at_cursor = false, only_render_image_at_cursor = false,
@@ -22,16 +22,16 @@ return {
filetypes = { "typst" }, filetypes = { "typst" },
}, },
html = { html = {
enabled = false, enabled = true,
}, },
css = { css = {
enabled = false, enabled = true,
}, },
}, },
max_width = nil, max_width = 960,
max_height = nil, max_height = 540,
max_width_window_percentage = nil, 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_enabled = false, -- toggles images when windows are overlapped
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "snacks_notif", "scrollview", "scrollview_sign" }, 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 editor_only_render_when_focused = false, -- auto show/hide images when the editor gains/looses focus

View File

@@ -1,7 +1,7 @@
--- ---
description: Implement a task from Backlog.md end-to-end description: Implement a task from Backlog.md end-to-end
agent: build 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 If there is a backlog folder and/or `Backlog.md` is set up in the repository

View File

@@ -16,6 +16,19 @@
"google": { "google": {
"name": "Google", "name": "Google",
"models": { "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": { "antigravity-gemini-3-pro-high": {
"name": "Gemini 3 Pro High (Antigravity)", "name": "Gemini 3 Pro High (Antigravity)",
"thinking": true, "thinking": true,
@@ -57,7 +70,6 @@
} }
} }
}, },
"theme": "catppuccin-macchiato",
"share": "manual", "share": "manual",
"formatter": { "formatter": {
"prettier": { "prettier": {
@@ -65,6 +77,9 @@
}, },
"ruff": { "ruff": {
"disabled": false "disabled": false
},
"uv": {
"disabled": false
} }
}, },
"instructions": [ "instructions": [
@@ -98,9 +113,10 @@
"git *": "allow", "git *": "allow",
"pnpm *": "allow", "pnpm *": "allow",
"rm *": "deny", "rm *": "deny",
"grep *": "allow", "grep*": "allow",
"wc *": "allow", "wc *": "allow",
"date *": "allow" "date *": "allow",
"printenv AGENT_ID AGENT_ALIAS HEARTBEAT_MINUTES": "allow"
}, },
"external_directory": { "external_directory": {
"*": "ask", "*": "ask",

3
.gitmodules vendored
View File

@@ -28,3 +28,6 @@
[submodule ".config/mpv-modules/ani-skip"] [submodule ".config/mpv-modules/ani-skip"]
path = .config/mpv-modules/ani-skip path = .config/mpv-modules/ani-skip
url = https://github.com/synacktraa/ani-skip.git 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