3 Commits

Author SHA1 Message Date
c22c2fb254 Feature multi-attack in same second
All checks were successful
Continuous Deployment / lint (push) Successful in 26s
Continuous Deployment / deploy-chrome (push) Successful in 32s
Continuous Deployment / deploy-firefox (push) Successful in 5m36s
2025-11-13 20:13:50 +01:00
4fe2922e5a Fix display navbar with reports
All checks were successful
Continuous Deployment / lint (push) Successful in 26s
Continuous Deployment / deploy-chrome (push) Successful in 31s
Continuous Deployment / deploy-firefox (push) Successful in 2m43s
2025-11-13 10:31:12 +01:00
4f1d5442be Continuous deployment on Chrome
Some checks failed
Continuous Deployment / lint (push) Successful in 28s
Continuous Deployment / deploy-chrome (push) Successful in 31s
Continuous Deployment / deploy-firefox (push) Failing after 26s
2025-11-13 01:17:56 +01:00
6 changed files with 101 additions and 26 deletions

View File

@@ -14,13 +14,28 @@ jobs:
- name: Run linter - name: Run linter
run: make lint run: make lint
deploy: deploy-chrome:
needs: lint
runs-on: linux runs-on: linux
steps: steps:
- name: Checkout repo - name: Checkout repo
uses: actions/checkout@v5 uses: actions/checkout@v5
- name: Deploy project - name: Deploy project to Chrome Webstore
env: env:
WEB_EXT_API_KEY: ${{ vars.WEB_EXT_API_KEY }} CLIENT_ID: ${{ vars.CHROME_CLIENT_ID }}
WEB_EXT_API_SECRET: ${{ secrets.WEB_EXT_API_SECRET }} CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }}
run: make deploy EXTENSION_ID: ${{ vars.CHROME_EXTENSION_ID }}
REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }}
run: make deploy_chrome
deploy-firefox:
needs: lint
runs-on: linux
steps:
- name: Checkout repo
uses: actions/checkout@v5
- name: Deploy project to Firefox Addons
env:
WEB_EXT_API_KEY: ${{ vars.FIREFOX_API_KEY }}
WEB_EXT_API_SECRET: ${{ secrets.FIREFOX_API_SECRET }}
run: make deploy_firefox

View File

@@ -1,5 +1,17 @@
# Changelog # Changelog
## 1.5.1 (2025-11-13)
- fonctionnalité de multi-attaques dans la même seconde
## 1.4.14 (2025-11-13)
- correction affichage menu avec rapports
## 1.4.13 (2025-11-13)
- déploiement automatique sur chrome
## 1.4.12 (2025-11-11) ## 1.4.12 (2025-11-11)
- correction bug menu - correction bug menu

View File

@@ -4,7 +4,10 @@ build:
lint: lint:
web-ext lint web-ext lint
deploy: deploy_chrome:
chrome-webstore-upload
deploy_firefox:
web-ext sign --channel listed --amo-metadata metadata.json web-ext sign --channel listed --amo-metadata metadata.json
help: help:

View File

@@ -1,7 +1,7 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "KAplus", "name": "KAplus",
"version": "1.4.12", "version": "1.5.1",
"author": "Samuel Campos - netoik.io", "author": "Samuel Campos - netoik.io",
"description": "Extension développée pour améliorer l'expérience de jeu KingsAge (fonctionne avec ou sans premium)", "description": "Extension développée pour améliorer l'expérience de jeu KingsAge (fonctionne avec ou sans premium)",

View File

@@ -5,8 +5,8 @@
"firefox" "firefox"
], ],
"release_notes": { "release_notes": {
"fr": "- correction bug menu", "fr": "- fonctionnalité de multi-attaques dans la même seconde",
"en-US": "- fix bug menu" "en-US": "- feature multi-attack in same second"
} }
} }
} }

View File

@@ -35,9 +35,13 @@ function shortcutElementReplace(elt, img, text) {
// If more than one hyperlink element found, // If more than one hyperlink element found,
// then keep the last one but with href of the first one. // then keep the last one but with href of the first one.
let aElements = elt.getElementsByTagName("a"); let aElements = elt.getElementsByTagName("a");
if (aElements.length > 1) { let imgElements = elt.getElementsByTagName("img");
if (aElements.length > 1 || imgElements.length > 0) {
aElements[aElements.length - 1].classList.add("has_notif"); aElements[aElements.length - 1].classList.add("has_notif");
aElements[aElements.length - 1].setAttribute("href", aElements[0].getAttribute("href")); aElements[aElements.length - 1].setAttribute("href", aElements[0].getAttribute("href"));
for (let i = imgElements.length - 1; i >= 0; i--) {
imgElements[i].remove();
}
for (let i = aElements.length - 2; i >= 0; i--) { for (let i = aElements.length - 2; i >= 0; i--) {
aElements[i].remove(); aElements[i].remove();
} }
@@ -125,4 +129,45 @@ if (document.body.id === "overview") {
villagePointsRow.after(unitPointsRow); villagePointsRow.after(unitPointsRow);
} }
/* Allow multiple attacks */
if (document.body.id === "build_barracks_command") {
let table = document.createElement("table");
table.classList.add("borderlist");
let tbody = document.createElement("tbody");
let tr = document.createElement("tr");
let th = document.createElement("th");
th.textContent = "Nombre d'attaques:";
tr.appendChild(th)
let td = document.createElement("td");
let input = document.createElement("input");
input.setAttribute("type", "number");
input.setAttribute("name", "attack_count");
input.setAttribute("value", "1");
td.appendChild(input);
tr.appendChild(td);
tbody.appendChild(tr);
table.appendChild(tbody);
let form = document.getElementsByTagName("form")[0];
let firstInput = form.getElementsByTagName("input")[0];
form.insertBefore(table, firstInput);
form.addEventListener("submit", function(event) {
event.preventDefault();
let formData = new FormData(this);
let attackCount = parseInt(formData.get("attack_count").toString());
formData.delete("attack_count");
let sent = 0;
for (let i = 0; i < attackCount; i ++) {
let xhr = new XMLHttpRequest();
xhr.onload = function() {
sent ++;
if (sent === attackCount) {
window.location.replace(xhr.responseURL);
}
}
xhr.open(this.method, this.action, true);
xhr.send(formData);
}
});
}