Releases: armsnyder/othelgo
v0.0.3
Changelog
419c3aa Add tests for previous move in UpdateBoard messages
7f77796 Add website and checksums make targets
5838a2b Better connection handling
77eb7d3 Clean up game scene text
293f56f Give AI a display name
e384f6a Put out winter decorations
390703f Remove "v" prefix from "hello" message "version" field
44ea3d5 Show most recent move (multiplayer)
9ce0ac0 Show name of online opponent. Close #11
45a07c1 Show the most recent move (singleplayer). Close #17
5586301 Update push.yml
c8fe51e Update push.yml
75d989e Update tag.yml
ec0ff28 e2etest: Abstract repeated assertions into testutil
f49ada1 e2etest: Refactor to not use websockets so as not to rely on timings
b1260b2 e2etest: Replace all uses of ExpectError with more specific behaviors
3ae7954 server: Add authorization by checking against the connection ID in the database
f15d7fd server: Remove redundant and sus condition in AI turn handling
e0a19e2 server: more logging and fix EnsureTable sometimes not being idempotent
v0.0.2
Changelog
20b0b4c Add GitHub button
ce2c15f Add server-side message validation
419b789 Fix lint whitespace issues
bba6be7 Fix mobile experience
c300936 Format html
7f9c49c Make checksum text selectable
1cf5691 Plumb website download link to appropriate release asset.
6031951 Pretty-fy link button
0fa10ad Provide checksum for download
8ca7689 Reactor messages so that declaring new message types is easier
4f3c131 Rename "host" field to "nickname" in "hostGame" message
768347a Update push.yml
737c6c6 Update push.yml
1bf4336 Update push.yml
91563ae Update tag.yml
da0be95 client: Detect release version from goreleaser and send it to server on hello
f7360f6 client: Fix centered text bug
0be6dce client: Fix score alignment
d22ab78 client: Give host feedback when opponent joins the game
37862ba client: Use solid lines for drawing board.
617a5a2 client: handle leaving the game and notifying player when opponent leaves
5f8e50a e2etest: Increase sleep to smooth out flakiness
07b7bfa e2etest: Refactor tests to be less brittle and tolerate messages of different types to sneak in
2369297 html: Download specific release (don't rely on no-caching), and remove archive name replacements.
7e4a774 html: add description meta tag and fix small text on small screens
ee06c11 html: adjust responsive html
efefb88 html: group elements into header, main, and footer
1d2dfe1 server: Add a TTL table attribute and set it on every update operation
8bac2c8 server: New actions "leaveGame" and "gameOver"; game is deleted and players notified when player leaves game
cc45b84 server: send "joined" message to host when player joins game
0c51a68 server: test no error when second player leaves game
v0.0.1
Changelog
cf57543 Add "CHANGE NAME" button to menu
80b830d Add "multiplayer game" server tests
b3b0e72 Add AI difficulty setting
b57b8bd Add AI score modifier for edges, corners, and game over state
17f0a91 Add BenchmarkMiniMax go benchmark test
6dbbffc Add TCs: cell already occupied; board full
7cee5cd Add Tick handler to Scene to support drawing animations. Refactor the engine Run function which was too complex.
17d49e8 Add a server test suite using the ginkgo BDD test framework
6490a22 Add alpha beta pruning to AI
6de464c Add basic benchmark test for ApplyMove
e40cf85 Add board saving/loading on disk placement
dfae346 Add code linter and Makefile for ease of use
b3653b4 Add cursor to nickname scene
8ca1719 Add goreleaser.yml
433010c Add json tag to player field for consistency
9361841 Add lint and build-client GitHub actions
10869a8 Add logger that logs to file for client
e141ef2 Add make target "logs" for printing latest server logs
57e3b45 Add marginX and marginY consts to reduce magic numbers in anchors.
62c988c Add menu scene for choosing a player, and change scene type to an interface
4fd137d Add minimax with iterative deepening, remove type assertions in ai_lib.go, and fix some logic around repeat player turns in singleplayer.
f83fb38 Add perf_test.sh script for comparing performance between commits
88b725f Add receiveMessage stub, select to Run()
5abe7c7 Add run and deploy make targets
9360dc7 Add simple join game menu.
b1d40dd Add simple webpage stub. Detect user operating system
cbdb67e Add singleplayer game mode with naive AI and use a struct to represent the game item in the db
9a6905d Add status code to connect lambda function
e760af3 Add test to workflow
bfbbe3f Apologize to linter
1e0b726 Beautify webpage.
417512b Change ApplyMove to pass board by value, write tests for ApplyMove, and simplify ApplyMove.
55e9798 Change player data type from int to uint8
cb8c313 Change the decorations
dc54546 Confetti
91d6812 Create push_main.yml
75d4698 Create referee with game logic\nSend reply instead of broadcast when move is invalid
f7471b2 Create shared types for messages
e9c81dc Create tag.yml
e2f4e11 Create tag.yml
ecfeffc Decrease AI timeout to reduce chance of lambda timeout after consecutive AI turns
a264128 Delete tag.yml
89da148 Delete trythis.patch
e410317 Delete unused SceneContext type
3dfa8e2 Delete unused legacy message types
c27cca3 Draw board
082ec17 Dummy implementation of placeDisk that responds with a board
eb26c21 Fix AI crash when AI has no moves
1b758cb Fix aws missing credentials error in test
278f0da Fix botRight anchor to keep text on-screen on small windows
e57535d Fix bug allowing disk to be placed on occupied tile
c9cfb75 Fix bug in GameOver allowing an empty board to be evaluated as true
c7ed270 Fix bug in own previous commit: legal move when no opponent piece to flip
bd38fc9 Fix bug in single player game establishment (self as host)
cf31b70 Fix bug in which server tries to write to incomplete connection. Add hello message.
5897608 Fix bug where ExpandVector only flips last tile
fd4a5f8 Fix e2e test to check for a decoration message
2621d0e Fix e2etest assertion error
1839e34 Fix half-circle disks in some terminals
5cecbc1 Fix invocation of benchstat in perf_test.sh
2640a33 Fix minor bug with CANDLE and NAME ENTRY
a5eeab4 Fix name not showing in menu after leaving a game, and modify nickname scene to always load the name from config file.
ab69b78 Fix typo
a828ab6 Fix typos in anchor godocs
a6b60cf For better compatibility, don't crash the client on message read errors
770fd39 Handle errors in deploy_server.sh
4fe77c3 Implement broadcastMessage in server and improve unicode case sensitivity in client
e1ac02d Implement disk flipping
f824dde Implement new game clears board, and join game loads board in client
da99343 Implement passing when no moves are available. Declare winner when there are no moves available for either player.
cdb76c4 Improve error description when the websocket receives an invalid message
818e187 Increase AI timeout by 50%
bbdd919 Initial commit
5cdf433 Make handleConnect add connection ID to dynamo
584c447 Merge branch 'main' of github.com:armsnyder/othelgo into main
95754f9 Merge pull request #10 from armsnyder/2-game-sessions
4c402b6 Minor deploy_server.sh refactor
8c62c79 Modify code spacing, make ApplyMove mutate a board reference, add WhoseTurn and visual indication of turn in client, assign sendMessage only once, add input validation to ApplyMove
ef5dbb6 Move referee to common\nAdd scorekeeper\nEnforce turns
7576c1e New middleRight anchor to use for displaying the score so the score remains vertically centered when the window is resized.
34f0270 Oh right they're called disks aren't they
f29bf4a Prevent game hijacking
06187f9 Re-bind Q to quit on all but the nickname scene
7d80ad5 Refactor client.go into engine.go and game.go, to separate the engine logic from game logic and create a system for adding more scenes like menus.
055c41d Refactor code into packages
b2f657c Refactor draw functions to be less repetitive and more readable. Add draw_lib.go with a general-purpose draw function and utilities for anchors and colors.
bb84ce5 Refactor newClientConnection to return a struct with methods instead of a set of functions
c7ad05b Refactor server code to be more testable
9ce098c Remove "fullyExplored" logic in AI, which is rarely used now that there is alpha beta pruning
32e2be4 Remove iterative deepening for AI consistency, and make normal difficulty easier
8005203 Remove unused argument in doAIPlayerMove and fix score function which was opposite half of the time
e6639a9 Remove unused event channel close logic
e005566 Rename GatewayFactory to APIGatewayManagementAPIClientFactory
00f7f7f Return to menu from game. Display nickname in game. Save next player (bool) as attribute in dynamo. Load next player from dynamo.
72dda22 Run end-to-end tests in parallel.
5b9ff29 Satisify the code critic (reduce complexity of ApplyMove, handlePlaceDisk)
645a73b Select squares and place disks on the board
d488cb1 Server controls game border decoration
ed2b2de Server refactor: Explicit dependencies, and websockets in test.
21b14cd Server: Implement isolated game sessions and ability for player 2 to join a chosen host's game
e28d94f Shorten test
add93eb Simplify
c954917 Simplify Scene interface by removing the need for the allScenes map in engine.go and the SceneContext type
590d21a Speed up e2e test by removing sleep
80493b4 Spooky border, name entry screen, center everything, add splash text
094bc7d Support multiple message types in client and handle message errors in client
12a839b Suppress server log output in tests that pass
ebd2fa0 Test: Increase timeout on clearing table
c346a6b Tune difficulty
3ec5b6c Update push.yml
7707174 Update push.yml
f5a5332 Update push_main.yml
c69df49 Update push_main.yml
5bf5e27 Update push_main.yml
67f5569 Update tag.yml
55dac5c Update tag.yml
df58b49 Update tag.yml
22e55a7 Use GatewayAdapter to have a local server that the client can connect to
55807bc Use new client messages. Join a game in progress. Fix minor bugs in handler.
4441741 Use new setCursor function in game drawCursor to simplify the code
574b5e3 Workflow: Run on all branches, and only deploy from main and if previous jobs are successful
6f9fac7 Workflow: fix name
6675023 add connect lambda function
90b4ea6 close the program
af19a3e confetti: reduce allocation and destroy paper offscreen on x axis too
aed3099 db: Combine gameItem and gameState structs to reduce required mapping
d6db51e end-to-end-test: Combine one-client and two-client contexts in order to simplify, and add more comments
4277bde end-to-end-test: Refactor to use Expect instead of Eventually, for a more useful output when a test fails
fe6d04f end-to-end-test: Set a timeout when invoking Handler
81ce2ea fix module name
d8fb7f3 go mod init
152ccca handle UpdateBoardMessage
6b2f9c3 stub main
3eb7c01 use -count in perf_test.sh
6bec372 widen board. dial-a-websocket