aimeri/spoomplesmaxx-whiskeyjack-12B
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>SpoomplesMaxx Whiskeyjack 12B</title> </head> <style> @import url("https://fonts.googleapis.com/css2?family=Consolas&display=swap"); .crt-container { padding: 10px; max-width: 1000px; margin: 0 auto; width: 95%; } .crt-case { background: #e8d7c3; border-radius: 10px; padding: 15px; box-shadow: inset -2px -2px 5px rgba(0, 0, 0, 0.3), 2px 2px 5px rgba(0, 0, 0, 0.2); } .crt-inner-case { background: #e8d7c3; border-radius: 8px; padding: 3px; box-shadow: inset -1px -1px 4px rgba(0, 0, 0, 0.3), 1px 1px 4px rgba(0, 0, 0, 0.2); } .crt-bezel { background: linear-gradient(145deg, #1a1a1a, #2a2a2a); padding: 15px; border-radius: 5px; border: 3px solid #0a0a0a; position: relative; box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.5), inset 0 0 4px rgba(0, 0, 0, 0.4), inset 2px 2px 4px rgba(255, 255, 255, 0.05), inset -2px -2px 4px rgba(0, 0, 0, 0.8), 0 0 2px rgba(0, 0, 0, 0.6), -1px -1px 4px rgba(255, 255, 255, 0.1), 1px 1px 4px rgba(0, 0, 0, 0.3); } .crt-bezel::before { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient( 45deg, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0) 40%, rgba(0, 0, 0, 0.1) 60%, rgba(0, 0, 0, 0.2) 100% ); border-radius: 3px; pointer-events: none; } .terminal-screen { background: #0c100d; padding: 20px; border-radius: 15px; position: relative; overflow: hidden; font-family: "Consolas", monospace; font-size: clamp(12px, 1.5vw, 16px); color: #3dc862; line-height: 1.4; text-shadow: 0 0 2px #3dc862; filter: brightness(1.1) contrast(1.1); box-shadow: inset 0 0 30px rgba(0, 0, 0, 0.9), inset 0 0 8px rgba(0, 0, 0, 0.8), 0 0 5px rgba(0, 0, 0, 0.6); max-width: 80ch; margin: 0 auto; } .terminal-screen h2, .terminal-screen h3 { font-size: clamp(16px, 2vw, 20px); margin-bottom: 1em; color: #ffdf00; text-shadow: 0 0 3px rgba(255, 223, 0, 0.5); } .terminal-screen pre.code-block-image { display: inline-block; text-align: left; font-size: clamp(2px, 0.4vw, 12px); font-family: monospace; margin: 1em 0; background-color: #1a1a1a; padding: 1em; border-radius: 4px; color: #3dc862; overflow-x: auto; line-height: 1; max-width: 100%; overflow: hidden; white-space: pre; } .terminal-screen pre.code-block { display: inline-block; text-align: left; font-size: clamp(10px, 1.3vw, 14px); font-family: monospace; margin: 1em 0; background-color: #1a1a1a; padding: 1em; border-radius: 4px; color: #3dc862; overflow-x: auto; line-height: 1; max-width: 100%; overflow: hidden; white-space: pre; } .terminal-screen::before { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient( rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50% ), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4o8JoAAAAB3RSTlMAGwQIEQMYADcPzwAAACJJREFUKM9jYBgFo2AU0Beg+A8YMCLxGYZCbNQEo4BaAAD5TQiR5wU9vAAAAABJRU5ErkJggg=="); background-size: 100% 2.5px; pointer-events: none; z-index: 2; } .terminal-screen::after { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient( circle at center, rgba(12, 16, 13, 0) 0%, rgba(12, 16, 13, 0.2) 50%, rgba(12, 16, 13, 0.15) 100% ); border-radius: 20px; pointer-events: none; z-index: 1; } .terminal-screen .notice { margin: 1.5em 0; padding: 0.8em 1.2em; border: 1px solid #ffdf00; border-radius: 4px; background-color: rgba(255, 223, 0, 0.04); } .terminal-screen .notice h3 { margin-top: 0.2em; margin-bottom: 0.5em; } .terminal-screen .notice p { margin-bottom: 0.2em; } .terminal-screen strong, .terminal-screen em { color: #f0f0f0; } .terminal-screen p, .terminal-screen li { color: #3dc862; } .terminal-screen a { color: #5da9ff; text-decoration: underline; text-shadow: 0 0 2px rgba(93, 169, 255, 0.5); transition: opacity 0.2s; } .terminal-screen a:hover { opacity: 0.8; } .terminal-screen code, .terminal-screen kbd, .terminal-screen samp { color: #3dc862; font-family: "Consolas", monospace; text-shadow: 0 0 2px #3dc862; background-color: #1a1a1a; padding: 0.2em 0.4em; border-radius: 4px; } </style> <div class="crt-container"> <div class="crt-case"> <div class="crt-inner-case"> <div class="crt-bezel"> <div class="terminal-screen"> <div style="text-align: center"> <h2>SpoomplesMaxx-Whiskeyjack-12B</h2> <h3>"Camp Robber"</h3> <pre class="code-block-image"> ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░▒▓▓▓▓▓▓░▓░░▒░▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▒▒░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒░░░▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▒▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░▒░▒░░▒░░░░░░▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░▒░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░▒░▒░░░░▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓░░░░░░░░░░░░▓░░▒░▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░▓░░░░░░▒░░░▒░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓░░░░░▓░░░░░▒░░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░▓░░░░░▓░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▒░▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓░░░▓░░░░░░░░░░░░░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░▒░░▒░░░▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓░▓░░░▒░░▓░▒▓░░░▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░▓▓▓▓▓▓▓▓▓▓▓░░▒░▓░░▓░░░░░▒▒▒▒▒▒▒▒▓▒▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░▓▓▓▓▓▓▓▓▓▓▒░░░░▓░▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▓░░▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▒░░░░░░░▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░▓▓▓▓░░▓▓▓▓░░░▒░▓░░░░░░░░░░░░░░░▒░▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓░░░░░░░░▒▓▓░░░░░░░░░░░▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░▓▓▓░░░▓▓▓░░░░▓░░░░░░░░▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓░░░░▓░░░░░░░░▓▓▓▓▓░░▓▓▓▓░░░░░░░░░▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓░░░░▓▓░░░▓░░▒░░░░░▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓░░░░░▓░░░░░▓▓▓▓▓▓▓▓▓▓░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓░░░░▓▓▓░▓░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓░░░░░░░░▓▓▓░░░▓▓▓▓▓▒░░░░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓░▓░▓░▓░░░░░▓░▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓░░░░░░░░░▓▓░░▓▓▓▓▓▒░░░░░░▓░░░▓▓▓▓▓▓▓▓░░░░░░░▓░▓░▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▒░░░▒▓▓▓▓▓░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓░░░░░░░▓░▓▓▓▓▓▒░░░░░░░░░░▓▓▓▓▓░░░░░░░░░░▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓░░░░░░▓▓▓▒░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓░░░░░░░░░▓▓▓░░░░░░░░░░▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░▓▓░░░░░░▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓░░░░░░░░░▓░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░▓▓░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓▓░░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░▓▓▓░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓░░░░░░░▓░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░▓▓▓▓▓░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓░░░░░░░░▒░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░▓▓▓▓▓▓▓▓▓░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░▒░░▒░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░▓░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓░░░░░░░▓░░░▓░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓░░░░░░░░▓░░░▒░░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓░░░░░░▓▓▓░░▒░░░▒░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓░▒░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ </pre> </div> <p> SpoomplesMaxx is a generalist model line with primary strengths in creative writing and roleplay, plus competence at instruction following, reasoning, and tool calling. Whiskeyjack brings the corvid line to Gemma: a full-parameter SFT of <strong>gemma-4-12B</strong>, trained in both thinking and non-thinking modes, with thinking off by default. </p> <p> Named for <em>Perisoreus canadensis</em> — the Canada jay, better known as the whisky jack or camp robber. A corvid bold enough to land on your hand and fly off with your lunch. The 35B got the jackdaw; the 12B gets the smaller, friendlier thief. </p> <h3>Prompt format</h3> <p> Gemma 4 uses a new turn format. It shares nothing with Gemma 3 — there is no <code><startofturn></code> — and the assistant role is spelled <code>model</code>: </p> <pre class="code-block"> <|turn>user ...<turn|> <|turn>model <|channel>thought ...reasoning... <channel|>...answer...<turn|> </pre> <pre class="code-block"> STOPS: stop on <turn|> (id 106). <eos> (id 1) is kept as a secondary EOS, but never set <eos> alone -- turns end on <turn|>. </pre> <p> The control tokens (<code><turn|></code>, <code><|channel></code>/<code><channel|></code>, <code><|toolcall></code>/<code><toolcall|></code>) were audited before training and re-verified after it: stop battery, boundary probes, and a tool-call battery all pass on the published checkpoint. </p> <h3>Thinking behavior</h3> <p> Thinking is opt-in and <strong>off by default</strong>. A <code><|think|></code> marker at the top of the <strong>system</strong> turn switches it on; <code>applychattemplate(enablethinking=True)</code> injects it for you. Both modes share the same bare <code><|turn>model</code> generation prefix — the model decides on its own whether to open <code><|channel>thought</code>. </p> <pre class="code-block"> MODE CONTROL: (default) thinking OFF -- no marker, no thought channel enablethinking=True injects <|think|> into the system turn; the model opens <|channel>thought on its own
PARSER NOTE: reasoning sits between <|channel>thought and <channel|>; the visible answer follows <channel|> in the same turn </pre> <div class="notice"> <h3>The chat template is not stock Gemma 4</h3> <p> Upstream Gemma 4 appends an empty thought channel (<code><|channel>thought\n<channel|></code>) to non-thinking turns. That form shows up <strong>0 times in 1,000 training turns</strong> of this corpus — a no-thoughts turn simply carries no channel — so the template here drops it. The stock template ships alongside as <code>chattemplate.gemma-it-original.jinja</code>. Restore it and you push the model out of distribution: reasoning leaks into the answer and tool calls lose their opener. </p> </div> <p> What the thoughts look like depends on the system prompt. Under a SillyTavern-style character card the model writes a structured planner (~750 chars; 23/23 of the cards that opened a channel). Under the corpus's own RP framing it writes short first-person interiority (~90 chars). The model learned both forms separately, and the prompt picks which one you get. </p> <p>The planner, when it shows up:</p> <pre class="code-block"> SCENE: where/when, atmosphere, key environmental details currently in play CHARACTERS: who is present and their current physical/emotional state and motivation CONTINUITY: established facts that must stay consistent THREADS: active tensions and where they stand right now PLAN: what THIS turn needs to accomplish and the approach it takes </pre> <p> One more thing to expect: a conversational companion persona usually produces no thought channel at all (0/6 in testing), even with thinking on. Companion rows in the corpus are mostly non-thinking, and the model follows the data. </p> <h3>Tool calling</h3> <p> Gemma 4 tool calls use a DSL, <strong>not JSON</strong>: </p> <pre class="code-block"> FORM: <|toolcall>call:NAME{key:<|"|>value<|"|>}<toolcall|> EXAMPLE: <|toolcall>call:getweather{city:<|"|>Lisbon<|"|>}<toolcall|> </pre> <div class="notice"> <h3>Serve tool calls inside one turn</h3> <p> In the training corpus a whole tool episode lives inside a single <code><|turn>model</code>, with <code><|toolresponse></code> blocks interleaved inline. The model never emitted <code><turn|></code> after a call, so it never learned to yield there. A harness that waits for <code><turn|></code> will hang while the model keeps generating plausible calls — the classic infinite tool loop. </p> <pre class="code-block"> SERVE WITH: stop=["<toolcall|>"] THEN: inject <|toolresponse>response:NAME{...}<toolresponse|> and continue the SAME turn NEVER: wait for <turn|> after a tool call </pre> </div> <h3>Key Details</h3> <pre class="code-block"> BASE MODEL: google/gemma-4-12B LICENSE: gemma NOTE: the base is multimodal, so the checkpoint loads with AutoModelForImageTextToText (see Quickstart)</pre> <h3>Training</h3> <pre class="code-block"> METHOD: FULL-PARAMETER SFT -- ms-swift (swift sft), DeepSpeed ZeRO-2, torch SDPA attention, custom liger fused CE STAGES: three, each tagged in this repo; main = stage 3
stage 1 (v1-baseline-rp) aviary burn corpus, 1 epoch 1,917 steps @ lr 1e-5 eval 1.311 tok-acc 0.6465 stage 2 (v2-corrected-rp) thinking-weighted resample 568 steps @ lr 2e-6 eval 1.3067 tok-acc 0.6479 stage 3 (main) + 4,000 converted RP-reasoning rows 574 steps @ lr 2e-6 eval 1.301 tok-acc 0.6491 </pre> <div class="notice"> <h3>Why there is a stage 3</h3> <p> Stage 2 could think, but only under one prompt shape: 19,605 of the corpus's 20,666 thought-bearing rows share a single RP framing. So the model opened a thought channel on 8/8 in-corpus rows — and on 1 of 25 real character cards. Stage 3 mixed in RP-reasoning rows under ~4,000 distinct character cards so that thinking no longer depends on one specific prompt. </p> <pre class="code-block"> opens a thought channel on 25 held-out character cards (846-5,053 chars, short opening message): stage 2: 1/25 (4%) stage 3: 23/25 (92%)
unchanged across the pass: stop rate 10/10 in both thinking and non-thinking modes tool-call round trip passes stray channels with thinking off: 0/3 P(<channel|>) at the true close: 1.000 </pre> </div> <h3>Sampling</h3> <p> Use the defaults in <code>generationconfig.json</code>. <pre class="code-block"> "temperature": 1.0, "topk": 64, "topp": 0.95, </pre> </p> <h3>Quickstart</h3> <pre class="code-block"> from transformers import AutoModelForImageTextToText, AutoTokenizer tok = AutoTokenizer.frompretrained("aimeri/spoomplesmaxx-whiskeyjack-12B") model = AutoModelForImageTextToText.frompretrained( "aimeri/spoomplesmaxx-whiskeyjack-12B", dtype="bfloat16", devicemap="auto") msgs = [{"role": "user", "content": "Solve (x + 2)^2 = 0."}] ids = tok.applychattemplate(msgs, addgenerationprompt=True, enablethinking=True, returntensors="pt").to(model.device) out = model.generate(ids, maxnewtokens=512) print(tok.decode(out[0][ids.shape[1]:], skipspecialtokens=False)) </pre> <p>This one will hear how unhinged you are</p> </div> </div> </div> </div> </div>
</html>
