Taltastaturet for Slag viser nå Eagle/Birdie/Par/Bogey/Dobbel bogey under hvert tall, regnet ut fra hullets par — samme prinsipp som videoen, ingen hoderegning nødvendig.
Automatisk fremdrift: når en spillers registrering er "god nok" (slag, eller slag+putter avhengig av statistikknivå), viser knappen nederst enten "Neste: {navn}" (bytter aktiv spiller på samme hull) eller "Neste hull" (er hen den siste, går videre og starter på spiller 1 igjen) — ingen manuell skrolling opp til spillerlisten for å bytte spiller.
Bevisst forskjell fra GameBook: ikke en full skjermovertakende veiviser (det ville vært et større og mer risikofylt bygg uten visuell testing) — samme side, men med den friksjonsreduserende logikken lagt inn. Test gjerne selv, spesielt hvordan det føles å gå gjennom begge spillerne på et hull etter hverandre.
87 lines
7.4 KiB
JSON
87 lines
7.4 KiB
JSON
{
|
|
"permissions": {
|
|
"allow": [
|
|
"Bash(find / -maxdepth 3 -iname \"*zip*18*\")",
|
|
"Bash(find / -maxdepth 4 -iname \"*.zip\" -mmin -120)",
|
|
"Bash(rm -rf /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/zip18)",
|
|
"Bash(mkdir -p /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/zip18)",
|
|
"Bash(unzip -q \"/opt/teecup/tee-cup-login-screen \\(18\\).zip\")",
|
|
"Bash(python3 -m zipfile -e \"/opt/teecup/tee-cup-login-screen \\(18\\).zip\" .)",
|
|
"Bash(grep -v \"ui/dropdown-menu\\\\|^.*DropdownMenuItem,$\\\\|import\")",
|
|
"Bash(python3 test_friends.py)",
|
|
"Bash(curl -s -o /dev/null -w \"people/search \\(anon\\): %{http_code}\\\\n\" \"https://teecup.teeoff.no/people/search?q=test\")",
|
|
"Bash(curl -s -o /dev/null -w \"friends \\(anon\\): %{http_code}\\\\n\" \"https://teecup.teeoff.no/friends\")",
|
|
"Bash(rm -rf /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/zip19)",
|
|
"Bash(mkdir -p /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/zip19)",
|
|
"Bash(python3 -m zipfile -e \"/opt/teecup/tee-cup-login-screen \\(19\\).zip\" .)",
|
|
"Bash(curl -s -o /dev/null -w \"my-friends: %{http_code}\\\\n\" https://teecup.teeoff.no/my-friends)",
|
|
"Bash(python3 test_display_name.py)",
|
|
"Bash(xargs -I{} ls -la {})",
|
|
"Bash(mkdir -p /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/zip20)",
|
|
"Bash(unzip -o \"/opt/teecup/tee-cup-login-screen \\(20\\).zip\")",
|
|
"Bash(python3 -m zipfile -e \"/opt/teecup/tee-cup-login-screen \\(20\\).zip\" .)",
|
|
"Bash(sort -t/ -k1)",
|
|
"Bash(python3 test_notifications_leaderboard.py)",
|
|
"Bash(python3 test_leaderboard_net.py)",
|
|
"Bash(curl -s -o /dev/null -w \"https://teecup.teeoff.no/health -> %{http_code}\\\\n\" https://teecup.teeoff.no/health)",
|
|
"Bash(curl -s -o /dev/null -w \"https://teecup.teeoff.no/dashboard -> %{http_code}\\\\n\" https://teecup.teeoff.no/dashboard)",
|
|
"Bash(curl -s -o /dev/null -w \"https://teecup.teeoff.no/my-notifications -> %{http_code}\\\\n\" https://teecup.teeoff.no/my-notifications)",
|
|
"Bash(curl -s -o /dev/null -w \"https://teeoff.no/ -> %{http_code}\\\\n\" https://teeoff.no/)",
|
|
"Bash(curl -s https://teecup.teeoff.no/notifications)",
|
|
"Bash(grep -n \"God dag, {me.display_name}\" /opt/teecup/frontend/components/dashboard.tsx)",
|
|
"Bash(grep -n \"@router\\\\.\\\\\\(post\\\\|get\\\\\\)\\(\\\\s*$\\\\|@router\\\\.\\\\\\(post\\\\|get\\\\\\)\\(\\\\\"\" /opt/teecup/app/routers/tournaments.py)",
|
|
"Bash(python3 test_holeless_course_crash.py)",
|
|
"Bash(sed -i 's/check\\(\"normal course: hole-score submit still succeeds \\(regression\\)\", status == 200\\)/check\\(\"normal course: hole-score submit still succeeds \\(regression\\)\", status == 201\\)/' test_holeless_course_crash.py)",
|
|
"Bash(sed -i 's/if status != 200:/if status != 201:/' test_holeless_course_crash.py)",
|
|
"Bash(sed -i 's/check\\(\"normal course: second side'\"'\"'s hole-score submit succeeds\", status == 200\\)/check\\(\"normal course: second side'\"'\"'s hole-score submit succeeds\", status == 201\\)/' test_holeless_course_crash.py)",
|
|
"Bash(grep -n \"participantLabel\\(\\\\|export function\\\\|useState<ApiRound\\\\|fetch\\(\\\\`/rounds\" /opt/teecup/frontend/components/round-scorecard.tsx)",
|
|
"Bash(python3 test_round_coplayer.py)",
|
|
"Bash(python3 test_round_coplayer_incomplete.py)",
|
|
"Bash(curl -s -o /dev/null -w \"https://teecup.teeoff.no/my-rounds -> %{http_code}\\\\n\" https://teecup.teeoff.no/my-rounds)",
|
|
"Bash(python3 test_round_realtime.py)",
|
|
"Bash(pip install *)",
|
|
"Bash(python3 -c \"import websockets; print\\(websockets.__version__\\)\")",
|
|
"Bash(python3 -m pip --version)",
|
|
"Bash(python3 -m ensurepip --user)",
|
|
"Bash(curl -sS https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py)",
|
|
"Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" -H \"Connection: Upgrade\" -H \"Upgrade: websocket\" -H \"Sec-WebSocket-Version: 13\" -H \"Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\" https://teecup.teeoff.no/ws/rounds/00000000-0000-0000-0000-000000000000/live)",
|
|
"Bash(curl -s -H \"Connection: Upgrade\" -H \"Upgrade: websocket\" -H \"Sec-WebSocket-Version: 13\" -H \"Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\" https://teecup.teeoff.no/ws/rounds/00000000-0000-0000-0000-000000000000/live)",
|
|
"Bash(grep -n \"participants/\\\\${\" /opt/teecup/frontend/components/round-detail.tsx)",
|
|
"Bash(python3 -)",
|
|
"Bash(curl -s -o /dev/null -w \"teeoff.no: %{http_code}\\\\n\" https://teeoff.no/)",
|
|
"Bash(python3 -c \"import ast; ast.parse\\(open\\('app/routers/rounds.py'\\).read\\(\\)\\)\")",
|
|
"Bash(tee /tmp/ui_round_setup.json)",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/ui_round_setup.json'\\)\\)['round_id']\\)\")",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/ui_round_setup.json'\\)\\)['session_cookie']\\)\")",
|
|
"Bash(docker cp *)",
|
|
"Bash(mkdir -p /opt/teecup/frontend/app/my-rounds/\\\\[id\\\\]/leaderboard)",
|
|
"Bash(node /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/test_leaderboard_rank_logic.mjs)",
|
|
"Bash(tee /tmp/lb_setup.json)",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/lb_setup.json'\\)\\)['round_id']\\)\")",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/lb_setup.json'\\)\\)['session_cookie']\\)\")",
|
|
"Bash(grep -n '^---$' /opt/teecup/FEATURE_BACKLOG.md)",
|
|
"Bash(awk -F: '$1 > 1225 && $1 < 1260')",
|
|
"Bash(tee /tmp/lb_setup2.json)",
|
|
"Bash(python3 -c ' *)",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/lb_setup2.json'\\)\\)['round_id']\\)\")",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/lb_setup2.json'\\)\\)['session_cookie']\\)\")",
|
|
"Bash(node /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/test_leaderboard_points_mode.mjs)",
|
|
"Bash(tee /tmp/lb_setup3.json)",
|
|
"Bash(python3 -c \"import json,sys; d=json.load\\(sys.stdin\\); print\\(d['round_id']\\)\")",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/lb_setup3.json'\\)\\)['round_id']\\)\")",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/lb_setup3.json'\\)\\)['session_cookie']\\)\")",
|
|
"Bash(node /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/test_hole_secondary.mjs)",
|
|
"Bash(tee /tmp/lb_setup4.json)",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/lb_setup4.json'\\)\\)['round_id']\\)\")",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/lb_setup4.json'\\)\\)['session_cookie']\\)\")",
|
|
"Bash(ffprobe -v error -show_entries format=duration,size -show_entries stream=width,height,codec_name -of default=noprint_wrappers=0 /opt/teecup/screen-20260726-152057-1785072037213.mp4)",
|
|
"Bash(node /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/test_scoring_wizard_logic.mjs)",
|
|
"Bash(tee /tmp/wizard_setup.json)",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/wizard_setup.json'\\)\\)['round_id']\\)\")",
|
|
"Bash(python3 -c \"import json; print\\(json.load\\(open\\('/tmp/wizard_setup.json'\\)\\)['session_cookie']\\)\")"
|
|
],
|
|
"additionalDirectories": [
|
|
"/opt/teecup/frontend/app/my-rounds/[id]"
|
|
]
|
|
}
|
|
}
|