Skip to content

Commit 4e88f4a

Browse files
Matt de Courcelleclaude
authored andcommitted
Release v1.0.0 - Complete rewrite as Python/JavaScript hybrid
- Transform from basic JavaScript to full-featured Python MCP server - Add 14 comprehensive tools for Substack automation - Implement browser-based authentication with CAPTCHA support - Add full rich text formatting support - Reorganize documentation structure - Update all version references to 1.0.0 - Prepare for NPM publishing This is a complete rewrite, not an update to the original fork. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 2c9d792 commit 4e88f4a

36 files changed

Lines changed: 2391 additions & 1743 deletions
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
title: ''
5+
labels: bug
6+
assignees: ''
7+
8+
---
9+
10+
**Describe the bug**
11+
A clear and concise description of what the bug is.
12+
13+
**To Reproduce**
14+
Steps to reproduce the behavior:
15+
1. Set up MCP server with '...'
16+
2. Call tool '....'
17+
3. See error
18+
19+
**Expected behavior**
20+
A clear and concise description of what you expected to happen.
21+
22+
**Error Output**
23+
```
24+
Paste any error messages here
25+
```
26+
27+
**Screenshots**
28+
If applicable, add screenshots to help explain your problem.
29+
30+
**Environment (please complete the following information):**
31+
- OS: [e.g. macOS 14.2]
32+
- Python version: [e.g. 3.11.5]
33+
- Node version: [e.g. 20.10.0]
34+
- Package version: [e.g. 2.0.0]
35+
36+
**Additional context**
37+
Add any other context about the problem here.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: Feature request
3+
about: Suggest an idea for this project
4+
title: ''
5+
labels: enhancement
6+
assignees: ''
7+
8+
---
9+
10+
**Is your feature request related to a problem? Please describe.**
11+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12+
13+
**Describe the solution you'd like**
14+
A clear and concise description of what you want to happen.
15+
16+
**Describe alternatives you've considered**
17+
A clear and concise description of any alternative solutions or features you've considered.
18+
19+
**Additional context**
20+
Add any other context or screenshots about the feature request here.

.github/pull_request_template.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
## Description
2+
3+
Please include a summary of the changes and which issue is fixed. Include relevant motivation and context.
4+
5+
Fixes # (issue)
6+
7+
## Type of change
8+
9+
Please delete options that are not relevant.
10+
11+
- [ ] Bug fix (non-breaking change which fixes an issue)
12+
- [ ] New feature (non-breaking change which adds functionality)
13+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
14+
- [ ] This change requires a documentation update
15+
16+
## Checklist:
17+
18+
- [ ] My code follows the style guidelines of this project
19+
- [ ] I have performed a self-review of my code
20+
- [ ] I have commented my code, particularly in hard-to-understand areas
21+
- [ ] I have made corresponding changes to the documentation
22+
- [ ] My changes generate no new warnings
23+
- [ ] I have added tests that prove my fix is effective or that my feature works
24+
- [ ] New and existing unit tests pass locally with my changes
25+
- [ ] Any dependent changes have been merged and published in downstream modules
26+
27+
## Testing
28+
29+
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.
30+
31+
- [ ] Test A
32+
- [ ] Test B
33+
34+
**Test Configuration**:
35+
* Python version:
36+
* Node version:
37+
* OS:
38+
39+
## Screenshots (if appropriate):

.github/workflows/ci.yml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
matrix:
14+
python-version: ['3.10', '3.11', '3.12']
15+
node-version: ['18.x', '20.x']
16+
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
- name: Set up Python ${{ matrix.python-version }}
21+
uses: actions/setup-python@v4
22+
with:
23+
python-version: ${{ matrix.python-version }}
24+
25+
- name: Set up Node.js ${{ matrix.node-version }}
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: ${{ matrix.node-version }}
29+
30+
- name: Cache Python dependencies
31+
uses: actions/cache@v3
32+
with:
33+
path: ~/.cache/pip
34+
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
35+
restore-keys: |
36+
${{ runner.os }}-pip-
37+
38+
- name: Install Python dependencies
39+
run: |
40+
python -m pip install --upgrade pip
41+
pip install -e ".[dev]"
42+
playwright install chromium
43+
44+
- name: Install Node dependencies
45+
run: npm install
46+
47+
- name: Run Python linting
48+
run: |
49+
black --check src tests
50+
ruff check src
51+
52+
- name: Run type checking
53+
run: mypy src
54+
55+
- name: Run Python tests
56+
run: |
57+
pytest -v --cov=src --cov-report=xml --cov-report=term
58+
59+
- name: Upload coverage to Codecov
60+
uses: codecov/codecov-action@v3
61+
with:
62+
file: ./coverage.xml
63+
flags: unittests
64+
name: codecov-umbrella
65+
fail_ci_if_error: false
66+
67+
security:
68+
runs-on: ubuntu-latest
69+
steps:
70+
- uses: actions/checkout@v4
71+
72+
- name: Run security checks
73+
uses: pypa/gh-action-pip-audit@v1.0.8
74+
with:
75+
inputs: pyproject.toml

.gitignore

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,35 @@ logs/
8585
# Additional editor files
8686
*.swp
8787
*.swo
88-
*.sublime-*
88+
*.sublime-*
89+
90+
# npm
91+
npm-debug.log*
92+
yarn-debug.log*
93+
yarn-error.log*
94+
.npm/
95+
96+
# Testing
97+
.nyc_output/
98+
*.lcov
99+
100+
# OS files
101+
Thumbs.db
102+
ehthumbs.db
103+
Desktop.ini
104+
105+
# Temporary files
106+
*.tmp
107+
*.temp
108+
.temp/
109+
.tmp/
110+
111+
# Lock files (keep package-lock.json)
112+
yarn.lock
113+
pnpm-lock.yaml
114+
115+
# Local environment files
116+
.env.local
117+
.env.development.local
118+
.env.test.local
119+
.env.production.local

.npmignore

Lines changed: 65 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,69 +6,123 @@ test_*.py
66
coverage/
77
htmlcov/
88
.coverage
9+
.coverage.*
910
.pytest_cache/
11+
.mypy_cache/
1012
__pycache__/
13+
**/__pycache__/
1114
*.pyc
1215
*.pyo
16+
**/*.pyc
17+
**/*.pyo
1318

1419
# Build artifacts
1520
build/
1621
dist/
1722
*.egg-info/
1823
.eggs/
24+
*.egg
1925

2026
# Version control
2127
.git/
2228
.github/
2329
.gitignore
30+
.gitattributes
2431

2532
# Development tools
2633
.vscode/
2734
.idea/
2835
*.swp
2936
*.swo
3037
.DS_Store
31-
32-
# Documentation source files (keep compiled docs)
33-
docs/*.md
34-
!docs/README.md
38+
Thumbs.db
3539

3640
# Python virtual environments
3741
venv/
42+
venv*/
43+
venv312/
3844
env/
3945
.venv/
46+
.Python
47+
48+
# Documentation (keep only user-facing docs)
49+
docs/internal/
50+
docs/COVERAGE_REPORT.md
51+
docs/TODO.md
52+
docs/ROADMAP.md
53+
docs/KNOWN_ISSUES.md
54+
docs/ERROR_HANDLING_FIXES.md
55+
docs/VISION.md
56+
docs/README.md
57+
docs/claude_desktop_test_checklist.md
58+
CLAUDE.md
4059

4160
# CI/CD and operations
42-
ops/
43-
.github/
61+
ops/publish-pypi.sh
4462
.travis.yml
4563
.gitlab-ci.yml
64+
appveyor.yml
4665

4766
# Development config
4867
.env
4968
.env.*
5069
!.env.example
51-
pyproject.toml
70+
setup.py
5271
setup.cfg
5372
requirements-dev.txt
5473
Makefile
74+
tox.ini
75+
.editorconfig
76+
.pylintrc
77+
78+
# Project specific dev files
79+
debug_*.py
80+
generate_test_content.py
81+
health_check.py
82+
cursor_config.json
5583

5684
# Temporary files
5785
*.log
5886
*.tmp
5987
*.bak
6088
*~
89+
*.cache
90+
.DS_Store
6191

6292
# Test data
6393
test-data/
6494
fixtures/
6595

66-
# Keep only essential files
67-
# The package needs:
96+
# Node modules (should be installed via postinstall)
97+
node_modules/
98+
package-lock.json
99+
yarn.lock
100+
101+
# Python specific
102+
pip-log.txt
103+
pip-delete-this-directory.txt
104+
develop-eggs/
105+
downloads/
106+
eggs/
107+
lib/
108+
lib64/
109+
parts/
110+
sdist/
111+
var/
112+
wheels/
113+
*.manifest
114+
*.spec
115+
116+
# Keep only essential files for NPM package:
68117
# - package.json
69118
# - src/ (all source code)
70-
# - scripts/ (postinstall)
119+
# - scripts/postinstall.js
120+
# - setup_auth.py
121+
# - setup.sh
122+
# - pyproject.toml (needed for pip install)
71123
# - README.md
72124
# - LICENSE
73125
# - CHANGELOG.md
74-
# - docs/README.md
126+
# - SECURITY.md
127+
# - CONTRIBUTING.md
128+
# - Essential user docs only

0 commit comments

Comments
 (0)