I'm trying to create a custom sheet, and I've run into a strange error with my javascript to add a repeating section item, and I'm not sure if I'm doing something wrong, or it's a Roll20 bug. What's happening is that when I use a sheetworker to add a simple repeating section item with two variables, it gets the repitembroken class applied. And I can't see anything wrong with the html when I look at it with the inspector (but I'm new to this). After chasing a bunch of red herrings, I've simplified my code down to the attached. When I create the first item using the "+Add" button ("manual") it works. When I use the blue button to add one using a handler, it fails ("dummy1"). Help! I'm working to setup a pastebin account so I can post the full css/html, but they're having a slow day apparently. Here's the html and the javascript that adds the item when the button is clicked. <div class="sheetbox"><!-- The Character Sheet Wrapper (goes around entire sheet) --> <header> <h1 >Test Sheet</h1> </header> <div><!-- main portion of sheet --> <div class="tab-flex-container"> <div class="flex-vert flex-wrap attacks-box"> <label>Attacks:</label> <button type="action" name="act_addattack" class="attack-link-control" value=""> <div class="attack-button-text-color attack-link-control-text-center ui-icons">A</div> </button> <div class="flex-horiz attacks-row"> <label>Weapon</label> <label>mod</label> </div> <fieldset class="repeating_attacks"> <div class="flex-horiz attacks-row"> <label><input type="text" name="attr_atkname" class="attack-info text-long" value=""></label> <label><input type="text" name="attr_atkmod" class="attack-info text-short" value="" ></label> </div> </fieldset> </div><!-- attacks --> </div><!-- end container --> </div><!-- end main --> <footer class="section footer"> <!-- was <footer> --> <div class="footer-text">Test sheet footer</div> </footer> <script type="text/worker"> const createUniqueRowID = row_ids => { row_ids = Array.ids ? row_ids : []; let generated; while (!generated || row_ids.includes(generated)) { generated = generateRowID().toLowerCase(); } row_ids.push(generated); console.log('createUniqueRowID: generated "' + generated + '".'); return generated; }; const sectionName = (section, id, field) => `${section.startsWith('repeating_') ? section : `repeating_${section}`}_${id}_${field}`; // button handler on('clicked:addattack', (e) => { console.log('button clicked.'); addAttack(); }); const addAttack = () => { let attackItem = {}; let section = 'attacks'; let attackRowID = createUniqueRowID(); let fieldName = sectionName(section, attackRowID, 'atkname'); attackItem[fieldName] = 'dummy1'; fieldName = sectionName(section, attackRowID, 'atkmod'); attackItem[fieldName] = '0'; console.log('addAttack: calling setAttrs.'); log(attackItem); setAttrs(attackItem, {silent: true}, () => { console.log('addAttackForItem: add complete.'); }); // setAttrs }; Ken