gitea composer
This commit is contained in:
@@ -11663,6 +11663,222 @@ _**User**_
|
||||
|
||||
_**Agent (model default, mode Agent)**_
|
||||
|
||||
<think><details><summary>Thought Process</summary>
|
||||
|
||||
The user says the action slot is still not migrating in MigNLA when there's no NLA but there is an active action. They want debug added and pointed to the Action operators docs.
|
||||
|
||||
From the Action operators page, I see:
|
||||
- `bpy.ops.action.push_down()` - "Push action down on to the NLA stack as a new strip"
|
||||
- `bpy.ops.action.unlink()` - "Unlink this action from the active action slot (and/or exit Tweak Mode)"
|
||||
|
||||
So "action slot" in the UI might be referring to something that requires an operator to properly assign. Let me add debug to the no-NLA path so we can see:
|
||||
1. What orig.animation_data has (action, action_slot, action_slot_handle, last_slot_identifier, action_blend_type, etc.)
|
||||
2. What we're setting on rep
|
||||
3. Whether action_slot assignment fails or is read-only
|
||||
|
||||
I'll add print statements (debug) in the migrator's no-NLA branch, and also consider if we need to use an operator like `bpy.ops.action.push_down` or something else. Actually re-reading the user message - they want to "migrate" the slot, i.e. copy the original's slot to the replacement. So the issue might be:
|
||||
1. action_slot might be read-only when we assign action?
|
||||
2. We might need to set last_slot_identifier or action_slot_handle instead?
|
||||
3. Or we need to use an operator to "assign" the action in a way that sets the slot?
|
||||
|
||||
Let me add debug first so we can see what's on orig and what gets set on rep, and whether any assignment fails.
|
||||
</details></think>
|
||||
|
||||
---
|
||||
|
||||
|
||||
Adding debug in the MigNLA no-NLA path to log the original's and replacement's animation_data (action, action_slot, action_slot_handle, last_slot_identifier) and any assignment errors.
|
||||
|
||||
|
||||
---
|
||||
|
||||
<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\ops\migrator.py</summary>
|
||||
|
||||
</details>
|
||||
</tool-use>
|
||||
|
||||
---
|
||||
|
||||
<think><details><summary>Thought Process</summary>
|
||||
|
||||
I'll add debug prints that show:
|
||||
1. Orig: action name, action_slot (and identifier/handle if available), action_blend_type, action_extrapolation, action_influence, last_slot_identifier
|
||||
2. Before assign: rep's state
|
||||
3. After assign: rep's state
|
||||
4. If we try to set action_slot and it fails, catch and print
|
||||
|
||||
I'll also check the API - maybe we need to set `last_slot_identifier` when assigning an action so the slot gets resolved? Or use the operator that "assigns" the action to the slot. Looking at the docs again, AnimData has:
|
||||
- last_slot_identifier: "The identifier of the most recently assigned action slot..."
|
||||
So when you assign an action, Blender might use last_slot_identifier to find which slot to use. So we might need to copy last_slot_identifier from orig to rep before or after setting the action.
|
||||
</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\ops\migrator.py</summary>
|
||||
|
||||
</details>
|
||||
|
||||
</tool-use>
|
||||
|
||||
---
|
||||
|
||||
<think><details><summary>Thought Process</summary>
|
||||
|
||||
I added:
|
||||
1. _slot_debug() to print action and slot-related props for orig (before), rep (before), and rep (after).
|
||||
2. Setting last_slot_identifier on rep before or after action (I did it after action; the API said "its identifier is used to find the right slot when assigning an Action" - so it might need to be set before assigning the action so that when we set rad.action, Blender knows which slot. Let me try setting last_slot_identifier *before* rad.action so the slot is selected first.
|
||||
</details></think>
|
||||
|
||||
---
|
||||
|
||||
|
||||
Setting `last_slot_identifier` before assigning the action so slot resolution runs when the action is set.
|
||||
|
||||
|
||||
---
|
||||
|
||||
<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\ops\migrator.py</summary>
|
||||
|
||||
</details>
|
||||
|
||||
</tool-use>
|
||||
|
||||
---
|
||||
|
||||
<think><details><summary>Thought Process</summary>
|
||||
|
||||
Good. Now when the user runs MigNLA (no NLA path), the terminal will show:
|
||||
- Orig (before): action name and all slot-related props
|
||||
- Rep (before): same
|
||||
- Whether last_slot_identifier was set
|
||||
- Whether action_slot assign was tried and if it failed
|
||||
- Each prop copy (action_blend_type etc.)
|
||||
- Rep (after): full state
|
||||
|
||||
This should reveal why the slot isn't migrating (e.g. action_slot is None on orig, or assignment raises, or last_slot_identifier is empty).
|
||||
</details></think>
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
<tool-use data-tool-type="unknown" data-tool-name="read_lints">
|
||||
<details>
|
||||
<summary>Tool use: **read_lints**</summary>
|
||||
|
||||
|
||||
Parameters:
|
||||
|
||||
```json
|
||||
{
|
||||
"paths": [
|
||||
"T:\\Dynamic-Link-Manager\\ops\\migrator.py"
|
||||
]
|
||||
}
|
||||
```
|
||||
Result:
|
||||
|
||||
```json
|
||||
{
|
||||
"linterErrorsByFile": [
|
||||
{
|
||||
"relativeWorkspacePath": "T:\\Dynamic-Link-Manager\\ops\\migrator.py"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Status: **completed**
|
||||
|
||||
|
||||
</details>
|
||||
</tool-use>
|
||||
|
||||
---
|
||||
|
||||
<think><details><summary>Thought Process</summary>
|
||||
|
||||
All good. Let me give a short summary to the user.
|
||||
</details></think>
|
||||
|
||||
---
|
||||
|
||||
|
||||
Summary of changes:
|
||||
|
||||
**1. Debug logging in the no-NLA path**
|
||||
- **Orig (before):** `action` name and, when present: `action_slot`, `action_slot_handle`, `last_slot_identifier`, `action_blend_type`, `action_extrapolation`, `action_influence`.
|
||||
- **Rep (before):** same set of properties.
|
||||
- **Rep (after):** same set after we copy action and slot-related data.
|
||||
- Logs when `last_slot_identifier` is set and when each of `action_blend_type`, `action_extrapolation`, `action_influence` is set.
|
||||
- If assigning `rad.action_slot = ad.action_slot` raises, the exception is caught and printed.
|
||||
|
||||
**2. Slot handling order**
|
||||
- `last_slot_identifier` is copied from orig to rep **before** setting `rad.action`, so when the action is assigned Blender can resolve the correct slot (see [AnimData](https://docs.blender.org/api/current/bpy.types.AnimData.html): *“its identifier is used to find the right slot when assigning an Action”*).
|
||||
|
||||
After reloading the add-on and running MigNLA (with no NLA, only an active action), check the Blender terminal or system console for lines starting with `[DLM MigNLA]`. From that you can see:
|
||||
- Whether the original has an `action_slot` / `last_slot_identifier`,
|
||||
- What gets set on the replacement,
|
||||
- Any error when setting `action_slot`.
|
||||
|
||||
If the slot still doesn’t migrate, the next step is to try using [bpy.ops.action](https://docs.blender.org/api/current/bpy.ops.action.html) (e.g. a temp context override with the replacement armature selected and `action.push_down()` or the operator that assigns the action to the slot) so the UI’s “assign to slot” path runs. The new debug output will show whether the problem is missing/original data or a read-only or failing assignment.
|
||||
|
||||
---
|
||||
|
||||
_**User**_
|
||||
|
||||
Add a gitea workflow for this project in a way that mirrors my AMZNCharTools extension that we modeled the structure after.
|
||||
|
||||
---
|
||||
|
||||
_**Agent (model default, mode Agent)**_
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
<tool-use data-tool-type="unknown" data-tool-name="glob_file_search">
|
||||
<details>
|
||||
<summary>Tool use: **glob_file_search**</summary>
|
||||
|
||||
Status: **loading**
|
||||
|
||||
|
||||
</details>
|
||||
</tool-use>
|
||||
|
||||
---
|
||||
|
||||
<tool-use data-tool-type="unknown" data-tool-name="glob_file_search">
|
||||
<details>
|
||||
<summary>Tool use: **glob_file_search**</summary>
|
||||
|
||||
Status: **loading**
|
||||
|
||||
|
||||
</details>
|
||||
</tool-use>
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
---
|
||||
@@ -11683,22 +11899,38 @@ Status: **loading**
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
<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\ops\migrator.py</summary>
|
||||
<tool-use data-tool-type="unknown" data-tool-name="read_file_v2">
|
||||
<details>
|
||||
<summary>Tool use: **read_file_v2**</summary>
|
||||
|
||||
Status: **loading**
|
||||
|
||||
</details>
|
||||
|
||||
</details>
|
||||
</tool-use>
|
||||
|
||||
---
|
||||
|
||||
<tool-use data-tool-type="unknown" data-tool-name="glob_file_search">
|
||||
<details>
|
||||
<summary>Tool use: **glob_file_search**</summary>
|
||||
|
||||
Status: **loading**
|
||||
|
||||
|
||||
</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**
|
||||
|
||||
|
||||
</details>
|
||||
</tool-use>
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user