Skip to content

Commit d8bdb7f

Browse files
committed
feat: publish Material Workbench v0.1.0
0 parents  commit d8bdb7f

69 files changed

Lines changed: 40061 additions & 0 deletions

Some content is hidden

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

.github/workflows/ci.yml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main, master]
6+
pull_request:
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
windows-tests:
13+
runs-on: windows-latest
14+
timeout-minutes: 20
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
python-version: ["3.11", "3.13"]
19+
env:
20+
PYTHONUTF8: "1"
21+
steps:
22+
- uses: actions/checkout@v7
23+
- uses: actions/setup-python@v7
24+
with:
25+
python-version: ${{ matrix.python-version }}
26+
cache: pip
27+
- uses: actions/setup-node@v7
28+
with:
29+
node-version: "22"
30+
- name: Install Python dependencies
31+
run: python -m pip install -r requirements.txt
32+
- name: Python syntax
33+
run: python -m compileall -q .
34+
- name: JavaScript syntax
35+
run: |
36+
node --check assets/js/theme-init.js
37+
node --check assets/js/workbench.js
38+
node --check scripts/adobe_import_bridge.mjs
39+
- name: Python tests
40+
run: python -m unittest discover -s tests -v
41+
- name: Node bridge tests
42+
run: node --test tests/node_adobe_import_bridge.test.mjs
43+
- name: Synthetic first-run smoke
44+
shell: pwsh
45+
run: |
46+
python scripts/create_demo_library.py
47+
$env:MWB_CONFIG = (Resolve-Path .demo\workbench.local.json).Path
48+
python scan_and_thumb.py --metadata-only
49+
python scan_media.py
50+
python scan_docs.py
51+
@("index.json", "media.json", "docs.json") | ForEach-Object {
52+
if (-not (Test-Path -LiteralPath $_ -PathType Leaf)) {
53+
throw "First-run smoke did not create $_"
54+
}
55+
}

.gitignore

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Runtime caches
2+
__pycache__/
3+
*.pyc
4+
*.pyo
5+
*.tmp
6+
/tmp/
7+
.venv/
8+
.demo/
9+
.coverage
10+
htmlcov/
11+
12+
# Machine-local configuration and common secret containers
13+
/workbench.local.json
14+
.env
15+
.env.*
16+
!.env.example
17+
*.local.json
18+
*.pem
19+
*.key
20+
*.p12
21+
*.pfx
22+
*.crt
23+
*.cer
24+
25+
# Generated indexes and mutable user/runtime data
26+
index.json
27+
media.json
28+
/index_backup_before_*.json
29+
/media_backup_before_*.json
30+
docs.json
31+
promptsref.json
32+
inbox.json
33+
last_run.json
34+
rescan_status.json
35+
dropbox_status.json
36+
desktop_collect_status.json
37+
archive_status.json
38+
archive_manifest.json
39+
project_asset_links.json
40+
asset_migration_journal.json
41+
asset_dedupe_journal.json
42+
user_data*.json
43+
docs_mounts.json
44+
debug_delete.log
45+
46+
# Generated thumbnails and archives
47+
thumbs/
48+
thumbs_media/
49+
thumbs_refs/
50+
*.zip
51+
52+
# Historical backups and logs
53+
zz_backups/
54+
zz_logs/
55+
zz_legacy_v1/
56+
zz_old_icons/
57+
58+
# Batch tagging workspaces
59+
tagging_work/

AGENTS.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# AGENTS.md
2+
3+
## Project scope
4+
5+
Material Workbench is a Windows local-first media catalogue. Source code and
6+
static assets live in this repository; real media, user metadata, generated
7+
indexes, thumbnails, journals, logs, and local configuration do not.
8+
9+
## Safety rules
10+
11+
1. Never use a real media library in tests. Use temporary directories and
12+
synthetic fixtures.
13+
2. Never commit or directly edit `user_data.json` or runtime journals.
14+
3. Existing library files must not be silently moved, renamed, overwritten, or
15+
deleted.
16+
4. Physical changes require preview, explicit confirmation, authoritative
17+
server-side revalidation, persistent recovery evidence, and rollback.
18+
5. Destructive and Adobe write APIs accept opaque IDs, not browser-provided
19+
filesystem paths.
20+
6. Do not weaken reparse-point, hard-link, stale-plan, project-identity, or
21+
concurrent-write guards to make a test pass.
22+
7. Adobe integration is optional and must fail closed when the external bridge
23+
or same-project runtime guard is unavailable.
24+
8. Keep all text files UTF-8 and preserve stable asset ID algorithms.
25+
26+
## Validation
27+
28+
Run Python unittests, Node bridge tests, JavaScript syntax checks, and
29+
`git diff --check`. Explain any omitted check in the pull request.

ASSET_PROVENANCE.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Asset Provenance
2+
3+
The star-map background, decorative rail icons, favicon, and Windows icon files
4+
in this repository were created specifically for Material Workbench through a
5+
mix of project-authored design work and AI-assisted image generation. They are
6+
not copied from a stock-asset pack or from the optional Promptsref library.
7+
8+
The project maintainer releases these repository-local visual assets under the
9+
same Apache-2.0 license as the source code. Generated demo media created by
10+
`scripts/create_demo_library.py` is also Apache-2.0 licensed.
11+
12+
No real user media, Adobe project file, private reference-library image, or
13+
runtime thumbnail is included in the public repository.

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Changelog
2+
3+
All notable public-release changes are documented here.
4+
5+
## 0.1.0 - 2026-08-11
6+
7+
- First clean-history open-source release.
8+
- Added portable machine-local path configuration and relative launchers.
9+
- Published the local-first media catalogue, project views, intake workflow,
10+
transactional storage migration, exact duplicate cleanup, and safety tests.
11+
- Documented the optional external Adobe bridge boundary.

CODE_OF_CONDUCT.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Code of Conduct
2+
3+
Be respectful, specific, and constructive. Harassment, discrimination, threats,
4+
doxxing, and publication of another person's private files or credentials are
5+
not acceptable.
6+
7+
Project discussions should focus on reproducible behavior and evidence. When a
8+
mistake could affect user data, report it plainly and help establish a safe
9+
recovery path. Maintainers may edit or remove content and restrict participation
10+
when needed to protect contributors and users.

CONTRIBUTING.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Contributing
2+
3+
Thank you for helping improve Material Workbench.
4+
5+
## Before changing code
6+
7+
- Use synthetic media and temporary directories.
8+
- Never commit runtime JSON, thumbnails, journals, logs, tokens, private paths,
9+
or real project files.
10+
- Keep browser requests path-free for destructive and Adobe write operations.
11+
- Preserve preview, explicit confirmation, final server-side validation,
12+
journaling, and rollback for any operation that changes physical files.
13+
- Do not silently broaden supported directories or file extensions.
14+
15+
## Development setup
16+
17+
```powershell
18+
py -3 -m venv .venv
19+
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
20+
```
21+
22+
Run the complete checks before opening a pull request:
23+
24+
```powershell
25+
.\.venv\Scripts\python.exe -m unittest discover -s tests -v
26+
node --check assets\js\theme-init.js
27+
node --check assets\js\workbench.js
28+
node --check scripts\adobe_import_bridge.mjs
29+
node --test tests\node_adobe_import_bridge.test.mjs
30+
git diff --check
31+
```
32+
33+
Pull requests should explain the user-visible outcome, data-safety impact,
34+
rollback behavior, and tests added. File-operation changes without adversarial
35+
tests will not be merged.

0 commit comments

Comments
 (0)