Commit Graph

28 Commits

Author SHA1 Message Date
Barry Walker 30496d8e49 fix: use GitHub API directly instead of deprecated plugin
The old plugin only works on tag events. Using curl to call
GitHub API directly to create releases.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:44:23 -05:00
Barry Walker 3ce5ef3897 fix: escape variables with $$ for Woodpecker preprocessing
Woodpecker evaluates ${VAR} before the shell runs. Using $$ escaping
so variables are passed to the shell properly.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:38:43 -05:00
Barry Walker c3d23c992d fix: try secrets directive instead of environment
Testing if secrets directive injects the token properly.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:37:58 -05:00
Barry Walker 60ba630824 fix: revert to github_* secret names
User has github_token and github_username configured.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:29:13 -05:00
Barry Walker cf113b75b1 fix: use ghcr_* secret names to match Woodpecker config
WeightTracker uses ghcr_username/ghcr_token, not github_*.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:28:03 -05:00
Barry Walker 6ed551f2d4 fix: add debug output and quote git URL
Check if GITHUB_TOKEN is being injected properly.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:23:21 -05:00
Barry Walker e12e095a82 fix: use single-line kaniko command with proper quoting
Multiline backslash continuation may have shell expansion issues.
Using single line with quoted arguments instead.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:18:12 -05:00
Barry Walker 627b9fdf6c fix: consolidate all multi-command steps into script blocks
Each command runs in separate shell - variables don't persist.
All steps with variable dependencies now use single script blocks.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:10:44 -05:00
Barry Walker 23e7b6da2f feat: enable NuGet packaging
Add IsPackable and package metadata to csproj for NuGet package
generation in CI pipeline.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:03:03 -05:00
Barry Walker 0d922b185c fix: put entire version script in single shell block
Each command runs in separate shell - variables don't persist.
Moving everything into one script block.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 15:55:57 -05:00
Barry Walker 7d17582fe7 fix: use POSIX-compatible shell syntax in version script
The multiline script runs in sh, not bash. Using sed instead of
bash parameter expansion for stripping the v prefix.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 15:49:22 -05:00
Barry Walker 85aecd5b13 fix: consolidate build steps to share NuGet cache
Each step runs in a fresh container, so NuGet packages restored in one
step aren't available in the next. Consolidating restore/build/test
into single steps.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 15:47:19 -05:00
Barry Walker b77e5baf08 fix: target Linux runners instead of macOS
Add platform label to run on Linux runners with Docker support.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 15:36:03 -05:00
Barry Walker 1e5d54ebb4 fix: update to .NET 10 GA images
.NET 10 is now generally available - the -preview tags no longer exist.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:48:51 -05:00
Barry Walker 31e6529bbe fix: configure clone plugin with lfs disabled
Use woodpeckerci/plugin-git with lfs: false setting instead of
skipping clone entirely.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:46:28 -05:00
Barry Walker 5cd4ef8401 fix: skip default clone to avoid LFS failure
Woodpecker's default clone step fails when git-lfs isn't installed.
Using manual clone with alpine/git instead.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:41:54 -05:00
Barry Walker 45ad30c0b4 fix: remove invalid clone configuration
The LFS warning is non-fatal. Removing the incorrect clone config
that was causing linter errors.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:36:32 -05:00
Barry Walker 61f2d77591 fix: disable Git LFS in clone step
LFS is not installed in the Woodpecker runner and not needed for
this repo anyway.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:35:53 -05:00
Barry Walker 0f2a6937c4 fix: use separate pipeline files instead of multi-document YAML
YAML anchors don't work across document boundaries in multi-document
files. Using separate files in .woodpecker/ directory instead, which
is the recommended approach and matches WeightTracker's pattern.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:31:54 -05:00
Barry Walker dccb3729aa fix: use Kaniko for Docker builds instead of docker-buildx
The docker-buildx plugin requires privileged mode which isn't enabled
by default. Kaniko builds containers without requiring privileged mode.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:29:25 -05:00
Barry Walker 2c1ed449da feat: add trunk-based CI/CD with automatic versioning
- Implement conventional commits for semantic versioning
- PRs: build, test, Docker verify
- Merges to main: full release pipeline
  - Automatic version bump based on commit types
  - NuGet packaging
  - Multi-arch Docker build and push to GHCR
  - Git tag creation
  - GitHub release

Add CONTRIBUTING.md with:
- Trunk-based development workflow
- Conventional commits guide
- Local development instructions
2026-01-13 14:18:31 -05:00
Barry Walker 088bf244f4 Add automatic Docker builds on main branch
- docker-dev: Builds and pushes :dev tag on every main push
- docker-release: Builds :latest and :vX.Y.Z on tags
- docker-verify: Dry-run build on PRs

Updated README with Docker tag documentation.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:16:25 -05:00
Barry Walker e82c0cdb94 Add Woodpecker CI pipeline with semantic versioning
Pipeline stages:
- restore: Restore NuGet dependencies
- build: Build in Release mode
- test: Run test suite
- version: Determine version from git tags
- package-nuget: Create NuGet package (main branch)
- package-docker: Build multi-arch Docker image (tags only)
- release: Create GitHub release with artifacts (tags only)

Versioning:
- Tags (v1.0.0) → version 1.0.0
- Main branch → version X.Y.Z-dev.main.abc1234
- PRs → version X.Y.Z-dev.branch.abc1234

Docker image published to ghcr.io/barryw/paperlessmcp

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:15:56 -05:00
Barry Walker 983c5c704c Fix copyright year to 2026 2026-01-13 14:13:37 -05:00
Barry Walker c5ff68b008 Add MIT license 2026-01-13 14:09:49 -05:00
Barry Walker 51d4798597 Refactor docs: slim README, separate API reference
- Condensed README to ~190 lines (was 870+)
- Moved full API reference to docs/API_REFERENCE.md
- Added tools summary table with link to full docs
- Removed redundant nested README

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:09:02 -05:00
Barry Walker 63f355d404 Add comprehensive README with full API documentation
- Professional header with badges
- Complete feature overview
- Multiple installation methods (dotnet, Docker, Claude Desktop)
- Configuration reference
- Full API documentation for all 43+ MCP tools
- Project structure and tech stack
- Contributing guidelines
- Troubleshooting section

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:05:30 -05:00
Barry Walker a37630aeac Initial commit: Paperless-ngx MCP Server
A Model Context Protocol (MCP) server for Paperless-ngx document management.

Features:
- Full CRUD operations for documents, tags, correspondents, document types,
  storage paths, and custom fields
- Document upload with retry logic (base64 and file path)
- Bulk operations with dry-run support
- Search with full-text and metadata filtering
- Pagination support across all list operations
- Proper error handling with McpResponse wrapper

Built with .NET 10 and the official MCP SDK.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 14:01:44 -05:00