{"id":65304,"date":"2025-04-17T14:24:11","date_gmt":"2025-04-17T14:24:11","guid":{"rendered":"https:\/\/gamesexpose.com\/?p=65304"},"modified":"2026-06-11T23:25:11","modified_gmt":"2026-06-11T23:25:11","slug":"todo-changelog","status":"publish","type":"post","link":"https:\/\/gamesexpose.com\/es\/todo-changelog\/","title":{"rendered":"Todo\/Changelog"},"content":{"rendered":"<div class='code-block code-block-1' style='margin: 8px auto; text-align: center; display: block; clear: both; width: 728px; height: 90px;'>\n<div class=\"ai-lazy\" data-code=\"CjxzdHlsZT4KLmFpLXJvdGF0ZSB7cG9zaXRpb246IHJlbGF0aXZlO30KLmFpLXJvdGF0ZS1oaWRkZW4ge3Zpc2liaWxpdHk6IGhpZGRlbjt9Ci5haS1yb3RhdGUtaGlkZGVuLTIge3Bvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO30KLmFpLWxpc3QtZGF0YSwgLmFpLWlwLWRhdGEsIC5haS1maWx0ZXItY2hlY2ssIC5haS1mYWxsYmFjaywgLmFpLWxpc3QtYmxvY2ssIC5haS1saXN0LWJsb2NrLWlwLCAuYWktbGlzdC1ibG9jay1maWx0ZXIge3Zpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogNTAlOyBoZWlnaHQ6IDFweDsgdG9wOiAtMTAwMHB4OyB6LWluZGV4OiAtOTk5OTsgbWFyZ2luOiAwcHghaW1wb3J0YW50O30KLmFpLWxpc3QtZGF0YSwgLmFpLWlwLWRhdGEsIC5haS1maWx0ZXItY2hlY2ssIC5haS1mYWxsYmFjayB7bWluLXdpZHRoOiAxcHg7fQo8L3N0eWxlPgo8ZGl2IGNsYXNzPSdhaS1yb3RhdGUgYWktdW5wcm9jZXNzZWQgYWktcm90YXRlLTEtODQ5NzMyMDIgYWktdGltZWQtcm90YXRpb24gYWktMS0xJyBkYXRhLWluZm89J1d5SXhMVEVpTERKZCcgc3R5bGU9J3Bvc2l0aW9uOiByZWxhdGl2ZTsnPgo8ZGl2IGNsYXNzPSJhaS1yb3RhdGUtb3B0aW9uIiBkYXRhLWluZGV4PSIxIiBkYXRhLW5hbWU9IlFRPT0iIGRhdGEtdGltZT0iTlE9PSIgZGF0YS1jb2RlPSJDZ284WkdsMklHbGtQU0pxZFdsamVVRmtVbTkwWVhSdmNpSStDZ284SVMwdElFcDFhV041UVdSeklIWXpMakFnTFMwK0NnbzhjMk55YVhCMElIUjVjR1U5SW5SbGVIUXZhbUYyWVhOamNtbHdkQ0lnWkdGMFlTMWpabUZ6ZVc1alBTSm1ZV3h6WlNJZ1lYTjVibU1nYzNKalBTSm9kSFJ3Y3pvdkwzQnZkMlZ5WldSaWVTNXFZV1J6TG1OdkwycHpMMnBoWkhNdWFuTWlQand2YzJOeWFYQjBQZ29LUEdsdWN5QnBaRDBpTVRBNE9UVXhPU0lnWkdGMFlTMTNhV1IwYUQwaU56STRJaUJrWVhSaExXaGxhV2RvZEQwaU9UQWlQand2YVc1elBnb0tQSE5qY21sd2RDQjBlWEJsUFNKMFpYaDBMMnBoZG1GelkzSnBjSFFpSUdSaGRHRXRZMlpoYzNsdVl6MGlabUZzYzJVaUlHRnplVzVqUGloaFpITmllV3AxYVdONUlEMGdkMmx1Wkc5M0xtRmtjMko1YW5WcFkza2dmSHdnVzEwcExuQjFjMmdvZXlkaFpIcHZibVVuT2pFd09EazFNVGw5S1RzOEwzTmpjbWx3ZEQ0S0Nqd2hMUzFLZFdsamVVRmtjeUJGVGtRdExUNEtDand2WkdsMlBnb0tDZ289Ij4KPC9kaXY+CjxkaXYgY2xhc3M9ImFpLXJvdGF0ZS1vcHRpb24iIGRhdGEtaW5kZXg9IjIiIGRhdGEtbmFtZT0iUWc9PSIgZGF0YS10aW1lPSJOUT09IiBkYXRhLWNvZGU9IkNnbzhaR2wySUdsa1BTSnFkV2xqZVVGa1VtOTBZWFJ2Y2lJK0NnbzhJUzB0SUVwMWFXTjVRV1J6SUhZekxqQWdMUzArQ2dvOGMyTnlhWEIwSUhSNWNHVTlJblJsZUhRdmFtRjJZWE5qY21sd2RDSWdaR0YwWVMxalptRnplVzVqUFNKbVlXeHpaU0lnWVhONWJtTWdjM0pqUFNKb2RIUndjem92TDNCdmQyVnlaV1JpZVM1cVlXUnpMbU52TDJwekwycGhaSE11YW5NaVBqd3ZjMk55YVhCMFBnb0tQR2x1Y3lCcFpEMGlNVEE0T1RVeU5DSWdaR0YwWVMxM2FXUjBhRDBpTnpJNElpQmtZWFJoTFdobGFXZG9kRDBpT1RBaVBqd3ZhVzV6UGdvS1BITmpjbWx3ZENCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlJR1JoZEdFdFkyWmhjM2x1WXowaVptRnNjMlVpSUdGemVXNWpQaWhoWkhOaWVXcDFhV041SUQwZ2QybHVaRzkzTG1Ga2MySjVhblZwWTNrZ2ZId2dXMTBwTG5CMWMyZ29leWRoWkhwdmJtVW5PakV3T0RrMU1qUjlLVHM4TDNOamNtbHdkRDRLQ2p3aExTMUtkV2xqZVVGa2N5QkZUa1F0TFQ0S0Nqd3ZaR2wyUGc9PSI+CjwvZGl2Pgo8L2Rpdj4KPHNjcmlwdD5pZiAodHlwZW9mIGFpX2pzX2NvZGUgPT0gJ2Jvb2xlYW4nKSB7dmFyIGFpX2Jsb2NrX2RpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IgKCcuYWktcm90YXRlLTEtODQ5NzMyMDInKTsgYWlfcHJvY2Vzc19yb3RhdGlvbiAoYWlfYmxvY2tfZGl2KTsgYWlfYmxvY2tfZGl2LmNsYXNzTGlzdC5yZW1vdmUgKCdhaS1yb3RhdGUtMS04NDk3MzIwMicpO307PC9zY3JpcHQ+Cg==\" data-class=\"Y29kZS1ibG9jaw==\"><\/div>\n<\/div>\n<div class=\"ge-ideas\" data-ajax=\"https:\/\/gamesexpose.com\/wp-admin\/admin-ajax.php\" data-nonce=\"12c86de14c\"\n     >\n\n  <div class=\"ge-ideas-submit\">\n          <a class=\"ge-ideas-login\" href=\"\/login\">Log in to suggest a feature \u2192<\/a>\n      <\/div>\n\n  <div class=\"ge-ideas-sections\"><span class=\"ge-ideas-loading\">Loading ideas\u2026<\/span><\/div>\n<\/div>\n<style>\n.ge-ideas{max-width:760px;color:#e9e2d6;font-size:14px;}\n.ge-ideas-submit{position:relative;background:#181412;border:1px solid #352822;border-radius:12px;padding:12px;margin-bottom:20px;}\n.ge-ideas-title,.ge-ideas-body{width:100%;box-sizing:border-box;background:#221b18;border:1px solid #3a2d26;border-radius:8px;color:#e9e2d6;padding:10px 12px;font-size:14px;}\n.ge-ideas-body{margin-top:8px;resize:vertical;}\n.ge-ideas-title:focus,.ge-ideas-body:focus{outline:none;border-color:#96303f;}\n.ge-ideas-submit-row{display:flex;align-items:center;justify-content:space-between;margin-top:8px;gap:10px;}\n.ge-ideas-hint{color:#9a948c;font-size:12px;}\n.ge-ideas-send{background:#7c2231;color:#f0d9b8;border:1px solid #96303f;border-radius:7px;padding:7px 16px;font-size:13px;cursor:pointer;}\n.ge-ideas-send:disabled{opacity:.5;cursor:default;}\n.ge-ideas-msg{font-size:13px;margin-top:6px;color:#d4537e;}\n.ge-ideas-msg.is-ok{color:#7fae84;}\n.ge-ideas-login{display:block;text-align:center;color:#d9a441;text-decoration:none;padding:4px;}\n\n\/* --- secties --- *\/\n.ge-ideas-sec{margin-bottom:26px;}\n.ge-ideas-sec-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}\n.ge-ideas-sec-title{font-size:14px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;}\n.ge-ideas-sec-count{font-size:11.5px;color:#9a948c;background:#221b18;border:1px solid #3a2d26;border-radius:999px;padding:1px 9px;}\n.ge-ideas-sec-sub{font-size:12.5px;color:#9a948c;margin:3px 0 11px;}\n.ge-ideas-sec--progress .ge-ideas-sec-title{color:#d4537e;}\n.ge-ideas-sec--planned .ge-ideas-sec-title{color:#d9a441;}\n.ge-ideas-sec--open .ge-ideas-sec-title{color:#e9e2d6;}\n.ge-ideas-sec--done .ge-ideas-sec-title{color:#7fae84;}\n.ge-ideas-empty{color:#6e675f;font-size:13px;font-style:italic;padding:4px 2px;}\n\n.ge-ideas-tabs{display:flex;gap:8px;margin:0 0 10px;}\n.ge-ideas-tab{background:#221b18;border:1px solid #3a2d26;border-radius:999px;color:#9a948c;padding:5px 14px;font-size:13px;cursor:pointer;}\n.ge-ideas-tab.is-active{background:#2a1d20;border-color:#96303f;color:#e9e2d6;}\n\n.ge-ideas-row{display:flex;gap:12px;background:#181412;border:1px solid #352822;border-radius:12px;padding:12px 14px;margin-bottom:9px;}\n.ge-ideas-row--progress{border-color:#5a2a3a;background:linear-gradient(180deg,#1e1417,#181412);}\n.ge-ideas-row--planned{border-color:#4a3a22;}\n.ge-ideas-votes{display:flex;flex-direction:column;align-items:center;gap:2px;flex-shrink:0;width:42px;}\n.ge-ideas-vbtn{background:none;border:1px solid #3a2d26;border-radius:7px;color:#9a948c;width:34px;height:28px;font-size:14px;line-height:1;cursor:pointer;}\n.ge-ideas-vbtn:hover{border-color:#96303f;color:#e9e2d6;}\n.ge-ideas-vbtn.is-mine-up{background:#1f2a1f;border-color:#2c4030;color:#7fae84;}\n.ge-ideas-vbtn.is-mine-down{background:#2a1d20;border-color:#4a2228;color:#e05a6f;}\n.ge-ideas-score{font-weight:700;font-size:15px;color:#e9e2d6;}\n.ge-ideas-score.is-neg{color:#e05a6f;}\n.ge-ideas-main{flex:1;min-width:0;}\n.ge-ideas-row-title{font-weight:600;font-size:15px;}\n.ge-ideas-row-body{color:#bdb6aa;font-size:13px;margin-top:3px;white-space:pre-line;word-break:break-word;}\n.ge-ideas-meta{display:flex;align-items:center;gap:10px;margin-top:7px;font-size:12px;color:#9a948c;flex-wrap:wrap;}\n.ge-ideas-badge{border-radius:999px;padding:1px 10px;font-size:11px;font-weight:700;border:1px solid currentColor;}\n.ge-ideas-loading{color:#9a948c;}\n\n\/* --- changelog --- *\/\n.ge-ideas-done-list{background:#161311;border:1px solid #2b211c;border-radius:12px;overflow:hidden;}\n.ge-ideas-done-row{display:flex;align-items:flex-start;gap:10px;padding:9px 13px;border-bottom:1px solid #241c19;font-size:13.5px;}\n.ge-ideas-done-row:last-child{border-bottom:none;}\n.ge-ideas-check{color:#7fae84;font-weight:700;flex-shrink:0;}\n.ge-ideas-done-main{flex:1;min-width:0;}\n.ge-ideas-done-title{color:#cfc7ba;cursor:pointer;}\n.ge-ideas-done-row.is-open .ge-ideas-done-title{color:#e9e2d6;}\n.ge-ideas-done-body{color:#9a948c;font-size:12.5px;margin-top:4px;white-space:pre-line;word-break:break-word;}\n.ge-ideas-done-date{color:#6e675f;font-size:12px;flex-shrink:0;white-space:nowrap;}\n.ge-ideas-fresh{background:#1f2a1f;border:1px solid #2c4030;color:#7fae84;border-radius:999px;padding:0 7px;font-size:10.5px;font-weight:700;text-transform:uppercase;white-space:nowrap;}\n.ge-ideas-more{display:block;width:100%;margin-top:10px;background:#181412;border:1px solid #352822;border-radius:9px;color:#9a948c;padding:8px;font-size:13px;cursor:pointer;}\n.ge-ideas-more:hover{color:#e9e2d6;border-color:#4a3a32;}\n\n\/* --- beheer op de pagina zelf --- *\/\n.ge-ideas-adm{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px dashed #3a2d26;flex-wrap:wrap;}\n.ge-ideas-done-row .ge-ideas-adm{margin-top:6px;padding-top:6px;}\n.ge-ideas-adm-tag{font-size:10.5px;color:#6e675f;text-transform:uppercase;letter-spacing:.06em;}\n.ge-ideas-status{background:#221b18;border:1px solid #3a2d26;color:#e9e2d6;border-radius:6px;font-size:12px;padding:3px 6px;}\n.ge-ideas-abtn{background:#221b18;border:1px solid #3a2d26;color:#bdb6aa;border-radius:6px;font-size:12px;padding:3px 9px;cursor:pointer;}\n.ge-ideas-abtn:hover{border-color:#4a3a32;color:#e9e2d6;}\n.ge-ideas-abtn.is-done{border-color:#2c4030;color:#7fae84;}\n.ge-ideas-abtn.is-del:hover{border-color:#96303f;color:#e05a6f;}\n.ge-ideas-adm.is-busy{opacity:.45;pointer-events:none;}\n@media (max-width:520px){\n  .ge-ideas-done-row{flex-wrap:wrap;}\n  .ge-ideas-done-date{width:100%;padding-left:22px;}\n}\n<\/style><script>\n(function(){\n  var root = document.querySelector('.ge-ideas');\n  if (!root) return;\n  var ajax   = root.dataset.ajax,\n      nonce  = root.dataset.nonce,\n      anonce = root.dataset.anonce || '',\n      wrap   = root.querySelector('.ge-ideas-sections'),\n      sort   = 'top',\n      showAllDone = false,\n      DONE_PREVIEW = 8,\n      data   = null;\n\n  function esc(s){ var d = document.createElement('span'); d.textContent = s || ''; return d.innerHTML; }\n\n  function post(action, payload){\n    var fd = new FormData();\n    fd.append('action', action);\n    fd.append('nonce', action === 'ge_ideas_admin' ? anonce : nonce);\n    for (var k in (payload || {})) fd.append(k, payload[k]);\n    return fetch(ajax, { method: 'POST', body: fd, credentials: 'same-origin' }).then(function(r){ return r.json(); });\n  }\n\n  function load(){\n    fetch(ajax + '?action=ge_ideas_list&sort=' + sort, { credentials: 'same-origin' })\n      .then(function(r){ return r.json(); })\n      .then(function(r){ if (r.success) render(r.data); });\n  }\n\n  \/* ---------- beheerregel onder een idee ---------- *\/\n  function admHtml(it){\n    if (!data || !data.can_manage) return '';\n    var opts = data.statuses.map(function(s){\n      return '<option value=\"' + s.slug + '\"' + (s.slug === it.status ? ' selected' : '') + '>' + esc(s.label) + '<\/option>';\n    }).join('');\n    return '<div class=\"ge-ideas-adm\">' +\n      '<span class=\"ge-ideas-adm-tag\">Admin<\/span>' +\n      '<select class=\"ge-ideas-status\">' + opts + '<\/select>' +\n      (it.status !== 'done' ? '<button type=\"button\" class=\"ge-ideas-abtn is-done\" data-op=\"done\">\\u2713 Mark done<\/button>' : '') +\n      '<button type=\"button\" class=\"ge-ideas-abtn is-del\" data-op=\"delete\">\\uD83D\\uDDD1<\/button>' +\n    '<\/div>';\n  }\n\n  \/* ---------- kaart (in progress \/ planned \/ open) ---------- *\/\n  function rowHtml(it, variant){\n    return '<div class=\"ge-ideas-row ge-ideas-row--' + variant + '\" data-id=\"' + it.id + '\">' +\n      '<div class=\"ge-ideas-votes\">' +\n        '<button type=\"button\" class=\"ge-ideas-vbtn' + (it.my_vote === 1 ? ' is-mine-up' : '') + '\" data-dir=\"up\" aria-label=\"Upvote\">\\u25B2<\/button>' +\n        '<span class=\"ge-ideas-score' + (it.score < 0 ? ' is-neg' : '') + '\">' + it.score + '<\/span>' +\n        '<button type=\"button\" class=\"ge-ideas-vbtn' + (it.my_vote === -1 ? ' is-mine-down' : '') + '\" data-dir=\"down\" aria-label=\"Downvote\">\\u25BC<\/button>' +\n      '<\/div>' +\n      '<div class=\"ge-ideas-main\">' +\n        '<div class=\"ge-ideas-row-title\">' + esc(it.title) + '<\/div>' +\n        (it.body ? '<div class=\"ge-ideas-row-body\">' + esc(it.body) + '<\/div>' : '') +\n        '<div class=\"ge-ideas-meta\">' +\n          '<span class=\"ge-ideas-badge\" style=\"color:' + it.st_color + ';\">' + esc(it.st_label) + '<\/span>' +\n          '<span>' + esc(it.author) + '<\/span><span>\\u00B7 ' + esc(it.ago) + '<\/span>' +\n          '<span>\\u25B2 ' + it.up + ' \/ \\u25BC ' + it.down + '<\/span>' +\n        '<\/div>' +\n        admHtml(it) +\n      '<\/div><\/div>';\n  }\n\n  function sectionHtml(cfg){\n    var body = cfg.items.length\n      ? cfg.items.map(function(it){ return rowHtml(it, cfg.variant); }).join('')\n      : '<div class=\"ge-ideas-empty\">' + cfg.empty + '<\/div>';\n    return '<div class=\"ge-ideas-sec ge-ideas-sec--' + cfg.variant + '\">' +\n      '<div class=\"ge-ideas-sec-head\">' +\n        '<span class=\"ge-ideas-sec-title\">' + cfg.title + '<\/span>' +\n        '<span class=\"ge-ideas-sec-count\">' + cfg.items.length + '<\/span>' +\n      '<\/div>' +\n      '<p class=\"ge-ideas-sec-sub\">' + cfg.sub + '<\/p>' +\n      (cfg.tabs || '') + body +\n    '<\/div>';\n  }\n\n  \/* ---------- changelog ---------- *\/\n  function doneHtml(items, total){\n    var body;\n    if (!items.length) {\n      body = '<div class=\"ge-ideas-empty\">Nothing shipped yet \\u2014 finished ideas land here.<\/div>';\n    } else {\n      var shown = showAllDone ? items : items.slice(0, DONE_PREVIEW);\n      body = '<div class=\"ge-ideas-done-list\">' + shown.map(function(it){\n        return '<div class=\"ge-ideas-done-row\" data-id=\"' + it.id + '\">' +\n          '<span class=\"ge-ideas-check\">\\u2713<\/span>' +\n          '<div class=\"ge-ideas-done-main\">' +\n            '<span class=\"ge-ideas-done-title\">' + esc(it.title) + '<\/span>' +\n            (it.is_fresh ? ' <span class=\"ge-ideas-fresh\">new<\/span>' : '') +\n            (it.body ? '<div class=\"ge-ideas-done-body\" hidden>' + esc(it.body) + '<\/div>' : '') +\n            admHtml(it) +\n          '<\/div>' +\n          '<span class=\"ge-ideas-done-date\">' + esc(it.done_date) + '<\/span>' +\n        '<\/div>';\n      }).join('') + '<\/div>';\n      if (items.length > DONE_PREVIEW) {\n        body += '<button type=\"button\" class=\"ge-ideas-more\">' +\n          (showAllDone ? 'Show less \\u2191' : 'Show all ' + items.length + ' shipped ideas \\u2193') + '<\/button>';\n      }\n    }\n    return '<div class=\"ge-ideas-sec ge-ideas-sec--done\">' +\n      '<div class=\"ge-ideas-sec-head\">' +\n        '<span class=\"ge-ideas-sec-title\">\\u2705 Recently shipped<\/span>' +\n        '<span class=\"ge-ideas-sec-count\">' + total + '<\/span>' +\n      '<\/div>' +\n      '<p class=\"ge-ideas-sec-sub\">Done and live on the site \\u2014 newest first.<\/p>' +\n      body +\n    '<\/div>';\n  }\n\n  function render(payload){\n    data = payload;\n    var tabs = '<div class=\"ge-ideas-tabs\">' +\n      '<button type=\"button\" class=\"ge-ideas-tab' + (sort === 'top' ? ' is-active' : '') + '\" data-sort=\"top\">\\uD83D\\uDD25 Top<\/button>' +\n      '<button type=\"button\" class=\"ge-ideas-tab' + (sort === 'new' ? ' is-active' : '') + '\" data-sort=\"new\">\\uD83D\\uDD50 New<\/button>' +\n    '<\/div>';\n\n    wrap.innerHTML =\n      sectionHtml({\n        variant: 'open', items: data.open,\n        title: '\\uD83D\\uDDF3\\uFE0F Vote on ideas',\n        sub: 'Open suggestions. Vote them up \\u2014 the top ones get built first.',\n        empty: 'No open ideas \\u2014 be the first to suggest something!',\n        tabs: tabs\n      }) +\n      sectionHtml({\n        variant: 'progress', items: data.in_progress,\n        title: '\\uD83D\\uDD28 In progress',\n        sub: 'Being built right now.',\n        empty: 'Nothing in the workshop at the moment.'\n      }) +\n      sectionHtml({\n        variant: 'planned', items: data.planned,\n        title: '\\uD83D\\uDCCC Planned',\n        sub: 'Accepted and queued up \\u2014 votes still decide the order.',\n        empty: 'Nothing queued yet.'\n      }) +\n      doneHtml(data.done, data.counts.done);\n  }\n\n  \/* ---------- interactie ---------- *\/\n  wrap.addEventListener('click', function(e){\n\n    var tab = e.target.closest('.ge-ideas-tab');\n    if (tab) { sort = tab.dataset.sort; load(); return; }\n\n    var more = e.target.closest('.ge-ideas-more');\n    if (more) { showAllDone = !showAllDone; render(data); return; }\n\n    var dtitle = e.target.closest('.ge-ideas-done-title');\n    if (dtitle) {\n      var drow  = dtitle.closest('.ge-ideas-done-row');\n      var dbody = drow.querySelector('.ge-ideas-done-body');\n      if (dbody) { dbody.hidden = !dbody.hidden; drow.classList.toggle('is-open', !dbody.hidden); }\n      return;\n    }\n\n    var btn = e.target.closest('.ge-ideas-vbtn');\n    if (btn) {\n      var row = btn.closest('.ge-ideas-row');\n      btn.disabled = true;\n      post('ge_ideas_vote', { idea: row.dataset.id, dir: btn.dataset.dir }).then(function(r){\n        btn.disabled = false;\n        if (!r.success) { if (r.data === 'closed') load(); return; }\n        var d = r.data;\n        var scoreEl = row.querySelector('.ge-ideas-score');\n        scoreEl.textContent = d.score;\n        scoreEl.classList.toggle('is-neg', d.score < 0);\n        var up = row.querySelector('[data-dir=\"up\"]'), dn = row.querySelector('[data-dir=\"down\"]');\n        if (up) up.classList.toggle('is-mine-up', d.my_vote === 1);\n        if (dn) dn.classList.toggle('is-mine-down', d.my_vote === -1);\n        var counts = row.querySelectorAll('.ge-ideas-meta span');\n        counts[counts.length - 1].textContent = '\\u25B2 ' + d.up + ' \/ \\u25BC ' + d.down;\n      });\n      return;\n    }\n\n    var abtn = e.target.closest('.ge-ideas-abtn');\n    if (abtn) {\n      var bar  = abtn.closest('.ge-ideas-adm');\n      var host = abtn.closest('[data-id]');\n      var op   = abtn.dataset.op;\n      if (op === 'delete' && !confirm('Idee \\u00E9n alle stemmen definitief verwijderen?')) return;\n      bar.classList.add('is-busy');\n      post('ge_ideas_admin', {\n        idea: host.dataset.id,\n        op: (op === 'done' ? 'status' : op),\n        status: 'done',\n        sort: sort\n      }).then(function(r){\n        if (r.success) render(r.data);\n        else { bar.classList.remove('is-busy'); alert('Mislukt: ' + (r.data || 'onbekende fout')); }\n      });\n    }\n  });\n\n  wrap.addEventListener('change', function(e){\n    var sel = e.target.closest('.ge-ideas-status');\n    if (!sel) return;\n    var bar  = sel.closest('.ge-ideas-adm');\n    var host = sel.closest('[data-id]');\n    bar.classList.add('is-busy');\n    post('ge_ideas_admin', { idea: host.dataset.id, op: 'status', status: sel.value, sort: sort })\n      .then(function(r){\n        if (r.success) render(r.data);\n        else { bar.classList.remove('is-busy'); alert('Mislukt: ' + (r.data || 'onbekende fout')); }\n      });\n  });\n\n  \/* ---------- insturen ---------- *\/\n  var title = root.querySelector('.ge-ideas-title');\n  if (title) {\n    var body  = root.querySelector('.ge-ideas-body');\n    var rowEl = root.querySelector('.ge-ideas-submit-row');\n    var msg   = root.querySelector('.ge-ideas-msg');\n    title.addEventListener('focus', function(){ body.hidden = false; rowEl.hidden = false; });\n    root.querySelector('.ge-ideas-send').addEventListener('click', function(){\n      var btn = this;\n      btn.disabled = true; msg.textContent = ''; msg.classList.remove('is-ok');\n      post('ge_ideas_submit', {\n        title: title.value,\n        body: body.value,\n        website: root.querySelector('.ge-ideas-hp').value\n      }).then(function(r){\n        btn.disabled = false;\n        if (!r.success) { msg.textContent = (r.data === 'login_required') ? 'Log in to submit ideas.' : r.data; return; }\n        title.value = ''; body.value = '';\n        msg.textContent = 'Thanks! Your idea is live \\u2014 others can vote on it now.';\n        msg.classList.add('is-ok');\n        sort = 'new';\n        render(r.data);\n      });\n    });\n  }\n\n  load();\n})();\n<\/script>\n\n\n\n\n<p><\/p>\n<!-- CONTENT END 1 -->\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-65304","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Todo\/Changelog - GameSexpose.com<\/title>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Todo\/Changelog - GameSexpose.com\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gamesexpose.com\/es\/todo-changelog\/\" \/>\n<meta property=\"og:site_name\" content=\"GameSexpose.com\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-17T14:24:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-11T23:25:11+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/gamesexpose.com\/todo-changelog\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/gamesexpose.com\/todo-changelog\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/gamesexpose.com\/#\/schema\/person\/11dd847f22bf46687741ce125353cccf\"},\"headline\":\"Todo\/Changelog\",\"datePublished\":\"2025-04-17T14:24:11+00:00\",\"dateModified\":\"2026-06-11T23:25:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/gamesexpose.com\/todo-changelog\/\"},\"wordCount\":5,\"commentCount\":26,\"publisher\":{\"@id\":\"https:\/\/gamesexpose.com\/#organization\"},\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/gamesexpose.com\/todo-changelog\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/gamesexpose.com\/todo-changelog\/\",\"url\":\"https:\/\/gamesexpose.com\/todo-changelog\/\",\"name\":\"Todo\/Changelog - GameSexpose.com\",\"isPartOf\":{\"@id\":\"https:\/\/gamesexpose.com\/#website\"},\"datePublished\":\"2025-04-17T14:24:11+00:00\",\"dateModified\":\"2026-06-11T23:25:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/gamesexpose.com\/todo-changelog\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/gamesexpose.com\/todo-changelog\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/gamesexpose.com\/todo-changelog\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/gamesexpose.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Todo\/Changelog\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/gamesexpose.com\/#website\",\"url\":\"https:\/\/gamesexpose.com\/\",\"name\":\"GameSexpose.com\",\"description\":\"Games for adult exposing risk\",\"publisher\":{\"@id\":\"https:\/\/gamesexpose.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/gamesexpose.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/gamesexpose.com\/#organization\",\"name\":\"GameSexpose.com\",\"url\":\"https:\/\/gamesexpose.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/gamesexpose.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/gamesexpose.com\/wp-content\/uploads\/2025\/08\/gamesexpose-icon.webp\",\"contentUrl\":\"https:\/\/gamesexpose.com\/wp-content\/uploads\/2025\/08\/gamesexpose-icon.webp\",\"width\":100,\"height\":100,\"caption\":\"GameSexpose.com\"},\"image\":{\"@id\":\"https:\/\/gamesexpose.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/gamesexpose.com\/#\/schema\/person\/11dd847f22bf46687741ce125353cccf\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/gamesexpose.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/405f131e3d2f9781336aed79321daa2e158ac81c4915e47cff226e92827e7f5c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/405f131e3d2f9781336aed79321daa2e158ac81c4915e47cff226e92827e7f5c?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Todo\/Changelog - GameSexpose.com","robots":{"index":"noindex","follow":"follow"},"og_locale":"es_ES","og_type":"article","og_title":"Todo\/Changelog - GameSexpose.com","og_url":"https:\/\/gamesexpose.com\/es\/todo-changelog\/","og_site_name":"GameSexpose.com","article_published_time":"2025-04-17T14:24:11+00:00","article_modified_time":"2026-06-11T23:25:11+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"admin","Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gamesexpose.com\/todo-changelog\/#article","isPartOf":{"@id":"https:\/\/gamesexpose.com\/todo-changelog\/"},"author":{"name":"admin","@id":"https:\/\/gamesexpose.com\/#\/schema\/person\/11dd847f22bf46687741ce125353cccf"},"headline":"Todo\/Changelog","datePublished":"2025-04-17T14:24:11+00:00","dateModified":"2026-06-11T23:25:11+00:00","mainEntityOfPage":{"@id":"https:\/\/gamesexpose.com\/todo-changelog\/"},"wordCount":5,"commentCount":26,"publisher":{"@id":"https:\/\/gamesexpose.com\/#organization"},"articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gamesexpose.com\/todo-changelog\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gamesexpose.com\/todo-changelog\/","url":"https:\/\/gamesexpose.com\/todo-changelog\/","name":"Todo\/Changelog - GameSexpose.com","isPartOf":{"@id":"https:\/\/gamesexpose.com\/#website"},"datePublished":"2025-04-17T14:24:11+00:00","dateModified":"2026-06-11T23:25:11+00:00","breadcrumb":{"@id":"https:\/\/gamesexpose.com\/todo-changelog\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gamesexpose.com\/todo-changelog\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gamesexpose.com\/todo-changelog\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gamesexpose.com\/"},{"@type":"ListItem","position":2,"name":"Todo\/Changelog"}]},{"@type":"WebSite","@id":"https:\/\/gamesexpose.com\/#website","url":"https:\/\/gamesexpose.com\/","name":"GameSexpose.com","description":"Games for adult exposing risk","publisher":{"@id":"https:\/\/gamesexpose.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gamesexpose.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/gamesexpose.com\/#organization","name":"GameSexpose.com","url":"https:\/\/gamesexpose.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/gamesexpose.com\/#\/schema\/logo\/image\/","url":"https:\/\/gamesexpose.com\/wp-content\/uploads\/2025\/08\/gamesexpose-icon.webp","contentUrl":"https:\/\/gamesexpose.com\/wp-content\/uploads\/2025\/08\/gamesexpose-icon.webp","width":100,"height":100,"caption":"GameSexpose.com"},"image":{"@id":"https:\/\/gamesexpose.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/gamesexpose.com\/#\/schema\/person\/11dd847f22bf46687741ce125353cccf","name":"administraci\u00f3n","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/gamesexpose.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/405f131e3d2f9781336aed79321daa2e158ac81c4915e47cff226e92827e7f5c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/405f131e3d2f9781336aed79321daa2e158ac81c4915e47cff226e92827e7f5c?s=96&d=mm&r=g","caption":"admin"}}]}},"_links":{"self":[{"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/posts\/65304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/comments?post=65304"}],"version-history":[{"count":404,"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/posts\/65304\/revisions"}],"predecessor-version":[{"id":1152284,"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/posts\/65304\/revisions\/1152284"}],"wp:attachment":[{"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/media?parent=65304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/categories?post=65304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gamesexpose.com\/es\/wp-json\/wp\/v2\/tags?post=65304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}