Giancarmine Salucci
697f7de9d1
ci: retry gradlew up to 3x to survive transient CDN/network errors
Android Build & Publish / android (push) Successful in 2m0s
build-103
build-104
build-105
build-106
build-107
build-108
build-109
build-110
build-111
build-112
build-113
build-114
build-115
build-116
build-117
build-118
build-119
build-120
build-121
build-122
build-123
build-124
build-125
build-126
build-127
build-128
build-129
build-130
build-131
build-132
build-133
build-134
build-135
build-136
build-137
build-138
build-139
build-140
build-141
build-142
build-143
build-144
build-145
build-146
build-147
build-148
build-149
build-150
build-151
build-152
build-153
build-154
build-155
build-156
build-157
build-158
build-159
build-160
build-161
build-162
build-163
build-164
build-165
build-166
build-167
build-168
build-169
build-170
build-171
build-172
build-173
build-174
build-175
build-176
build-177
build-178
build-179
build-180
build-181
build-182
build-183
build-184
build-185
build-186
build-187
build-188
build-189
build-190
build-191
build-192
build-193
build-194
build-195
build-196
build-197
build-198
build-199
build-200
build-201
build-202
build-203
build-204
build-205
build-206
build-207
build-208
build-209
build-210
build-211
build-212
build-213
build-214
build-215
build-216
build-217
build-218
build-219
build-220
build-221
build-222
build-223
build-224
build-225
2026-05-25 16:44:44 +02:00
Giancarmine Salucci
3204a19dc1
ci: retrigger after docker hub flake (run 87)
Android Build & Publish / android (push) Failing after 32s
build-88
build-89
build-90
build-91
build-92
build-93
build-94
build-95
build-96
build-97
build-98
build-99
build-100
build-101
2026-05-25 13:39:24 +02:00
Giancarmine Salucci
3088fa36dc
fix: avoid SIGPIPE (exit 141) in release changelog step under pipefail
Android Build & Publish / android (push) Failing after 11s
build-11
build-12
build-13
build-14
build-15
build-16
build-17
build-18
build-19
build-20
build-21
build-22
build-23
build-24
build-25
build-26
build-27
build-28
build-29
build-30
build-31
build-32
build-33
build-34
build-35
build-36
build-37
build-38
build-39
build-40
build-41
build-42
build-43
build-44
build-45
build-46
build-47
build-48
build-49
build-50
build-51
build-52
build-53
build-54
build-55
build-56
build-57
build-58
build-59
build-60
build-61
build-62
build-63
build-64
build-65
build-66
build-67
build-68
build-69
build-70
build-71
build-72
build-73
build-74
build-75
build-76
build-77
build-78
build-79
build-80
build-81
build-82
build-83
build-84
build-85
build-86
2026-05-25 09:46:16 +02:00
Giancarmine Salucci
b2a84eb167
feat: CI creates Gitea releases with changelog, app polls for updates on startup
...
Android Build & Publish / android (push) Failing after 2m0s
- android-build.yml: fetch full history+tags, embed VITE_APP_BUILD, add step
to create a tagged Gitea release (build-N) with markdown changelog and APK
release assets after every push; bump permissions to contents:write
- src/game/update-check.ts: polls Gitea releases/latest, compares build-N tag
against CURRENT_BUILD (0 in dev), returns UpdateInfo or null; dismissal
persisted to localStorage
- src/vite-env.d.ts: TypeScript env declarations for VITE_APP_BUILD
- src/scenes/MenuScene.ts: fire-and-forget update check on menu load; renders
dismissible bottom-bar banner with optional APK download link
- src/game/ai.ts: early-game empty-table dump heuristic (safest card first)
2026-05-25 09:39:08 +02:00
Giancarmine Salucci
49e51748d7
ci: use PACKAGE_TOKEN (bearer) for package registry upload
Android Build & Publish / android (push) Successful in 2m0s
2026-05-25 09:00:17 +02:00
Giancarmine Salucci
58494f37ab
Merge feature/SCOPONE-0013: AI rewrite + Gitea CI pipeline
Android Build & Publish / android (push) Successful in 2m2s
2026-05-25 08:56:02 +02:00
Giancarmine Salucci
641f678ddd
ci: downgrade upload-artifact to v3 (v4 not supported on Gitea/GHES)
Android Build & Publish / android (push) Successful in 2m1s
2026-05-24 16:51:32 +02:00
Giancarmine Salucci
bfb0cc87ca
ci: save APKs as workflow artifacts; best-effort package registry upload
Android Build & Publish / android (push) Failing after 1m58s
2026-05-24 16:48:12 +02:00
Giancarmine Salucci
052728c168
ci: use github.token for package upload (respects permissions:packages:write), fix curl status capture
Android Build & Publish / android (push) Failing after 1m56s
2026-05-24 16:44:15 +02:00
Giancarmine Salucci
e5c85981f8
ci: upgrade to JDK 21 (project targets JavaVersion.VERSION_21)
Android Build & Publish / android (push) Failing after 2m4s
2026-05-24 16:38:55 +02:00
Giancarmine Salucci
ca75710285
ci: use Node 22 (capacitor/cli requires >=22), refresh lock file
Android Build & Publish / android (push) Failing after 1m8s
2026-05-24 16:36:22 +02:00
Giancarmine Salucci
bfa5797f2b
ci: fix SIGPIPE in sdkmanager --licenses step (exit 141)
Android Build & Publish / android (push) Failing after 20s
2026-05-24 16:33:22 +02:00
Giancarmine Salucci
3f74c57665
feat(SCOPONE-0013): PIMC AI rewrite + Gitea Android CI pipeline
...
Android Build & Publish / android (push) Failing after 2m10s
- Replace minimax with PIMC (Perfect Information Monte Carlo) search
- Add PIMC_SCOPE_BOOST=150 → effective scopa value 540 (was 390)
→ Master win rate: 67.5% → 72.5% vs legacy AI (target ≥60%)
→ Advanced win rate: 97.5% vs beginner AI (target ≥55%)
→ Scope gap in losses: 6.54 → 3.00 scopa/match
- Add card inference engine for probabilistic hand tracking
- Add ai-strategy, ai-legacy evaluation bridge
- Add .gitea/workflows/android-build.yml: build debug + unsigned
release APK and publish to Gitea generic package registry
2026-05-24 16:29:04 +02:00
Giancarmine Salucci
17f371d5ee
fix(SCOPONE-0012): complete iteration 4 - rebalance scopa priority
2026-04-11 21:20:08 +02:00
Giancarmine Salucci
7a64e923f1
fix(SCOPONE-0012): complete iteration 3 - pass ai quality gate
2026-04-11 21:02:58 +02:00
Giancarmine Salucci
3d76fb544f
fix(SCOPONE-0012): complete iteration 2 - speed up benchmark timer
2026-04-11 19:52:44 +02:00
Giancarmine Salucci
38f675eda5
fix(SCOPONE-0011): complete iteration 0 - tune ai and ui
2026-04-10 23:29:51 +02:00
Giancarmine Salucci
45dfbf65e5
Merge branch 'feature/SCOPONE-0010_capture_settings_copy'
2026-04-10 22:35:24 +02:00
Giancarmine Salucci
5370876db3
feat(SCOPONE-0010): vendor agent assets and clean docs
2026-04-10 22:35:01 +02:00
Giancarmine Salucci
a4e2891c87
feat(SCOPONE-0010): redesign main menu layout
2026-04-10 11:41:11 +02:00
Giancarmine Salucci
c107489b0a
feat(SCOPONE-0010): improve capture pacing and settings
2026-04-09 23:00:59 +02:00
Giancarmine Salucci
77ab1f43a6
feat(SCOPONE-0009) improve ai, dealer, apparigliare e sparigliare
2026-04-09 22:30:27 +02:00
Giancarmine Salucci
d0a44d295a
feat(SCOPONE-0009): complete iteration 0 dealer AI
2026-04-08 21:50:40 +02:00
Giancarmine Salucci
c9accb7ae4
fix(SCOPONE-0008): refresh lag fix docs
2026-04-02 20:55:49 +02:00
Giancarmine Salucci
5b360bf191
fix(SCOPONE-0008): complete iteration 1 remove ai lag
2026-04-02 20:51:43 +02:00
Giancarmine Salucci
019c4380be
feat(SCOPONE-0008): refresh project docs
2026-04-02 20:16:27 +02:00
Giancarmine Salucci
747da35190
feat(SCOPONE-0008): complete iteration 0 improve ai rules
2026-04-02 20:10:55 +02:00
Giancarmine Salucci
e4edc4d660
fullscreen
2026-04-01 22:24:10 +02:00
Giancarmine Salucci
113bb12723
fix(SCOPONE-0006): remove stale capture handlers when switching card selection
...
- Track table card images with capture listeners in captureListenerImgs[]
- Clear pointerdown handlers in clearHighlights() before destroying overlays
- Prevents wrong capture executing when selecting a different hand card
2026-04-01 10:54:45 +02:00
Giancarmine Salucci
30897c5eb3
chore(SCOPONE-0006): complete iteration 0 — fix scopa rule and improve AI intelligence
2026-04-01 09:44:15 +02:00
Giancarmine Salucci
185f7c36c7
perf(ai): optimize AI decision speed — fast clone, reduced search, time budget
...
SCOPONE-0005 iteration 8
- Replace JSON.parse/stringify deepClone with hand-written cloneState() (~10-50x faster)
- Export cloneState from engine.ts, use in applyMove and generateSamples
- Master: reduce samples 24→10 (14 endgame), depth 8→6 (8 endgame)
- Add 1.5s time budget with early termination in masterMove and alphaBeta
- evaluateFast(): single-pass pile scan, zero array allocations at leaf nodes
- Simplified move ordering in alphaBeta (captures-first, no per-move eval)
- Skip countScopaThreats when tableSum >= 11 (impossible to clear)
- Remove unused calcPrimiera import from ai.ts
2026-03-31 23:34:22 +02:00
Giancarmine Salucci
a045efd798
feat(ai): improve all difficulty levels with race tracking, probabilistic threats, deeper search
...
SCOPONE-0005 iteration 7
Beginner:
- Random chance 15%→8%, noise ±40%→±25%
- Hard settebello protection, anti-scopa table management
Advanced:
- Race-aware scoring: adapt priorities per scoring category
- Partner scopa setup: +70 bonus for clearable table before partner
- Probabilistic two-opponent threat assessment (hypergeometric)
- Stronger anti-scopa penalties across all table states
Master:
- Samples 16→24 (28 endgame), exact solve ≤6 cards
- Depth 6→8 (10 endgame, full depth ≤6 cards)
- Better evaluation: scope 350, settebello 400, table awareness
- Improved move ordering: settebello + anti-scopa factors
2026-03-31 23:26:42 +02:00
Giancarmine Salucci
0b1c7f6386
feat(SCOPONE-0005): iteration 6 — rewrite AI with team cooperation and deeper search
2026-03-31 23:15:45 +02:00
Giancarmine Salucci
d80d4df6bd
feat(SCOPONE-0005): iteration 5 — sort hand by value then suit
2026-03-31 23:05:00 +02:00
Giancarmine Salucci
c3a79b028b
feat(SCOPONE-0005): iteration 4 — sort hand cards by suit then value
2026-03-31 23:01:15 +02:00
Giancarmine Salucci
2f58da8a63
feat(SCOPONE-0005): complete iteration 3 — restore labels, move turn bar below cards
2026-03-31 22:42:12 +02:00
Giancarmine Salucci
138f28542a
feat(SCOPONE-0005): complete iteration 2 — move turn indicators below player cards
2026-03-31 22:38:37 +02:00
Giancarmine Salucci
9c096b88bf
feat(SCOPONE-0005): complete iteration 1 — move player indicators into table
2026-03-31 22:36:16 +02:00
Giancarmine Salucci
0a030d0f01
feat(SCOPONE-0005): complete iteration 0 — AI mastery levels, score bar fix, difficulty selection
2026-03-31 22:22:24 +02:00
Giancarmine Salucci
6c01044c71
fix(SCOPONE-0004): improve UI text readability and score bar contrast
...
- MenuScene: add resolution: 2 to all text styles for crisp rendering
- GameScene score bar: solid opaque background, brighter column headers (#999999 ), visible gold separator (alpha 0.7), resolution: 2
- GameScene player labels: reposition to viewport edges (South bottom, West left, East right), North after cards near table
- Add resolution: 2 to all player label text styles
2026-03-31 21:34:18 +02:00
Giancarmine Salucci
54a55b9269
Merge branch 'feature/SCOPONE-0003_choose_capture_target' into feature/SCOPONE-0002_rotate_round_starter
2026-03-31 21:07:44 +02:00
Giancarmine Salucci
21384c8191
chore: update findings and atlas
2026-03-31 21:07:28 +02:00
Giancarmine Salucci
9524161481
feat(SCOPONE-0003): allow player to choose capture target
...
- findCaptures() returns each direct match as separate option plus sum subsets
- highlightMultipleCaptures() uses distinct colors per capture option
- clicking highlighted table cards confirms that option's capture
2026-03-31 19:59:38 +02:00
Giancarmine Salucci
529b93e662
feat(SCOPONE-0002): rotate starting player clockwise each round
2026-03-31 19:31:00 +02:00
Giancarmine Salucci
3d1f3e5eb4
chore: initial commit
2026-03-31 18:38:34 +02:00