Euchre web-app for the socially distant family
git clone git://
Log | Files | Refs | README | LICENSE

DateCommit messageAuthorFiles+-
2024-03-10 21:49Re-deprecate code / take down linkAlex Karle1+5-5
2023-11-15 03:25Fix more 'active development' languageAlex Karle1+2-2
2023-11-15 03:16Update index overview development storyAlex Karle1+3-3
2023-02-28 00:28Un-deprecate: early April Fools?Alex Karle1+5-5
2023-02-19 18:00Remove website link from READMEAlex Karle1+0-4
2023-02-19 17:58Fix README dividerAlex Karle1+2-4
2023-02-19 17:55Add deprecation noticeAlex Karle1+6-0
2023-02-19 17:52Add relayd.conf(8) for future referenceAlex Karle2+53-0
2021-05-09 04:36deploy: Modify rc.d service to only listen on localhostAlex Karle1+1-1
2021-05-09 04:25doc: Use https:// in link :)Alex Karle1+3-3
2021-05-09 04:21frontend: Use websockets over TLS and https if connection secureAlex Karle1+7-2
2021-05-02 23:54doc: Fix path to in READMEAlex Karle1+1-1
2021-05-02 23:24deps: Bump esbuild to 0.11.18 for OpenBSD supportAlex Karle2+5-5
2021-05-02 22:00doc: Add note about perl5 OpenBSD packages to READMEAlex Karle1+11-0
2021-05-02 21:49build: Add sourcemaps to developer buildAlex Karle2+2-2
2021-05-02 19:24ci: Update build to use OBSD packages over cpanminusAlex Karle1+3-7
2021-05-02 05:51build: Replace webpack with esbuild for fast, lean, builds!Alex Karle11+1014-7999
2021-05-02 05:25style: Refactor SCSS style to CSS in prep for esbuildAlex Karle3+405-400
2021-05-02 04:14doc: Link LICENSE file in README.mdAlex Karle1+1-1
2021-05-02 04:07doc: Fix badge in READMEAlex Karle1+1-1
2021-05-02 04:02deps: Lock in Mojolicious at v8.67Alex Karle1+1-1
2021-05-02 03:51ci: Update build.yml to use OpenBSD & new email addressAlex Karle1+5-5
2021-02-26 16:19deps: Lock in Mojolicious::Plugin::Webpack at v 0.13Alex Karle1+1-1
2020-12-24 05:25doc: Add note about deamonization to READMEAlex Karle1+8-0
2020-12-23 22:41make: Update release target to use rc.d init scriptAlex Karle2+3-60
2020-12-23 22:02deps: Update node dependencies, Mojo::WebpackAlex Karle3+2302-2223
2020-12-05 22:15Revert "index: Re-add known issues to document iOS/Safari issues"Alex Karle1+0-9
2020-11-30 14:11index: Re-add known issues to document iOS/Safari issuesAlex Karle1+9-0
2020-07-19 04:42prod: Fix production server daemon behaviorAlex Karle3+25-16
2020-07-18 19:01bin: Add first take at OpenBSD rc.d init scriptAlex Karle1+17-0
2020-07-18 18:55gloat: Improve MOJO_MODE handling to allow -m CLI flagAlex Karle1+1-1
2020-07-18 18:04env: Move MOJO_LOG_LEVEL to (instead of start script)Alex Karle2+3-2
2020-06-23 03:13CardTable, ChatPanel, Lobby, MainHandChris Karle5+45-5
2020-06-21 15:24index: Change "Known Issues" -> "Reporting Issues"Alex Karle1+4-12
2020-06-21 15:15make: Update release recipes for new user/hostAlex Karle1+5-5
2020-06-19 02:39ChatPanel, CardTableChris Karle3+35-4
2020-06-11 01:53index: Update known issuesAlex Karle1+0-2
2020-06-09 23:55bin: Enable debug logging in prodAlex Karle1+2-0
2020-06-09 03:10CardTableChris Karle2+72-5
2020-06-05 03:44CardTable, TableList, TrumpPickerChris Karle4+39-13
2020-06-05 02:57Euchre::Host: Add table settings to GET /tables APIAlex Karle1+1-0
2020-06-02 00:06make: Minimize reasons to rebuild with webpackAlex Karle2+7-5
2020-06-01 03:32index: Update the Known Issues sectionAlex Karle1+2-1
2020-06-01 03:24Euchre::Host/Dealer: Add 'settings' object to DealerAlex Karle2+4-0
2020-06-01 03:00TableListChris Karle1+74-3
2020-05-30 18:10make: Add release-prod target to update prodAlex Karle2+12-0
2020-05-30 17:58index: Add Known Issues section, with link to bug-trackerAlex Karle1+18-0
2020-05-30 17:50index: Add contact infoAlex Karle1+3-3
2020-05-30 14:29index: Clarify mailing list vs public inboxAlex Karle1+1-1
2020-05-30 14:26ci: Temporarily reduce CI to just setup/testAlex Karle1+0-13
2020-05-30 06:04client: Add new landing page with project infoAlex Karle3+99-5
2020-05-29 06:15Lobby, app.scssChris Karle2+1-25
2020-05-29 05:56TableList, LobbyChris Karle4+310-35
2020-05-27 03:51ci: Add email trigger for all buildsAlex Karle1+4-0
2020-05-27 03:05Revert "ci: Add shell access to build area"Alex Karle1+0-1
2020-05-27 02:11ci: Fix broken SSH key for release stageAlex Karle1+1-1
2020-05-27 02:00ci: Add shell access to build areaAlex Karle1+1-0
2020-05-27 01:44doc: Add ci badge to READMEAlex Karle1+2-0
2020-05-27 01:13ci: Add deploy stage to deploy to preprodAlex Karle2+12-3
2020-05-27 01:04make: Tone down the webpack build verbosityAlex Karle1+1-1
2020-05-27 00:32ci: Add CI/CD specificationAlex Karle1+22-0
2020-05-26 22:47gloat: Default to preprod (non-minified) JS, use prod in prodAlex Karle3+14-8
2020-05-26 22:46make: Build production webpack JS on `build` targetAlex Karle3+23-3
2020-05-26 22:06make: Move version.txt generation from build->releaseAlex Karle1+1-1
2020-05-26 01:12make: Update release dest, check in restart scriptAlex Karle2+45-2
2020-05-26 00:34make: Switch from scp to rsync for release recipeAlex Karle1+1-1
2020-05-26 00:24make: Add version.txt artifact to build areaAlex Karle1+1-0
2020-05-25 15:40preprod: Add a new preprod.html for our staging siteAlex Karle2+32-1
2020-05-25 14:37CardTable, app.scssChris Karle2+13-2
2020-05-22 05:58ChatPanelChris Karle2+6-7
2020-05-22 05:41CardTable, ChatPanelChris Karle3+177-12
2020-05-22 03:47Euchre::Dealer: Fix bad name on chat messageAlex Karle1+1-1
2020-05-15 04:27make: Add FORCE option to the release targetAlex Karle1+1-1
2020-05-15 04:26Euchre::Host: Add prune_players to catch stale connectionsAlex Karle3+37-10
2020-05-15 03:51Euchre::Host: Add Players table to /statsAlex Karle1+6-0
2020-05-15 00:48Euchre::Host: Modify list_tables returned JSONAlex Karle2+4-4
2020-05-15 00:22make: Fix build target dependenciesAlex Karle1+2-1
2020-05-15 00:14CardTable, MainHand, app.scssChris Karle3+114-64
2020-05-14 02:01Euchre::Host: Convert list_tables to a GET requestAlex Karle2+18-8
2020-05-14 01:37make: Add derived webpacked JS to clean recipeAlex Karle1+3-3
2020-05-14 01:30make: Remove script in favor of make recipeAlex Karle2+2-18
2020-05-13 04:17make: Add proper dependency logic to build/releaseAlex Karle3+21-12
2020-05-13 03:45Euchre::Host: Change print's to proper loggingAlex Karle1+10-3
2020-05-11 01:54app, CardTable, Lobby: revised join/sit/stand/exitChris Karle3+161-92
2020-05-08 00:30Euchre::Dealer: Fix order MISSING_PARAMSAlex Karle1+1-1
2020-05-07 04:24Euchre::Host: Delete finished games on last leave_gameAlex Karle1+7-0
2020-05-07 04:16Euchre::Host: Call leave_table on join_tableAlex Karle1+9-0
2020-05-07 04:10Euchre::Host: Add recurring table pruning actionAlex Karle3+22-0
2020-05-07 03:51Euchre::Errors: Add safeguards to ensure keys present in msgAlex Karle3+37-10
2020-05-07 03:34make: Add clean recipeAlex Karle1+4-0
2020-05-07 01:37Euchre::Dealer: Fix restart_game subAlex Karle1+2-1
2020-05-07 00:40Euchre::Dealer: Add empty hand to spectator game_stateAlex Karle1+2-0
2020-05-07 00:39app.js fix param for join_tableChris Karle1+6-6
2020-05-06 23:55app.js joining action updateChris Karle1+6-6
2020-05-06 04:46doc: Change formattingAlex Karle1+62-44
2020-05-06 04:41Euchre::Errors: Update UNIQUE_USER to not mention force joinAlex Karle1+1-1
2020-05-06 04:39debug.html: Remove Force Join buttonAlex Karle1+2-3
2020-05-06 04:19lib/Euchre: Add BUILD subs to classes to de-lazify attrsAlex Karle4+23-5
2020-05-06 04:07Euchre::Dealer: Add table_id to broadcast_gamestateAlex Karle3+3-1
2020-05-06 03:49doc: Add, a complete client referenceAlex Karle1+204-0
2020-05-06 03:40Euchre::Dealer: Tweak broadcasted gamestateAlex Karle1+2-2
2020-05-04 04:23Euchre::Host: Demote the Dealer, long live the HostAlex Karle7+605-555
2020-05-02 22:12refactor: Move next_turn/reset_turn to Game methodsAlex Karle2+22-23
2020-05-02 22:10Euchre::Player: Add send methodAlex Karle2+10-4
2020-05-02 22:02refactor: Make Game and Player hashes objectsAlex Karle5+213-234
2020-05-02 21:24Euchre::Errors: Migrate error constants to own moduleAlex Karle2+92-47
2020-05-02 20:47refactor: Rename Euchre::Game -> Euchre::RulesAlex Karle6+244-244
2020-05-04 02:33CardTable, SeatPickerChris Karle2+52-20
2020-05-02 13:39debug.html: Fix pass vote buttonAlex Karle1+2-2
2020-04-30 23:55doc: Add License section to READMEAlex Karle1+4-0
2020-04-30 23:47doc: Update READMEAlex Karle1+44-4
2020-04-30 03:47Euchre::Dealer: Convert all players to spectators at endAlex Karle1+8-2
2020-04-30 03:38Euchre::Dealer: Add basic password-protection to gamesAlex Karle2+16-2
2020-04-30 03:25Euchre::Dealer: Add leave_game action for endgameAlex Karle2+34-0
2020-04-30 01:19style: Use Hearts over Spades for faviconAlex Karle2+2-2
2020-04-30 01:14Euchre::Dealer: Add is_spectator flag to game msgAlex Karle1+1-0
2020-04-28 01:40style: Add favicon to siteAlex Karle2+2-0
2020-04-28 02:52Lobby, CardTable, TrumpPickerChris Karle5+128-19
2020-04-27 03:08Add LICENSEAlex Karle1+21-0
2020-04-27 02:32Euchre::Dealer: Add errno's to the send_error callAlex Karle1+65-21
2020-04-27 02:29Euchre::Dealer: Allow players to join mid gameAlex Karle1+0-4
2020-04-26 22:11app, CardTable, Lobby: implement rejoin logicChris Karle3+152-25
2020-04-26 01:00Euchre::Dealer: Add restart_game action for end gameAlex Karle1+10-2
2020-04-26 00:29Euchre::Dealer: Add chat message supportAlex Karle2+28-0
2020-04-25 21:53make: Add server restart to the release recipeAlex Karle1+1-0
2020-04-25 21:40Dealer: add END_DEBUG; CardTable fixes for end of gameChris Karle2+33-10
2020-04-25 20:16public/debug.html: Get server from URL, not localhostAlex Karle1+2-1
2020-04-24 02:01Euchre::Dealer: Add uptime and lifetime stats to /statsAlex Karle1+16-0
2020-04-24 01:54Euchre::Dealer: Fix game inactivity timeout valueAlex Karle1+1-1
2020-04-24 01:21fixes: CardTableChris Karle1+24-10
2020-04-23 04:18server: Send /stats as format 'txt'Alex Karle1+1-1
2020-04-23 03:55Euchre::Dealer: Enhance stats with times and namesAlex Karle1+27-8
2020-04-23 03:34ci: Ensure release recipe tests firstAlex Karle1+1-1
2020-04-23 03:34Euchre::Dealer: Add resource cleanup on players leavingAlex Karle2+23-3
2020-04-23 03:02Euchre::Dealer: Add simple text stats endpointAlex Karle2+19-0
2020-04-23 01:05images: Add suits for client-side displayingAlex Karle4+75-0
2020-04-22 23:51ci: Add build script and release recipeAlex Karle3+33-1
2020-04-22 22:49fix: CardTableChris Karle1+3-1
2020-04-22 02:37app, CardTable, DealerChris Karle4+81-12
2020-04-21 03:21Euchre::Dealer: Use timer post-trick over prev_tableAlex Karle2+19-24
2020-04-21 02:24Euchre::Dealer: Fix loner reset_turn bugAlex Karle1+5-5
2020-04-20 22:18Euchre::Dealer: Add prev_table to game state for clientsAlex Karle2+18-1
2020-04-20 17:17Euchre::Delear: Fix led suit on leading left bowerAlex Karle1+9-2
2020-04-20 05:46TrumpPicker, CardTableChris Karle3+409-46
2020-04-20 04:11Euchre::Dealer: Add force join_game option to take over handAlex Karle2+49-17
2020-04-20 04:01Euchre::Dealer: Fix hand-sorting post dealer_swapAlex Karle1+1-0
2020-04-20 03:57Euchre::Game: Add card_value test pointsAlex Karle1+8-0
2020-04-18 21:54CardTable, MainHand, HiddenHandChris Karle5+199-32
2020-04-15 03:50Euchre::Dealer: Add dealer_swap phase after ordering trumpAlex Karle2+55-16
2020-04-15 03:25Euchre::Dealer: Validate suit being orderedAlex Karle2+22-2
2020-04-15 03:22Euchre::Dealer: Fix off-by-one on start_seat requestAlex Karle1+1-1
2020-04-15 02:54Euchre::Dealer: Sort players hands for clientsAlex Karle2+21-3
2020-04-15 02:47Euchre::Dealer: Fix modulus error on rotating dealerAlex Karle1+1-1
2020-04-15 02:41Euchre::Game: [refactor] Teach card_value about trump/ledAlex Karle2+42-34
2020-04-15 01:02Euchre::Game: Add hand_lengths to broadcasted gamestateAlex Karle2+7-0
2020-04-15 00:54Euchre::Dealer: Add start_seat option to start_gameAlex Karle2+16-2
2020-04-14 05:18app.js revert tableDebug to falseChris Karle1+1-1
2020-04-14 04:57CardTable, MainHandChris Karle5+247-63
2020-04-11 22:39Euchre::Dealer: Validate suit of card playedAlex Karle1+31-0
2020-04-11 22:13cleanup: Remove NOTES fileAlex Karle1+0-49
2020-04-11 22:10Euchre::Dealer: Add check that username is unique to gameAlex Karle1+15-3
2020-04-11 22:10run: Add DEBUG mode that disables webpackAlex Karle2+5-6
2020-04-11 21:54lib/Euchre: [refactor] Change API to use char-style card/suitsAlex Karle6+57-127
2020-04-11 21:22Euchre::Game: Fix bug with trick_winner and static tableAlex Karle4+44-13
2020-04-11 21:14make: Add tags recipe for ctags+Perl integrationAlex Karle2+9-0
2020-04-11 15:18Euchre::Dealer: Handle 'loner' value on order msgAlex Karle3+44-28
2020-04-11 03:07Euchre::Dealer: Make dealer track player handsAlex Karle2+34-25
2020-04-11 02:28Euchre::Dealer: Add ping/pong heartbeat msgAlex Karle3+11-4
2020-04-07 03:14SeatPicker: layout and stylingChris Karle4+44-7
2020-04-06 05:48App, CardTable, SeatPickerChris Karle7+286-21
2020-04-04 15:55debug: Add options to vote/pass/play cards!Alex Karle2+69-18
2020-04-04 05:06debug: Use pretty SVG cards for hands/trumpAlex Karle1+15-4
2020-04-04 04:47public: Add cards svg's courtesy of me.ukAlex Karle30+90-0
2020-04-04 04:22Euchre::Dealer: [refactor] Add handler phase/turn validationAlex Karle1+45-38
2020-04-04 04:05Euchre::Dealer: Add first pass at play_cardAlex Karle1+56-0
2020-04-04 03:59Euchre::Dealer: Add first pass at vote_trump actionAlex Karle1+39-1
2020-04-04 03:34Euchre::Dealer: Add smarter stand/sit logicAlex Karle1+3-1
2020-04-04 03:16Euchre::Dealer: Change game's 'in_progress' -> 'phase'Alex Karle2+6-7
2020-04-04 03:13Euchre::Dealer: Validate seat number from clientAlex Karle1+5-0
2020-04-04 03:05Euchre::Dealer: Add trump_nominee to game stateAlex Karle2+13-6
2020-04-03 04:58App, Lobby, CardTable: add styles, grid layoutChris Karle9+1292-56
2020-04-01 03:58doc: Add need for `npm i` to READMEAlex Karle1+5-2
2020-04-01 03:54Euchre::Dealer: Fix double JSON encodingAlex Karle2+5-6
2020-04-01 03:52Euchre::Dealer: start_game now deals hands!Alex Karle2+35-0
2020-03-31 05:36App, Lobby, CardTable basic framework established.Chris Karle7+180-10
2020-03-30 04:37Euchre::Dealer: [refactor] Store player objects in gameAlex Karle1+9-9
2020-03-30 04:32Euchre::Dealer: [refactor] dispatch with player objectAlex Karle1+26-25
2020-03-30 04:23Euchre::Dealer: [refactor] store game obj in player hashAlex Karle1+5-5
2020-03-30 04:08Euchre::Dealer: Add start_game, with new in_progress stateAlex Karle2+27-5
2020-03-30 04:04Euchre::Dealer: Prevent players from entering full gameAlex Karle1+15-11
2020-03-30 03:56Euchre::Game: Update score_round API to take caller IDAlex Karle3+6-5
2020-03-30 03:52debug.html: Add specific sections for Game/ErrorsAlex Karle1+13-6
2020-03-30 03:51Dealer: Fix send_error response jsonAlex Karle2+8-4
2020-03-30 03:31infra: Add small script to get goingAlex Karle2+26-3
2020-03-30 03:14deps: Add Mojolicious::Plugin::WebpackAlex Karle1+1-0
2020-03-30 03:13doc: Update README running commandAlex Karle1+1-1
2020-03-30 03:12cleanup: Remove unused test scriptAlex Karle1+0-24
2020-03-30 02:55Client: add webpack, add app, Lobby, Table, C10 buttonChris Karle12+7124-37
2020-03-29 19:43Dealer: fix Perl compile error (note Alex never reproduced)Chris Karle1+1-1
2020-03-29 05:08doc: Add inactivity-timeout note to READMEAlex Karle1+3-1
2020-03-29 05:02Dealer: Add sit/stand routines, with basic html testAlex Karle2+61-5
2020-03-29 04:38Dealer: Add 'spectator' class of users for lobby-periodAlex Karle1+17-9
2020-03-29 04:33build: Test-compile to check for big-bugsAlex Karle1+1-0
2020-03-29 04:30lobby: Add 'join' button with diagnostic outputAlex Karle1+20-2
2020-03-28 19:31feat(lobby) initial join testChris Karle1+16-1
2020-03-28 19:25Dealer: Broadcast readable human names for playersAlex Karle1+7-1
2020-03-28 18:56public: Check in index.htmlAlex Karle1+1-0
2020-03-28 18:45Dealer: Add initial state tracking and player commsAlex Karle2+190-2
2020-03-25 04:01Euchre::Game: Clean up score_round APIAlex Karle2+14-14
2020-03-25 03:52doc: README -> README.mdAlex Karle3+22-11
2020-03-23 04:10Implement first pass at core game logicAlex Karle8+323-4
2020-03-21 19:24refactor: Create basic Perl module scaffoldingAlex Karle2+21-1
2020-03-21 17:58Hello, world!Alex Karle3+17-0
2020-03-21 16:40Initial commitAlex Karle1+4-0