Skip to content

Merge Mark's and Jacob's branches#54

Open
eisbaw wants to merge 78 commits intomasterfrom
claude_merge_attempt
Open

Merge Mark's and Jacob's branches#54
eisbaw wants to merge 78 commits intomasterfrom
claude_merge_attempt

Conversation

@eisbaw
Copy link
Contributor

@eisbaw eisbaw commented Sep 25, 2025

Hi @Spatenheinz

I have rebased your commits on top of my 50-ish commits. Please have a look.
It is not a full rebase - see PR review comments.

eisbaw and others added 30 commits June 20, 2025 11:29
- replaces src = ./. with pkgs.lib.fileset.toSource
- includes Python files, setup.py, pyproject.toml, tests,
  auxiliary scripts, LICENSE, and readme.md
- excludes __pycache__ and linter cruft
- avoids unnecessary rebuilds when unrelated files change
- optimizes build context by only including relevant files
- introduces clean target to remove generated docs and caches
- reorganizes demo commands for clarity and consistency
- updates mod commands to include demo prefix for better context
- no breaking changes; enhances usability of the Justfile
- maintains existing functionality while improving structure
- adds error handling for missing remote in create_artifact_commit
- retrieves repository URL using hostname and local path as fallback
- ensures src_repo_url and src_repo are always set
- improves robustness when working with local repositories
- no breaking changes; maintains existing functionality
docs: add comprehensive documentation for git-recycle-bin

This commit introduces a complete suite of documentation files,
including core concepts, installation instructions, quick start guides,
and basic operations.

It enhances user understanding of the git-recycle-bin tool, covering
artifact management workflows, metadata handling, and CI/CD integration
patterns. The documentation is structured to facilitate easy navigation
and includes examples for practical application.

docs: enhance concepts and index documentation for git notes

- expands Git notes section in concepts.rst with detailed benefits
- adds bidirectional traceability explanation and visual diagram
- updates index.rst to include key features with icons for clarity
- improves user understanding of artifact management workflows
- no breaking changes; documentation only updates

docs: fix section headers in documentation

- adjusts section headers in overview.rst for consistency
- modifies quickstart.rst to remove redundant references
- updates basic-workflow.rst header for uniformity
- enhances readability and navigability of documentation
- no breaking changes; purely cosmetic adjustments

docs: switch to pydata theme with dark mode support

- replaces sphinx_rtd_theme with pydata-sphinx-theme
- adds sphinx-design for grid/card layouts
- includes comprehensive dark mode CSS styling
- restores theme switcher in navbar
- fixes white backgrounds in dark mode navigation/cards
- adds animated gradients and enhanced visual styling
- improves section navigation with proper toctree structure

docs: enhance documentation styling and TOC structure

- updates conf.py to increase TOC depth to 3
- adds multiple hero taglines in index.rst for clarity
- introduces new CSS styles for hero taglines in custom.css
- enhances TOC with sub-sections for better navigation
- modifies card styles for compactness and improved UX
- no breaking changes; purely cosmetic and structural updates
- improves overall documentation presentation and usability

docs: correct GitHub references in documentation

- updates owner name to "ArtifactLabs" in readme.md
- modifies GitHub URL in conf.py to point to the correct repo
- changes icon class for GitHub link to "fab fa-github-square"
- removes commented-out PyPI link for clarity
- no breaking changes; ensures accurate documentation references

docs: update documentation to use git-doc references

- replaces plain text references to git notes with :git-doc: syntax
- enhances clarity and consistency across multiple documentation files
- improves navigation to official Git documentation
- no breaking changes; purely documentation updates
- maintains existing content while improving link accessibility

docs: enhance documentation with Git glossary references

- adds :git-doc: references for Git concepts in concepts.rst
- includes tips for new users to access Git terminology
- improves navigation to official Git documentation
- no breaking changes; purely documentation updates
- maintains existing content while enhancing clarity

docs: update copyright and license information

- modifies copyright line in conf.py to remove year
- updates license type in index.rst from MIT to Apache 2.0
- clarifies project licensing for users and contributors
- no breaking changes; purely informational updates
- maintains existing documentation structure and content

docs: add RST linting targets to Justfile and shell.nix

- introduces lint-rst-basic, lint-rst-syntax, and lint-rst-length targets
- aggregates RST linting into a comprehensive lint-rst target
- adds rstcheck and restructuredtext-lint to shell.nix for RST checks
- enhances documentation quality by enforcing RST syntax and length rules
- no breaking changes; improves development workflow with new linting options
- maintains existing Justfile structure while expanding functionality

docs: format RST documentation for improved readability

- adjusts line breaks in multiple RST files for better clarity
- enhances readability of long sentences in concepts.rst, installation.rst, and overview.rst
- maintains existing content while improving visual structure
- no breaking changes; purely cosmetic updates
- aids user navigation and comprehension of documentation

docs: update command syntax in basic-operations.rst

- replaces placeholder text with angle brackets for clarity
- modifies command examples to use <operation> and <repository>
- enhances user understanding of command structure
- no breaking changes; purely cosmetic updates
- maintains existing content while improving documentation accuracy

docs: wrap long lines in RST files to stay under 120 characters

Fixed line length violations in documentation files to improve readability
and comply with formatting standards.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

docs: update installation instructions and command examples

- modifies installation instructions in index.rst and installation.rst
- updates pip install command to specify version v0.2.6
- adds new command examples for pushing and listing artifacts
- clarifies usage of `<remote_url>` in command examples
- improves documentation accuracy and user guidance
- no breaking changes; maintains existing content structure
- updates version to 0.2.6 in default.nix and setup.py
- modifies installation instructions in docs/installation.rst
- adds version flag to arg_parser.py for command line output
- ensures consistency across project versioning
- no breaking changes; maintains existing functionality
- adds Python 3.11 and related packages to shell.nix
- includes black, isort, and python-lsp-server for formatting and lint
- configures strict type checking and auto imports in VS Code
- no breaking changes; enhances development experience with new tools
- maintains existing shell.nix structure while expanding functionality
- deletes pkgs.python311Packages.sphinx-material from shell.nix
- reduces package dependencies for Sphinx documentation tools
- no impact on existing functionality; streamlines environment setup
- ensures only necessary packages are included for documentation
- creates 0013-bash-integration-tests.md for BASH tests
- validates push/download workflow across Git repositories
- includes acceptance criteria for various artifact scenarios
- ensures tests are runnable from Justfile and integrated into CI
- requires stable unit tests and core functionality before execution
- no breaking changes; adds comprehensive testing framework
submodule: Add flat1-color-dark.svg as submodule

Ran these commands:
❯ git clone --depth 1 --single-branch \
  --branch subset/20250623-015436/flat1-color-dark \
  https://github.com/ArtifactLabs/artwork.git logo
❯ git submodule add \
  --branch subset/20250623-015436/flat1-color-dark \
  https://github.com/ArtifactLabs/artwork.git logo

docs: add asset preparation step for Sphinx builds

- introduces _docs-pre target in Justfile for asset setup
- creates necessary directories and copies logo assets
- modifies docs and docs-lint targets to depend on _docs-pre
- ensures assets are available for Sphinx documentation builds
- no breaking changes; enhances build process for documentation
- improves organization of asset preparation steps

docs: update custom.css for enhanced color scheme and styles

- modifies primary, secondary, and accent colors for light/dark modes
- adjusts hero section styles for improved layout and visibility
- adds new styles for buttons, links, and sidebar active states
- enhances dark mode support with specific color adjustments
- no breaking changes; purely cosmetic updates to improve UI
- maintains existing functionality while refining visual presentation

docs: restructure hero taglines in index.rst with table

- replaces div elements with a structured table for taglines
- enhances layout and alignment of hero section content
- adds CSS styles for table formatting in custom.css
- improves visual presentation and readability of taglines
- no breaking changes; purely cosmetic updates to documentation

docs: update usage instructions and add advanced features guide

- modifies index.rst to correct command syntax for pushing artifacts
- updates quickstart.rst to clarify artifact download process using SHA
- revises basic-operations.rst to enhance command descriptions and examples
- introduces advanced-features.rst for detailed options and configurations
- no breaking changes; improves documentation clarity and usability
- enhances user experience by providing comprehensive command usage

docs: update custom.css for dark mode styling adjustments

- changes selector from [data-theme="dark"] to html[data-theme="dark"]
- adds background color variables for light and dark modes
- modifies feature, nav, and sidebar card styles for dark mode
- enhances overall dark mode appearance with consistent colors
- no breaking changes; purely cosmetic updates to improve UI
- maintains existing functionality while refining visual presentation

docs: update conf.py and index.rst for sidebar and styling

- clears primary_sidebar_end in conf.py for default behavior
- adds sidebar configuration to show navigation on all pages
- modifies index.rst for improved hero tagline formatting
- updates custom.css for light/dark mode sidebar styles
- enhances navigation visibility and consistency across themes
- no breaking changes; purely cosmetic and structural updates
- maintains existing functionality while refining UI presentation

docs: update conf.py to remove localtoc from sidebars

- removes localtoc.html from sidebar configuration
- simplifies navigation by retaining only globaltoc and searchbox
- no impact on existing functionality; maintains sidebar visibility
- aligns with recent UI refinements for consistency across themes

docs: update custom.css for Monokai theme adjustments

- modifies code block styles for Monokai theme in light/dark modes
- applies !important to ensure consistent styling across themes
- enhances syntax highlighting for better visibility and readability
- no breaking changes; purely cosmetic updates to improve UI
- maintains existing functionality while refining visual presentation

docs: add issue template for fixing PyData Sphinx theme

- introduces a new markdown file for tracking theme color mode issues
- outlines symptoms, root causes, and acceptance criteria for resolution
- provides a structured approach for addressing theme inconsistencies
- enhances documentation for better user experience and troubleshooting
- no breaking changes; serves as a guide for future fixes and improvements

docs: enforce light theme in Sphinx documentation

- updates conf.py to disable theme switching and set light mode
- modifies custom.css to apply light theme styles and hide switcher
- adds force-light-theme.js to override localStorage theme settings
- ensures consistent light theme across all documentation pages
- no breaking changes; maintains existing functionality while enforcing theme
- improves user experience by providing a uniform visual presentation

artwork: import as submodule, tracking lightweight main branch

remove logo submodule

docs: update logo references and static asset paths

- modifies justfile to copy artwork directory for static assets
- updates conf.py to set new logo path for Sphinx documentation
- changes index.rst to reference updated logo path in HTML
- ensures consistent logo usage across documentation
- no breaking changes; maintains existing functionality while updating asset locations

docs: replace "Git Recycle Bin" with "|grb|" in documentation

- updates all instances of "Git Recycle Bin" to "|grb|" for consistency
- modifies comparison.rst, concepts.rst, faq.rst, and other docs
- enhances readability and aligns with branding conventions
- no breaking changes; maintains existing documentation structure
- ensures uniformity across all documentation references

nix: add PlantUML and Sphinx extension to shell.nix

- includes pkgs.plantuml for UML diagram generation
- adds sphinxcontrib.plantuml to conf.py for Sphinx integration
- updates basic-workflow.rst to utilize UML diagrams
- enhances documentation capabilities with visual representations
- no breaking changes; maintains existing functionality while expanding features

docs: remove outdated documentation files and sections

- deletes documentation-outline.rst and modules.rst
- updates index.rst to remove references to deleted files
- addresses documentation gaps by focusing on essential content
- no breaking changes; maintains existing documentation structure
- prepares for future enhancements based on comprehensive documentation analysis

docs: FAQ workaround for sphinx replacement of grb

docs: change rst_prolog to rst_epilog in conf.py

- renames rst_prolog to rst_epilog for clarity in Sphinx config
- aligns with Sphinx documentation standards for prolog/epilog usage
- no breaking changes; maintains existing documentation functionality
- improves consistency in documentation processing flow

docs: adjust padding and font-weight in custom.css

- reduces padding in .bd-toc and its child elements
- sets font-weight to normal for active TOC entries
- enhances visual consistency in table of contents
- no breaking changes; maintains existing layout and functionality
- minor adjustments improve readability in dark theme
- adds pythonVersion parameter to allow version flexibility
- replaces hardcoded python311Packages with dynamic reference
- updates pythonPath and checkInputs to use parameterized packages
- avoids rebuilds when switching Python versions
- no breaking changes; maintains existing build functionality
- adds entries for Python virtual environments and tool caches
- includes OS-specific files and Python bytecode artifacts
- excludes documentation build output and package metadata
- reduces clutter in repository by ignoring unnecessary files
- no breaking changes; maintains existing functionality
- changes mkShell to mkShellNoCC for improved performance
- adds pkgs.nix to support multi-version Python checks
- updates shell name to reflect test, lint, and docs environment
- no breaking changes; maintains existing shell functionality
- optimizes shell environment setup for development tasks
- introduces mkPythonShell.nix for parameterized Python versions
- creates shell environments for Python 3.8 to 3.13
- enables testing with pytest across all supported versions
- optimizes shell setup for pip installations and virtual environments
- no breaking changes; maintains existing functionality while expanding testing capabilities
- replaces ./tests with filtered fileset for .py files
- optimizes checkPhase by including only relevant test files
- reduces unnecessary file processing during builds
- no breaking changes; maintains existing functionality
- improves clarity in test file management
- reduces margin-top in .bd-toc.nav from 0.25rem to 0.125rem
- decreases padding in .bd-toc.nav > li > a from 0.25rem 0.5rem to 0.125rem 0.375rem
- enhances visual consistency in table of contents layout
- no breaking changes; maintains existing functionality
- minor adjustments improve readability in dark theme
- adds python-clean target to remove Python cache files
- expands clean target to include python-clean
- renames lint targets for shell, markdown, and RST files
- introduces docs-lint-failed-substitutions for Sphinx checks
- no breaking changes; maintains existing functionality
- improves organization of linting and cleaning tasks
- changes "git-recycle-bin" to "git-recycle-bin installed"
- improves clarity in prerequisites for new users
- no breaking changes; maintains existing documentation structure
- enhances user onboarding experience by providing accurate instructions
- modifies shell-lint, md-lint, and rst-lint commands
- replaces find with git ls-files to limit scope to tracked files
- reduces false positives from untracked submodule files
- no breaking changes; maintains existing linting functionality
- improves accuracy of linting results for project files
- modifies contribution note to reference project repository
- clarifies access to development guidelines for contributors
- no breaking changes; maintains existing documentation structure
- improves onboarding experience by directing users to resources
- changes code block syntax from triple backticks to triple backticks with text
- ensures proper rendering of build output in documentation
- no breaking changes; maintains existing documentation structure
- improves readability of build output section for users
arg_parse: Fix typo
sq: rename to end-to-end

sq

end-to-end1: Test dir

end-to-end: PROJECT_ROOT

Add end-to-end2.sh which downloads specific named artifacts

test: refactor to lib_msg.bash

test: remove left over project root

test: refactor to lib_export_test_dir.bash

test: refactor into moduler libs

tests: no need for function
…and pylint

Separate environment for mypy

mypy WIP

mypy

mypy
- added 'test' target to run unittest and test_git_add_ssh_remote
- facilitates running all tests with a single command
- improves developer workflow by simplifying test execution
eisbaw and others added 25 commits June 25, 2025 20:38
- Fix f-strings without interpolation in git_recycle_bin.py
- Fix line length issues by breaking long lines
- Fix bad indentation in arg_parser.py
- Fix "no-else-return" issue in util_string.py
- Add missing class docstring in arg_parser.py
- Fix "inconsistent-return-statements" in arg_parser.py
- Improve pylint score from 9.44/10 to 9.75/10

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Break long comment line about artifact note prefixes
- Improves pylint score from 9.82/10 to 9.83/10
- All line length issues now resolved

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
The documentation for the `list` and `download` commands was
inconsistent with the actual command-line interface.

- The `list` command does not support a `--format` option and was
  incorrectly documented as doing so. The output is a simple list
  of SHAs.
- The `download` command requires an artifact SHA, but was
  documented as accepting a `--name` flag.
- Examples for build avoidance and CI/CD workflows were using these
  incorrect flags, leading to non-working scripts.

This commit corrects the documentation to accurately reflect the
tool's behavior, ensuring that users can rely on the examples and
command descriptions. The changes have been verified against the
`--help` output of the CLI.

🤖 Generated with Gemini-CLI
Adds a new "Commit Message Style" section to the `CLAUDE.md`
development guide. This section outlines the conventions to be used
for writing commit messages, including the use of Conventional
Commits, subject line length, and body formatting.

This will help ensure that all future contributions have clear,
consistent, and well-formatted commit messages.

🤖 Generated with Gemini-CLI
Add comprehensive design document for enhancing git-recycle-bin's CLI
to be more human-friendly while maintaining machine-readable compatibility.

Key improvements proposed:
- Multiple output formats (table, JSON, compact, SHA-only)
- Emoji-enhanced human interfaces with consistent visual language
- Auto-detection: rich format for TTY, minimal for pipes
- Enhanced filtering options (time, status, patterns, size)
- New `info` command for detailed artifact metadata
- Better error messages with helpful suggestions
- Improved download UX with --name and --output options

Design respects accessibility and backward compatibility:
- Emojis only in human formats, never in JSON/SHA output
- Respects NO_COLOR environment variable
- Maintains current SHA-only behavior for scripts

This addresses limitations revealed by recent documentation fixes
where imagined CLI features didn't actually exist.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive version compatibility testing to both CI systems:

**GitHub Actions & GitLab CI additions:**
- `python-sweep` job: Tests against Python 3.8,3.9,3.10,3.11,3.12,3.13
- `git-sweep` job: Tests against Git 2.25,2.30,2.35,2.38,2.43,2.44,2.45,
   2.46,2.47,2.49

**Implementation:**
- Uses existing `just python-sweep` and `just git-sweep` commands
- Leverages Nix shells for deterministic test environments
- Runs full test suite (`pytest`) across all Python versions
- Runs integration tests across all Git versions

**Issue Resolution:**
- Closes issue #11 (Multi-version Python testing)
- Acceptance criteria exceeded: covers more versions than minimum required
- Both CI systems now have comprehensive version compatibility testing

This ensures git-recycle-bin maintains compatibility across a wide range
of Python and Git versions used in production environments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add tests/test-stress-concurrent.sh with 45 concurrent processes to
expose race conditions in git-recycle-bin artifact management system.

Features:
- 30 producer processes creating artifacts with 5-second expiry
- 15 consumer processes continuously listing and downloading
- Background cleaner testing expiration under load
- Per-worker timestamped logs with unique worker IDs
- Very verbose (-vv) output for debugging
- Repository integrity verification after stress test
- Configurable test parameters via environment variables

Integration:
- Add test_stress recipe to justfile
- Add moreutils (ts) dependency to shell.nix
- Update issue #10 status to DONE with implementation details
- Reuse existing bash test framework for consistency

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Address critical race conditions and improve reliability for multi-process deployments:

**Consumer Stability (100% success):**
- Handle "not our ref" errors gracefully in download.py
- Skip expired artifacts instead of crashing
- Maintain process stability under aggressive cleanup

**Producer Reliability Improvements:**
- Add retry logic with exponential backoff to rbgit.py
- Integrate retries with all push operations (max_retries=5)
- Handle concurrent git reference conflicts automatically
- Support both captured and uncaptured stderr scenarios

**Enhanced Error Reporting:**
- Provide full git command context in error messages
- Include exit codes and stderr in RuntimeError exceptions
- Replace "error: None" with meaningful diagnostic information

**Retry Infrastructure:**
- Exponential backoff with jitter for git conflicts
- Configurable retry limits per operation type
- Smart detection of retryable vs permanent errors
- Special handling for push operations with live output

**Concurrency Patterns Addressed:**
- "cannot lock ref" conflicts from simultaneous pushes
- "reference already exists" race conditions
- "fetch first" non-fast-forward rejections
- Consumer/cleaner coordination issues

Creates issue #12 to track implementation progress and testing results.
Targets >90% producer success rate while maintaining 100% consumer stability.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Updated acceptance criteria in issue documentation for clarity
- Implemented simplified retry logic in rbgit.py
- Enhanced error handling for push operations with collision checks
- Achieved 93% producer success rate and 100% consumer stability
- Removed complex error pattern matching for robustness
- Addressed artifact naming collisions to prevent push conflicts

- Impact: Improved reliability in multi-process scenarios
- Gotchas: Remaining 7% failures due to edge case collisions
- Flow: Retry logic now based on max_retries configuration
- Add nativeBuildInputs to derivation.nix for git in tests
- Remove star imports and add explicit imports
- Add create_rbgit factory function to rbgit.py
- Update RbGit constructor to accept clean parameter

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add input validation to create_rbgit function:
- Validate src_tree_root exists and is a directory
- Validate artifact_path is not empty
- Fail fast with clear error messages

Addresses MPED principle violations identified in f64b7a7 review.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit fixes some bugs which occured as the these parts
did not change when the schema for artifact/meta-for-commit did.

Also includes tests to ensure this does not happen again
- Add --print-commit argument with default True
- Print commit SHA to stdout when enabled
- Separate push_command (CLI) from push (library function)

Manually adapted from commit 8d6b643 to work with current src/ structure.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add proper None checking and error handling:
- Check commit_info is not None before accessing
- Verify bin_sha_commit key exists in result
- Fail fast with clear error message if commit SHA unavailable
- Return non-zero exit code on failure

Addresses MPED principle violations identified in 8d6b643 review.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit refactors the code to follow a common python
package/module structure and exposes the public facing API
in the __init__.py file
Rename package directory from git-recycle-bin/ to git_recycle_bin/
to follow Python package naming conventions (PEP 8).

This addresses the critical issue identified in 23d6158 review that
would prevent the package from being properly importable.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This change allow all commands if run via cmdline to clean as
a "sideeffect".
On the other hand it allows for better decoupling of responsibility
in the library.
- Add proper error handling for rm-expired and flush-meta operations
- Prevent duplicate cleanup when running clean command
- Fail fast and verbosely on cleanup failures per MPED principles

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit allow us to do --all to show all artifacts across shas,
not only for the current sha. This composes well with filters so
we can find specifically what we need across many different shas.

We also do a bit of refactoring/cleanup for the list module
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
16 Security Hotspots
E Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Comment on lines +55 to +62
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v25
- name: Test across all Python versions
run: nix-shell --pure --run "just python-sweep"

git-sweep:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 5 months ago

To fix the problem, add an explicit permissions block in .github/workflows/ci.yml at the root level. This limits the workflow's default access to the repository using GITHUB_TOKEN, adhering to the principle of least privilege. Set contents: read to allow all jobs read-only access to repository contents, which suffices for tasks like checkout, dependency installation, and running tests. If more privileges are required for specific jobs or steps, you can later override the permissions at those job levels. No changes to steps, imports, or other code sections are necessary.

  • Add a permissions block with contents: read near the top of the workflow, preferably below name: and above on:.
  • The fix only involves editing .github/workflows/ci.yml.

Suggested changeset 1
.github/workflows/ci.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,4 +1,6 @@
 name: CI
+permissions:
+  contents: read
 
 on:
   push:
EOF
@@ -1,4 +1,6 @@
name: CI
permissions:
contents: read

on:
push:
Copilot is powered by AI and may make mistakes. Always verify output.
@Spatenheinz
Copy link

Spatenheinz commented Sep 25, 2025

What is the best way to move forward? Should i resolve comments in my own pr and then you include them into this one? Or should i throw the "faulty" commits on top of this one? Or is it enough to make new commits fixing the issues?

@Spatenheinz Spatenheinz changed the title Merge Mark's and Jacbob's branches Merge Mark's and Jacob's branches Oct 1, 2025
@eisbaw
Copy link
Contributor Author

eisbaw commented Oct 2, 2025

Yes, please resolve comments on your branch first. There were no significant merge conflicts.
This branch is just to show what is coming - and what I could apply of your stuff on top.

I will do a final review/clean/squash of my 50ish commits - making sure CI pass - and merge that.
Then we will merge your stuff after.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants