93381ba5cb
test(server): gate PostgreSQL tests behind postgres-tests feature
...
Move testcontainers to optional dependency and create feature flag for database integration tests. Tests without the feature use a dummy pool and skip database operations.
2026-01-07 00:00:29 -06:00
bf2a2a34e4
docs(roadmap): update feature completion status and add implementation details
2025-12-30 13:17:18 -06:00
8522dd2ff6
fix(web): run svelte-kit sync before build and simplify Dockerfile
2025-12-30 13:17:18 -06:00
b809f1c095
fix: address ESLint warnings and add Vitest configuration
...
- Add ESLint flat config with Svelte and TypeScript support
- Fix unused variables and component prop naming
- Add Vitest browser testing setup with Playwright
- Configure separate test projects for client and server code
2025-12-30 12:28:14 -06:00
eedf22f86d
refactor(just): reorganize Justfiles to match project architecture and format code
2025-12-30 04:24:41 -06:00
884f42a855
feat(server): make database and OAuth providers optional configuration
...
All external services (database, Discord/GitHub OAuth, S3) can now be individually disabled by omitting their environment variables. The server gracefully degrades functionality when services are unavailable. Partial configuration of any service group triggers a clear error at startup.
- Database: Falls back to dummy pool when DATABASE_URL is unset
- OAuth: Providers only registered when credentials are complete
- S3: Image storage disabled when credentials are missing
- Health checks reflect actual configuration state
2025-12-30 04:03:48 -06:00
7d07071e64
build(docker): remove wasm-opt optimization step
2025-12-30 03:36:49 -06:00
a89a210c78
refactor(web): extract NavLink component and add Prettier config
2025-12-30 02:42:36 -06:00
de7c656b61
refactor(just): split monolithic Justfile into project-specific modules
...
Organize recipes into dedicated Justfiles for pacman, server, and web components. Root Justfile now serves as a thin facade with common aliases pointing to submodule recipes.
2025-12-30 02:16:18 -06:00
a636870661
refactor(web): migrate from Vike+React to SvelteKit
...
- Replace Vike+React with SvelteKit for simpler SSR and routing
- Update WASM build output paths from public/ to static/
- Add wasm-opt integration for WASM size optimization
- Streamline tooling: remove ESLint, Prettier configs (use defaults)
- Move build.rs to pacman-server/ (frontend no longer needs it)
2025-12-30 02:15:42 -06:00
1c333c83fc
build: migrate from Dependabot to Renovate for dependency updates
2025-12-29 16:51:54 -06:00
16fba6aabc
build(docker): consolidate WASM build into multi-stage Dockerfile
...
- Move WASM compilation from GitHub Actions into Docker build stages
- Add emsdkVersion to package.json config as single source of truth
- Implement cargo-chef for dependency caching in both WASM and server builds
- Update .dockerignore to include packed game assets while excluding unpacked
- Simplify deploy workflow by removing local WASM build steps
2025-12-29 16:43:37 -06:00
a65836bd5b
build: migrate to bun package manager and enforce with preinstall check
2025-12-29 15:23:04 -06:00
6a4abcec0d
build(emsdk): update to latest version and fix unused import warning
...
Updates CI/CD emsdk from pinned 3.1.43 to latest (4.0.22), resolving a version
mismatch between local dev (which used latest) and production builds. This
discrepancy likely caused production-only ErrnoError bugs that were impossible
to reproduce locally.
2025-12-29 15:23:00 -06:00
e017a87e12
fix(web): prevent stopGame from being called on non-game page transitions
...
Only stop the game when navigating away from the game page (/) to avoid
WASM runtime errors when navigating between /leaderboard and /download.
Add error handling to gracefully handle crashes during page transitions.
2025-12-29 14:53:42 -06:00
21078b7ada
fix(emscripten): avoid Module.arguments access with ASSERTIONS enabled
...
Skip env::args() on Emscripten builds to prevent accessing Module.arguments
after runtime initialization, which causes abort with ASSERTIONS=1.
2025-12-29 14:50:40 -06:00
8d3d69da9d
feat(web): add cache busting with version-based asset loading
...
- Inject git hash via Vite plugin for cache-busting WASM/JS assets
- Enable Emscripten assertions for better runtime error messages
- Log Emscripten runtime init for debugging filesystem readiness
- Expand dockerignore to exclude web build artifacts
2025-12-29 14:27:52 -06:00
3bb3908853
feat(web): add smooth page transitions and WASM loading states
...
- Implement navigation state tracking with optimistic UI updates
- Add loading spinner and error handling for WASM initialization
- Insert browser yield points during game initialization to prevent freezing
- Redesign leaderboard with tabbed navigation and mock data structure
- Add utility CSS classes for consistent page layouts
2025-12-29 03:33:43 -06:00
d3514b84e9
refactor(just): reorganize recipes with sections and add quality checks
...
- Group recipes by purpose (Quality, Testing, Performance, Web, Server)
- Add check/quick/ci recipes for standard workflows
- Add format-check, audit, and smoke test utilities
- Simplify docker commands and improve UX
2025-12-29 03:04:11 -06:00
ca36d01891
test(input): update pause key binding test to use Escape
2025-12-29 02:56:50 -06:00
65a9c6bab9
feat(web): redesign navigation with centered logo and smooth page transitions
...
- Replace sidebar nav with centered header featuring PAC-MAN title
- Add glimmer animation effect for non-active logo state
- Implement 200ms fade transitions between pages
- Add custom scrollbar styling with OverlayScrollbars
- Switch to Russo One font for title, Outfit for body text
2025-12-29 02:53:55 -06:00
5e86bbb040
feat(web): implement game lifecycle management for SPA navigation
...
Add stop_game and restart_game FFI functions to properly pause/resume the game loop during page transitions, preventing resource leaks and audio issues when navigating between pages
2025-12-29 02:06:15 -06:00
791a0e48e3
fix(lint): resolve clippy warnings and add cross-platform lint recipe
...
- Add `just lint` recipe for desktop + wasm clippy checks
- Fix clippy warnings: redundant field names, formatting, dead code
- Gate Emscripten-specific audio methods behind target_os cfg
2025-12-29 01:15:03 -06:00
6db061cc41
perf(game): adjust frame time warning threshold to be platform-adaptive
...
Use dt-based dynamic threshold instead of hardcoded 17ms to account for different platform frame timings (desktop ~16.67ms vs WebAssembly's variable requestAnimationFrame)
2025-12-29 01:05:28 -06:00
949899b035
feat(game): implement pause system with Escape key and visual overlay
2025-12-29 01:03:06 -06:00
d320f2b01b
feat(web): auto-install emsdk and set default caddy port
...
- Clone and install emsdk automatically if not present
- Configure caddy to listen on port 8547 by default
2025-12-29 00:43:34 -06:00
fc349c45c5
fix(web): implement browser autoplay policy compliance with click-to-start
...
Add WaitingForInteraction game stage and Suspended audio state for Emscripten builds.
Audio unlocks and game starts after user clicks or presses any key, satisfying browser
autoplay restrictions while maintaining immediate playback on desktop.
2025-12-29 00:41:31 -06:00
dependabot[bot]
191fe49c64
chore(deps): bump actions/checkout in the github-actions group ( #11 )
...
Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout ).
Updates `actions/checkout` from 5 to 6
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-25 16:14:41 -06:00
Ryan Walters
cc6a1a4c6a
fix(ci): skip Railway deployment and Coveralls upload when tokens unavailable
...
Dependabot PRs lack access to repository secrets, causing workflow failures.
This change adds token availability checks with informative warnings, allowing
CI to complete successfully while skipping deployment steps that require secrets.
Coverage generation still runs to maintain build verification, but upload is
conditional on token availability.
2025-11-23 11:48:58 -06:00
Ryan Walters
0338188e94
refactor: reorganize project structure for clarity
...
Move documentation assets to .github/assets/ and backend scripts to pacman-server/scripts/. Updates all references in README and Justfile.
2025-11-23 11:47:43 -06:00
dependabot[bot]
a60d309a66
chore(deps): bump mockall from 0.13.1 to 0.14.0 in the rust-major group ( #14 )
2025-11-23 16:15:22 +00:00
Ryan Walters
203a5c0e2e
fix(ci): skip Coveralls upload when token unavailable
...
The coverage workflow was failing on Dependabot PRs because
COVERALLS_REPO_TOKEN is not available to PRs from forks for security
reasons. Add a conditional check to skip the upload step when the
token is missing, while still running coverage generation.
This allows PRs to pass CI while retaining coverage reports on master.
2025-11-23 01:38:41 -06:00
Ryan Walters
cb50ade88f
fix(web): resolve leaderboard production crashes by removing react-animated-numbers
...
Remove react-animated-numbers dependency which caused production-only crashes due to CommonJS/ESM interop issues with Vite's production bundler. Replace animated score displays with simple toLocaleString() formatting.
Also add missing +config.ts to disable SSR for the leaderboard page, fixing 307 redirect loop caused by SSR/prerender configuration mismatch.
Changes:
- Remove react-animated-numbers from package.json
- Add web/pages/leaderboard/+config.ts with ssr: false
- Replace AnimatedNumbers component with direct number formatting
- Simplify leaderboard score display (no animation, instant render)
2025-11-23 01:21:02 -06:00
Ryan Walters
984a2e95ca
fix(ci): consolidate Dependabot configs to resolve overlapping directories
...
Dependabot rejected the previous configuration due to duplicate
package-ecosystem/directory combinations. Merged separate patch/minor/major
update configs into single configs per directory with grouped update types.
2025-11-23 01:21:02 -06:00
Ryan Walters
50c0033f2f
fix(game): track cursor and touch state in dirty flag for immediate visual feedback
...
Extends dirty_render_system to detect changes in CursorPosition and TouchState resources. This ensures re-renders trigger immediately when clicking to activate drag functionality, when cursor debug visualization updates, and when cursor fade-out occurs after timeout.
2025-11-23 00:44:38 -06:00
Ryan Walters
61a1590289
fix(ci): use dynamic proxy Dockerfile for Railway deployment
...
Replace railway redeploy with railway up using a dynamically generated
proxy Dockerfile. The proxy pulls the pre-built image from GHCR using
the exact SHA256 digest, avoiding Railpack source builds while ensuring
deterministic deployments.
2025-11-22 23:45:53 -06:00
Ryan Walters
7eb4705b7c
fix(ci): use railway redeploy instead of railway up
...
Changed deployment command from `railway up` to `railway redeploy` because
the Railway service is configured to use an external Docker image from GHCR,
not source code deployment. The `railway up` command was attempting to build
from source with Railpack, which failed since no source code was provided.
The `railway redeploy` command triggers Railway to pull the latest image
from ghcr.io/xevion/pac-man:latest and redeploy the service.
2025-11-22 22:15:50 -06:00
Ryan Walters
a98ad23348
chore(deps): reconfigure Dependabot with granular update groups
...
Replaced monolithic dependency grouping with 13 separate update groups
across Cargo (game/server), npm (frontend), and GitHub Actions ecosystems.
Key improvements:
- Separate patch/minor/major updates to prevent breaking changes from
blocking safe updates
- Group by crate (game vs server) for easier review
- Enable auto-merge for patch updates via labels
- Weekly checks with 5 PR limit to avoid spam
- Ignore bevy_ecs 0.17+ and jsonwebtoken 10+ until manual migration
Closed PR #10 (22 jumbled updates causing build failures).
2025-11-22 21:58:27 -06:00
Ryan Walters
3e08720b43
fix(ci): correct Railway CLI invocation in GitHub Actions
...
The deployment was failing because the workflow used incorrect syntax
with `uses: docker://` which caused Docker to misinterpret `up` as an
executable rather than an argument to the Railway CLI.
Split deployment into a separate job using `container:` at the job level,
allowing the Railway CLI to execute properly. This follows Railway's
official documentation for GitHub Actions integration.
2025-11-22 21:43:04 -06:00
Ryan Walters
c306e992c4
fix(game): resolve race condition in render dirty flag using bitwise OR
...
The render dirty flag was being reset instead of accumulated, causing
the game to become stuck and unplayable in web builds. Changed from
assignment to bitwise OR to preserve all dirty state updates.
Also adds game layout component and updates Justfile to build frontend.
2025-11-22 21:14:24 -06:00
Ryan Walters
9bf8d0428c
feat(ci): trigger Railway deployment immediately after Docker push
...
Add Railway CLI step to GitHub Actions workflow that deploys to Railway
immediately after the Docker image is pushed to ghcr.io.
2025-11-22 19:08:05 -06:00
Ryan Walters
e00d209047
fix(web): enable prerendering for static deployment
...
Enable prerendering to generate index.html during build while keeping SSR disabled for Emscripten/WASM compatibility. This allows static hosting platforms to serve the application correctly.
2025-11-22 18:30:09 -06:00
dependabot[bot]
8be95a20ba
chore(deps): bump actions/upload-artifact in the dependencies group ( #9 )
...
Bumps the dependencies group with 1 update: [actions/upload-artifact](https://github.com/actions/upload-artifact ).
Updates `actions/upload-artifact` from 4 to 5
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-03 08:44:13 -06:00
Ryan Walters
ad6fd00197
refactor(docker): move frontend build into multi-stage Docker build
...
- Remove frontend build steps from GitHub Actions workflow
- Add frontend-builder stage using oven/bun:1 in Dockerfile
- Build frontend inside Docker for better consistency and portability
- Copy built frontend from frontend-builder stage to runtime image
- Simplify CI/CD pipeline by consolidating build steps
2025-11-02 22:56:07 -06:00
Ryan Walters
52dee3eee4
feat(server): add trailing slash normalization and API root endpoint
...
- Add tower-http normalize-path feature to handle trailing slashes
- Implement NormalizePathLayer to trim trailing slashes from URLs
- Add GET /api/ endpoint with API description message
- Fix OAuth callback redirect to use /api/profile path
2025-11-02 22:51:17 -06:00
Ryan Walters
83e389d789
fix(docker): include dist directory in Docker builds
...
Remove /dist from .dockerignore to ensure frontend build artifacts are
available in the Docker container for deployment.
2025-11-02 20:57:45 -06:00
Ryan Walters
8f8f82630f
fix(tests): update all test routes to use /api prefix
...
All API routes were moved under /api prefix as part of the unified
deployment architecture. Updated test files to reflect this change:
- basics.rs: Update root and auth/providers routes
- health.rs: Update health endpoint routes
- oauth.rs: Update all OAuth and auth callback routes, plus redirect locations
- sessions.rs: Update profile and logout routes
This fixes 9 failing tests that were expecting routes without the /api prefix.
2025-11-02 19:51:52 -06:00
Ryan Walters
45e6131121
feat: implement unified deployment with Docker and Railway integration
...
This commit introduces a comprehensive deployment strategy that unifies the frontend and backend into a single Docker container served by the Rust backend, streamlining the deployment process and improving production architecture.
Key changes:
- Split CI/CD workflows: separated build.yaml (for CI/PR checks) and deploy.yaml (for production deployment)
- Implemented unified Docker deployment where the Axum server serves both API routes (under /api) and frontend static files
- Added GitHub Container Registry integration for Docker image distribution
- Updated Railway configuration to use the new healthcheck path (/api/health)
- Enhanced postgres.ts script with named volumes and constants for better container management
- Added API client utilities (web/lib/api.ts) and environment configuration (web/.env.example) for frontend-backend communication
- Configured Vite proxy for local development while supporting same-origin requests in production
- Updated Dockerfile to include frontend static files and proper environment variable handling
This architecture eliminates the need for separate deployments and CORS configuration, as the frontend and API are served from the same origin.
2025-11-02 19:31:22 -06:00
Ryan Walters
4002729ef7
fix(ci): update deployment path and add Vike build step
...
- Add web frontend build step to compile Vike site
- Change artifact upload path from ./dist/ to ./web/dist/
- Install web dependencies before building frontend
2025-11-02 13:44:38 -06:00
Ryan Walters
fb98c077b5
refactor(web): migrate frontend to Tailwind CSS and Vike SSR
...
- Replace Mantine UI components with Tailwind CSS v4
- Migrate from static HTML to Vike-based SSR framework
- Disable SSR for game page (Emscripten requires browser environment)
- Simplify Emscripten loading to avoid hydration conflicts
- Remove Tailwind download logic from web.build.ts
- Add package manager lockfiles for reproducible builds
- Update .gitignore for node_modules and build artifacts
2025-11-02 13:39:51 -06:00
Ryan Walters
ffc5b8d15b
fix: set VCPKG_ROOT for rust-sdl2 to find cargo-vcpkg libraries
...
cargo-vcpkg installs to target/vcpkg but rust-sdl2's vcpkg-rs crate
auto-detection doesn't reliably find it on all platforms. Set VCPKG_ROOT
explicitly to ensure consistent library discovery across platforms.
2025-11-02 13:06:38 -06:00
Ryan Walters
4f49355892
fix: prevent vcpkg cache poisoning with version-based keys
...
Cache restore-keys allowed old vcpkg builds to be restored when baseline
changed, causing persistent failures. Extract vcpkg version from Cargo.toml
using cargo metadata and use it as primary cache key component.
- Extract vcpkg baseline via cargo metadata (structured parsing)
- Unified vcpkg cache with version-isolated keys
- Removed manual macOS vcpkg setup and A/B test steps
- Cache cargo-vcpkg binary for faster builds
2025-11-02 12:48:00 -06:00
Ryan Walters
07e0709c50
test: A/B test cargo-vcpkg vs manual vcpkg with 2025.10.17
...
Adds cargo-vcpkg step alongside manual vcpkg for macOS to determine if
the fix is due to using manual vcpkg or simply upgrading to vcpkg
2025.10.17. Both methods will run to compare behavior.
- Updated vcpkg baseline from 2024.11.16 to 2025.10.17
- Restored macOS triplets in Cargo.toml
- Added duplicate cargo-vcpkg step for macOS builds
2025-11-02 11:52:39 -06:00
Ryan Walters
aeb03aaf52
fix: use manual vcpkg installation for macOS builds
...
Replaces cargo-vcpkg with direct vcpkg installation for macOS to fix
libogg build failures. Uses vcpkg 2025.10.17 with proper SDL2 package
installation and VCPKG_ROOT environment variable for rust-sdl2
integration. Windows and Linux continue using cargo-vcpkg.
2025-11-02 11:34:55 -06:00
Ryan Walters
3f6126418a
ci: update macOS runner versions in build workflow
...
Update GitHub Actions macOS runners to use macos-15-intel for x86_64 and macos-15 for aarch64 targets to align with latest runner availability.
2025-11-02 10:43:19 -06:00
Ryan Walters
54ef292606
chore: update vcpkg baseline to 2024.11.16
...
Updates vcpkg from 2024.05.24 to stable 2024.11.16 release to fix
platform-specific build failures. Avoids 2025.x versions which have
breaking vcpkgTools.xml changes incompatible with cargo-vcpkg.
2025-11-02 10:34:54 -06:00
Ryan Walters
13e592502f
fix: update vcpkg cache paths and web serve directory
...
Update GitHub Actions workflows to use correct Cargo.toml/Cargo.lock paths
in root directory instead of pacman/ subdirectory. Fix Justfile web command
to serve from web/dist/client instead of pacman/dist.
2025-11-02 09:57:02 -06:00
Ryan Walters
d9519746b8
fix: proper asset path for emscripten
2025-09-29 15:29:52 -05:00
Ryan Walters
55b31ba31e
feat: setup 'web' frontend
2025-09-25 12:37:21 -05:00
Ryan Walters
c524fdb3e7
fix: rewrite oauth provider linking system, add email_verified attribute for providers
2025-09-24 13:38:31 -05:00
Ryan Walters
bdd3c74a2d
refactor: general improvements, better comments, structuring of oauth flow (but still broken)
2025-09-24 13:13:10 -05:00
Ryan Walters
655c3c68d5
chore: limit retry to once
2025-09-24 12:08:04 -05:00
Ryan Walters
6134da1d49
chore: log testcontainer request duration, limit request trace to just image
2025-09-24 12:06:24 -05:00
Ryan Walters
0b5aeceb51
feat: improve test reliability and add request tracing
...
- Add retry configuration for flaky tests (2 retries for default, 3 for
OAuth)
- Configure test groups with proper concurrency limits (serial: 1,
integration: 4)
- Add tower-http tracing layer with custom span formatting for HTTP
requests
- Simplify database pool handling by removing unnecessary Arc wrapper
- Improve test context setup with better logging and error handling
- Refactor user creation parameters for better clarity and consistency
- Add debug logging for OAuth cookie handling
2025-09-19 17:35:53 -05:00
Ryan Walters
e1b266f3b2
refactor: rename Claims fields internally, maintain terse serialization with serde rename
2025-09-19 11:56:02 -05:00
Ryan Walters
76985f6390
refactor: allow testing of mocked providers via AuthRegistry creation, avoid creation of responses in auth
2025-09-19 11:50:25 -05:00
Ryan Walters
4a041a7695
test: apply coverage filters to pacman-server crate
2025-09-19 10:46:23 -05:00
Ryan Walters
62b619a3cc
ci: adjust timeouts for nextest given docker requirements
2025-09-19 10:28:59 -05:00
Ryan Walters
67c9460c84
refactor(auth): implement session-based PKCE and eliminate provider duplication
...
- Replace in-memory PKCE storage with encrypted session cookies
- Add PKCE verifier and CSRF state fields to JWT Claims struct
- Move common PKCE validation logic to OAuthProvider trait
- Extract provider-specific methods for token exchange and user fetching
- Remove PkceManager and DashMap-based storage system
- Update GitHub and Discord providers to use new session-based approach
2025-09-19 10:23:33 -05:00
Ryan Walters
7e98bc7488
test: add low slow-timeout for nextest
2025-09-19 09:50:48 -05:00
Ryan Walters
698f95ff32
refactor: clean test setup code, cleanup tests, separate into different files
2025-09-19 09:50:22 -05:00
Ryan Walters
54eca9f447
fix: install crypto provider default select
2025-09-19 08:54:20 -05:00
Ryan Walters
f9e79eb6d6
fix: move railway.json to root, explicitly configure with Dockerfile
2025-09-19 08:35:47 -05:00
Ryan Walters
408b660490
fix: drop unused fast_image_resize, drop toolchain back to 1.86, limit emscripten build to pacman project properly
2025-09-18 23:16:55 -05:00
Ryan Walters
cc06cd88a1
refactor: allow optional database in setup, use derived default
2025-09-18 22:58:38 -05:00
Ryan Walters
e2c725cb95
feat: allow health check forcing in debug, setup test mocking, plan out integration tests
2025-09-18 22:42:00 -05:00
Ryan Walters
350f92ab21
tests: setup basic tests, integration tests with testcontainers
2025-09-18 21:33:15 -05:00
Ryan Walters
3ad00bdcba
chore: setup lib for testing, image handling notes in README
2025-09-18 13:18:53 -05:00
Ryan Walters
7f9d3e9158
feat: implement r2 image upload for avatars
2025-09-18 13:18:14 -05:00
Ryan Walters
56e02e7253
refactor: remove unnecessary HashMap for passing code/state strings, formatter lifetime tweak
2025-09-17 13:18:58 -05:00
Ryan Walters
e2f3f6790f
refactor: create common pkce handling, max_age on link cookie
2025-09-17 13:08:48 -05:00
Ryan Walters
1be59f474d
feat: add Server header middleware, bump version to v0.4.0
2025-09-17 12:37:12 -05:00
Ryan Walters
916428fe76
feat: setup healthcheck route & background task
2025-09-17 12:32:52 -05:00
Ryan Walters
e02c2286bb
chore: add .scripts with local postgres setup script, setup todo list in README
2025-09-17 12:23:55 -05:00
Ryan Walters
c12dc11d8f
feat: normalize provider details into oauth_accounts table, auth linking intent, provider array in profile response
2025-09-17 11:17:31 -05:00
Ryan Walters
1cf3b901e8
feat: users table with sqlx, migrations, data persistence
2025-09-17 09:43:52 -05:00
Ryan Walters
ac1417aabc
feat: discord oauth provider, setup provider list route, add 'active' method, common type alias
2025-09-17 09:23:31 -05:00
Ryan Walters
8e23fb66a4
feat: setup smarter PKCE map purging & BasicClient type alias, smarter EnvFilter string building
2025-09-17 04:06:52 -05:00
Ryan Walters
92acb07b04
feat: setup tracing calls throughout project
2025-09-17 04:05:59 -05:00
Ryan Walters
18e750fa61
feat: add tracing/tracing-subscriber, setup CustomPrettyFormatter & CustomJsonFormatter
2025-09-17 03:48:35 -05:00
Ryan Walters
8d9c0621c9
feat: proper shutdown timeout handling
2025-09-17 03:41:13 -05:00
Ryan Walters
750b47b609
feat: add SIGINT/SIGTERM graceful shutdown handling
2025-09-17 03:36:59 -05:00
Ryan Walters
b1fae907ee
chore: add railway.json drainingSeconds
2025-09-17 03:33:39 -05:00
Ryan Walters
f3db44c48b
feat: setup github provider with generic trait, proper routes, session & jwt handling, errors & user agent
2025-09-17 03:33:18 -05:00
Ryan Walters
264478bdaa
chore: reformat recipes, add server/docker recipes, strip symbols for release
2025-09-17 01:30:04 -05:00
Ryan Walters
f69a5c7d52
feat: initial server config & Dockerfile
2025-09-16 22:13:35 -05:00
Ryan Walters
7ede82cc5d
feat: add pacman-common/pacman-server crates
2025-09-16 09:36:12 -05:00
Ryan Walters
d0ee7db2ef
fix: update workspace Cargo.toml, README.md workspace distinctions
2025-09-16 09:19:23 -05:00
Ryan Walters
a3c4c94d42
refactor: create workspace, move 'pacman' into pacman/ subfolder as workspace member
2025-09-16 01:07:16 -05:00
Ryan Walters
841cf5b83e
feat: implement pause state management and single tick command
2025-09-11 17:03:24 -05:00
Ryan Walters
a887fae00f
feat: separate player/ghost collider sizes, move fruit sprite up 1 pixel, add fruit TTL
2025-09-11 14:46:07 -05:00
Ryan Walters
273385dfe4
refactor: improve audio system states, add try_new(), organize constants, volume memory
2025-09-11 14:45:48 -05:00
Ryan Walters
82cedf7e4a
fix: remove ConsoleInit condition, add ToggleFullscreen condition, helper 'push' just recipe
2025-09-11 13:49:44 -05:00
Ryan Walters
b58a7a8f63
chore: bump version, add 'dev-release' debug profile
2025-09-11 13:46:05 -05:00
Ryan Walters
f340de80f3
feat: subsystem toggling via feature, release mode console allocation with ANSI, desktop file subscriber
2025-09-11 13:45:01 -05:00
Ryan Walters
d9ea79db74
fix: only run most workflows against 'master' branch
2025-09-11 09:41:21 -05:00
Ryan Walters
126b6ff378
feat: fullscreen toggle key
2025-09-11 09:10:19 -05:00
Ryan Walters
36e9de1a1f
chore: bump to v0.80.0, update ROADMAP.md
2025-09-11 02:26:39 -05:00
Ryan Walters
9ad1704806
feat(audio): setup intro jingle, use fruit & ghost sounds, improve AudioEvent
2025-09-11 02:24:15 -05:00
Ryan Walters
86331afd52
refactor(audio): rename eat() to waka(), use play(Sound) for death() instead
2025-09-11 02:11:57 -05:00
Ryan Walters
cca205fe95
chore: compress .ogg audio files
2025-09-11 02:01:44 -05:00
Ryan Walters
00a65954e6
refactor: unify cross-platform asset loading, avoid hard-coding with folder-based asset embedding for desktop
2025-09-11 01:11:00 -05:00
Ryan Walters
43532dac56
feat(audio): centralize sound management with proper enum, improved iterator protocols, introduce new sound files
2025-09-11 00:40:09 -05:00
Ryan Walters
08c964c32e
feat: re-implement pausing mechanism with tick-perfect audio & state pauses
2025-09-11 00:03:14 -05:00
Ryan Walters
8b2d18b3da
chore: add 'fix' just recipe, remove temp ignore lines
2025-09-10 23:10:27 -05:00
Ryan Walters
46a73c5ace
fix: solve audio glitch/crackling on Emscripten via use higher buffer and AUDIO_S16LSB
2025-09-10 23:08:46 -05:00
Ryan Walters
a2783ae62d
refactor: refine asset enum, move around audio files, use OGG for death sound
2025-09-10 22:53:19 -05:00
Ryan Walters
83e0d1d737
fix: FruitSprites resource for common tests, disable Exit command bindings on Emscripten, update ROADMAP.md
2025-09-10 22:08:32 -05:00
Ryan Walters
d86864b6a3
feat: fruit display hud
2025-09-10 22:00:11 -05:00
Ryan Walters
d7a6ee7684
fix: flush world after switching to observer-based item collection
2025-09-10 21:45:10 -05:00
Ryan Walters
d84f0c831e
feat: proper scheduling via SystemSet, non-conditional game systems, better collision handling
2025-09-10 21:36:51 -05:00
Ryan Walters
ae19ca1795
feat: rewrite ghost/item collision eventing into trigger-based observer
2025-09-10 17:15:15 -05:00
Ryan Walters
abf341d753
fix: avoid constant recalculation of max character height in TtfAtlas
2025-09-10 14:09:07 -05:00
Ryan Walters
7b6dad0c74
refactor: remove unused component, simplify visibility check defaulting behavior, reformat STORY.md
2025-09-10 11:17:12 -05:00
Ryan Walters
5563b64044
refactor: replace immutable Hidden component with mutable Visibility component
2025-09-10 00:45:16 -05:00
Ryan Walters
cb691b0907
refactor: move animation components into new systems/animation submodule
2025-09-10 00:26:49 -05:00
Ryan Walters
ce8ea347e1
refactor: reorganize hud-related elements into systems/hud submodule
2025-09-09 17:00:32 -05:00
Ryan Walters
afae3c5e7b
fix: restore target_os for linux linker arg, add documentation detail
2025-09-09 16:49:01 -05:00
Ryan Walters
4f7902fc50
fix: cfg on ConsoleInit for windows/emscripten, use simplified cfg for windows/linux
2025-09-09 16:41:59 -05:00
Ryan Walters
2a2cca675a
fix: cfg limit tracing_buffer to windows only
2025-09-09 16:27:35 -05:00
Ryan Walters
f3a6b72931
chore: remove unused tests, fixup README & disable bad markdown lints
2025-09-09 14:22:06 -05:00
Ryan Walters
ca006b5073
refactor: remove dead code, tune lints, remove useless tests
2025-09-09 14:22:06 -05:00
Ryan Walters
139afb2d40
chore: update ROADMAP.md with latest progress, detail core feature targets & mechanics
2025-09-09 11:42:26 -05:00
Ryan Walters
5d56b31353
feat: fruit spawning mechanism, sprites, pellet counting, fruit trigger observer
2025-09-09 11:26:05 -05:00
Ryan Walters
b4990af109
chore: fix clippy lints part 972
2025-09-08 23:53:30 -05:00
Ryan Walters
088c496ad9
refactor: store common components & bundles in 'common' submodule, move others directly into relevant files, create 'animation' submodule
2025-09-08 23:53:30 -05:00
Ryan Walters
5bdf11dfb6
feat: enhance slow frame timing warning
2025-09-08 19:19:23 -05:00
Ryan Walters
c163171304
refactor: use Single<> for player queries
2025-09-08 16:50:28 -05:00
Ryan Walters
63e1059df8
feat: implement entity-based sprite system for HUD display (lives)
...
- Spawn HUD elements as Renderables with simple change-based entity updates
- Updated rendering systems to accommodate new precise pixel positioning for life sprites.
2025-09-08 16:22:40 -05:00
Ryan Walters
11af44c469
feat: add bottom row HUD, proper life display sprites
2025-09-08 14:30:33 -05:00
Ryan Walters
7675608391
chore(version): bump to v0.78.0
2025-09-08 14:07:34 -05:00
Ryan Walters
7d5b8e11dd
chore: bump dependencies, spin-sleep & windows/windows-sys
2025-09-08 14:06:53 -05:00
Ryan Walters
5aba1862c9
feat: improve tracing logs application-wide
2025-09-08 13:50:38 -05:00
Ryan Walters
e46d39a938
chore: split tests & checks into separate workflows
2025-09-08 13:22:58 -05:00
Ryan Walters
49a6a5cc39
feat: implement stage transition for ghost eaten pause and add TimeToLive component
...
- `StageTransition` enum allows for collision system to apply state transition for ghost pausing.
- Added `TimeToLive` component & `time_to_live_system` to provide temporary sprite rendering of bonus sprites.
- Updated `stage_system` to handle the new ghost eaten pause state, including freezing entities and spawning bonus points.
2025-09-08 13:01:40 -05:00
Ryan Walters
ca50d0f3d8
chore: reformat README, move ideas into ROADMAP, add screenshots & image banner
2025-09-08 12:21:59 -05:00
Ryan Walters
774dc010bf
chore: add justforfunnoreally.dev badge, improve README.md, fixup STORY.md
2025-09-08 11:36:38 -05:00
Ryan Walters
e87d458121
fix: set PlayerLives default to 3, use resource for HUD lives count in top left
...
yes I am fully aware that the UP is not the player lives, I'm just
wanting the indicator to be somewhere and I'll make the proper indicator
tomorrow probably
2025-09-08 01:23:26 -05:00
Ryan Walters
44f0b5d373
fix: use coveralls in README, use proper 'coverage' recipe, remove codecov.yml
2025-09-08 01:18:55 -05:00
Ryan Walters
c828034d18
chore(version): bump version to v0.77.0
2025-09-08 01:15:40 -05:00
Ryan Walters
823f480916
feat: setup pacman collision, level restart, game over, death sequence, switch to Vec for TileSequence
2025-09-08 01:14:32 -05:00
Ryan Walters
53306de155
chore: add precommit bacon job
2025-09-07 16:41:43 -05:00
Ryan Walters
6ddc6d1181
chore: setup auto tag & bump scripts with pre-commit
2025-09-07 15:12:19 -05:00
Ryan Walters
fff44faa05
fix: use serial single-thread testing for game integration tests
2025-09-07 00:10:49 -05:00
Ryan Walters
ca17984d98
feat: use cfg-based coverage exclusion to replace 'ignore-filename-regex' option, setup coveralls & nightly-based coverage
2025-09-06 14:51:23 -05:00
Ryan Walters
c8f389b163
feat: add pacman death sound
2025-09-06 12:15:08 -05:00
Ryan Walters
9c274de901
feat: setup dying sprites with sprite validation tests
2025-09-06 12:15:08 -05:00
Ryan Walters
9633611ae8
fix: downgrade to codecov-action v4, update escapes pattern, ignore codecov.json, slim codecov config
2025-09-06 12:15:07 -05:00
Ryan Walters
897b9b8621
fix: switch from lcov to codecov.json for Codecov reporting
2025-09-06 12:15:07 -05:00
Ryan Walters
ee2569b70c
ci: drop coveralls, add codecov config, change badge
2025-09-06 12:15:07 -05:00
Ryan Walters
84caa6c25f
ci: setup codecov coverage
2025-09-06 12:15:06 -05:00
Ryan Walters
f92c9175b9
test: add ttf renderer tests
2025-09-06 12:15:06 -05:00
Ryan Walters
d561b446c5
test: remove useless/redundant tests
2025-09-06 12:15:05 -05:00
Ryan Walters
9219c771d7
test: improve input & map_builder test coverage
2025-09-06 12:15:05 -05:00
Ryan Walters
cd501aafc4
test: general game testing
2025-09-06 12:15:05 -05:00
Ryan Walters
feae1ee191
test: add asset tests, file exists & has min size
2025-09-06 12:15:04 -05:00
Ryan Walters
2f0b9825c6
test: blinking system tests
2025-09-06 12:15:04 -05:00
Ryan Walters
cac490565e
refactor: use speculoos for all test assertions
2025-09-06 12:15:04 -05:00
Ryan Walters
b60888219b
fix: remove unused BlinkingTexture
2025-09-06 12:15:03 -05:00
Ryan Walters
3c50bfeab6
refactor: add ticks to DeltaTime, rewrite Blinking system for tick-based calculations with absolute calculations, rewrite Blinking/Direction tests
2025-09-06 12:15:03 -05:00
Ryan Walters
132067c573
feat: re-implement CustomFormatter to clone Full formatterr
2025-09-06 12:15:03 -05:00
Ryan Walters
42e309a46b
feat: enhance profiling with tick-based timing management and zero-padding for skipped frames
2025-09-06 12:15:02 -05:00
Ryan Walters
a38423f006
refactor: use welford's algorithm for one-pass avg/std dev. calculations, input logging tweaks
2025-09-06 12:15:02 -05:00
Ryan Walters
07bd127596
chore: move ttf context out of game.rs, remove unnecessary window event logging
2025-09-06 12:15:01 -05:00
Ryan Walters
da42d017e7
refactor: reorganize game.rs new() into separate functions
2025-09-06 12:15:01 -05:00
Ryan Walters
8b623ffabe
feat: sprite enums for avoiding hardcoded string paths
2025-09-06 12:15:01 -05:00
Ryan Walters
af81390e30
fix: use LARGE_SCALE for BatchedLineResource calculations
2025-09-06 12:15:00 -05:00
Ryan Walters
2fabd5d7a2
feat: measure total system timings using threading indifferent method, padded formatting
2025-09-06 12:15:00 -05:00
Ryan Walters
bcd9865430
chore: move BufferedWriter into tracing_buffer.rs
2025-09-06 12:15:00 -05:00
Ryan Walters
ed16da1e8f
feat: special formatting with game tick counter, remove date from tracing formatter
2025-09-06 12:14:59 -05:00
Ryan Walters
14882531c9
fix(ci): allow dead code in buffered_writer & tracing_buffer for desktop non-windows checks
2025-09-06 12:14:59 -05:00
Ryan Walters
2d36d49b13
feat: enumerate and display render driver info, increase node id text opacity
2025-09-06 12:14:59 -05:00
Ryan Walters
0f1e1d4d42
fix: do not use canvas.output_size() for calculations due to browser behavior
2025-09-04 16:06:28 -05:00
Ryan Walters
9e029966dc
chore: setup --debug/--release args for web build script & recipe, fix test lint
2025-09-04 14:47:35 -05:00
Ryan Walters
968eb39b64
feat: fix emscripten browser logging, streamline console initialization and logging
2025-09-04 14:07:24 -05:00
Ryan Walters
0759019c8b
fix: allow Window events, allows proper logical canvas resizing
...
You have no idea how much pain this has been causing me.
2025-09-04 13:26:08 -05:00
Ryan Walters
17188df729
refactor(test): remove dead code and consolidate test utilities
2025-09-04 11:53:29 -05:00
Ryan Walters
b34c63cf9c
feat: add aspect ratio demo bin
2025-09-04 11:20:00 -05:00
Ryan Walters
57e7f395d7
feat: add drag reference control relaxation with easing, mild refactor
2025-09-04 11:19:48 -05:00
Ryan Walters
1f5af2cd96
feat: touch movement controls
2025-09-04 11:02:51 -05:00
Ryan Walters
36a2f00d8c
chore: set explicit ARGB8888 pixel format for transparency support, 'web' task with caddy fs
2025-09-04 00:13:48 -05:00
Ryan Walters
b8c7c29376
fix: calculation for rect position scaling in debug_renderer
2025-09-03 23:23:56 -05:00
Ryan Walters
a3c4e5267f
refactor: consolidate rendering systems into a combined render system for improved performance and reduced overhead
2025-09-03 23:09:19 -05:00
Ryan Walters
3e630bcbef
feat: run input_system less, rework profiling system to allow for conditional ticks, prepopulate and simplify locking mechanisms, drop RwLock
2025-09-03 23:09:19 -05:00
Ryan Walters
33775166a7
feat: add batching & merging of lines in debug rendering
2025-09-03 19:45:55 -05:00
Ryan Walters
f2732a7ff7
feat: improve debug rendering performance via batch rendering of rects
2025-09-03 19:15:05 -05:00
Ryan Walters
6771dea02b
fix: avoid padding jitter with constant name padding, minor timing calculation fixes
2025-09-03 19:00:45 -05:00
Ryan Walters
23f43288e1
feat: implement optimized text rendering by caching font characters into special atlas
2025-09-03 17:31:48 -05:00
Ryan Walters
028ee28840
fix: remove redundant double canvas copy
2025-09-03 17:31:06 -05:00
Ryan Walters
a489bff0d1
chore: add timing demo bin
2025-09-03 17:31:06 -05:00
Ryan Walters
0907b5ebe7
chore: remove unused functions, add 'web' task to Justfile
2025-09-03 16:31:21 -05:00
Ryan Walters
4cc5816d1f
refactor: use small_rng for Emscripten only, simplify platform to top-level functions only, no trait/struct
2025-09-03 11:11:04 -05:00
Ryan Walters
208ad3e733
chore: move spin-sleep to desktop only, rearrange Cargo dependencies
2025-09-03 11:04:06 -05:00
Ryan Walters
24e8b3e3bc
fix: retain main SDL & audio contexts for application lifetime
2025-09-03 09:33:03 -05:00
dependabot[bot]
da0f4d856a
chore(deps): bump actions/upload-pages-artifact ( #5 )
...
Bumps the dependencies group with 1 update: [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact ).
Updates `actions/upload-pages-artifact` from 3 to 4
- [Release notes](https://github.com/actions/upload-pages-artifact/releases )
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-03 08:28:39 -05:00
Ryan Walters
aaf30efde7
fix: only run coverage upload if secret is available
2025-09-03 08:23:33 -05:00
Ryan Walters
89f1e71568
chore: add 'samply' profiling helper task to Justfile
2025-09-02 15:42:13 -05:00
Ryan Walters
d6d0f47483
feat: optimize input system, avoid heap allocations, disable as many events as possible
2025-09-02 14:57:01 -05:00
Ryan Walters
1b0624a174
chore: add profiling profile for flamegraph
2025-09-02 14:52:11 -05:00
Ryan Walters
7dfab26898
refactor: drop remaining Box::leak & statics where possible
2025-09-02 13:44:40 -05:00
Ryan Walters
f2fc60b250
chore: add LICENSE, add missing metadata, clean up dependencies & use dev-dependencies, document choices
2025-09-02 13:23:43 -05:00
Ryan Walters
7cdd1b6ad9
refactor: use 'unsafe_textures' sdl2 feature to hide lifetimes & obscure leaks into upstream
2025-09-02 12:59:06 -05:00
Ryan Walters
d0a68faa51
chore: update dependencies, solve tracing-subscriber vulnerability
2025-09-02 09:47:11 -05:00
Ryan Walters
055dc85f2b
refactor: improve console handling & logs, scoped mutex lock, fix linux unused imports
2025-09-02 09:09:48 -05:00
Ryan Walters
39a5df1ffd
fix: use c-style strings instead of manual termination, cast pointer, use then_some
2025-09-02 08:52:08 -05:00
Ryan Walters
6637691157
feat: setup windows system console output detection for dynamic console attach
2025-09-02 00:31:59 -05:00
Ryan Walters
c79ba0d824
feat: buffer tracing logs before console init
2025-09-01 17:22:22 -05:00
Ryan Walters
b1b03b0e9c
refactor: move magic numbers & constants
2025-09-01 15:47:41 -05:00
Ryan Walters
a62ae8dfe7
fix: energizers don't change dead (eyes) ghosts
2025-09-01 15:39:17 -05:00
Ryan Walters
a21459f337
feat: revamp with better separate directional/linear animations, direction independent ticking
2025-09-01 15:28:57 -05:00
Ryan Walters
b53db3788d
refactor: unify ghost state management and animation handling, use integers for texture animation
2025-09-01 14:27:48 -05:00
Ryan Walters
e1a2e6ab62
fix: avoid switching ghost back to normal during eyes animation
2025-09-01 13:14:16 -05:00
Ryan Walters
2bdb039aa9
fix: correct broken timing format tests
2025-09-01 12:57:48 -05:00
Ryan Walters
6dd0152938
chore: remove unused dependencies
2025-09-01 12:46:39 -05:00
Ryan Walters
4881e33c6f
refactor: use U16Vec2 for sprites, remove unnecessary Deserialize trait
2025-09-01 12:44:13 -05:00
Ryan Walters
0cbd6f1aac
refactor: switch NodeId to u16, use I8Vec2 for grid coordinates
2025-09-01 12:37:44 -05:00
Ryan Walters
1206cf9ad1
feat: implement high score text rendering
2025-09-01 12:13:18 -05:00
Ryan Walters
bed913d016
fix: profiling system calculates mean of sums, not mean of means
2025-09-01 12:01:39 -05:00
Ryan Walters
98196f3e07
feat: ghost animation states, frightened/eaten behaviors, smallvec animation arrays
2025-09-01 11:46:18 -05:00
Ryan Walters
8f504d6c77
fix: correctly unhide in second pre-freeze stage
2025-09-01 10:28:08 -05:00
Ryan Walters
66499b6285
fix: remove broken console stream re-attach on Windows
2025-08-29 10:56:26 -05:00
Ryan Walters
a8e62aec56
fix: force dirty render using resource_change conditions, hide ghosts & player on initial spawn
2025-08-28 20:20:38 -05:00
Ryan Walters
cde1ea5394
feat: allow freezing of blinking entities, lightly refactor game.rs structure
2025-08-28 20:02:27 -05:00
Ryan Walters
d0628ef70b
feat: use backbuffer fully, proper 'present' system, debug texture draws with transparency
2025-08-28 19:40:31 -05:00
Ryan Walters
9bfe4a9ce7
fix: add expected MovementModifiers to spawn_test_player to fix movement tests
2025-08-28 18:35:47 -05:00
Ryan Walters
2da8a312f3
chore: remove PlayerLifecycle, move MovementModifiers directly into PlayerBundle
2025-08-28 18:32:19 -05:00
Ryan Walters
2bdd4f0d04
feat: re-implement visbility via 'Hidden' tag component, move stage visibility logic into stage system
2025-08-28 18:24:47 -05:00
Ryan Walters
5cc9b1a6ee
fix: avoid acquiring filtered player query until movement command received
2025-08-28 14:17:46 -05:00
Ryan Walters
5d4adb7743
refactor: merge 'formatting' submodule into 'profiling'
2025-08-28 14:12:23 -05:00
Ryan Walters
633d467f2c
chore: remove LevelTiming resource
2025-08-28 13:21:21 -05:00
Ryan Walters
d3e83262db
feat: better 'Vulnerable' tag for ghosts, fix movement issues
2025-08-28 13:18:47 -05:00
Ryan Walters
f31b4952e4
chore: remove wildcard/prelude imports, remove unused functions
2025-08-28 13:14:40 -05:00
Ryan Walters
ad3f896f82
chore: reorganize component definitions into relevant system files
2025-08-28 12:54:52 -05:00
Ryan Walters
80ebf08dd3
feat: stage sequence, ghost collisions & energizer logic, text color method, scheduler ordering
2025-08-28 12:40:02 -05:00
Ryan Walters
f14b3d38a4
feat: create hud rendering system
2025-08-27 22:55:26 -05:00
Ryan Walters
bf65c34b28
chore: remove unused code
2025-08-27 22:43:21 -05:00
Ryan Walters
89b0790f19
chore: fix clippy lints
2025-08-27 22:28:14 -05:00
Ryan Walters
9624bcf359
feat: collision helper, ghost/pacman collision events, collision tests
...
minor format updates from copilot's commit
2025-08-27 22:26:49 -05:00
Copilot
67a5c4a1ed
Remove 9 redundant and non-valuable tests to improve test suite quality ( #4 )
...
* Initial plan
* Remove 9 redundant and non-valuable tests across events, formatting, and item modules
Co-authored-by: Xevion <44609630+Xevion@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Xevion <44609630+Xevion@users.noreply.github.com >
2025-08-19 13:07:14 -05:00
Ryan Walters
8b5e66f514
refactor: update debug state management and rendering systems
2025-08-19 11:31:31 -05:00
Ryan
5109457fcd
test: add input tests
2025-08-19 09:40:59 -05:00
Ryan
5497e4b0b9
feat: improve input system to handle multiple keypress & release states
2025-08-19 09:35:55 -05:00
d72b6eec06
test: add item testing
2025-08-18 09:32:35 -05:00
ae42f6ead0
chore: solve clippy warnings
2025-08-18 00:06:47 -05:00
471b118efd
test: add tests for item systems & movement types
2025-08-18 00:04:07 -05:00
13a9c165f7
test: add player control & movement system testing
2025-08-18 00:03:29 -05:00
da3c8e8284
test: add player traversal flag tests, remove old disabled movement_system, public can_traverse
2025-08-17 23:52:03 -05:00
9c0711a54c
test: add more formatting tests
2025-08-17 23:47:47 -05:00
4598dc07e2
test: add tests for errors & events data structs
2025-08-17 23:46:23 -05:00
9c9dc5f423
test: remove asset.rs tests, revamp constants tests
2025-08-17 23:45:42 -05:00
12ee16faab
docs: document many major functions, types, enums for important functionality
2025-08-17 23:29:43 -05:00
398d041d96
Merge pull request #3 from Xevion/ecs
...
ECS Refactor
2025-08-16 15:25:34 -05:00
7a02d6b0b5
chore: add cargo checks to pre-commit
2025-08-16 15:14:16 -05:00
d47d70ff5b
refactor: remove dead code, move direction & graph into 'map' module
2025-08-16 15:14:16 -05:00
313ca4f3e6
fix: proper font loading, cross platform assets, better platform independent trait implementation, conditional modules
2025-08-16 14:17:28 -05:00
f940f01d9b
refactor: optimize debug system, remove redundant code & tests
2025-08-16 13:41:15 -05:00
90adaf9e84
feat: add cursor-based node highlighting for debug
2025-08-16 12:26:24 -05:00
2140fbec1b
fix: allow key holddown
2025-08-16 12:00:58 -05:00
78300bdf9c
feat: rewrite movement systems separately for player/ghosts
2025-08-16 11:44:10 -05:00
514a447162
refactor: use strum::EnumCount for const compile time system mapping
2025-08-16 11:43:46 -05:00
3d0bc66e40
feat: ghosts system
2025-08-15 20:38:18 -05:00
e0a15c1ca8
feat: implement audio muting functionality
2025-08-15 20:30:41 -05:00
fa12611c69
feat: ecs audio system
2025-08-15 20:28:47 -05:00
342f378860
fix: use renderable layer properly, sorting entities before presenting
2025-08-15 20:10:16 -05:00
e8944598cc
chore: fix clippy warnings
2025-08-15 20:10:16 -05:00
6af25af5f3
test: better formatting tests, alignment-based
2025-08-15 19:39:59 -05:00
f1935ad016
refactor: use smallvec instead of collect string, explicit formatting, accumulator fold
2025-08-15 19:15:06 -05:00
4d397bba5f
feat: item collection system, score mutations
2025-08-15 18:41:08 -05:00
80930ddd35
fix: use const MAX_SYSTEMS to ensure micromap maps are aligned in size
2025-08-15 18:40:24 -05:00
0133dd5329
feat: add background for text contrast to debug window
2025-08-15 18:39:39 -05:00
635418a4da
refactor: use stack allocated circular buffer, use RwLock+Mutex for concurrent system timing access
2025-08-15 18:06:25 -05:00
31193160a9
feat: debug text rendering of statistics, formatting with tests
2025-08-15 17:52:16 -05:00
3086453c7b
chore: adjust collider sizes
2025-08-15 16:25:42 -05:00
a8b83b8e2b
feat: high resolution debug rendering
2025-08-15 16:20:24 -05:00
8ce2af89c8
fix: add visibility check to rendering implementation
2025-08-15 15:10:09 -05:00
5f0ee87dd9
feat: better profiling statistics, less spammy
2025-08-15 15:06:53 -05:00
b88895e82f
feat: separate dirty rendering with flag resource
2025-08-15 14:19:39 -05:00
2f0c734d13
feat: only present/render canvas when renderables change
2025-08-15 14:15:18 -05:00
e96b3159d7
fix: disable vsync
2025-08-15 13:46:57 -05:00
8c95ecc547
feat: add profiling
2025-08-15 13:46:39 -05:00
02a98c9f32
chore: remove unnecessary log, simplify match to if let
2025-08-15 13:05:55 -05:00
7f95c0233e
refactor: move position/movement related components into systems/movement
2025-08-15 13:05:03 -05:00
a531228b95
chore: update thiserror & phf crates
2025-08-15 13:04:39 -05:00
de86f383bf
refactor: improve representation of movement system
2025-08-15 12:50:07 -05:00
bd811ee783
fix: initial next direction for pacman (mitigation)
2025-08-15 12:30:29 -05:00
57d7f75940
feat: implement generic optimized collision system
2025-08-15 12:21:29 -05:00
c5d6ea28e1
fix: discard PlayerControlled tag component
2025-08-15 11:28:08 -05:00
730daed20a
feat: entity type for proper edge permission calculations
2025-08-15 10:06:09 -05:00
b9bae99a4c
refactor: reorganize systems properly, move events to events.rs
2025-08-15 09:48:16 -05:00
2c65048fb0
refactor: rename 'ecs' submodule to 'systems'
2025-08-15 09:27:28 -05:00
3388d77ec5
refactor: remove all unused/broken tests, remove many now unused types/functions
2025-08-15 09:24:42 -05:00
242da2e263
refactor: reorganize ecs components
2025-08-15 09:17:43 -05:00
70fb2b9503
fix: working movement again with ecs
2025-08-14 18:35:23 -05:00
0aa056a0ae
feat: ecs keyboard interactions
2025-08-14 18:17:58 -05:00
b270318640
feat: directional rendering, interactivity
2025-08-14 15:44:07 -05:00
bc759f1ed4
refactor!: begin switching to bevy ECS, all tests broken, all systems broken
2025-08-14 15:06:56 -05:00
2f1ff85d8f
refactor: handle pausing within game, reduce input system allocations
2025-08-14 10:36:39 -05:00
b7429cd9ec
chore: solve tests/ clippy warnings
2025-08-14 09:46:10 -05:00
12a63374a8
feat: avoid using spin sleep unless focused
2025-08-13 23:30:07 -05:00
d80d7061e7
refactor: build decoupled input processing & add event queue system
2025-08-13 20:45:56 -05:00
abdefe0af0
chore: add hidden note about why Coveralls.io is disappointing today
2025-08-13 19:52:58 -05:00
4f76de7c9f
feat: enable vsync & hardware acceleration
2025-08-13 19:49:02 -05:00
db8cd6220a
feat: cache dynamicly rendered map texture
2025-08-13 19:48:50 -05:00
ced4e87d41
feat: embed atlas.json via phf instead of runtime parsing
2025-08-13 00:37:37 -05:00
09e3d85821
feat!: dynamic map rendering from tiles
2025-08-13 00:25:34 -05:00
c1e421bbbb
test: new graph tests
2025-08-12 19:58:37 -05:00
3a9381a56c
chore: use NodeId explicitly in collision.rs types
2025-08-12 19:58:11 -05:00
90bdfbd2ae
chore: remove emscripten.rs platform from coverage, add html generation task, hide absolute path with remap-path-prefix, organize gitignore
2025-08-12 19:57:52 -05:00
a230d15ffc
test: setup common submodule, add text.rs tests, pattern exclude error.rs
2025-08-12 19:24:06 -05:00
60bbd1f5d6
ci: add retry mechanism for coverage reporting via Coveralls CLI
2025-08-12 18:31:07 -05:00
43ce8a4e01
ci: use justfile for coverage, separate report/generate coverage tasks
2025-08-12 18:00:57 -05:00
1529a64588
test: add asset path validity tests
2025-08-12 17:24:12 -05:00
be5eec64c9
Add justfile for handling multiple coverage steps, prevent early termination of coverage job
2025-08-12 17:24:12 -05:00
780a33f657
test: add coverage job to bacon.toml, coverage profile for nextest
2025-08-12 16:48:01 -05:00
c1c5dae6f2
refactor: restructure game logic and state management into separate modules
...
- Moved game logic from `game.rs` to `game/mod.rs` and `game/state.rs` for better organization.
- Updated `App` to utilize the new `Game` struct and its state management.
- Refactored error handling
- Removed unused audio subsystem references
2025-08-12 14:40:48 -05:00
c489f32908
fix: audio and other subsystems being dropped in App::new(), use Box::leak to ensure static ownership
2025-08-12 13:08:08 -05:00
b91f70cf2f
ci: add concurrency group to 'wasm' job to prevent concurrent page deployments
2025-08-12 11:56:03 -05:00
24a207be01
chore: use steps.$.outputs in build workflow, document 1.86.0 toolchain version
2025-08-12 11:41:29 -05:00
44e31d9b21
chore: sync lockfile, add lcov.info to .gitignore
2025-08-12 10:31:10 -05:00
dependabot[bot]
b67234765a
chore(deps): bump actions/checkout from 4 to 5 in the dependencies group ( #1 )
...
Bumps the dependencies group with 1 update: [actions/checkout](https://github.com/actions/checkout ).
Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v4...v5 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 09:27:54 -05:00
dependabot[bot]
d07498c30e
chore(deps): bump the dependencies group with 5 updates ( #2 )
...
Bumps the dependencies group with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [thiserror](https://github.com/dtolnay/thiserror ) | `1.0.69` | `2.0.12` |
| [anyhow](https://github.com/dtolnay/anyhow ) | `1.0.98` | `1.0.99` |
| [glam](https://github.com/bitshifter/glam-rs ) | `0.30.4` | `0.30.5` |
| [serde_json](https://github.com/serde-rs/json ) | `1.0.141` | `1.0.142` |
| [libc](https://github.com/rust-lang/libc ) | `0.2.174` | `0.2.175` |
Updates `thiserror` from 1.0.69 to 2.0.12
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.69...2.0.12 )
Updates `anyhow` from 1.0.98 to 1.0.99
- [Release notes](https://github.com/dtolnay/anyhow/releases )
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.98...1.0.99 )
Updates `glam` from 0.30.4 to 0.30.5
- [Changelog](https://github.com/bitshifter/glam-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/bitshifter/glam-rs/compare/0.30.4...0.30.5 )
Updates `serde_json` from 1.0.141 to 1.0.142
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.141...v1.0.142 )
Updates `libc` from 0.2.174 to 0.2.175
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.175/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.174...0.2.175 )
---
updated-dependencies:
- dependency-name: thiserror
dependency-version: 2.0.12
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: dependencies
- dependency-name: anyhow
dependency-version: 1.0.99
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: dependencies
- dependency-name: glam
dependency-version: 0.30.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: dependencies
- dependency-name: serde_json
dependency-version: 1.0.142
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: dependencies
- dependency-name: libc
dependency-version: 0.2.175
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Xevion <xevion@xevion.dev >
2025-08-12 09:26:46 -05:00
183a432116
test: add tests for collision, items, directional, sprite
...
enum macros for FruitKind
2025-08-12 09:18:53 -05:00
ead1466b2d
chore: specify 'llvm-tools-preview' toolchain component for coverage in toolchain file
2025-08-12 00:22:27 -05:00
8ef09a4e3e
test: drop minimal_test_board, use RAW_BOARD constant, item generation tests
2025-08-11 23:26:28 -05:00
33672d8d5a
feat: implement collision detection system for entities
2025-08-11 23:24:23 -05:00
1dc8aca373
feat: item collection & collisions, pellet & energizer generation
2025-08-11 22:45:36 -05:00
02089a78da
chore: downgrade toolchain to 1.86 on all versions
...
This is just because managing both 1.86 and 1.88 is really annoying, so
it's better to just be unified. There's no real point to using 1.88
besides more clippy warnings, which are already impeding my work right
now. So we're downgrading.
2025-08-11 22:10:41 -05:00
1f8e7c6d71
fix: resolve clippy warnings, inline format vars, use tracing to log warnings
2025-08-11 22:09:08 -05:00
27079e127d
feat!: implement proper error handling, drop most expect() & unwrap() usages
2025-08-11 20:23:39 -05:00
5e9bb3535e
ci: add dependabot config
2025-08-11 19:24:52 -05:00
250cf2fc89
fix: avoid rendering path lines between far apart cells
2025-08-11 18:39:01 -05:00
57975495a9
fix: calculate more static, stable offsets for path debug rendering
2025-08-11 16:00:23 -05:00
f3e7a780e2
fix: drop problematic ctrl-c keybind for bacon, reconfigure binds
2025-08-11 15:46:26 -05:00
ee6cb0a670
refactor: implement entity trait, common abstraction for movement & rendering
2025-08-11 15:46:04 -05:00
b3df34b405
fix: crash when entering right tunnel due to overflowing pixel position calculation
2025-08-11 15:44:04 -05:00
dbafa17670
chore: add bacon.toml config file
2025-08-11 15:25:53 -05:00
d9c8f97903
feat: pathfinding for ghosts, add debug rendering of paths
2025-08-11 15:25:39 -05:00
ad2ec35bfb
chore: remove unused tracing debug invocations
2025-08-11 15:23:23 -05:00
6331ba0b2f
refactor: move graph traversal code into traversal.rs
2025-08-11 14:05:28 -05:00
3d275b8e85
fix: clippy inline format args
2025-08-11 14:05:28 -05:00
bd61db9aae
chore: remove unnecessary names, merge audit.yaml with tests.yaml, plural tests.yaml
2025-08-11 14:05:28 -05:00
f80c89fdc1
fix: clippy inline format args
2025-08-11 12:34:50 -05:00
00c27273c1
chore: remove unnecessary names, merge audit.yaml with tests.yaml, plural tests.yaml
2025-08-11 12:33:54 -05:00