bump v0.1.0

This commit is contained in:
Nathan
2026-02-19 12:03:10 -07:00
parent 6d9fb0f74d
commit fb0bae51f3
3 changed files with 371 additions and 29 deletions
@@ -11847,91 +11847,414 @@ Add a gitea workflow for this project in a way that mirrors my AMZNCharTools ext
_**Agent (model default, mode Agent)**_
<think><details><summary>Thought Process</summary>
The user wants me to add a Gitea workflow for the Dynamic-Link-Manager project, mirroring the structure from the AMZNCharTools (AmazonCharacterTools) extension they modeled the project after. I need to:
1. Look at the AmazonCharacterTools project for its Gitea workflow(s)
2. Create similar workflow(s) in Dynamic-Link-Manager
Let me search for Gitea workflow files in the AmazonCharacterTools project.
</details></think>
---
---
<tool-use data-tool-type="unknown" data-tool-name="glob_file_search">
<tool-use data-tool-type="generic" data-tool-name="glob_file_search">
<details>
<summary>Tool use: **glob_file_search**</summary>
<summary>Tool use: **glob_file_search** • Searched codebase "undefined" • **2** results in **1** directory</summary>
Status: **loading**
Directory: **T:\AmazonCharacterTools** (2 files)
| File |
|------|
| `../..\AmazonCharacterTools\.gitea\workflows\release.yml` |
| `../..\AmazonCharacterTools\.gitea\docker-compose.runner.yml` |
</details>
</tool-use>
---
<tool-use data-tool-type="unknown" data-tool-name="glob_file_search">
<tool-use data-tool-type="generic" data-tool-name="glob_file_search">
<details>
<summary>Tool use: **glob_file_search**</summary>
<summary>Tool use: **glob_file_search** • Searched codebase "undefined" • **2** results in **1** directory</summary>
Status: **loading**
Directory: **T:\AmazonCharacterTools** (2 files)
| File |
|------|
| `../..\AmazonCharacterTools\.gitea\workflows\release.yml` |
| `../..\AmazonCharacterTools\.gitea\docker-compose.runner.yml` |
</details>
</tool-use>
---
<think><details><summary>Thought Process</summary>
Found the Gitea workflow and docker-compose in AmazonCharacterTools. Let me read those files and also check if Dynamic-Link-Manager has any .gitea folder yet.
</details></think>
---
---
<tool-use data-tool-type="unknown" data-tool-name="read_file_v2">
<details>
<summary>Tool use: **read_file_v2**</summary>
Status: **loading**
<tool-use data-tool-type="read" data-tool-name="read_file_v2">
<details><summary>Tool use: **read_file_v2** • Read file: T:\AmazonCharacterTools\.gitea\workflows\release.yml</summary>
</details>
</tool-use>
---
<tool-use data-tool-type="unknown" data-tool-name="read_file_v2">
<details>
<summary>Tool use: **read_file_v2**</summary>
Status: **loading**
<tool-use data-tool-type="read" data-tool-name="read_file_v2">
<details><summary>Tool use: **read_file_v2** • Read file: T:\AmazonCharacterTools\.gitea\docker-compose.runner.yml</summary>
</details>
</tool-use>
---
<tool-use data-tool-type="unknown" data-tool-name="glob_file_search">
<tool-use data-tool-type="generic" data-tool-name="glob_file_search">
<details>
<summary>Tool use: **glob_file_search**</summary>
Status: **loading**
<summary>Tool use: **glob_file_search** • Searched codebase "undefined" • **0** result in **1** directory</summary>
Directory: **T:\Dynamic-Link-Manager** (0 file)
</details>
</tool-use>
---
<tool-use data-tool-type="unknown" data-tool-name="read_file_v2">
<details>
<summary>Tool use: **read_file_v2**</summary>
Status: **loading**
<tool-use data-tool-type="read" data-tool-name="read_file_v2">
<details><summary>Tool use: **read_file_v2** • Read file: T:\Dynamic-Link-Manager\blender_manifest.toml</summary>
</details>
</tool-use>
---
<tool-use data-tool-type="read" data-tool-name="read_file_v2">
<details><summary>Tool use: **read_file_v2** • Read file: T:\AmazonCharacterTools\blender_manifest.toml</summary>
</details>
</tool-use>
---
<think><details><summary>Thought Process</summary>
I have what I need. The AmazonCharacterTools has:
1. `.gitea/workflows/release.yml` - A workflow that:
- Triggers on workflow_dispatch with input release_tag
- Gets version from blender_manifest.toml using Python/tomllib
- Creates a zip with addon dir name "amzncharactertools" and copies __init__.py, blender_manifest.toml, ops, ui, utils
- Creates a release via API and uploads the zip as asset
2. `.gitea/docker-compose.runner.yml` - Runner config (user-specific, with tokens/paths) - I should NOT copy this verbatim; it's environment-specific. I could add a similar file but with placeholders, or skip it since the user said "workflow" and the workflow is the main thing. I'll add the workflow and optionally a docker-compose that mirrors structure but with neutral placeholders so they can duplicate and fill in.
For Dynamic-Link-Manager:
- Addon id in manifest is "dynamiclinkmanager", name "Dynamic Link Manager"
- Structure: has ops/, ui/, and from the conversation also utils might exist. Let me check.
- Top-level: __init__.py, blender_manifest.toml (and maybe others)
I'll create:
1. `.gitea/workflows/release.yml` - adapted for Dynamic-Link-Manager:
- Same structure (workflow_dispatch, get version from blender_manifest.toml)
- ADDON_DIR=dynamiclinkmanager (lowercase, from manifest id or typical zip name)
- zip_name=dynamiclinkmanager_${version}.zip or dynamic_link_manager_${version}.zip - the AMZN one uses amzncharactertools_version.zip so I'll use dynamiclinkmanager_version.zip
- Copy same kind of files: __init__.py, blender_manifest.toml, ops, ui, utils if present
Let me check Dynamic-Link-Manager structure for dirs and top-level files.
</details></think>
---
Checking Dynamic-Link-Manager layout to match the zip structure:
---
<tool-use data-tool-type="generic" data-tool-name="glob_file_search">
<details>
<summary>Tool use: **glob_file_search** • Searched codebase "undefined" • **28** results in **1** directory</summary>
Directory: **T:\Dynamic-Link-Manager** (28 files)
| File |
|------|
| `../ui/preferences.py` |
| `../ops/__init__.py` |
| `../__init__.py` |
| `../ops/migrator.py` |
| `../ui/__init__.py` |
| `../utils/__init__.py` |
| `../blender_manifest.toml` |
| `../.cursorindexingignore` |
| `../ui/operators.py` |
| `../.specstory/history/2025-08-20_22-43Z-creating-a-blender-extension-for-asset-replacement.md` |
| `../ops\tweak_tools.py` |
| `../ui\properties.py` |
| `../ui/panels.py` |
| `../ui\__pycache__\properties.cpython-311.pyc` |
| `../.specstory/history/2026-02-18_23-39Z-character-migrator-workflow-integration.md` |
| `../ui\panels.py` |
| `../.specstory/.gitignore` |
| `../ui\__pycache__\operators.cpython-311.pyc` |
| `../ui\operators.py` |
| `../ui\__pycache__\panels.cpython-311.pyc` |
| `../ops\__pycache__\migrator.cpython-311.pyc` |
| `../ops\migrator.py` |
| `../.specstory\history\2026-02-19_18-53Z-blendfile-local-datablocks-analysis.md` |
| `../.specstory\.what-is-this.md` |
| `../.specstory\history\2026-02-18_23-39Z-character-migrator-workflow-integration.md` |
| `../.gitignore` |
| `../ui/properties.py` |
| `../ops/library.py` |
</details>
</tool-use>
---
<tool-use data-tool-type="read" data-tool-name="read_file_v2">
<details><summary>Tool use: **read_file_v2** • Read file: T:\Dynamic-Link-Manager\__init__.py</summary>
</details>
</tool-use>
---
<think><details><summary>Thought Process</summary>
Dynamic-Link-Manager has:
- __init__.py (root)
- blender_manifest.toml
- ops/ (with __init__.py, migrator.py, tweak_tools.py, library.py)
- ui/ (with __init__.py, operators.py, panels.py, properties.py, preferences.py)
- utils/ (with __init__.py)
The addon is loaded by Blender with a module name - from the manifest, id = "dynamiclinkmanager". The folder name when installed is often the repo name "Dynamic-Link-Manager" but for zips it's usually a single token. AMZN uses "amzncharactertools" as the folder inside the zip. For Blender extensions/addons the folder name in the zip should match what the addon expects. Looking at the manifest, `id = "dynamiclinkmanager"` - so the zip could be structured as a folder "dynamiclinkmanager" or "Dynamic-Link-Manager". The AMZN workflow uses ADDON_DIR=amzncharactertools (manifest id). So I'll use dynamiclinkmanager.
Creating the workflow and the docker-compose. For docker-compose I'll mirror the structure but use placeholder/example values so the user can duplicate and configure (or I'll use generic names like "dlm-runner" and leave tokens/paths as placeholders).
</details></think>
---
Adding `.gitea/workflows/release.yml` and `.gitea/docker-compose.runner.yml` to mirror AmazonCharacterTools.
---
<tool-use data-tool-type="write" data-tool-name="edit_file_v2">
<details><summary>Tool use: **edit_file_v2** • Edit file: T:\Dynamic-Link-Manager\.gitea\workflows\release.yml</summary>
</details>
</tool-use>
---
<tool-use data-tool-type="read" data-tool-name="read_file_v2">
<details><summary>Tool use: **read_file_v2** • Read file: T:\AmazonCharacterTools\.gitea\docker-compose.runner.yml</summary>
</details>
</tool-use>
---
<think><details><summary>Thought Process</summary>
I'll add a docker-compose.runner.yml that mirrors the structure but is clearly for Dynamic-Link-Manager (different runner name, placeholder token). The user can reuse the same runner for multiple repos or duplicate and change the token/name. I'll use placeholder token and a distinct runner name so it doesn't conflict with the AMZN one if they want a separate runner.
</details></think>
---
---
<tool-use data-tool-type="write" data-tool-name="edit_file_v2">
<details><summary>Tool use: **edit_file_v2** • Edit file: T:\Dynamic-Link-Manager\.gitea\docker-compose.runner.yml</summary>
</details>
</tool-use>
---
<think><details><summary>Thought Process</summary>
Done. I've added:
1. `.gitea/workflows/release.yml` - mirrors AMZNCharTools release workflow, adapted for Dynamic-Link-Manager (version from blender_manifest.toml, zip name dynamiclinkmanager_<version>.zip, ADDON_DIR=dynamiclinkmanager, same ops/ui/utils copy pattern).
2. `.gitea/docker-compose.runner.yml` - mirrors the runner compose file with container name gitea-act-runner-dlm, runner name dlm-runner, and placeholder token so they can register a runner for this repo (or reuse the same runner as AMZN if they prefer).
No need to run linters on YAML. I'll summarize for the user.
</details></think>
---
Summary of what was added to mirror your AMZNCharacterTools setup:
**1. `.gitea/workflows/release.yml`**
- **Trigger:** `workflow_dispatch` with input `release_tag` (e.g. `v0.3.0`).
- **Version:** Read from `blender_manifest.toml` via Python/tomllib; outputs `version` and `zip_name=dynamiclinkmanager_<version>.zip`.
- **ZIP layout:** Top-level `__init__.py` and `blender_manifest.toml`, plus `ops/`, `ui/`, and `utils/` (if present), all under a single folder `dynamiclinkmanager` (manifest `id`).
- **Release:** Creates a draft release for the given tag and uploads the zip as an asset using `GITEA_TOKEN`.
**2. `.gitea/docker-compose.runner.yml`**
- Same layout as AMZNs runner compose.
- `container_name`: `gitea-act-runner-dlm`, `GITEA_RUNNER_NAME`: `dlm-runner`.
- `GITEA_RUNNER_REGISTRATION_TOKEN` is set to `<your-runner-token>`; replace with the token from **Repository → Settings → Actions → Runners → New Runner** (or point the repo at your existing `amzn-tools-runner` and skip this file).
If you already use one Gitea Actions runner for all repos, you can ignore the docker-compose file and only use the workflow; it uses `runs-on: ubuntu-latest`, which works with a standard runner.
---
_**User**_
bump version to 0.1.0 and update the changelog to concisely summarize the last 9 commits.
---
_**Agent (model default, mode Agent)**_
<think><details><summary>Thought Process</summary>
The user wants me to:
1. Bump version to 0.1.0 in the project (likely blender_manifest.toml)
2. Update the changelog to concisely summarize the last 9 commits
I need to:
1. Find where version is defined (blender_manifest.toml)
2. Find the changelog file (CHANGELOG.md or similar)
3. Get the last 9 commits from git
4. Update version and write changelog entries
</details></think>
---
---
<tool-use data-tool-type="read" data-tool-name="read_file_v2">
<details><summary>Tool use: **read_file_v2** • Read file: T:\Dynamic-Link-Manager\blender_manifest.toml</summary>
</details>
</tool-use>
---
<tool-use data-tool-type="generic" data-tool-name="glob_file_search">
<details>
<summary>Tool use: **glob_file_search** • Searched codebase "undefined" • **0** result in **1** directory</summary>
Directory: **T:\Dynamic-Link-Manager** (0 file)
</details>
</tool-use>
---
<tool-use data-tool-type="shell" data-tool-name="run_terminal_command_v2">
<details><summary>Tool use: **run_terminal_command_v2** • Run command: cd /d T:\Dynamic-Link-Manager && git log -9 --oneline</summary>
```bash
cd /d T:\Dynamic-Link-Manager && git log -9 --oneline
```
```
Set-Location: C:\Users\Nathan\AppData\Local\Temp\ps-script-24013b75-b893-4570-9bbb-ef187ab3e60b.ps1:7
Line |
7 | cd /d T:\Dynamic-Link-Manager &amp;&amp; git log -9 --oneline
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| A positional parameter cannot be found that accepts argument 'T:\Dynamic-Link-Manager'.
```
</details>
</tool-use>
---
<think><details><summary>Thought Process</summary>
PowerShell doesn't use `cd /d`. I need to use Set-Location or cd without /d. Also there's no CHANGELOG file - I'll need to create one. Let me get the git log with a proper PowerShell command.
</details></think>
---
---
<tool-use data-tool-type="shell" data-tool-name="run_terminal_command_v2">
<details><summary>Tool use: **run_terminal_command_v2** • Run command: Set-Location T:\Dynamic-Link-Manager; git log -9 --oneline</summary>
```bash
Set-Location T:\Dynamic-Link-Manager; git log -9 --oneline
```
```
6d9fb0f gitea composer
1f28932 MigNLA action slot behavior and reports
ae38056 refactor operator labels and document operators
55afba3 NLAMig AnimLayers feature
a3868e1 tweak tools (untested for now)
4dee5cb fix BBod Shapekeys liboverride and copy values
4b6a351 truncate names
4d5706d specify icons
7642ff5 redefine and fix migrate basebody shapkeys
```
</details>
</tool-use>
---
<tool-use data-tool-type="shell" data-tool-name="run_terminal_command_v2">
<details><summary>Tool use: **run_terminal_command_v2** • Run command: Set-Location T:\Dynamic-Link-Manager; git log -9 --format="%s"</summary>
```bash
Set-Location T:\Dynamic-Link-Manager; git log -9 --format="%s"
```
```
gitea composer
MigNLA action slot behavior and reports
refactor operator labels and document operators
NLAMig AnimLayers feature
tweak tools (untested for now)
fix BBod Shapekeys liboverride and copy values
truncate names
specify icons
redefine and fix migrate basebody shapkeys
```
</details>
</tool-use>
---
+19
View File
@@ -0,0 +1,19 @@
# Changelog
## [0.1.0] - 2026-02-19
### Added
- Gitea release workflow and runner docker-compose.
- Tweak tools subsection: add/remove/bake constraints for arms, legs, and both; track name and post-clean options.
- MigNLA: when no NLA, copy active action and action slot (incl. last_slot_identifier, blend/extrapolation/influence); debug logging for slot migration.
- NLAMig: AnimLayers support (mirror `als.turn_on`), strip timing and properties; active-action-only path when no NLA tracks.
- Operator icons (CopyAttr, MigNLA, CustProps, BoneConst, RetargRelatives, MigBBodyShapeKeys, pickers, tweak ops).
- BaseBody shapekeys step: prefer original base bodys shape-key action slot; library override + editable; copy shape key values.
### Changed
- Operator labels refactored to canonical short names (CopyAttr, MigNLA, MigCustProps, etc.) with `bl_description` on all UI operators.
- Migrate BaseBody shapekeys redefined: find base body in hierarchy, override mesh/key data when linked, then apply shape-key action.
- Button labels truncated (e.g. “NLA”, “BaseBody ShapeKeys”).
### Fixed
- BaseBody shapekeys: lib override creation and value copy; correct original-base-body lookup and slot assignment.
+1 -1
View File
@@ -3,7 +3,7 @@ schema_version = "1.0.0"
id = "dynamiclinkmanager"
name = "Dynamic Link Manager"
tagline = "Character migrator and linked library tools"
version = "0.0.2"
version = "0.1.0"
type = "add-on"
# Optional: Semantic Versioning