Skip to content

Commit 318614f

Browse files
committed
feat: v0.2.0 - Major refactoring with package rename to DocsetMCP
Package Rename: - Rename package from dashmcp to docsetmcp to better reflect its purpose - Update all imports and references throughout the codebase - Update GitHub URLs to use new repository name Major Improvements: - Restructure project layout: move docset configs from dashmcp/config/docsets/ to docsetmcp/docsets/ - Add comprehensive type system with docsetmcp/types.py for better type safety - Enhance development tooling: - Add .cspell.json for spell checking - Add type stubs for external dependencies (brotli, yaml, mcp, pytest) - Add requirements-dev.txt for development dependencies - Add package.json for npm-based tools (spell checking) - Add scripts/setup_env.sh for environment setup - Improve testing infrastructure: - Enhanced test helpers and fixtures - Better test organization and coverage - Update configuration and documentation: - Update CLAUDE.md with clearer project guidance - Improve README with better examples and setup instructions - Add py.typed for PEP 561 compliance - Update build configuration: - Add pyproject.toml enhancements - Update MANIFEST.in for new structure - Configure pre-commit hooks with yamlfix - Refactor server.py with better type annotations and cleaner code structure - Update all 165+ docset YAML files with consistent formatting This release represents a significant improvement in code quality, developer experience, and maintainability while establishing a clear identity as DocsetMCP.
1 parent eb23480 commit 318614f

195 files changed

Lines changed: 1267 additions & 812 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cspell.json

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
{
2+
"version": "0.2",
3+
"language": "en",
4+
"words": [
5+
"Akka",
6+
"brotli",
7+
"cheatsheet",
8+
"cheatsheets",
9+
"clconst",
10+
"docsetmcp",
11+
"docset",
12+
"dsidx",
13+
"dzil",
14+
"fastmcp",
15+
"Haml",
16+
"instm",
17+
"intfm",
18+
"intfp",
19+
"joomla",
20+
"jqueryui",
21+
"kobold",
22+
"lgblock",
23+
"lgwin",
24+
"mvvm",
25+
"objj",
26+
"opengl",
27+
"osascript",
28+
"paren",
29+
"pyright",
30+
"ruffignore",
31+
"semanticui",
32+
"sparrow",
33+
"sproutcore",
34+
"susy",
35+
"swiftui",
36+
"tarindex",
37+
"tarix",
38+
"tmplt",
39+
"tqdm",
40+
"underscorejs",
41+
"whitelines",
42+
"xdist",
43+
"yamlfix",
44+
"zeptojs",
45+
"Значение",
46+
"Константа",
47+
"Параметр",
48+
"Синтаксис",
49+
"Функция",
50+
],
51+
"ignorePaths": [
52+
"node_modules",
53+
".venv",
54+
"*.pyc",
55+
"__pycache__",
56+
".git",
57+
".pytest_cache",
58+
"*.egg-info",
59+
"build",
60+
"dist",
61+
".tox",
62+
".mypy_cache",
63+
".coverage",
64+
"htmlcov",
65+
"*.lock"
66+
],
67+
"allowCompoundWords": true,
68+
"flagWords": [],
69+
"dictionaries": [
70+
"en",
71+
"en-gb",
72+
"companies",
73+
"softwareTerms",
74+
"misc",
75+
"python",
76+
"django",
77+
"html",
78+
"css",
79+
"bash",
80+
"fonts",
81+
"filetypes",
82+
"npm",
83+
"node",
84+
"cpp",
85+
"csharp",
86+
"java",
87+
"php",
88+
"go",
89+
"rust",
90+
"sql",
91+
"aws",
92+
"docker",
93+
"k8s",
94+
"latex",
95+
"markdown",
96+
"dotnet",
97+
"typescript"
98+
]
99+
}

.gitignore

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# Virtual environments
2-
.dashmd_mcp_venv/
3-
venv/
4-
env/
2+
.venv/
53

64
# Python
75
__pycache__/

.pre-commit-config.yaml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,18 @@ repos:
1111
rev: 1.16.0
1212
hooks:
1313
- id: yamlfix
14-
args: [--config-file, .yamlfix.toml]
14+
args:
15+
- --config-file
16+
- .yamlfix.toml
1517

1618
# Python linting
1719
- repo: https://github.com/PyCQA/flake8
1820
rev: 7.0.0
1921
hooks:
2022
- id: flake8
21-
args: [--max-line-length=88, --extend-ignore=E203]
23+
args:
24+
- --max-line-length=88
25+
- --extend-ignore=E203
2226

2327
# Trailing whitespace and file fixes
2428
- repo: https://github.com/pre-commit/pre-commit-hooks
@@ -28,3 +32,10 @@ repos:
2832
- id: end-of-file-fixer
2933
- id: check-yaml
3034
- id: check-added-large-files
35+
36+
# Spell checking
37+
- repo: https://github.com/streetsidesoftware/cspell-cli
38+
rev: v8.3.0
39+
hooks:
40+
- id: cspell
41+
files: \.(py|md|yaml|yml|json)$

.vscode/extensions.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"recommendations": [
3+
"ms-python.python",
4+
"ms-python.vscode-pylance",
5+
"ms-python.black-formatter",
6+
"streetsidesoftware.code-spell-checker",
7+
"emeraldwalk.RunOnSave"
8+
]
9+
}

.vscode/settings.json

Lines changed: 47 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,67 @@
11
{
2-
// Python formatting
3-
"python.formatting.provider": "black",
4-
"python.formatting.blackArgs": [
5-
"--line-length",
6-
"88"
7-
],
8-
"editor.formatOnSave": true,
92
"[python]": {
10-
"editor.defaultFormatter": "ms-python.black-formatter",
11-
"editor.formatOnSave": true,
123
"editor.codeActionsOnSave": {
134
"source.organizeImports": "explicit"
14-
}
5+
},
6+
"editor.defaultFormatter": "ms-python.black-formatter",
7+
"editor.formatOnSave": true
158
},
169
// YAML formatting
1710
"[yaml]": {
18-
"editor.defaultFormatter": "esbenp.prettier-vscode",
19-
"editor.formatOnSave": false // Disable Prettier for YAML since we use yamlfix
11+
"editor.formatOnSave": false
2012
},
21-
// Pre-commit integration
22-
"files.associations": {
23-
"*.yaml": "yaml",
24-
"*.yml": "yaml"
13+
// Spell checker configuration
14+
"cSpell.customDictionaries": {
15+
"docsetmcp": {
16+
"addWords": true,
17+
"name": "docsetmcp",
18+
"path": "${workspaceFolder}/.cspell.json",
19+
"scope": "workspace"
20+
}
2521
},
26-
// Run formatters on save via tasks
22+
"cSpell.enabledFileTypes": {
23+
"javascript": true,
24+
"json": true,
25+
"markdown": true,
26+
"plaintext": true,
27+
"python": true,
28+
"typescript": true,
29+
"yaml": true
30+
},
31+
"editor.formatOnSave": true,
2732
"emeraldwalk.runonsave": {
2833
"commands": [
2934
{
30-
"match": "\\.ya?ml$",
31-
"cmd": "yamlfix ${file}"
35+
"cmd": "${workspaceFolder}/.venv/bin/yamlfix ${file}",
36+
"isAsync": true,
37+
"match": "\\.ya?ml$"
3238
}
3339
]
3440
},
35-
// Python linting
36-
"python.linting.enabled": true,
37-
"python.linting.flake8Enabled": true,
38-
"python.linting.flake8Args": [
39-
"--max-line-length=88",
40-
"--extend-ignore=E203"
41-
],
42-
// Test discovery
43-
"python.testing.pytestEnabled": true,
44-
"python.testing.unittestEnabled": false,
45-
"python.testing.pytestArgs": [
46-
"tests"
47-
],
48-
// Exclude directories
41+
// Pre-commit integration
42+
"files.associations": {
43+
"*.yaml": "yaml",
44+
"*.yml": "yaml"
45+
},
4946
"files.exclude": {
50-
"**/__pycache__": true,
51-
"**/*.pyc": true,
47+
".coverage": true,
48+
".mypy_cache": true,
5249
".pytest_cache": true,
5350
"*.egg-info": true,
54-
".coverage": true,
55-
"htmlcov": true
51+
"**/__pycache__": true,
52+
"**/*.pyc": true,
5653
},
57-
// Spell checker words
58-
"cSpell.words": [
59-
"actionscript",
60-
"Akka",
61-
"applescript",
62-
"backbonejs",
63-
"brotli",
64-
"Codenames",
65-
"CUDA",
66-
"Docset",
67-
"docsets",
68-
"dsidx",
69-
"dzil",
70-
"flake8",
71-
"Gitmoji",
72-
"Grafx",
73-
"Haml",
74-
"Jasminej",
75-
"Joomla",
76-
"Keybaseio",
77-
"Laravel",
78-
"LLDB",
79-
"Magit",
80-
"Matplotlib",
81-
"Netcat",
82-
"Prezto",
83-
"pumadev",
84-
"pytest",
85-
"RBQL",
86-
"Sencha",
87-
"Siteleaf",
88-
"sproutcore",
89-
"Susy",
90-
"Symfony",
91-
"tarix",
92-
"Textastic",
93-
"Vimdiff",
94-
"Visidata",
95-
"xdist",
96-
"yamlfix",
97-
"Zepto",
98-
"cheatsheet",
99-
"cheatsheets",
100-
"fastmcp",
101-
"tarindex"
102-
]
54+
"npm.exclude": "**/\\.venv/**",
55+
"python.analysis.autoImportCompletions": true,
56+
"python.analysis.diagnosticMode": "workspace",
57+
"python.analysis.inlayHints.functionReturnTypes": true,
58+
"python.analysis.inlayHints.variableTypes": true,
59+
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
60+
"python.terminal.activateEnvInCurrentTerminal": true,
61+
"python.terminal.activateEnvironment": true,
62+
"python.testing.pytestArgs": [
63+
"tests"
64+
],
65+
"python.testing.pytestEnabled": true,
66+
"python.testing.unittestEnabled": false
10367
}

0 commit comments

Comments
 (0)