Commit Graph

122 Commits

Author SHA1 Message Date
f86a2db161 feat(dev): add Overmind-based development workflow
Add Procfile.dev for parallel backend/frontend development with
Overmind, replacing the sequential build approach. The new `just dev`
recipe starts both servers simultaneously with log multiplexing.

Changes:
- Update `just dev` to use Overmind
- Add `build-demo` recipe with optional Windows cross-compilation
- Add `smoke` recipe to verify development setup
- Improve logging in backend with bind address and dev mode indicator
- Allow missing Windows executable in debug builds
2025-12-11 18:23:11 -06:00
4a191a59f4 feat(frontend): add mobile device detection and warning modal
Add mobile device detection to prevent confusion when users try to download desktop applications on mobile devices. The download button now displays "Download for Desktop" on mobile and shows a warning modal explaining that the executables are for desktop platforms only. The warning is shown once per session and can be acknowledged to proceed with viewing download options.
2025-12-11 18:18:55 -06:00
b4022ff9db chore: add bacon config and improve dev workflow
- Add bacon.toml for Rust development watching with keybindings
- Update Justfile to use bacon for dev watching
- Configure frontend to build to ./public for backend serving
- Improve Justfile organization with comments and better task separation
- Add dev-backend and dev-frontend tasks for separate workflows
- Minor formatting fix in backend/src/state.rs
2025-12-11 17:58:10 -06:00
2532a21772 feat(backend): add thiserror-based error handling
Introduce AppError enum to replace panic-based error handling in executable loading and state management. Adds proper error propagation with descriptive error messages for missing executables, key patterns, and environment variables.
2025-12-11 17:43:40 -06:00
fd474767ae feat(frontend): add platform icons and improve download button UX
Replace generic download icon with platform-specific icons (Windows,
macOS, Linux) using react-icons. Show detected platform name in the
main download button text and disable auto-download when platform
cannot be detected, requiring manual selection from dropdown instead.
2025-12-11 17:40:04 -06:00
65aa9d66d3 ci: add Docker build and publish workflow
Add GitHub Actions workflow job to build and publish Docker images to GitHub Container Registry. Images are pushed on master branch commits and tags, with appropriate tagging strategy including semver, branch refs, and SHA.
2025-12-11 17:28:43 -06:00
e23c01e4fd refactor: reorganize backend modules and create lib.rs 2025-12-11 17:22:05 -06:00
d4454d7367 refactor: extract handlers to handlers/ directory 2025-12-11 17:22:05 -06:00
1a2b8c4407 refactor: convert to Cargo workspace structure 2025-12-11 17:21:10 -06:00
702205e181 refactor(docker): optimize multi-stage build with cargo-chef and layer caching
Improves Docker build performance and security through better layer caching,
dependency pre-building, and a minimal non-root runtime container.

- Add cargo-chef for Rust dependency caching across demo and server builds
- Separate planner and builder stages for optimal layer reuse
- Use pnpm with frozen lockfile for reproducible frontend builds
- Switch to debian:12-slim runtime with non-root user (uid 1000)
- Add health check endpoint monitoring
- Strip release binaries to reduce image size
- Pre-compress frontend assets during build
2025-12-11 12:18:57 -06:00
006055cb7f chore: add Justfile, apply clippy fixes, add frontend type checking
- Add Justfile with comprehensive development workflow commands (check,
lint, build, docker, etc.)
- Add @astrojs/check and typescript dependencies for frontend type
checking
2025-12-11 12:15:51 -06:00
8129975ecc chore(deps): resolve cargo-audit warnings, update dependencies 2025-12-11 12:07:22 -06:00
3ba9250cca refactor: apply clippy suggestions 2025-12-11 12:01:45 -06:00
82ac8caa88 refactor: migrate to envy for type-safe config parsing
Replace manual environment variable parsing with envy for structured configuration. Updates dotenv to dotenvy (maintained fork), adds dedicated Config struct with Railway-specific settings, and consolidates all environment variable access. Upgrades reqwest to 0.12.
2025-12-11 11:55:39 -06:00
a9e3ab8337 perf: optimize release profile for smaller binary size
Configure release profile with aggressive size optimizations:
- Set opt-level to 'z' for minimum binary size
- Enable LTO for better optimization across crates
- Strip debug info to reduce final binary size
- Use panic=abort to eliminate unwinding machinery
- Reduce codegen units to 1 for maximum optimization
- Keep overflow checks for safety in production
2025-12-11 11:51:30 -06:00
24c2c2b3c5 ci: add Renovate config and GitHub Actions quality workflow
Add automated dependency management with Renovate and comprehensive CI
checks including formatting, clippy, audit, and frontend build validation.
2025-12-11 11:50:59 -06:00
280f01bb28 feat: dynamic deployment id fetching in debug mode for development 2025-08-20 18:03:05 -05:00
1ffdd2b6eb fix(demo): avoid logging assumptions about state 2025-08-20 17:51:16 -05:00
e0bb0f52f0 feat: dynamically set PORT from Dockerfile, add .env.example 2025-08-20 17:40:09 -05:00
d20f298da5 feat: fetch builds logs for Railway on startup 2025-08-20 17:40:09 -05:00
8431290ea7 fix: RAILWAY_PUBLIC_DOMAIN envvar not resolving, add fallback & warning, change Dockerfile interpolation 2025-08-20 16:45:18 -05:00
d0b17fdc94 Improve README, add badges, add demo links, add Security section 2025-01-06 16:09:10 -06:00
eed66f96d7 Use proper buildLog variable for download button 2025-01-06 15:37:47 -06:00
b22d92dfb3 Add screenshots to README 2025-01-06 15:37:29 -06:00
cdbc474819 Pass ARG RAILWAY_PUBLIC_DOMAIN 2025-01-02 16:56:06 -06:00
a5e93f2afc debug log RAILWAY_PUBLIC_DOMAIN 2025-01-02 16:46:30 -06:00
8e0ca95c8a Use buildLog href 2025-01-02 15:54:06 -06:00
e68384abcf Use connectionStatus enum properly, further improve mobile scaling for screen-sm basis 2025-01-02 15:46:42 -06:00
721d0afc73 Add reconnection option, prevent autoplay, remove state on disconnect, mobile height adjustment 2025-01-02 15:40:58 -06:00
f18f4a0c7c Finish up highlight, minor increase in time, switch to react-use-webhook, client only rendering 2025-01-02 15:21:29 -06:00
178eb40c1a animate-pulse-border 2025-01-02 14:55:35 -06:00
bb224eed43 Audio via ref, DownloadButton key, highlight by token not index, deleteDownload onClick 2025-01-02 14:55:26 -06:00
d71433fa52 Fix minor react/badge issues 2025-01-02 14:54:56 -06:00
452f663884 Add delete_download incoming message handler, add future message logging for transmit 2025-01-02 14:39:27 -06:00
7736b0694e Fix CORS options/ordering 2025-01-02 13:46:27 -06:00
0663d38834 Remove unnecessary logs, switch to simple window.open download, suppressHydrationWarning 2025-01-02 13:46:02 -06:00
2a2daefd8c DownloadButton progress 2025-01-02 13:33:40 -06:00
5f2dcfa5c9 build log inte gration, delete-download-token name, fix className 2025-01-02 13:33:17 -06:00
4ae4e2c64e build_log sent with executables, use Same-Site = None in dev, partitioned cookies, CORS OPTIONS 2025-01-02 13:32:34 -06:00
3de98ca7e2 class vs className 2025-01-02 10:39:30 -06:00
3e97becf67 Rename DeleteSessionToken to DeleteDownloadToken 2025-01-02 10:37:28 -06:00
e61c4715e1 Switch from preact to react 2025-01-02 10:36:58 -06:00
e8fe3e8ec9 Setup websocket reconnection logic 2025-01-01 11:21:32 -06:00
d2ec94f578 demo: Use strong binary size reduction for release profile 2024-12-23 21:14:39 -06:00
dc332d954b server: switch to hexadecimal form, use proper download token instead of session id as key, stop panicing on unavailable websocket 2024-12-23 21:10:33 -06:00
a4f8aa1f23 demo: separate request function, switch to 0xABCD hex form, add debug / forced token env, add port to localhost default host 2024-12-23 21:09:52 -06:00
846a9adb51 fix preact.devtools config 2024-12-23 20:24:58 -06:00
c288c52517 include const time host info for reqwest endpoint 2024-12-23 20:24:50 -06:00
0ab8ad9660 Copy send_message result for send_state 2024-12-23 19:56:12 -06:00
bc39909f3c Apply Session middleware to all but /notify with separate router, improve /notify key error handling 2024-12-23 19:53:26 -06:00