Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
a9a78bf
Update CI
pomo-mondreganto Sep 20, 2023
d50baca
Demo checker running
pomo-mondreganto Sep 20, 2023
516cba9
Fix everything
pomo-mondreganto Sep 20, 2023
ee44796
Start writing checkers-related code
pomo-mondreganto Sep 20, 2023
2952603
Remove frontend
pomo-mondreganto Sep 20, 2023
9ae8cbe
Demo data service for teams
pomo-mondreganto Sep 25, 2023
ec10132
Clean up protocol generation
pomo-mondreganto Sep 25, 2023
7d68c51
Add demo frontend
pomo-mondreganto Sep 25, 2023
0ae5cde
Setup frontend linting
pomo-mondreganto Sep 25, 2023
483ae94
Demo fully working grpc + grpc-web + grpc-json setup with teams service
pomo-mondreganto Sep 28, 2023
388014a
Minor cleanup
pomo-mondreganto Sep 28, 2023
d6b62ee
Regenerate
pomo-mondreganto Sep 28, 2023
7ce6b2e
Add services API, rework service proto
pomo-mondreganto Sep 28, 2023
e22e9ec
Regenerate
pomo-mondreganto Sep 28, 2023
700d9d9
Rework client-side caching & versioning, start writing game state pro…
pomo-mondreganto Oct 1, 2023
9fdb3e5
Add helper to commit clean protos
pomo-mondreganto Oct 1, 2023
9f953c7
Regenerate proto
pomo-mondreganto Oct 1, 2023
96ec6bd
Fix go linter
pomo-mondreganto Oct 1, 2023
cf88529
Finish service updates, start game state api
pomo-mondreganto Oct 1, 2023
f3794eb
Regenerate proto
pomo-mondreganto Oct 1, 2023
fed7bb2
Regenerate proto
pomo-mondreganto Oct 1, 2023
e9bea06
Almost finish data service (round updates left)
pomo-mondreganto Oct 1, 2023
d9f3183
Add common configs
pomo-mondreganto Oct 4, 2023
fc29023
Refactor running action
pomo-mondreganto Oct 4, 2023
01c09e7
Add some pg configuration
pomo-mondreganto Oct 4, 2023
c6805fc
Clean up configuration enums
pomo-mondreganto Oct 4, 2023
d457534
Explicit jsonb types
pomo-mondreganto Oct 4, 2023
7520bdc
Fix run count naming
pomo-mondreganto Oct 4, 2023
65c3582
Refactor workflow run
pomo-mondreganto Oct 4, 2023
b5f9e24
Add token TODO
pomo-mondreganto Oct 4, 2023
1931e16
Sanitize -> validate
pomo-mondreganto Oct 4, 2023
5994407
Apply gofancyimports
pomo-mondreganto Nov 18, 2023
976e440
Fully working & correctly ticking PUT rounds
pomo-mondreganto Nov 28, 2024
fe276ff
Regenerate proto
pomo-mondreganto Nov 28, 2024
15aad43
Better configuration
pomo-mondreganto Nov 28, 2024
e1d961e
Lint
pomo-mondreganto Nov 28, 2024
763f927
Hardcore linting
pomo-mondreganto Nov 28, 2024
5f923c5
Regenerate proto
pomo-mondreganto Nov 28, 2024
1054844
Persistent & good enough round scheduler
pomo-mondreganto Nov 29, 2024
77aa882
Add check & get workflows, refactor workflow, activities & config
pomo-mondreganto Nov 29, 2024
1231b68
Working flag receiver, db migrations, utility refactoring
pomo-mondreganto Dec 23, 2024
f2bdb61
Remove envoy leftovers
pomo-mondreganto Dec 23, 2024
38e17e6
Lint
pomo-mondreganto Dec 23, 2024
9a4c74c
GetState API for receiver service
pomo-mondreganto Dec 23, 2024
22238d3
Cleaner CI pipeline
pomo-mondreganto Dec 24, 2024
f486f03
Fix linting
pomo-mondreganto Dec 24, 2024
a91fca6
Create foreign keys & required indexes
pomo-mondreganto Dec 24, 2024
fa950ea
Rewrite all logging to use zap (untested)
pomo-mondreganto Dec 24, 2024
99208ca
Minor logging fixes
pomo-mondreganto Dec 24, 2024
57d351c
Lint
pomo-mondreganto Dec 24, 2024
f445fcd
Working scoreboard implementation
pomo-mondreganto Dec 24, 2024
d826dfd
Lint
pomo-mondreganto Dec 24, 2024
40a6d9a
More performant scoreboard processing
pomo-mondreganto Dec 24, 2024
c0ea955
Remove unused services
pomo-mondreganto Dec 24, 2024
8bc5b02
Remove internal api annotations
pomo-mondreganto Dec 24, 2024
bda7f29
Basic public api with scoreboard
pomo-mondreganto Dec 24, 2024
5791b41
Fix receiver state
pomo-mondreganto Dec 24, 2024
f956122
All-in-one deployment for ease of use
pomo-mondreganto Dec 24, 2024
0250042
Better observability:
pomo-mondreganto Dec 25, 2024
308c188
Cached board builder
pomo-mondreganto Dec 25, 2024
6d6fac3
Working scoreboard subscriptions using centrifuge
pomo-mondreganto Dec 26, 2024
d546202
Lint
pomo-mondreganto Dec 26, 2024
b7e033d
Add publish authentication to centrifuge node
pomo-mondreganto Dec 26, 2024
ef15ec7
Unready flags improvements:
pomo-mondreganto Dec 26, 2024
d5a2c03
Add testing service with checker
pomo-mondreganto Dec 26, 2024
eb0d49c
Add pycache to .gitignore
pomo-mondreganto Dec 26, 2024
e4c0adc
Working checkers, test game config
pomo-mondreganto Dec 26, 2024
b0caa1a
Rename scoreboard service to slac
pomo-mondreganto Dec 26, 2024
071f386
Strictly typed scoreboard api
pomo-mondreganto Dec 26, 2024
d660da9
Strictly typed scoreboard api
pomo-mondreganto Dec 26, 2024
77220eb
Merge remote-tracking branch 'origin/pomo/temporal-experiment' into p…
pomo-mondreganto Dec 26, 2024
97c0cc2
Add initial frontend
pomo-mondreganto Dec 27, 2024
4a6c202
Somewhat working scoreboard
pomo-mondreganto Dec 28, 2024
677de46
Cleanup code
pomo-mondreganto Dec 28, 2024
ec9068d
Add vtproto for clone, rewrite to store last checks
pomo-mondreganto Dec 28, 2024
e3c132d
Lint frontend config
pomo-mondreganto Dec 28, 2024
fd5b998
Extracted scoreboard to a hook, extracted current app to ForcAD layou…
pomo-mondreganto Dec 30, 2024
2ca91e3
Minor fixes
pomo-mondreganto Dec 30, 2024
57512ab
Cleaner axios-related code
pomo-mondreganto Dec 30, 2024
7c1b7a3
Somewhat working check/get-s
pomo-mondreganto Dec 30, 2024
cee896e
Saving check/get data, better logging
pomo-mondreganto Dec 30, 2024
b698747
Working check/get rounds
pomo-mondreganto Dec 30, 2024
00a1e5c
Throttle publishing slac states
pomo-mondreganto Dec 30, 2024
bc495d1
Publish the full scoreboard instead of slac/receiver states
pomo-mondreganto Dec 30, 2024
0d7eb5b
Cleanup frontend
pomo-mondreganto Dec 30, 2024
245e05c
Lint
pomo-mondreganto Dec 30, 2024
8ba1418
Fix workflow file
pomo-mondreganto Dec 30, 2024
4277c2e
Fix CI workflow
pomo-mondreganto Dec 30, 2024
fac59c6
Trim checkers public/private
pomo-mondreganto Dec 30, 2024
73f6caa
Add team history API
pomo-mondreganto Dec 31, 2024
3a442bc
Add frontend routing, add team history timeline
pomo-mondreganto Dec 31, 2024
c28a314
Add raw proto response format to /game handle for frontend
pomo-mondreganto Dec 31, 2024
6ad3fd9
Add per-service history links, add topbar & round progress
pomo-mondreganto Dec 31, 2024
6bfd87a
Fail check if GET was unable to pick the flag
pomo-mondreganto Jan 1, 2025
19f79fa
Fail CHECK/GET if last put failed, skip GET on first round
pomo-mondreganto Jan 2, 2025
61fc296
Higher lint timeout
pomo-mondreganto Jan 2, 2025
f6f5615
attack_data handler & snapshots
pomo-mondreganto Jan 3, 2025
17589f1
/flags http api handler
pomo-mondreganto Jan 3, 2025
cfca7f0
Add live scoreboard
pomo-mondreganto Jan 3, 2025
647dcb9
Implement game finishing logic
pomo-mondreganto Jan 5, 2025
553f80c
'Game Over' on frontend
pomo-mondreganto Jan 5, 2025
1574ef5
Enable protogetter linter
pomo-mondreganto Jan 5, 2025
7055e56
Fix protogetter linter, better models usage
pomo-mondreganto Jan 5, 2025
936f465
Remove buf.lock (no deps)
pomo-mondreganto Jan 5, 2025
49c7b0f
Dockerize all in one deployment
pomo-mondreganto Jan 6, 2025
10d5435
Add grpc auth to all services
pomo-mondreganto Jan 11, 2025
502ad9e
Completely working "simple" deployment
pomo-mondreganto Jan 12, 2025
a52e1c1
Prettier fix
pomo-mondreganto Jan 12, 2025
c156127
Add avatars
pomo-mondreganto Jan 13, 2025
04a8418
Add avatars to frontend
pomo-mondreganto Jan 13, 2025
c35464c
Add infra to add game-related CLI, add "tokens" cli
pomo-mondreganto Jan 13, 2025
d06da0b
Fix some stuff
pomo-mondreganto Apr 16, 2025
38b678f
Formatters config, up go
pomo-mondreganto Apr 16, 2025
38fe813
Remove game.yml from root
pomo-mondreganto Apr 16, 2025
7e76dc0
Fix
pomo-mondreganto Apr 19, 2025
2090c48
Slop some tests and production deploy, minor refactorings
pomo-mondreganto Jan 31, 2026
de3e99c
Better score page
pomo-mondreganto Jan 31, 2026
59fd965
save
pomo-mondreganto Jan 31, 2026
cb0552d
More & better metrics, generic client cache, cleaner external package…
pomo-mondreganto Feb 1, 2026
482af65
Rework game status, more stable tests setup
pomo-mondreganto Feb 1, 2026
87f5061
Lint
pomo-mondreganto Feb 1, 2026
cc7d4ab
Fix nilnil checks, fix receiver logic
pomo-mondreganto Feb 1, 2026
a45b492
Simplify tests setup
pomo-mondreganto Feb 1, 2026
be5c5f3
Simplify compose logic
pomo-mondreganto Feb 1, 2026
63c5103
lint
pomo-mondreganto Feb 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/front/node_modules
/vol
/.idea
/data
File renamed without changes.
122 changes: 70 additions & 52 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,89 +4,107 @@ on:
pull_request:
branches:
- master

permissions:
contents: read
checks: write

jobs:
tests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Set up Go 1.18
uses: actions/setup-go@v2
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.18

- name: "Cache go deps"
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
go-version-file: 'go.mod'

- name: Run tests
run: make test

lint-go:
e2e-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
preset: [simple, production]
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: golangci-lint
uses: golangci/golangci-lint-action@v2
- name: Set up Go
uses: actions/setup-go@v5
with:
version: latest
args: --config .golangci.yml
go-version-file: 'go.mod'

lint-front:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Set up Node 16
uses: actions/setup-node@v2
with:
node-version: "16"
- name: Pre-build Docker images
run: |
go run ./cmd/fastad init --game-config tests/e2e/fastad_test.yaml --preset ${{ matrix.preset }}
docker compose -f compose.yml build

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Run E2E tests (${{ matrix.preset }} preset)
run: go test -tags "e2e e2e_${{ matrix.preset }}" -v ./tests/e2e/... -timeout 15m

- name: "Cache deps"
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Collect Docker logs on failure
if: failure()
run: |
docker compose -f compose.yml logs --tail=100 || true
docker ps -a || true

- name: Install dependencies
working-directory: front
run: yarn install
lint-go:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Run linters
uses: wearerequired/lint-action@v2
- name: Set up Go
uses: actions/setup-go@v5
with:
eslint: true
eslint_dir: front/src
eslint_args: "--ext .js,.vue,.ts"
go-version-file: 'go.mod'

- name: Check the frontend compiles
working-directory: front
run: yarn build
- name: golangci-lint
uses: golangci/golangci-lint-action@v8
with:
version: v2.8.0

lint-proto:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Setup buf
uses: bufbuild/buf-setup-action@v1.7.0
uses: bufbuild/buf-setup-action@v1.48.0

- name: Lint proto
run: make lint-proto

lint-front:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
package_json_file: 'front/package.json'

- name: Setup node
uses: actions/setup-node@v4
with:
node-version-file: 'front/.node-version'
cache: 'pnpm'
cache-dependency-path: 'front/pnpm-lock.yaml'

- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: front

- name: Lint front
run: make lint-front
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
.idea
.DS_Store
.vscode
mise.local.toml
__pycache__
.sccignore
.generated
.env
/compose.yml
/fastad.yaml
.sisyphus
/fastad
/data
157 changes: 133 additions & 24 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,51 +1,160 @@
---
version: "2"
run:
timeout: 5m
concurrency: 4
modules-download-mode: readonly

tests: true
linters:
default: none
enable:
- asasalint
- asciicheck
- bidichk
- bodyclose
- deadcode
- canonicalheader
- containedctx
- copyloopvar
- dogsled
- durationcheck
- errcheck
- errname
- exportloopref
- errorlint
- exhaustive
- fatcontext
- forbidigo
- forcetypeassert
- gocheckcompilerdirectives
- gochecknoinits
- goconst
- gocritic
- gofmt
- goimports
- godot
- gomoddirectives
- gosimple
- gomodguard
- goprintffuncname
- gosmopolitan
- govet
- ifshort
- inamedparam
- ineffassign
- importas
- intrange
- loggercheck
- makezero
- mirror
- misspell
- musttag
- nilerr
- nilnil
- noctx
- nolintlint
- nosprintfhostport
- perfsprint
- prealloc
- predeclared
- protogetter
- reassign
- revive
- rowserrcheck
- spancheck
- sqlclosecheck
- staticcheck
- testifylint
- testpackage
- thelper
- tparallel
- unconvert
- unparam
- unused
- varcheck
- usestdlibvars
- wastedassign
- whitespace
- wrapcheck

linters-settings:
wrapcheck:
ignoreSigs:
- errors.New
- (context.Context).Err()
- google.golang.org/grpc/status.Error
- google.golang.org/grpc/status.Errorf
- .Read(p []byte) # most Read errors should be passed as-is, e.g. io.EOF.

issues:
max-issues-per-linter: 0
max-same-issues: 0
settings:
asasalint:
use-builtin-exclusions: false
copyloopvar:
check-alias: true
errcheck:
disable-default-exclusions: true
check-type-assertions: true
check-blank: true
exhaustive:
default-signifies-exhaustive: true
forbidigo:
forbid:
- pattern: self
- pattern: this
exclude-godoc-examples: false
godot:
capital: true
gomoddirectives:
exclude-forbidden: true
gomodguard:
blocked:
modules:
- github.com/golang/protobuf:
recommendations:
- google.golang.org/protobuf
- github.com/satori/go.uuid:
recommendations:
- github.com/google/uuid
- github.com/gofrs/uuid:
recommendations:
- github.com/gofrs/uuid/v5
govet:
disable:
- fieldalignment
- shadow
enable-all: true
inamedparam:
skip-single-param: true
loggercheck:
require-string-key: true
makezero:
always: true
nolintlint:
require-explanation: true
require-specific: true
perfsprint:
strconcat: false
wrapcheck:
ignore-sigs:
- func errors.New(text string) error
- status.Error(
- status.Errorf(
- fmt.Errorf(
- (context.Context).Err()
- (*google.golang.org/grpc/internal/status.Status).Err()
- (github.com/labstack/echo/v4.Context).JSONBlob(code int, b []byte) error
- (github.com/labstack/echo/v4.Context).Blob(code int, contentType string, b []byte) error
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
rules:
- linters:
- goconst
path: (.+)_test\.go
formatters:
enable:
- gofmt
- gofumpt
- gci
settings:
gofmt:
simplify: true
rewrite-rules:
- pattern: 'interface{}'
replacement: 'any'
gofumpt:
extra-rules: true
gci:
sections:
- standard
- default
- prefix(github.com/c4t-but-s4d/fastad)
- blank
- localmodule
custom-order: true
exclusions:
generated: lax
Loading
Loading