- Revised the build and test instructions in `AGENTS.md` to emphasize the importance of formatting, testing, and building before finalizing code changes.
- Enhanced comments in the `Makefile` to clarify the purpose of each target, including `run`, `dev`, `build`, `docker`, `test`, `test-race`, and `fmt`.
- Updated `README.md` to clarify the distinction between public scratch IDs and internal blob IDs.
- Modified `filesystem.go` to introduce a new `BlobID` field in the `Metadata` struct, ensuring the separation of public and internal identifiers.
- Implemented functions to generate and reserve unique public IDs for scratch entries, improving metadata integrity.
- Adjusted tests in `filesystem_test.go` to validate the new ID structure and ensure public IDs do not match blob hashes.
- Updated `docker-entrypoint.sh` to disallow custom command-line arguments, requiring configuration through `SCRATCHBOX_*` environment variables.
- Modified `README.md` to clarify that custom container commands are not supported and to reflect the new entrypoint behavior.
- Enhanced `main_test.go` to validate failure when required environment variables are not set.
- Added a function in `server.go` to print startup environment variables, ensuring visibility of configuration during server initialization.
- Modified the Docker image tagging step to include a condition that enables the 'latest' tag only when the release is not a prerelease, improving version management.
- Modified the test case in `main_test.go` to use a directory path for the config argument, ensuring that the configuration initialization fails consistently during testing.
- Introduced a new `.env.example` file to provide a template for environment variables used by the Scratchbox server.
- Added a `docker-compose.example.yml` file to facilitate easy deployment of the Scratchbox service with Docker.
- Updated `docker-entrypoint.sh` to enforce environment variable settings for server configuration.
- Removed the generation of a config key file from the workflow, simplifying the configuration process.
- Adjusted the README.md to reflect changes in configuration management and usage instructions.
- Updated the image resolution step to clarify registry and image name handling.
- Replaced the manual Docker login process with the docker/login-action for enhanced security.
- Introduced Docker metadata extraction and updated the build and push steps to utilize the latest actions for better efficiency.
- Merged the test and release-binaries jobs into a single build-and-release-executables job for improved clarity.
- Updated Docker image build and push steps to streamline the process and remove unnecessary artifact handling.
- Enhanced permissions for Docker image publishing and adjusted environment variable usage for better security and efficiency.
- Added a validation job for release tags to ensure correct format.
- Introduced a testing job to run UI tests and race tests before release.
- Enhanced the release process to build and publish Docker images alongside binaries.
- Updated artifact handling to use validated tags for naming and uploading.
- Streamlined the workflow to ensure dependencies are built and tested prior to release.
- Added validation for accepted release tag formats in the release workflow.
- Implemented a step to generate release notes based on changes since the last tag.
- Updated README.md to include accepted tag formats for stable and prerelease versions.
- Adjusted archive naming convention for consistency in release artifacts.
- Updated the release workflow to consolidate build steps for different architectures.
- Changed the variant name in README.md for clarity on static binaries compatibility.
- Enhanced the packaging process to create release archives for each binary built.
- Removed the matrix strategy for builds, simplifying the CI configuration.
- Added a step to set up Node.js version 20 in the CI workflow.
- Included installation of UI dependencies and a build step for UI assets.
- Enhanced the CI process to ensure UI components are built before running tests.
- Introduced a Dockerfile for building the application with Go and Node.js dependencies.
- Added a docker-entrypoint.sh script to manage container execution.
- Created a .dockerignore file to exclude unnecessary files from the Docker context.
- Updated Makefile to include a new target for building the Docker image.
- Added CI workflows for testing, formatting, and releasing artifacts in Gitea.
Reuse the current IP-based limiter for read endpoints so public reads remain open but throttled, and add integration coverage plus docs updates for the expanded scope.
Co-authored-by: Cursor <cursoragent@cursor.com>