Core features: - Add `joplin` command: syncs exported Markdown to Joplin via local REST API - Notebooks auto-created per provider+project (e.g. "ChatGPT - My Project") - Idempotent: notes updated (not duplicated) on re-run; note ID tracked in manifest - Add `--project` filter to `export` and `list` commands (substring or 'none') - Add ChatGPT Projects support via CHATGPT_PROJECT_IDS env var Config: - Add JOPLIN_API_TOKEN, JOPLIN_API_URL, JOPLIN_REQUEST_TIMEOUT - Version now read from importlib.metadata (single source of truth: pyproject.toml) - Bump version to 0.2.0 Quality: - Explicit Timeout handling in JoplinClient with actionable error messages - token validation (validate_token) separate from connectivity (ping) - Remove debug_auth.py, debug_claude.py, and untracked .har file - Add *.har to .gitignore (may contain auth cookies/session tokens) - Update README, CHANGELOG, FUTURE.md to reflect v0.2.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
838 B
TOML
39 lines
838 B
TOML
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "ai-chat-exporter"
|
|
version = "0.2.0"
|
|
description = "Export ChatGPT and Claude conversation history to Markdown for personal archival in Joplin"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"requests==2.31.0",
|
|
"curl_cffi==0.14.0",
|
|
"click==8.1.7",
|
|
"python-dotenv==1.0.1",
|
|
"rich==13.7.1",
|
|
"python-slugify==8.0.4",
|
|
"PyJWT==2.8.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest==8.1.1",
|
|
"pytest-mock==3.14.0",
|
|
"responses==0.25.3",
|
|
]
|
|
|
|
[project.scripts]
|
|
ai-chat-exporter = "src.main:cli"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["src*"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
python_files = ["test_*.py"]
|
|
python_classes = ["Test*"]
|
|
python_functions = ["test_*"]
|