Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
5f2580f
Initial plan
Copilot Oct 17, 2025
34f9722
Add board comparison database and viewer tool
Copilot Oct 17, 2025
5adb843
Add vanilla JS frontend and documentation, update main README
Copilot Oct 17, 2025
18b0cdd
Add example queries and deployment documentation
Copilot Oct 17, 2025
7c15967
Add enhanced board explorer with single board view, detailed comparis…
Copilot Oct 17, 2025
3dddcf4
Add comprehensive enhancement documentation
Copilot Oct 17, 2025
01b3fd0
Add comprehensive architecture documentation and test suite
Copilot Oct 17, 2025
602aa45
Add comprehensive testing guide documentation
Copilot Oct 17, 2025
676d7cb
Update frontend to use database-only, remove JSON dependency for API …
Copilot Oct 17, 2025
dbd7c9b
Implement all user feedback: libcst parser, multi-version docs, merma…
Copilot Oct 17, 2025
e6f9eeb
Add GitHub Actions workflow to test board comparison tools on changes
Copilot Oct 17, 2025
b99673e
board explorer - N-M relations
Josverl Oct 17, 2025
07c1f46
Enhance frontend with Font Awesome icons and accessibility
Josverl Oct 17, 2025
b2746ad
fix board names
Josverl Oct 17, 2025
38f28f4
fix contrast
Josverl Oct 17, 2025
f75dad1
Refactor board name formatting and enhance method signature display
Josverl Oct 17, 2025
e8f3ee5
fix navigation via query string
Josverl Oct 17, 2025
7ee20aa
rename pyscript version
Josverl Oct 17, 2025
7224b21
Enhance database schema and frontend to support constants and attribu…
Josverl Oct 17, 2025
2c07b78
Fix method deduplication bug and enhance database schema for complete…
Josverl Oct 17, 2025
2a8f065
chore
Josverl Oct 17, 2025
2531364
Add utility functions to format module and class summary counts, enha…
Josverl Oct 17, 2025
7db5569
Enhance module summary formatting to include deprecation notice for '…
Josverl Oct 17, 2025
5f5cbb3
Enhance board explorer UI to support version selection for boards and…
Josverl Oct 17, 2025
916f582
Refactor control layout and enhance version selection functionality i…
Josverl Oct 17, 2025
a4d0f5e
add version
Josverl Oct 17, 2025
3643644
Refactor compare control layout and enhance stats display for improve…
Josverl Oct 17, 2025
fb82ae4
trees everywhere
Josverl Oct 17, 2025
2472ec0
Add Base classes
Josverl Oct 17, 2025
dd7ac3e
local server to avoid caching issues
Josverl Oct 17, 2025
352ce75
chore: update docs
Josverl Oct 17, 2025
952ad3a
feat: add comprehensive decorator support in tree view and database s…
Josverl Oct 17, 2025
8c60f67
fix and update tests
Josverl Oct 17, 2025
cec3ca3
chore: clean broken testst
Josverl Oct 17, 2025
bec9938
Add comprehensive tests for decorator parsing and error handling in s…
Josverl Oct 18, 2025
f54aeb5
Checkpoint from VS Code for coding agent session
Josverl Oct 18, 2025
c8dd034
Phase 1: Create basic PyScript page with JSON loading
Copilot Oct 18, 2025
ea5d096
Phase 2: Add SQLite database integration via SQL.js
Copilot Oct 18, 2025
d07a12b
Phase 3: Add board utilities module and module list display
Copilot Oct 18, 2025
3c9bf95
Complete Phase 3 documentation and README
Copilot Oct 18, 2025
5429196
Simplify PyScript app: use database exclusively, remove JSON fallback
Copilot Oct 18, 2025
ff40812
Implement expandable module tree with classes and methods
Copilot Oct 18, 2025
6a997ef
Update documentation for expandable tree implementation
Copilot Oct 18, 2025
f15af3c
Fix dynamic loading for board_utils and SQL.js integration in PyScrip…
Josverl Oct 18, 2025
3ca060b
clean Sqlite-wasm example
Josverl Oct 18, 2025
980c23d
Add user_profiles table and enhance query demonstrations in main.py
Josverl Oct 18, 2025
8003066
Well working MicroPython SQLite-asm integration
Josverl Oct 19, 2025
c3d8a40
fixes and simplicifacion of Sql.js wasm database access
Josverl Oct 19, 2025
5c6360c
Remove obsolete frontend files and update SQL.js version in pyscript …
Josverl Oct 19, 2025
a2da23d
remove unused devcontainer to try to fix Agent CDN issues
Josverl Oct 19, 2025
b81394c
small steps
Josverl Oct 20, 2025
09f2e35
better layout - selection broken
Josverl Oct 20, 2025
bbb58ec
remove demo
Josverl Oct 20, 2025
f924bc1
Add Search
Josverl Oct 20, 2025
14cf6a1
Improve text alignment for class items and tree nodes
Josverl Oct 20, 2025
116af55
use more HTML templating
Josverl Oct 20, 2025
ad9cb2b
fix: strange icons
Josverl Oct 20, 2025
564a59b
DRY - no html in my python
Josverl Oct 20, 2025
6199424
reduce html overhead
Josverl Oct 20, 2025
a6998bc
fix: Share url and Query strings
Josverl Oct 20, 2025
618a6df
fix handiling of __init__ and \ in module paths
Josverl Oct 20, 2025
b503fb9
research 4 SQlite perf options
Josverl Oct 20, 2025
1e39621
research 4 SQlite perf options
Josverl Oct 20, 2025
c0fc877
add tests for build_database
Josverl Oct 20, 2025
a95f00d
refactor and clean up
Josverl Oct 20, 2025
c3a0d7f
chore: remove dead code
Josverl Oct 20, 2025
489b8ad
chore: format
Josverl Oct 20, 2025
9ab2d14
Merge pull request #842 from Josverl:copilot/vscode1760785586629
Josverl Oct 20, 2025
c920dff
fixed Search - step 1
Josverl Oct 20, 2025
8ce807a
Search results are a treeview
Josverl Oct 21, 2025
56aee05
more better treeview
Josverl Oct 21, 2025
5aff5d1
chore - cleanup docs etc
Josverl Oct 21, 2025
49f8be5
chore: less relevant stuff
Josverl Oct 21, 2025
0b1db01
refactor-sprint 1
Josverl Oct 21, 2025
cc7a36c
srefactor - sprint 2.0
Josverl Oct 21, 2025
f13aa49
refactor - sprint 2.5
Josverl Oct 21, 2025
ef20df4
refactor - base completed
Josverl Oct 21, 2025
9ac8437
Add GitHub Actions workflow for frontend deployment
Josverl Oct 21, 2025
cea4988
Add workflow_dispatch trigger to publish workflow
Josverl Oct 21, 2025
850ea87
sqlite_wasm: fix database path
Josverl Oct 21, 2025
d818fd5
path 2nd fix
Josverl Oct 21, 2025
4b1eca4
fix some refactor problems
Josverl Oct 21, 2025
46a89bb
refactor: clear tech dept
Josverl Oct 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .coverage
Binary file not shown.
21 changes: 0 additions & 21 deletions .devcontainer/Dockerfile

This file was deleted.

53 changes: 0 additions & 53 deletions .devcontainer/devcontainer.json

This file was deleted.

115 changes: 115 additions & 0 deletions .github/workflows/publish_board_comparison_to_pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
name: Publish Board Comparison Tool to GitHub Pages

on:
# Run when frontend files are updated
push:
branches:
- main
paths:
- 'tools/board_compare/frontend/**'
- '.github/workflows/publish_board_comparison_to_pages.yml'

# Allow manual triggering
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Pages
uses: actions/configure-pages@v4

- name: Prepare deployment directory
run: |
mkdir -p _site/board-compare
cp -r tools/board_compare/frontend/* _site/board-compare/
# Rename board-explorer.html to index.html for default page
mv _site/board-compare/board-explorer.html _site/board-compare/index.html
# Create a simple index.html in root if needed
if [ ! -f "_site/index.html" ]; then
cat > _site/index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MicroPython Stubs</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
max-width: 800px;
margin: 50px auto;
padding: 20px;
line-height: 1.6;
}
h1 { color: #2c3e50; }
a {
color: #3498db;
text-decoration: none;
border-bottom: 1px solid #3498db;
}
a:hover { color: #2980b9; }
.tool {
background: #f8f9fa;
border-left: 4px solid #3498db;
padding: 15px;
margin: 20px 0;
}
</style>
</head>
<body>
<h1>🐍 MicroPython Stubs</h1>
<p>Type stubs and tools for MicroPython development.</p>

<div class="tool">
<h2><a href="/micropython-stubs/board-compare/">πŸ“Š Board Comparison Tool</a></h2>
<p>Compare MicroPython APIs (modules, classes, methods) across different boards and versions.</p>
<p>Features:</p>
<ul>
<li>Board Explorer - View complete API structure for any board</li>
<li>Compare Boards - Side-by-side comparison with diff mode</li>
<li>Search APIs - Find which boards support specific modules/classes</li>
</ul>
</div>

<h2>Resources</h2>
<ul>
<li><a href="https://github.com/Josverl/micropython-stubs">GitHub Repository</a></li>
<li><a href="https://github.com/Josverl/micropython-stubber">MicroPython Stubber</a></li>
</ul>
</body>
</html>
EOF
fi
echo "Deployment directory contents:"
ls -lR _site/

- name: Upload artifact
uses: actions/upload-pages-artifact@v3

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
35 changes: 35 additions & 0 deletions .github/workflows/publish_explorer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Publish explorer frontend to GitHub Pages

on:
workflow_dispatch:
push:
branches: [ copilot/create-database-viewer-tool] # or main

permissions:
contents: read
pages: write
id-token: write

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

# If you need a build step (npm, make, etc.), add it here.
# For example:
# - name: Build frontend
# run: |
# cd tools/board_compare/frontend
# npm ci
# npm run build

- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: tools/board_compare/frontend

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
77 changes: 77 additions & 0 deletions .github/workflows/test_board_comparison.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Test Board Comparison Tools

on:
pull_request:
paths:
- 'tools/board_compare/**'
- '.github/workflows/test_board_comparison.yml'
push:
branches:
- main
paths:
- 'tools/board_compare/**'
- '.github/workflows/test_board_comparison.yml'
workflow_dispatch:

jobs:
test-board-compare:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pydantic libcst pytest

- name: Run simple tests
working-directory: tools/board_compare
run: |
python test_tool.py

- name: Run pytest tests
working-directory: tools/board_compare
continue-on-error: true
run: |
pytest -v --tb=short

- name: Run unified test suite
working-directory: tools/board_compare
run: |
python run_tests.py

- name: Test database build (dry run)
working-directory: tools/board_compare
continue-on-error: true
run: |
# Test that the build_database script can be imported and has no syntax errors
python -c "from build_database import DatabaseBuilder; print('βœ“ build_database.py imports successfully')"

- name: Test stub scanner (dry run)
working-directory: tools/board_compare
continue-on-error: true
run: |
# Test that the scan_stubs script can be imported and has no syntax errors
python -c "from scan_stubs import StubScanner; print('βœ“ scan_stubs.py imports successfully')"

- name: Verify models
working-directory: tools/board_compare
run: |
python -c "from models import Parameter, Method, Class, Module, Board; print('βœ“ All models import successfully')"

- name: Test Summary
if: always()
run: |
echo "================================================"
echo "Board Comparison Tool Test Results"
echo "================================================"
echo "All tests completed. Check logs above for details."
48 changes: 48 additions & 0 deletions .github/workflows/update_board_comparison.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Update Board Comparison Database

on:
schedule:
# Run every Sunday at 2 AM UTC
- cron: '0 2 * * 0'
workflow_dispatch:
inputs:
version:
description: 'MicroPython version to process (e.g., v1_26_0)'
required: false
default: 'v1_26_0'

jobs:
update-database:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install dependencies
run: |
pip install pydantic

- name: Build database
run: |
cd tools/board_compare
VERSION=${{ github.event.inputs.version || 'v1_26_0' }}
python build_database.py \
--version $VERSION \
--db frontend/board_comparison.db \
--json frontend/board_comparison.json

- name: Commit and push if changed
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add tools/board_compare/frontend/board_comparison.db
git add tools/board_compare/frontend/board_comparison.json
git diff --quiet && git diff --staged --quiet || (git commit -m "Update board comparison database [automated]" && git push)
11 changes: 10 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,13 @@ publish/micropython-stdlib-stubs_100b1

# no test lock files
**/*_lock.file
tests/doc_test/micropython/
tests/doc_test/micropython/

# board comparison database files (generated, except frontend database)
tools/board_compare/*.db
tools/board_compare/*.db-journal
# Allow frontend database for GitHub Pages
!tools/board_compare/frontend/board_comparison.db

# no screenshots
.playwright-mcp/*.png
4 changes: 4 additions & 0 deletions .vscode/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore MCP server store configurations to avoid committing sensitive database paths
stores/
*store*.json
*connection*.json
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,5 @@
"python.formatting.provider": "none",
"python.analysis.supportRestructuredText": true,
"iis.configDir": "",
"esbonio.server.enabled": false,
}
Loading
Loading