Gitea CI
a99819eff2
chore(deploy): bump image to 005efa2e [skip ci]
2026-07-06 19:56:12 +00:00
Gitea CI
0998f226ce
chore(deploy): bump image to 2869e1c3 [skip ci]
2026-06-26 21:36:34 +00:00
Gitea CI
2399d7c06c
chore(deploy): bump image to 783f0162 [skip ci]
2026-06-26 21:18:02 +00:00
Gitea CI
3b59116206
chore(deploy): bump image to 3daaf476 [skip ci]
2026-06-26 20:32:11 +00:00
Gitea CI
2d7a229f52
chore(deploy): bump image to 0ed91ea2 [skip ci]
2026-06-26 20:13:37 +00:00
Gitea CI
10cf87649c
chore(deploy): bump image to e2082450 [skip ci]
2026-06-26 19:18:47 +00:00
Gitea CI
21d3d088ca
chore(deploy): bump image to 0247efcb [skip ci]
2026-06-26 19:05:17 +00:00
Gitea CI
8a880f3521
chore(deploy): bump image to 2fc190ee [skip ci]
2026-06-25 17:27:14 +00:00
Gitea CI
3673c1c2f2
chore(deploy): bump image to 22334e0d [skip ci]
2026-06-25 17:13:16 +00:00
Gitea CI
d083cbd4a8
chore(deploy): bump image to fde863a4 [skip ci]
2026-06-25 17:00:22 +00:00
Gitea CI
8a059e4a5e
chore(deploy): bump image to 79ddfbc0 [skip ci]
2026-06-24 17:46:12 +00:00
Gitea CI
8bfec9174f
chore(deploy): bump image to 79193657 [skip ci]
2026-06-24 17:33:05 +00:00
Gitea CI
96b9b18017
chore(deploy): bump image to 189e0afd [skip ci]
2026-06-24 17:13:07 +00:00
Gitea CI
1e06e095a8
chore(deploy): bump image to a5902ac0 [skip ci]
2026-06-24 16:54:33 +00:00
Gitea CI
52db85d8ee
chore(deploy): bump image to a46505fe [skip ci]
2026-06-24 16:43:58 +00:00
Gitea CI
1c720a5ad0
chore(deploy): bump image to 1602f195 [skip ci]
2026-06-24 16:25:43 +00:00
Gitea CI
4ea3168cf2
chore(deploy): bump image to c232444e [skip ci]
2026-06-24 02:22:02 +00:00
Gitea CI
0d48deeae0
chore(deploy): bump image to 56e05caa [skip ci]
2026-06-24 02:04:45 +00:00
Gitea CI
81ff6ad465
chore(deploy): bump image to 1e061989 [skip ci]
2026-06-24 01:51:06 +00:00
Gitea CI
5dcf8b9f87
chore(deploy): bump image to 4850e941 [skip ci]
2026-06-24 01:20:42 +00:00
Gitea CI
38151d8a15
chore(deploy): bump image to b3b282ec [skip ci]
2026-06-24 00:51:00 +00:00
Gitea CI
df743d9276
chore(deploy): bump image to 923a67dc [skip ci]
2026-06-24 00:24:48 +00:00
Gitea CI
ee0316f234
chore(deploy): bump image to 0b7a24a7 [skip ci]
2026-06-23 17:27:04 +00:00
Gitea CI
6b86a90d3d
chore(deploy): bump image to fc45b6d2 [skip ci]
2026-06-23 17:07:21 +00:00
Gitea CI
ff6efe433f
chore(deploy): bump image to b3a8575b [skip ci]
2026-06-22 19:22:38 +00:00
Gitea CI
250875bd10
chore(deploy): bump image to da165f16 [skip ci]
2026-06-22 19:14:14 +00:00
Gitea CI
9c3afebf56
chore(deploy): bump image to 5af69d75 [skip ci]
2026-06-22 19:02:23 +00:00
Gitea CI
956a7777e2
chore(deploy): bump image to 32400356 [skip ci]
2026-06-09 02:14:53 +00:00
Gitea CI
d0fa79fa1a
chore(deploy): bump image to 159774f8 [skip ci]
2026-06-09 02:10:35 +00:00
Gitea CI
cac85156d8
chore(deploy): bump image to 7fe6ac6c [skip ci]
2026-06-09 02:09:09 +00:00
Gitea CI
9372c9cba6
chore(deploy): bump image to 7dbf34c1 [skip ci]
2026-06-08 18:14:35 +00:00
Gitea CI
f4f2ef7b7d
chore(deploy): bump image to 2cf72821 [skip ci]
2026-06-02 20:45:47 +00:00
Gitea CI
9ae940dff6
chore(deploy): bump image to 8b262afc [skip ci]
2026-06-02 20:36:31 +00:00
Gitea CI
b966708228
chore(deploy): bump image to 8b736cae [skip ci]
2026-06-02 20:27:59 +00:00
Gitea CI
31fc0eb9ec
chore(deploy): bump image to de7ae168 [skip ci]
2026-06-02 20:04:37 +00:00
Gitea CI
e80ac5e636
chore(deploy): bump image to d45b7cb8 [skip ci]
2026-06-02 19:44:37 +00:00
Gitea CI
f8d15d39f2
chore(deploy): bump image to 763fdb48 [skip ci]
2026-06-02 19:43:43 +00:00
Gitea CI
2f9cd1a32d
chore(deploy): bump image to 1cdb78ca [skip ci]
2026-06-02 19:26:23 +00:00
Gitea CI
4dc5956552
chore(deploy): bump image to 20e52221 [skip ci]
2026-06-01 22:30:58 +00:00
Gitea CI
627b116c12
chore(deploy): bump image to 44e90ff5 [skip ci]
2026-06-01 22:03:04 +00:00
Gitea CI
dc0ce8cd02
chore(deploy): bump image to 7eb1181e [skip ci]
2026-05-28 21:45:02 +00:00
Gitea CI
4c517f4ccd
chore(deploy): bump image to 6e407a3e [skip ci]
2026-05-28 20:45:06 +00:00
Gitea CI
7a523f3963
chore(deploy): bump image to 561395fc [skip ci]
2026-05-28 00:34:41 +00:00
Gitea CI
e46b3fce2e
chore(deploy): bump image to 25c43db6 [skip ci]
2026-05-27 21:44:57 +00:00
Gitea CI
07c05179c3
chore(deploy): bump image to ecab227b [skip ci]
2026-05-19 23:58:50 +00:00
funman300
ecab227b8d
ci(deploy): push kustomization updates to deploy branch, not master
...
Build and Deploy / build-and-push (push) Successful in 21s
The CI bot was committing image-tag bumps back to master after every
Docker build, which forced a `git pull --rebase` before every developer
push. Moving the kustomization commit to a dedicated `deploy` branch
keeps master clean — the build bot no longer diverges it.
Argo CD / Flux should now watch the `deploy` branch (targetRevision:
deploy) instead of master.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-19 16:57:20 -07:00
funman300
da601bebd6
fix(engine,wasm,web): detect no-legal-moves correctly and surface banner
...
Build and Deploy / build-and-push (push) Successful in 4m24s
Engine: replace broken has_legal_moves loop (which checked buried
mid-column cards without sequence validation) with a delegation to
possible_instructions(), mirroring the hint system's logic exactly.
WASM: add has_moves: bool to GameSnapshot, computed in snap() using the
same stock/waste/possible_instructions check so the web client gets the
flag in every state update at no extra round-trip cost.
Web: show a non-blocking no-moves banner (slide-up toast) with Undo and
New Game actions when has_moves is false and the game is not won. Banner
hides automatically once a move restores legal play (e.g. after undo).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-19 16:54:01 -07:00
Gitea CI
a2dd8d220c
chore(deploy): bump image to d5d869a6 [skip ci]
2026-05-19 23:31:16 +00:00
funman300
d5d869a6c8
fix(multi): resolve 16 bugs from comprehensive rules and code review
...
Build and Deploy / build-and-push (push) Successful in 4m12s
Core (solitaire_core):
- fix(core): auto-complete now requires waste empty to prevent deadlock
- fix(core): reject multi-card moves from waste pile (Klondike rule)
- fix(core): reject foundation-to-foundation moves (score farming exploit)
- fix(core): undo restores score from snapshot baseline, not live score
- feat(scoring): add +5 flip bonus when face-down tableau card is exposed
- feat(scoring): add recycle penalty (Draw-1: -100/pass, Draw-3: -20/pass)
Engine (solitaire_engine):
- fix(engine): remove TokioRuntimeResource::default() panic; degrade gracefully
- fix(engine): add ModalScrim guard to handle_new_game spawn site
- fix(engine): add ModalScrim guard to spawn_restore_prompt spawn site
- fix(engine): add ModalScrim guard to check_no_moves spawn site
Server / Web (solitaire_server):
- fix(web): correct draw_mode casing in replay submission (DrawOne/DrawThree)
- fix(web): correct mode casing in replay submission (Classic) for leaderboard
- fix(web): trim recorded_at to YYYY-MM-DD for NaiveDate deserialization
- fix(server): move /avatars route outside auth middleware (was always 401)
Data / Sync (solitaire_data, solitaire_sync):
- fix(data): namespace Android token file under APP_DIR_NAME with migration
- fix(data): Android token store now multi-user (HashMap); no silent overwrite
- fix(sync): draw_one_wins + draw_three_wins invariant preserved after merge
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-19 16:27:09 -07:00
Gitea CI
42898c0b3f
chore(deploy): bump image to f6e7de10 [skip ci]
2026-05-19 22:53:25 +00:00