GithubHelp home page GithubHelp logo

dechristopher / lio Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 0.0 227.39 MB

♚ lioctad.org: the forever free, adless and open source octad server

Home Page: https://lioctad.org

License: GNU Affero General Public License v3.0

Go 22.18% Shell 0.16% HTML 5.64% Dockerfile 0.06% JavaScript 6.24% TypeScript 64.30% SCSS 0.31% CSS 1.11%
chess free-software game go gofiber non-profit octad rating react redux server type-safe typescript websocket

lio's Introduction

Website Web Map lioctad.org

  • Founder, Director of Engineering at Fitchburg Fiber
  • Interests include: network/internet engineering, OSP infrastructure, and geospatial system design

Connect with me on LinkedIn

lio's People

Contributors

dechristopher avatar dependabot[bot] avatar renovate[bot] avatar shawntoubeau avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

lio's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Warning

These dependencies are deprecated:

Datasource Name Replacement PR?
npm @babel/plugin-proposal-class-properties Unavailable
npm @babel/plugin-proposal-export-namespace-from Unavailable
npm @babel/plugin-proposal-object-rest-spread Unavailable
npm @types/classnames Unavailable
npm babel-eslint Available

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): replace dependency babel-eslint with @babel/eslint-parser ~7.11.0
  • chore(deps): update dependency @teamsupercell/typings-for-css-modules-loader to v2.5.2
  • chore(deps): update dependency autoprefixer to v10.4.19
  • chore(deps): update dependency fork-ts-checker-webpack-plugin to v6.5.3
  • chore(deps): update dependency howler to v2.2.4
  • chore(deps): update dependency react-hot-loader to v4.13.1
  • chore(deps): update dependency resolve-url-loader to v3.1.5
  • chore(deps): update dependency terser-webpack-plugin to v5.3.10
  • chore(deps): update golang docker tag to v1.22.5
  • fix(deps): update dependency howler to v2.2.4 (howler, @types/howler)
  • fix(deps): update dependency react-router-dom to v5.3.4
  • fix(deps): update module github.com/gofiber/fiber/v2 to v2.52.5
  • fix(deps): update module github.com/gofiber/template/html/v2 to v2.1.2
  • fix(deps): update module github.com/looplab/fsm to v1.0.2
  • fix(deps): update module github.com/minio/minio-go/v7 to v7.0.74
  • fix(deps): update react monorepo (@types/react, @types/react-dom, eslint-plugin-react-hooks, react-refresh)
  • chore(deps): update babel monorepo (@babel/core, @babel/plugin-proposal-export-default-from, @babel/plugin-proposal-object-rest-spread, @babel/plugin-proposal-throw-expressions, @babel/plugin-transform-runtime, @babel/preset-env, @babel/preset-react, @babel/register)
  • chore(deps): update dependency babel-loader to v8.3.0
  • chore(deps): update dependency dotenv to v8.6.0
  • chore(deps): update dependency eslint-plugin-import to ~2.29.0
  • chore(deps): update dependency eslint-plugin-jsx-a11y to ~6.9.0
  • chore(deps): update dependency eslint-plugin-react to v7.35.0
  • chore(deps): update dependency less to v4.2.0
  • chore(deps): update dependency postcss to v8.4.40
  • chore(deps): update dependency pretty-quick to ~3.3.0
  • chore(deps): update dependency react-use-websocket to v2.9.1
  • chore(deps): update dependency regenerator-runtime to v0.14.1
  • chore(deps): update dependency sass to ~1.77.0
  • chore(deps): update dependency ts-loader to ~8.4.0
  • chore(deps): update dependency typescript to v4.9.5
  • chore(deps): update dependency webpack-bundle-analyzer to ~4.10.0
  • chore(deps): update dependency webpack-cli to ~4.10.0
  • chore(deps): update dependency webpack-merge to ~5.10.0
  • chore(deps): update typescript-eslint monorepo to ~4.33.0 (@typescript-eslint/eslint-plugin, @typescript-eslint/parser)
  • fix(deps): update dependency classnames to v2.5.1
  • fix(deps): update module golang.org/x/text to v0.16.0
  • chore(deps): update actions/checkout action to v4
  • chore(deps): update actions/setup-go action to v5
  • chore(deps): update dependency @svgr/webpack to v8
  • chore(deps): update dependency babel-loader to v9
  • chore(deps): update dependency clean-webpack-plugin to v4
  • chore(deps): update dependency copy-webpack-plugin to v12
  • chore(deps): update dependency css-loader to v7
  • chore(deps): update dependency cssnano to v7
  • chore(deps): update dependency dotenv to v16
  • chore(deps): update dependency dotenv-webpack to v8
  • chore(deps): update dependency eslint to v9
  • chore(deps): update dependency eslint-config-airbnb-base to v15
  • chore(deps): update dependency eslint-config-airbnb-typescript to v18
  • chore(deps): update dependency eslint-plugin-jsdoc to v48
  • chore(deps): update dependency eslint-webpack-plugin to v4
  • chore(deps): update dependency fork-ts-checker-webpack-plugin to v9
  • chore(deps): update dependency html-loader to v5
  • chore(deps): update dependency husky to v9
  • chore(deps): update dependency less-loader to v12
  • chore(deps): update dependency lint-staged to v15
  • chore(deps): update dependency mini-css-extract-plugin to v2
  • chore(deps): update dependency postcss-loader to v8
  • chore(deps): update dependency prettier to v3
  • chore(deps): update dependency pretty-quick to v4
  • chore(deps): update dependency react-use-websocket to v4
  • chore(deps): update dependency resolve-url-loader to v5
  • chore(deps): update dependency sass-loader to v16
  • chore(deps): update dependency style-loader to v4
  • chore(deps): update dependency svg-url-loader to v8
  • chore(deps): update dependency tailwindcss to v3
  • chore(deps): update dependency ts-loader to v9
  • chore(deps): update dependency tsconfig-paths-webpack-plugin to v4
  • chore(deps): update dependency typescript to v5
  • chore(deps): update dependency webpack-cli to v5
  • chore(deps): update dependency webpack-dev-server to v5
  • chore(deps): update dependency webpack-merge to v6
  • chore(deps): update github/codeql-action action to v3
  • chore(deps): update jest monorepo to v29 (major) (@types/jest, babel-jest, jest, ts-jest)
  • chore(deps): update typescript-eslint monorepo to v7 (major) (@typescript-eslint/eslint-plugin, @typescript-eslint/parser)
  • fix(deps): update dependency @headlessui/react to v2
  • fix(deps): update dependency react-router-dom to v6
  • fix(deps): update react monorepo to v18 (major) (@types/react, @types/react-dom, react, react-dom)
  • 🔐 Create all rate-limited PRs at once 🔐

Warning

Renovate failed to look up the following dependencies: Failed to look up npm package typed-tailwind-loader.

Files affected: ui/package.json


Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

dockerfile
src/Dockerfile
  • golang 1.22.0-alpine3.19
  • golang 1.22.0-alpine3.19
github-actions
.github/workflows/codeql-analysis.yml
  • actions/checkout v3
  • github/codeql-action v2
  • github/codeql-action v2
  • github/codeql-action v2
.github/workflows/lio-build-test.yml
  • actions/checkout v3
  • actions/setup-go v3
  • actions/checkout v3
  • actions/setup-go v3
gomod
src/go.mod
  • go 1.22
  • github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef@49d423059eef
  • github.com/dechristopher/octad v1.0.10
  • github.com/gofiber/fiber/v2 v2.52.0
  • github.com/gofiber/template/html/v2 v2.1.0
  • github.com/gofiber/websocket/v2 v2.2.1
  • github.com/google/uuid v1.6.0
  • github.com/joho/godotenv v1.5.1
  • github.com/looplab/fsm v1.0.1
  • github.com/minio/minio-go/v7 v7.0.67
  • github.com/pkg/errors v0.9.1
  • github.com/valyala/fastjson v1.6.4
  • golang.org/x/text v0.14.0
html
src/cmd/lio/views/scripts/base.html
  • howler 2.2.3@sha512-6+YN/9o9BWrk6wSfGxQGpt3EUK6XeHi6yeHV+TYD2GR0Sj/cggRpXr1BrAQf0as6XslxomMUxXp2vIl+fv0QRA==
npm
ui/package.json
  • @headlessui/react ^0.3.1
  • @hot-loader/react-dom ^17.0.2
  • @types/classnames ^2.3.0
  • @types/howler ^2.2.7
  • @types/react ^17.0.51
  • @types/react-dom ^17.0.17
  • classnames ^2.3.2
  • howler ^2.2.2
  • jest ^26.6.3
  • normalize.css ^8.0.1
  • react ^17.0.2
  • react-dom ^17.0.2
  • react-octadground ^1.6.2
  • react-router-dom ^5.3.2
  • @babel/core 7.19.6
  • @babel/plugin-proposal-class-properties 7.18.6
  • @babel/plugin-proposal-export-default-from 7.18.10
  • @babel/plugin-proposal-export-namespace-from 7.18.9
  • @babel/plugin-proposal-object-rest-spread 7.19.4
  • @babel/plugin-proposal-throw-expressions 7.18.6
  • @babel/plugin-syntax-dynamic-import ~7.8.3
  • @babel/plugin-transform-runtime 7.19.6
  • @babel/preset-env 7.19.4
  • @babel/preset-react 7.18.6
  • @babel/register 7.18.9
  • @pmmmwh/react-refresh-webpack-plugin 0.5.8
  • @svgr/webpack ~5.5.0
  • @teamsupercell/typings-for-css-modules-loader 2.5.1
  • @types/jest 26.0.24
  • @types/react-router-dom 5.3.3
  • @typescript-eslint/eslint-plugin ~4.15.2
  • @typescript-eslint/parser ~4.15.2
  • autoprefixer 10.4.13
  • babel-eslint ~10.1.0
  • babel-jest ^26.6.3
  • babel-loader 8.2.5
  • clean-webpack-plugin ~3.0.0
  • copy-webpack-plugin ~7.0.0
  • core-js 3.26.0
  • cross-env ^7.0.3
  • css-loader 5.2.7
  • cssnano ~4.1.10
  • dotenv ^8.2.0
  • dotenv-webpack 7.1.1
  • eslint ~7.32.0
  • eslint-config-airbnb-base ~14.2.0
  • eslint-config-airbnb-typescript ~12.3.1
  • eslint-import-resolver-alias ~1.1.2
  • eslint-plugin-import ~2.26.0
  • eslint-plugin-jsdoc 32.3.4
  • eslint-plugin-jsx-a11y ~6.6.0
  • eslint-plugin-react 7.33.0
  • eslint-plugin-react-hooks ~4.2.0
  • eslint-webpack-plugin ~2.7.0
  • fork-ts-checker-webpack-plugin 6.5.2
  • html-loader ~2.1.1
  • html-webpack-plugin ~5.2.0
  • husky ~5.2.0
  • identity-obj-proxy ^3.0.0
  • import-sort-style-module-and-prefix ~0.1.3
  • is-windows ~1.0.2
  • jest-webpack-resolver ^0.3.0
  • less 4.1.3
  • less-loader ~8.0.0
  • lint-staged ~10.5.0
  • mini-css-extract-plugin ~1.3.0
  • path ~0.12.7
  • postcss ^8.2.13
  • postcss-loader ~5.0.0
  • prettier ~2.2.1
  • prettier-plugin-import-sort 0.0.7
  • pretty-quick ~3.1.0
  • process ^0.11.10
  • react-hot-loader ^4.13.0
  • react-refresh ~0.9.0
  • react-use-websocket ^2.5.0
  • regenerator-runtime 0.13.10
  • resolve-url-loader 3.1.4
  • sass ~1.56.0
  • sass-loader ~11.0.1
  • sass-resources-loader ~2.1.1
  • style-loader ~2.0.0
  • svg-url-loader ~7.1.1
  • tailwindcss ^2.0.3
  • terser-webpack-plugin ~5.3.0
  • ts-jest 26.5.6
  • ts-loader ~8.0.7
  • tsconfig-paths-webpack-plugin 3.5.2
  • typed-tailwind-loader ^1.0.0
  • typescript 4.0.2
  • url-loader ~4.1.1
  • webpack ~5.24.2
  • webpack-bundle-analyzer ~4.4.0
  • webpack-cli ~4.5.0
  • webpack-dev-server 3.11.3
  • webpack-merge ~5.7.3

  • Check this box to trigger a request for Renovate to run again on this repository

[BUG] Investigate panic calling getSAN when pawn promoting

Stack trace:

| panic: invalid piece
|
| goroutine 371 [running]:
| github.com/dechristopher/octad.(*Board).setBBForPiece(...)
| 	github.com/dechristopher/[email protected]/board.go:440
| github.com/dechristopher/octad.(*Board).update(0xc000394340, 0xc0003a79b0)
| 	github.com/dechristopher/[email protected]/board.go:239 +0x955
| github.com/dechristopher/octad.(*Position).Update(0xc000314960, 0xc0003a79b0, 0xffffffffffffffff)
| 	github.com/dechristopher/[email protected]/position.go:93 +0x1b6
| github.com/dechristopher/octad.getCheckChar(0xc000314960, 0xc0003a79b0, 0x2, 0xe)
| 	github.com/dechristopher/[email protected]/notation.go:197 +0x45
| github.com/dechristopher/octad.AlgebraicNotation.Encode(0xc000314960, 0xc0003a79b0, 0x8, 0xc00033a600)
| 	github.com/dechristopher/[email protected]/notation.go:109 +0x50
| github.com/dechristopher/lioctad/www/ws/handlers.getSAN(0xc0006e2000, 0xc000293401, 0x18, 0xc00031c470)
| 	github.com/dechristopher/lioctad/www/ws/handlers/handle_move.go:140 +0x1d1
| github.com/dechristopher/lioctad/www/ws/handlers.current(0xc0006e2000, 0xc0003a7901, 0x0, 0x0, 0xc000c2c000)
| 	github.com/dechristopher/lioctad/www/ws/handlers/handle_move.go:90 +0x12a
| github.com/dechristopher/lioctad/www/ws/handlers.makeComputerMove(0xc0006e2000, 0xc0002020f0, 0xc0003a6834, 0x4, 0xc0003a6840, 0x10, 0x1)
| 	github.com/dechristopher/lioctad/www/ws/handlers/handle_move.go:125 +0x21d
| created by github.com/dechristopher/lioctad/www/ws/handlers.HandleMove
| 	github.com/dechristopher/lioctad/www/ws/handlers/handle_move.go:65 +0x479```

Websocket Endpoints for Gameplay

  • Create websocket endpoint in core
  • Draft line protocol (JSONB serialization?)
  • Game "room" system persisted to some datastore (PG? Mongo? who knows..)

[BUG] Segfault on concurrent websocket write on game end

| panic: concurrent write to websocket connection
|
| goroutine 102 [running]:
| github.com/fasthttp/websocket.(*messageWriter).flushFrame(0xc00012bc70, 0xc000294001, 0xc000294010, 0x0, 0x0, 0x10, 0xc000294010)
| 	github.com/fasthttp/[email protected]/conn.go:610 +0x62e
| github.com/fasthttp/websocket.(*Conn).WriteMessage(0xc0000f8160, 0x1, 0xc000294010, 0x9, 0x9, 0x1, 0x1)
| 	github.com/fasthttp/[email protected]/conn.go:763 +0x249
| github.com/dechristopher/lioctad/www/ws.ConnHandler(0xc0005a07b0)
| 	github.com/dechristopher/lioctad/www/ws/ws.go:86 +0xa53
| github.com/gofiber/websocket/v2.New.func2.4(0xc0000f8160)
| 	github.com/gofiber/websocket/[email protected]/websocket.go:109 +0x69
| github.com/fasthttp/websocket.(*FastHTTPUpgrader).Upgrade.func1(0xb9e2d8, 0xc0005a08a0)
| 	github.com/fasthttp/[email protected]/server_fasthttp.go:201 +0x1be
| github.com/valyala/fasthttp.hijackConnHandler(0xb90280, 0xc0000bd7a0, 0xb9e438, 0xc0000ba268, 0xc0000e1680, 0xc000444480)
| 	github.com/valyala/[email protected]/server.go:2307 +0x7b
| created by github.com/valyala/fasthttp.(*Server).serveConn
| 	github.com/valyala/[email protected]/server.go:2268 +0xad8
| panic: runtime error: invalid memory address or nil pointer dereference
| [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x956f6a]
|
| goroutine 136 [running]:
| sync.(*Mutex).Unlock(...)
| 	sync/mutex.go:186
| github.com/dechristopher/lioctad/www/ws/common.Unicast(0xc000366000, 0xe2, 0xf0, 0xc00016bf20, 0xc0000b9a04, 0x4, 0xc0000b9a20, 0x10, 0x1)
| 	github.com/dechristopher/lioctad/www/ws/common/common.go:22 +0x20a
| created by github.com/dechristopher/lioctad/www/ws/common.Broadcast
| 	github.com/dechristopher/lioctad/www/ws/common/common.go:30 +0x134

Game creation modal on homepage

The addition of a Create a Game function on the homepage will allow players to create custom games against others. The player will be able to select the match visibility on the homepage (public/private match), the time control, and the color they'll play first. They'll then be redirected to the match room in waiting mode with a popup showing the link to the match, also potentially with a share button.

This feature will replace the button to create a game vs a human. The quick match vs bot button should remain. Space should be left below the buttons to show a grid of active publicly listed games in waiting.

Room (Game + Clock Sync)

  • A room should connect players to a game with a clock configured
  • Clock should dictate match state and relay back to players
  • Game should stop clock on decisive move resulting in game over

Pre-join screen to confirm player joining match

This feature would solve a few issues in our pre-accounts phase. With the simplicity of the joining model (having the ID of the first player to connect become P2), we aren't room for any potential pre-flight requests to the room URL. This happens when any messaging app generates a preview of the URL to show a card with summary contents of the page. That feature breaks our current join logic and causes matches to become invalid because some server running headless chrome now owns the P2 status for the match.

We need to implement a summary screen gating player entry into the match until they confirm via button press. The summary screen will contain information about the match: opponent, time control, color being played first, etc. Confirming will immediately bring the player to the match screen and begin the match. Subsequent spectators should be directed immediately to the match room with no confirmation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.