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": [
"docker"
]
}
},
"skipDangerousModePermissionPrompt": true
}

View File

@@ -107,3 +107,69 @@ Do:
Avoid: purple-on-white clichés, generic component grids, predictable layouts.
</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_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 272273k 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"

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": {
"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,
},
}

View File

@@ -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

View File

@@ -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

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 = ,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)$

View File

@@ -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

View File

@@ -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

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"
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

View File

@@ -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

View File

@@ -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": [
@@ -100,7 +115,8 @@
"rm *": "deny",
"grep*": "allow",
"wc *": "allow",
"date *": "allow"
"date *": "allow",
"printenv AGENT_ID AGENT_ALIAS HEARTBEAT_MINUTES": "allow"
},
"external_directory": {
"*": "ask",

3
.gitmodules vendored
View File

@@ -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