Compare commits
6 Commits
b0c6b2a3e8
...
14.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
| 6ae99aadb0 | |||
| c1a9bfbb04 | |||
| 0fec217528 | |||
| 1d95628a23 | |||
| 4a65bee2dc | |||
| 497c687eb8 |
@@ -1,54 +0,0 @@
|
||||
name: Release Creation
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: echo "💡 The ${{ gitea.repository }} repository will cloned to the runner."
|
||||
|
||||
#- uses: actions/checkout@v3
|
||||
- uses: RouxAntoine/checkout@v3.5.4
|
||||
with:
|
||||
ref: 'master'
|
||||
|
||||
# get part of the tag after the `v`
|
||||
- name: Extract tag version number
|
||||
id: get_version
|
||||
uses: battila7/get-version-action@v2
|
||||
|
||||
# Substitute the Manifest and Download URLs in the module.json
|
||||
- name: Substitute Manifest and Download Links For Versioned Ones
|
||||
id: sub_manifest_link_version
|
||||
uses: microsoft/variable-substitution@v1
|
||||
with:
|
||||
files: 'system.json'
|
||||
env:
|
||||
version: ${{steps.get_version.outputs.version-without-v}}
|
||||
url: https://www.uberwald.me/gitea/public/fvtt-ecryme
|
||||
manifest: https://www.uberwald.me/gitea/public/fvtt-ecryme/releases/latest/system.json
|
||||
download: https://www.uberwald.me/gitea/public/fvtt-ecryme/releases/download/${{github.event.release.tag_name}}/fvtt-ecryme.zip
|
||||
|
||||
# Create a zip file with all files required by the module to add to the release
|
||||
- run: |
|
||||
apt update -y
|
||||
apt install -y zip
|
||||
|
||||
- run: zip -r ./fvtt-ecryme.zip system.json template.json README.md LICENSE.txt fonts/ images/ lang/ modules/ packs/ styles/ templates/ translated/
|
||||
|
||||
- name: setup go
|
||||
uses: https://github.com/actions/setup-go@v4
|
||||
with:
|
||||
go-version: '>=1.20.1'
|
||||
|
||||
- name: Use Go Action
|
||||
id: use-go-action
|
||||
uses: https://gitea.com/actions/release-action@main
|
||||
with:
|
||||
files: |-
|
||||
./fvtt-ecryme.zip
|
||||
system.json
|
||||
api_key: '${{secrets.RELEASE_TOKEN_UBERWALD}}'
|
||||
@@ -0,0 +1,51 @@
|
||||
name: Release Creation
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: echo "💡 The ${{ gitea.repository }} repository will be cloned to the runner."
|
||||
|
||||
- uses: RouxAntoine/checkout@v3.5.4
|
||||
|
||||
# get part of the tag after the `v`
|
||||
- name: Extract tag version number
|
||||
id: get_version
|
||||
uses: battila7/get-version-action@v2
|
||||
|
||||
# Substitute the Manifest and Download URLs in the system.json
|
||||
- name: Substitute Manifest and Download Links For Versioned Ones
|
||||
id: sub_manifest_link_version
|
||||
uses: microsoft/variable-substitution@v1
|
||||
with:
|
||||
files: "system.json"
|
||||
env:
|
||||
version: ${{steps.get_version.outputs.version-without-v}}
|
||||
url: https://www.uberwald.me/gitea/${{gitea.repository}}
|
||||
manifest: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/latest/system.json
|
||||
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-ecryme-${{github.event.release.tag_name}}.zip
|
||||
|
||||
# Create a zip file with all files required by the system to add to the release
|
||||
- run: |
|
||||
apt update -y
|
||||
apt install -y zip
|
||||
|
||||
- run: zip -r ./fvtt-ecryme-${{github.event.release.tag_name}}.zip system.json README.md LICENSE.txt changelog.md css/ fonts/ images/ lang/ modules/ styles/ packs/ templates/ translated/ welcome-message-ecryme.html
|
||||
|
||||
- name: setup go
|
||||
uses: https://github.com/actions/setup-go@v4
|
||||
with:
|
||||
go-version: ">=1.20.1"
|
||||
|
||||
- name: Use Go Action
|
||||
id: use-go-action
|
||||
uses: https://gitea.com/actions/release-action@main
|
||||
with:
|
||||
files: |-
|
||||
./fvtt-ecryme-${{github.event.release.tag_name}}.zip
|
||||
system.json
|
||||
api_key: "${{secrets.ALLOW_PUSH_RELEASE}}"
|
||||
@@ -0,0 +1,125 @@
|
||||
# Agents pour le système JDR Ecryme (FoundryVTT)
|
||||
|
||||
Ce fichier documente les commandes et workflows pour les agents (automatisations, scripts, outils externes) utilisés dans le développement et la maintenance du système Ecryme pour FoundryVTT.
|
||||
|
||||
## Commandes de développement
|
||||
|
||||
### Linting et validation
|
||||
```bash
|
||||
# Vérification du code TypeScript
|
||||
npm run lint
|
||||
|
||||
# Vérification des types
|
||||
npm run typecheck
|
||||
|
||||
# Construction du projet
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Tests
|
||||
```bash
|
||||
# Exécution des tests unitaires
|
||||
npm test
|
||||
|
||||
# Exécution des tests avec couverture
|
||||
npm run test:coverage
|
||||
```
|
||||
|
||||
### Déploiement
|
||||
```bash
|
||||
# Construction pour la production
|
||||
npm run build:prod
|
||||
|
||||
# Génération du package pour FoundryVTT
|
||||
npm run package
|
||||
```
|
||||
|
||||
## Workflows recommandés
|
||||
|
||||
### Avant de soumettre une PR
|
||||
1. Exécuter les tests unitaires
|
||||
2. Vérifier le linting (`npm run lint`)
|
||||
3. Vérifier les types (`npm run typecheck`)
|
||||
4. Construire le projet (`npm run build`)
|
||||
5. Tester manuellement dans FoundryVTT avec les scénarios de test fournis dans `/test-scenarios/`
|
||||
|
||||
### Pour ajouter une nouvelle fonctionnalité
|
||||
1. Créer une branche `feature/<nom-de-la-fonctionnalité>`
|
||||
2. Ajouter les tests dans `/tests/`
|
||||
3. Implémenter la fonctionnalité
|
||||
4. Mettre à jour la documentation dans `/docs/` si nécessaire
|
||||
5. Soumettre une PR avec une description claire des changements
|
||||
|
||||
## Structure du projet
|
||||
```
|
||||
/
|
||||
├── src/ # Code source principal
|
||||
│ ├── module/ # Définition du module FoundryVTT
|
||||
│ ├── systems/ # Systèmes de règles spécifiques à Ecryme
|
||||
│ ├── actors/ # Logique des acteurs (PJs, PNJs, créatures)
|
||||
│ ├── items/ # Logique des objets (armes, sorts, équipements)
|
||||
│ └── utils/ # Utilitaires partagés
|
||||
├── tests/ # Tests unitaires et d'intégration
|
||||
├── docs/ # Documentation technique et utilisateur
|
||||
├── templates/ # Templates Handlebar pour les feuilles de personnage
|
||||
└── test-scenarios/ # Scénarios de test pour FoundryVTT
|
||||
```
|
||||
|
||||
## Conventions de codage
|
||||
- **TypeScript strict** : Toujours utiliser les types les plus précis possibles
|
||||
- **Noms de fichiers** :
|
||||
- PascalCase pour les classes (`CharacterSheet.ts`)
|
||||
- kebab-case pour les templates (`character-sheet.hbs`)
|
||||
- camelCase pour les utilitaires (`diceRoller.ts`)
|
||||
- **Tests** :
|
||||
- Un fichier de test par fichier source (`characterSheet.test.ts`)
|
||||
- Couverture minimale de 80% requise pour les PR
|
||||
|
||||
## Outils spécifiques à FoundryVTT
|
||||
|
||||
### Génération des templates
|
||||
```bash
|
||||
# Recompiler les templates Handlebar après modification
|
||||
npm run build:templates
|
||||
```
|
||||
|
||||
### Validation des données
|
||||
```bash
|
||||
# Valider la structure des données contre le schéma
|
||||
npm run validate:schema
|
||||
```
|
||||
|
||||
### Déploiement pour test local
|
||||
```bash
|
||||
# Lier le module en développement à FoundryVTT (nécessite le module "Module Developer")
|
||||
npx foundryvtt-link
|
||||
```
|
||||
|
||||
## Dépannage
|
||||
|
||||
### Problèmes courants
|
||||
1. **Les changements ne s'affichent pas dans Foundry** :
|
||||
- Vérifier que le module est bien lié (`npm run link`)
|
||||
- Redémarrer FoundryVTT
|
||||
- Vider le cache du navigateur (Ctrl+F5)
|
||||
|
||||
2. **Erreurs de type dans les templates** :
|
||||
- Exécuter `npm run validate:templates`
|
||||
- Vérifier les annotations JSDoc dans les fichiers `.ts`
|
||||
|
||||
3. **Problèmes de performance** :
|
||||
- Utiliser le profiler de Foundry (F12 > Performance)
|
||||
- Vérifier les boucles dans les templates Handlebar
|
||||
|
||||
## Ressources utiles
|
||||
- [Documentation FoundryVTT](https://foundryvtt.com/article/api/)
|
||||
- [Guide des systèmes personnalisés](https://foundryvtt.com/article/system-development/)
|
||||
- [Référence Handlebar](https://handlebarsjs.com/guide/)
|
||||
- [TypeScript pour Foundry](https://github.com/League-of-Foundry-Developers/foundry-vtt-types)
|
||||
|
||||
## Contribution
|
||||
Les contributions sont les bienvenues ! Veuillez :
|
||||
1. Ouvrir une issue pour discuter des changements majeurs
|
||||
2. Suivre les conventions de codage ci-dessus
|
||||
3. Inclure des tests pour les nouvelles fonctionnalités
|
||||
4. Mettre à jour la documentation si nécessaire
|
||||
@@ -1,8 +1,32 @@
|
||||
/* -------------------------------------------- */
|
||||
import { EcrymeUtility } from "../common/ecryme-utility.js";
|
||||
const { HandlebarsApplicationMixin } = foundry.applications.api
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class EcrymeCharacterSummary extends Application {
|
||||
export class EcrymeCharacterSummary extends HandlebarsApplicationMixin(foundry.applications.api.ApplicationV2) {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static DEFAULT_OPTIONS = {
|
||||
id: "ecryme-character-summary",
|
||||
classes: ["fvtt-ecryme", "dialog"],
|
||||
position: { width: 920 },
|
||||
window: { title: "ECRY.ui.charactersummary", resizable: true },
|
||||
actions: {
|
||||
actorOpen: EcrymeCharacterSummary.#onActorOpen,
|
||||
summaryRoll: EcrymeCharacterSummary.#onSummaryRoll,
|
||||
actorDelete: EcrymeCharacterSummary.#onActorDelete,
|
||||
},
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static PARTS = {
|
||||
content: { template: "systems/fvtt-ecryme/templates/dialogs/character-summary.hbs" },
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor(options = {}) {
|
||||
super(options)
|
||||
this.settings = game.settings.get("fvtt-ecryme", "character-summary-data")
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static displayPCSummary() {
|
||||
@@ -16,18 +40,13 @@ export class EcrymeCharacterSummary extends Application {
|
||||
/* -------------------------------------------- */
|
||||
updatePCSummary() {
|
||||
if (this.rendered) {
|
||||
this.render(true)
|
||||
this.render()
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static createSummaryPos() {
|
||||
return { top: 200, left: 200 };
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static ready() {
|
||||
if (!game.user.isGM) { // Uniquement si GM
|
||||
if (!game.user.isGM) {
|
||||
return
|
||||
}
|
||||
let charSummary = new EcrymeCharacterSummary()
|
||||
@@ -35,100 +54,81 @@ export class EcrymeCharacterSummary extends Application {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor() {
|
||||
super();
|
||||
//game.settings.set("world", "character-summary-data", {npcList: [], x:0, y:0})
|
||||
//this.settings = game.settings.get("world", "character-summary-data")
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static get defaultOptions() {
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
template: "systems/fvtt-ecryme/templates/dialogs/character-summary.hbs",
|
||||
popOut: true,
|
||||
resizable: true,
|
||||
dragDrop: [{ dragSelector: ".items-list .item", dropSelector: null }],
|
||||
classes: ["bol", "dialog"], width: 920, height: 'fit-content'
|
||||
})
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getData() {
|
||||
let formData = super.getData();
|
||||
|
||||
formData.pcs = game.actors.filter(ac => ac.type == "personnage" && ac.hasPlayerOwner)
|
||||
formData.npcs = []
|
||||
async _prepareContext() {
|
||||
let pcs = game.actors.filter(ac => ac.type == "pc" && ac.hasPlayerOwner)
|
||||
let npcs = []
|
||||
let newList = []
|
||||
let toUpdate = false
|
||||
for (let actorId of this.settings.npcList) {
|
||||
let actor = game.actors.get(actorId)
|
||||
if (actor) {
|
||||
formData.npcs.push(actor)
|
||||
npcs.push(actor)
|
||||
newList.push(actorId)
|
||||
} else {
|
||||
toUpdate = true
|
||||
}
|
||||
}
|
||||
formData.config = game.system.ecryme.config
|
||||
|
||||
if (toUpdate) {
|
||||
this.settings.npcList = newList
|
||||
//console.log("Going to update ...", this.settings)
|
||||
game.settings.set("world", "character-summary-data", this.settings)
|
||||
game.settings.set("fvtt-ecryme", "character-summary-data", this.settings)
|
||||
}
|
||||
return {
|
||||
pcs,
|
||||
npcs,
|
||||
config: game.system.ecryme.config,
|
||||
}
|
||||
|
||||
return formData
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
updateNPC() {
|
||||
game.settings.set("world", "character-summary-data", game.system.ecryme.charSummary.settings)
|
||||
game.system.ecryme.charSummary.close()
|
||||
setTimeout(function () { game.system.ecryme.charSummary.render(true) }, 500)
|
||||
game.settings.set("fvtt-ecryme", "character-summary-data", this.settings)
|
||||
this.close()
|
||||
setTimeout(() => this.render(true), 500)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onDrop(event) {
|
||||
//console.log("Dragged data are : ", dragData)
|
||||
let data = event.dataTransfer.getData('text/plain')
|
||||
let dataItem = JSON.parse(data)
|
||||
let actor = fromUuidSync(dataItem.uuid)
|
||||
if (actor) {
|
||||
game.system.ecryme.charSummary.settings.npcList.push(actor.id)
|
||||
game.system.ecryme.charSummary.updateNPC()
|
||||
_onDragOver(event) {
|
||||
event.preventDefault()
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_onDrop(event) {
|
||||
let data
|
||||
try { data = JSON.parse(event.dataTransfer.getData('text/plain')) } catch(e) { return }
|
||||
let actor = fromUuidSync(data.uuid)
|
||||
if (actor) {
|
||||
this.settings.npcList.push(actor.id)
|
||||
this.updateNPC()
|
||||
} else {
|
||||
ui.notifications.warn("Pas d'acteur trouvé")
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
async activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
_onRender(context, options) {
|
||||
super._onRender(context, options)
|
||||
this.element.addEventListener("dragover", this._onDragOver.bind(this))
|
||||
this.element.addEventListener("drop", this._onDrop.bind(this))
|
||||
}
|
||||
|
||||
html.find('.actor-open').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
const actor = game.actors.get(li.data("actor-id"))
|
||||
actor.sheet.render(true)
|
||||
})
|
||||
/* -------------------------------------------- */
|
||||
static #onActorOpen(event, target) {
|
||||
const actorId = target.closest("[data-actor-id]").dataset.actorId
|
||||
game.actors.get(actorId)?.sheet.render(true)
|
||||
}
|
||||
|
||||
html.find('.summary-roll').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
const actor = game.actors.get(li.data("actor-id"))
|
||||
let type = $(event.currentTarget).data("type")
|
||||
let key = $(event.currentTarget).data("key")
|
||||
actor.rollAttribut(key)
|
||||
})
|
||||
|
||||
html.find('.actor-delete').click(event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
let actorId = li.data("actor-id")
|
||||
let newList = game.system.ecryme.charSummary.settings.npcList.filter(id => id != actorId)
|
||||
game.system.ecryme.charSummary.settings.npcList = newList
|
||||
game.system.ecryme.charSummary.updateNPC()
|
||||
})
|
||||
/* -------------------------------------------- */
|
||||
static #onSummaryRoll(event, target) {
|
||||
const actorId = target.closest("[data-actor-id]").dataset.actorId
|
||||
const key = target.dataset.key
|
||||
game.actors.get(actorId)?.rollAttribut(key)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static #onActorDelete(event, target) {
|
||||
const actorId = target.closest("[data-actor-id]").dataset.actorId
|
||||
this.settings.npcList = this.settings.npcList.filter(id => id !== actorId)
|
||||
this.updateNPC()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -101,6 +101,13 @@ export class EcrymeUtility {
|
||||
restricted: true
|
||||
})
|
||||
|
||||
game.settings.register("fvtt-ecryme", "character-summary-data", {
|
||||
scope: 'world',
|
||||
config: false,
|
||||
type: Object,
|
||||
default: { npcList: [] }
|
||||
})
|
||||
|
||||
this.buildSkillConfig()
|
||||
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import { EcrymeItem } from "./items/ecryme-item.js";
|
||||
import { EcrymeHotbar } from "./app/ecryme-hotbar.js"
|
||||
import { EcrymeCharacterSummary } from "./app/ecryme-summary-app.js"
|
||||
import { ECRYME_CONFIG } from "./common/ecryme-config.js"
|
||||
import * as models from "./models/_module.js"
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Foundry VTT Initialization */
|
||||
@@ -36,10 +37,7 @@ import { ECRYME_CONFIG } from "./common/ecryme-config.js"
|
||||
/************************************************************************************/
|
||||
Hooks.once("init", async function () {
|
||||
|
||||
console.log(`Initializing Ecryme RPG`);
|
||||
|
||||
// Import DataModels dynamically to avoid timing issues
|
||||
const models = await import("./models/_module.js");
|
||||
console.log(`Initializing Ecryme RPG System`);
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// preload handlebars templates
|
||||
@@ -85,7 +83,7 @@ Hooks.once("init", async function () {
|
||||
/* -------------------------------------------- */
|
||||
// Register sheet application classes
|
||||
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true });
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["pc"], makeDefault: true });
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeActorSheet, { types: ["npc"], makeDefault: true });
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-ecryme", EcrymeAnnencySheet, { types: ["annency"], makeDefault: true });
|
||||
|
||||
@@ -166,11 +164,11 @@ Hooks.once("ready", function () {
|
||||
})
|
||||
|
||||
/* -------------------------------------------- */
|
||||
Hooks.once('babele.init', (babele) => {
|
||||
Hooks.once("babele.init", (babele) => {
|
||||
console.log("Initializing Babele translations")
|
||||
babele.setSystemTranslationsDir("translated");
|
||||
});
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Foundry VTT Initialization */
|
||||
/* -------------------------------------------- */
|
||||
|
||||
@@ -1 +1 @@
|
||||
MANIFEST-000287
|
||||
MANIFEST-000379
|
||||
|
||||
+7
-7
@@ -1,7 +1,7 @@
|
||||
2026/02/25-15:53:13.691886 7f821effd6c0 Recovering log #285
|
||||
2026/02/25-15:53:13.751659 7f821effd6c0 Delete type=3 #283
|
||||
2026/02/25-15:53:13.751724 7f821effd6c0 Delete type=0 #285
|
||||
2026/02/25-15:53:35.823463 7f821d8d46c0 Level-0 table #290: started
|
||||
2026/02/25-15:53:35.823484 7f821d8d46c0 Level-0 table #290: 0 bytes OK
|
||||
2026/02/25-15:53:35.829592 7f821d8d46c0 Delete type=0 #288
|
||||
2026/02/25-15:53:35.836554 7f821d8d46c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:08:24.585664 7fe4cbfff6c0 Recovering log #377
|
||||
2026/05/25-23:08:24.596183 7fe4cbfff6c0 Delete type=3 #375
|
||||
2026/05/25-23:08:24.596270 7fe4cbfff6c0 Delete type=0 #377
|
||||
2026/05/25-23:08:42.305844 7fe4c9ffb6c0 Level-0 table #382: started
|
||||
2026/05/25-23:08:42.305858 7fe4c9ffb6c0 Level-0 table #382: 0 bytes OK
|
||||
2026/05/25-23:08:42.311644 7fe4c9ffb6c0 Delete type=0 #380
|
||||
2026/05/25-23:08:42.324476 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/02/25-15:50:34.600919 7f821f7fe6c0 Recovering log #281
|
||||
2026/02/25-15:50:34.610892 7f821f7fe6c0 Delete type=3 #279
|
||||
2026/02/25-15:50:34.610949 7f821f7fe6c0 Delete type=0 #281
|
||||
2026/02/25-15:50:42.114392 7f821d8d46c0 Level-0 table #286: started
|
||||
2026/02/25-15:50:42.114447 7f821d8d46c0 Level-0 table #286: 0 bytes OK
|
||||
2026/02/25-15:50:42.121344 7f821d8d46c0 Delete type=0 #284
|
||||
2026/02/25-15:50:42.142455 7f821d8d46c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:06:37.876581 7fe4cbfff6c0 Recovering log #373
|
||||
2026/05/25-23:06:37.885990 7fe4cbfff6c0 Delete type=3 #371
|
||||
2026/05/25-23:06:37.886037 7fe4cbfff6c0 Delete type=0 #373
|
||||
2026/05/25-23:07:52.694183 7fe4c9ffb6c0 Level-0 table #378: started
|
||||
2026/05/25-23:07:52.694213 7fe4c9ffb6c0 Level-0 table #378: 0 bytes OK
|
||||
2026/05/25-23:07:52.700676 7fe4c9ffb6c0 Delete type=0 #376
|
||||
2026/05/25-23:07:52.700785 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!1GrTlI1xWvaxdKRI' @ 72057594037927935 : 1 .. '!items!zs7krgXhDRndtqbl' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
||||
MANIFEST-000224
|
||||
MANIFEST-000312
|
||||
|
||||
+8
-8
@@ -1,8 +1,8 @@
|
||||
2026/02/25-15:53:13.932310 7f821ffff6c0 Recovering log #222
|
||||
2026/02/25-15:53:13.985670 7f821ffff6c0 Delete type=3 #220
|
||||
2026/02/25-15:53:13.985727 7f821ffff6c0 Delete type=0 #222
|
||||
2026/02/25-15:53:35.850326 7f821d8d46c0 Level-0 table #227: started
|
||||
2026/02/25-15:53:35.850379 7f821d8d46c0 Level-0 table #227: 0 bytes OK
|
||||
2026/02/25-15:53:35.856311 7f821d8d46c0 Delete type=0 #225
|
||||
2026/02/25-15:53:35.863092 7f821d8d46c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||
2026/02/25-15:53:35.863120 7f821d8d46c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:08:24.638383 7fe4cb7fe6c0 Recovering log #310
|
||||
2026/05/25-23:08:24.648627 7fe4cb7fe6c0 Delete type=3 #308
|
||||
2026/05/25-23:08:24.648688 7fe4cb7fe6c0 Delete type=0 #310
|
||||
2026/05/25-23:08:42.324943 7fe4c9ffb6c0 Level-0 table #315: started
|
||||
2026/05/25-23:08:42.324976 7fe4c9ffb6c0 Level-0 table #315: 0 bytes OK
|
||||
2026/05/25-23:08:42.331359 7fe4c9ffb6c0 Delete type=0 #313
|
||||
2026/05/25-23:08:42.359806 7fe4c9ffb6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:08:42.380057 7fe4c9ffb6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||
|
||||
+8
-8
@@ -1,8 +1,8 @@
|
||||
2026/02/25-15:50:34.651524 7f821e7fc6c0 Recovering log #218
|
||||
2026/02/25-15:50:34.661646 7f821e7fc6c0 Delete type=3 #216
|
||||
2026/02/25-15:50:34.661750 7f821e7fc6c0 Delete type=0 #218
|
||||
2026/02/25-15:50:42.142608 7f821d8d46c0 Level-0 table #223: started
|
||||
2026/02/25-15:50:42.142633 7f821d8d46c0 Level-0 table #223: 0 bytes OK
|
||||
2026/02/25-15:50:42.148721 7f821d8d46c0 Delete type=0 #221
|
||||
2026/02/25-15:50:42.168777 7f821d8d46c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||
2026/02/25-15:50:42.168835 7f821d8d46c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:06:37.927773 7fe4cb7fe6c0 Recovering log #306
|
||||
2026/05/25-23:06:37.937509 7fe4cb7fe6c0 Delete type=3 #304
|
||||
2026/05/25-23:06:37.937560 7fe4cb7fe6c0 Delete type=0 #306
|
||||
2026/05/25-23:07:52.707381 7fe4c9ffb6c0 Level-0 table #311: started
|
||||
2026/05/25-23:07:52.707409 7fe4c9ffb6c0 Level-0 table #311: 0 bytes OK
|
||||
2026/05/25-23:07:52.713201 7fe4c9ffb6c0 Delete type=0 #309
|
||||
2026/05/25-23:07:52.733614 7fe4c9ffb6c0 Manual compaction at level-0 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:07:52.733638 7fe4c9ffb6c0 Manual compaction at level-1 from '!journal!wooTFYjEwh83FwgT' @ 72057594037927935 : 1 .. '!journal.pages!wooTFYjEwh83FwgT.xhc7hqoL8kdW6lrD' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000287
|
||||
MANIFEST-000377
|
||||
|
||||
+7
-7
@@ -1,7 +1,7 @@
|
||||
2026/02/25-15:53:13.876847 7f821e7fc6c0 Recovering log #285
|
||||
2026/02/25-15:53:13.930449 7f821e7fc6c0 Delete type=3 #283
|
||||
2026/02/25-15:53:13.930523 7f821e7fc6c0 Delete type=0 #285
|
||||
2026/02/25-15:53:35.829708 7f821d8d46c0 Level-0 table #290: started
|
||||
2026/02/25-15:53:35.829729 7f821d8d46c0 Level-0 table #290: 0 bytes OK
|
||||
2026/02/25-15:53:35.836306 7f821d8d46c0 Delete type=0 #288
|
||||
2026/02/25-15:53:35.836570 7f821d8d46c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:08:24.625469 7fe4cbfff6c0 Recovering log #375
|
||||
2026/05/25-23:08:24.635881 7fe4cbfff6c0 Delete type=3 #373
|
||||
2026/05/25-23:08:24.635933 7fe4cbfff6c0 Delete type=0 #375
|
||||
2026/05/25-23:08:42.317961 7fe4c9ffb6c0 Level-0 table #380: started
|
||||
2026/05/25-23:08:42.317972 7fe4c9ffb6c0 Level-0 table #380: 0 bytes OK
|
||||
2026/05/25-23:08:42.324427 7fe4c9ffb6c0 Delete type=0 #378
|
||||
2026/05/25-23:08:42.324891 7fe4c9ffb6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/02/25-15:50:34.639642 7f821effd6c0 Recovering log #281
|
||||
2026/02/25-15:50:34.649510 7f821effd6c0 Delete type=3 #279
|
||||
2026/02/25-15:50:34.649589 7f821effd6c0 Delete type=0 #281
|
||||
2026/02/25-15:50:42.134887 7f821d8d46c0 Level-0 table #286: started
|
||||
2026/02/25-15:50:42.134921 7f821d8d46c0 Level-0 table #286: 0 bytes OK
|
||||
2026/02/25-15:50:42.142305 7f821d8d46c0 Delete type=0 #284
|
||||
2026/02/25-15:50:42.142488 7f821d8d46c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:06:37.915238 7fe4ca7fc6c0 Recovering log #371
|
||||
2026/05/25-23:06:37.925308 7fe4ca7fc6c0 Delete type=3 #369
|
||||
2026/05/25-23:06:37.925365 7fe4ca7fc6c0 Delete type=0 #371
|
||||
2026/05/25-23:07:52.700870 7fe4c9ffb6c0 Level-0 table #376: started
|
||||
2026/05/25-23:07:52.701331 7fe4c9ffb6c0 Level-0 table #376: 0 bytes OK
|
||||
2026/05/25-23:07:52.707294 7fe4c9ffb6c0 Delete type=0 #374
|
||||
2026/05/25-23:07:52.733595 7fe4c9ffb6c0 Manual compaction at level-0 from '!items!13IYF6BPUTivFZzB' @ 72057594037927935 : 1 .. '!items!oSutlbe9wyBZccmf' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000173
|
||||
MANIFEST-000264
|
||||
|
||||
+8
-8
@@ -1,8 +1,8 @@
|
||||
2026/02/25-15:53:13.816260 7f821ffff6c0 Recovering log #171
|
||||
2026/02/25-15:53:13.873719 7f821ffff6c0 Delete type=3 #169
|
||||
2026/02/25-15:53:13.873802 7f821ffff6c0 Delete type=0 #171
|
||||
2026/02/25-15:53:35.810175 7f821d8d46c0 Level-0 table #176: started
|
||||
2026/02/25-15:53:35.810225 7f821d8d46c0 Level-0 table #176: 0 bytes OK
|
||||
2026/02/25-15:53:35.817237 7f821d8d46c0 Delete type=0 #174
|
||||
2026/02/25-15:53:35.836504 7f821d8d46c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
||||
2026/02/25-15:53:35.836580 7f821d8d46c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:08:24.610750 7fe4ca7fc6c0 Recovering log #262
|
||||
2026/05/25-23:08:24.621300 7fe4ca7fc6c0 Delete type=3 #260
|
||||
2026/05/25-23:08:24.621336 7fe4ca7fc6c0 Delete type=0 #262
|
||||
2026/05/25-23:08:42.311679 7fe4c9ffb6c0 Level-0 table #267: started
|
||||
2026/05/25-23:08:42.311691 7fe4c9ffb6c0 Level-0 table #267: 0 bytes OK
|
||||
2026/05/25-23:08:42.317830 7fe4c9ffb6c0 Delete type=0 #265
|
||||
2026/05/25-23:08:42.324483 7fe4c9ffb6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:08:42.324930 7fe4c9ffb6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/02/25-15:50:34.626081 7f821e7fc6c0 Recovering log #167
|
||||
2026/02/25-15:50:34.636822 7f821e7fc6c0 Delete type=3 #165
|
||||
2026/02/25-15:50:34.636891 7f821e7fc6c0 Delete type=0 #167
|
||||
2026/02/25-15:50:42.162300 7f821d8d46c0 Level-0 table #172: started
|
||||
2026/02/25-15:50:42.162331 7f821d8d46c0 Level-0 table #172: 0 bytes OK
|
||||
2026/02/25-15:50:42.168591 7f821d8d46c0 Delete type=0 #170
|
||||
2026/02/25-15:50:42.168824 7f821d8d46c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
||||
2026/02/25-15:50:42.168857 7f821d8d46c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes!zvY1RwBhTfwdZIBa' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:06:37.900889 7fe4caffd6c0 Recovering log #258
|
||||
2026/05/25-23:06:37.911257 7fe4caffd6c0 Delete type=3 #256
|
||||
2026/05/25-23:06:37.911321 7fe4caffd6c0 Delete type=0 #258
|
||||
2026/05/25-23:07:52.688262 7fe4c9ffb6c0 Level-0 table #263: started
|
||||
2026/05/25-23:07:52.688293 7fe4c9ffb6c0 Level-0 table #263: 0 bytes OK
|
||||
2026/05/25-23:07:52.694093 7fe4c9ffb6c0 Delete type=0 #261
|
||||
2026/05/25-23:07:52.700777 7fe4c9ffb6c0 Manual compaction at level-0 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:07:52.700805 7fe4c9ffb6c0 Manual compaction at level-1 from '!scenes!DDibQQLAvyIq9y09' @ 72057594037927935 : 1 .. '!scenes.levels!zvY1RwBhTfwdZIBa.defaultLevel0000' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000287
|
||||
MANIFEST-000375
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/02/25-15:53:13.612255 7f821ffff6c0 Recovering log #285
|
||||
2026/02/25-15:53:13.689314 7f821ffff6c0 Delete type=3 #283
|
||||
2026/02/25-15:53:13.689394 7f821ffff6c0 Delete type=0 #285
|
||||
2026/02/25-15:53:35.836645 7f821d8d46c0 Level-0 table #290: started
|
||||
2026/02/25-15:53:35.836668 7f821d8d46c0 Level-0 table #290: 0 bytes OK
|
||||
2026/02/25-15:53:35.843158 7f821d8d46c0 Delete type=0 #288
|
||||
2026/02/25-15:53:35.863066 7f821d8d46c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:08:24.571661 7fe4cb7fe6c0 Recovering log #373
|
||||
2026/05/25-23:08:24.583242 7fe4cb7fe6c0 Delete type=3 #371
|
||||
2026/05/25-23:08:24.583309 7fe4cb7fe6c0 Delete type=0 #373
|
||||
2026/05/25-23:08:42.299898 7fe4c9ffb6c0 Level-0 table #378: started
|
||||
2026/05/25-23:08:42.299954 7fe4c9ffb6c0 Level-0 table #378: 0 bytes OK
|
||||
2026/05/25-23:08:42.305788 7fe4c9ffb6c0 Delete type=0 #376
|
||||
2026/05/25-23:08:42.324469 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/02/25-15:50:34.587424 7f821e7fc6c0 Recovering log #281
|
||||
2026/02/25-15:50:34.597587 7f821e7fc6c0 Delete type=3 #279
|
||||
2026/02/25-15:50:34.597685 7f821e7fc6c0 Delete type=0 #281
|
||||
2026/02/25-15:50:42.121525 7f821d8d46c0 Level-0 table #286: started
|
||||
2026/02/25-15:50:42.121550 7f821d8d46c0 Level-0 table #286: 0 bytes OK
|
||||
2026/02/25-15:50:42.128357 7f821d8d46c0 Delete type=0 #284
|
||||
2026/02/25-15:50:42.142466 7f821d8d46c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:06:37.865486 7fe4cbfff6c0 Recovering log #369
|
||||
2026/05/25-23:06:37.874724 7fe4cbfff6c0 Delete type=3 #367
|
||||
2026/05/25-23:06:37.874744 7fe4cbfff6c0 Delete type=0 #369
|
||||
2026/05/25-23:07:52.682178 7fe4c9ffb6c0 Level-0 table #374: started
|
||||
2026/05/25-23:07:52.682203 7fe4c9ffb6c0 Level-0 table #374: 0 bytes OK
|
||||
2026/05/25-23:07:52.688174 7fe4c9ffb6c0 Delete type=0 #372
|
||||
2026/05/25-23:07:52.700766 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!00Hn2nNarlL7b0DR' @ 72057594037927935 : 1 .. '!items!yozTUjNuc2rEGjFK' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
MANIFEST-000002
|
||||
@@ -0,0 +1 @@
|
||||
2026/05/06-14:41:23.043596 7f0aceffd6c0 Delete type=3 #1
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000287
|
||||
MANIFEST-000379
|
||||
|
||||
+7
-7
@@ -1,7 +1,7 @@
|
||||
2026/02/25-15:53:13.754329 7f821e7fc6c0 Recovering log #285
|
||||
2026/02/25-15:53:13.814025 7f821e7fc6c0 Delete type=3 #283
|
||||
2026/02/25-15:53:13.814092 7f821e7fc6c0 Delete type=0 #285
|
||||
2026/02/25-15:53:35.817353 7f821d8d46c0 Level-0 table #290: started
|
||||
2026/02/25-15:53:35.817380 7f821d8d46c0 Level-0 table #290: 0 bytes OK
|
||||
2026/02/25-15:53:35.823347 7f821d8d46c0 Delete type=0 #288
|
||||
2026/02/25-15:53:35.836533 7f821d8d46c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:08:24.598700 7fe4caffd6c0 Recovering log #377
|
||||
2026/05/25-23:08:24.608566 7fe4caffd6c0 Delete type=3 #375
|
||||
2026/05/25-23:08:24.608604 7fe4caffd6c0 Delete type=0 #377
|
||||
2026/05/25-23:08:42.331497 7fe4c9ffb6c0 Level-0 table #382: started
|
||||
2026/05/25-23:08:42.331525 7fe4c9ffb6c0 Level-0 table #382: 0 bytes OK
|
||||
2026/05/25-23:08:42.338312 7fe4c9ffb6c0 Delete type=0 #380
|
||||
2026/05/25-23:08:42.359828 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/02/25-15:50:34.614119 7f821ffff6c0 Recovering log #281
|
||||
2026/02/25-15:50:34.623965 7f821ffff6c0 Delete type=3 #279
|
||||
2026/02/25-15:50:34.624023 7f821ffff6c0 Delete type=0 #281
|
||||
2026/02/25-15:50:42.128491 7f821d8d46c0 Level-0 table #286: started
|
||||
2026/02/25-15:50:42.128510 7f821d8d46c0 Level-0 table #286: 0 bytes OK
|
||||
2026/02/25-15:50:42.134699 7f821d8d46c0 Delete type=0 #284
|
||||
2026/02/25-15:50:42.142479 7f821d8d46c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||
2026/05/25-23:06:37.888245 7fe4cb7fe6c0 Recovering log #373
|
||||
2026/05/25-23:06:37.898117 7fe4cb7fe6c0 Delete type=3 #371
|
||||
2026/05/25-23:06:37.898159 7fe4cb7fe6c0 Delete type=0 #373
|
||||
2026/05/25-23:07:52.675131 7fe4c9ffb6c0 Level-0 table #378: started
|
||||
2026/05/25-23:07:52.675198 7fe4c9ffb6c0 Level-0 table #378: 0 bytes OK
|
||||
2026/05/25-23:07:52.682088 7fe4c9ffb6c0 Delete type=0 #376
|
||||
2026/05/25-23:07:52.700749 7fe4c9ffb6c0 Manual compaction at level-0 from '!folders!DiwHbtGAkTYxtshX' @ 72057594037927935 : 1 .. '!items!zgNI2haxhBxBDBdl' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
MANIFEST-000002
|
||||
@@ -0,0 +1 @@
|
||||
2026/05/06-14:41:23.014318 7f0acffff6c0 Delete type=3 #1
|
||||
Binary file not shown.
+1
-2
@@ -73,8 +73,7 @@ button,
|
||||
background: rgba(0, 0, 0, 0.75);
|
||||
}
|
||||
|
||||
.window-app.sheet .window-content,
|
||||
.application.sheet .window-content {
|
||||
.fvtt-ecryme .window-content {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: hidden auto;
|
||||
|
||||
+25
-30
@@ -1,30 +1,35 @@
|
||||
// ============================================================
|
||||
// Sheet styles (actor + item, AppV1 + AppV2)
|
||||
// Scoped to .fvtt-ecryme to avoid overriding core Foundry UI
|
||||
// ============================================================
|
||||
|
||||
// Sheet header background
|
||||
.window-app.sheet .window-content .sheet-header,
|
||||
.application.sheet .window-content .sheet-header {
|
||||
// Sheet window-content + header background
|
||||
.fvtt-ecryme .window-content,
|
||||
.fvtt-ecryme .window-content .sheet-body {
|
||||
font-size: 0.8rem;
|
||||
background: @background-image;
|
||||
color: @color-text-dark;
|
||||
}
|
||||
|
||||
.fvtt-ecryme .window-content .sheet-header {
|
||||
color: @color-text-dark;
|
||||
background: @background-image;
|
||||
}
|
||||
|
||||
// Input / select base (light background)
|
||||
input[type="text"],
|
||||
input[type="number"],
|
||||
select[type="text"] {
|
||||
background: @color-input-bg;
|
||||
color: @color-input-text;
|
||||
}
|
||||
// Inputs & selects inside Ecryme sheets
|
||||
.fvtt-ecryme .window-content {
|
||||
input[type="text"],
|
||||
input[type="number"],
|
||||
select[type="text"] {
|
||||
background: @color-input-bg;
|
||||
color: @color-input-text;
|
||||
}
|
||||
|
||||
select {
|
||||
background: @color-input-bg;
|
||||
color: @color-input-text;
|
||||
}
|
||||
select {
|
||||
background: @color-input-bg;
|
||||
color: @color-input-text;
|
||||
}
|
||||
|
||||
// Sheet content inputs & selects — dark text
|
||||
.window-app.sheet .window-content,
|
||||
.application.sheet .window-content {
|
||||
.sheet-header,
|
||||
.sheet-body {
|
||||
select[type="text"],
|
||||
@@ -53,16 +58,6 @@ select {
|
||||
}
|
||||
}
|
||||
|
||||
// Sheet body + window-content background
|
||||
.window-app .window-content,
|
||||
.window-app.sheet .window-content .sheet-body,
|
||||
.application .window-content,
|
||||
.application.sheet .window-content .sheet-body {
|
||||
font-size: 0.8rem;
|
||||
background: @background-image;
|
||||
color: @color-text-dark;
|
||||
}
|
||||
|
||||
section.sheet-body {
|
||||
padding: 0.25rem 0.5rem;
|
||||
|
||||
@@ -73,7 +68,7 @@ section.sheet-body {
|
||||
}
|
||||
}
|
||||
|
||||
.sheet {
|
||||
.fvtt-ecryme {
|
||||
header.sheet-header {
|
||||
.profile-img {
|
||||
object-fit: cover;
|
||||
@@ -135,8 +130,8 @@ nav.sheet-tabs {
|
||||
}
|
||||
}
|
||||
|
||||
// Tooltip
|
||||
.window-app.sheet .window-content {
|
||||
// Tooltip (scoped to Ecryme sheets)
|
||||
.fvtt-ecryme .window-content {
|
||||
.tooltip:hover .tooltiptext {
|
||||
top: 2rem;
|
||||
left: 2rem;
|
||||
|
||||
+22
-2
@@ -100,8 +100,22 @@
|
||||
"license": "LICENSE.txt",
|
||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-ecryme/raw/branch/master/system.json",
|
||||
"compatibility": {
|
||||
"minimum": "11",
|
||||
"verified": "13"
|
||||
"minimum": "13",
|
||||
"verified": "14"
|
||||
},
|
||||
"documentTypes": {
|
||||
"Actor": {
|
||||
"pc": {"htmlFields": ["description", "gmnotes"]},
|
||||
"npc": {"htmlFields": ["description", "gmnotes"]},
|
||||
"annency": {"htmlFields": ["description", "enhancements"]}
|
||||
},
|
||||
"Item": {
|
||||
"equipment": {"htmlFields": ["description"]},
|
||||
"trait": {"htmlFields": ["description"]},
|
||||
"weapon": {"htmlFields": ["description"]},
|
||||
"specialization": {"htmlFields": ["description"]},
|
||||
"maneuver": {"htmlFields": ["description"]}
|
||||
}
|
||||
},
|
||||
"id": "fvtt-ecryme",
|
||||
"primaryTokenAttribute": "secondary.health",
|
||||
@@ -116,7 +130,13 @@
|
||||
"id": "babele",
|
||||
"type": "module",
|
||||
"compatibility": {}
|
||||
},
|
||||
{
|
||||
"id": "lib-wrapper",
|
||||
"type": "module",
|
||||
"compatibility": {}
|
||||
}
|
||||
|
||||
]
|
||||
},
|
||||
"title": "Ecryme, le Jeu de Rôles",
|
||||
|
||||
@@ -0,0 +1,331 @@
|
||||
{
|
||||
"_comment": "DEPRECATED - This template.json is kept for reference only. The system now uses DataModels (see modules/models/). Do not edit this file.",
|
||||
"Actor": {
|
||||
"types": [
|
||||
"pc","annency", "npc"
|
||||
],
|
||||
"templates": {
|
||||
"biodata": {
|
||||
"biodata": {
|
||||
"age": "",
|
||||
"size": "",
|
||||
"lieunaissance": "",
|
||||
"nationalite": "",
|
||||
"profession": "",
|
||||
"residence": "",
|
||||
"milieusocial": "",
|
||||
"poids": "",
|
||||
"cheveux": "",
|
||||
"sexe": "",
|
||||
"yeux": "",
|
||||
"enfance": "",
|
||||
"description": "",
|
||||
"gmnotes": ""
|
||||
}
|
||||
},
|
||||
"core": {
|
||||
"subactors": [],
|
||||
"equipmentfree": "",
|
||||
"skills": {
|
||||
"physical": {
|
||||
"name": "ECRY.ui.physical",
|
||||
"pnjvalue": 0,
|
||||
"skilllist": {
|
||||
"athletics": {
|
||||
"key": "athletics",
|
||||
"name": "ECRY.ui.athletics",
|
||||
"max": 0,
|
||||
"value": 0
|
||||
},
|
||||
"driving": {
|
||||
"key": "driving",
|
||||
"name": "ECRY.ui.driving",
|
||||
"max": 0,
|
||||
"value": 0
|
||||
},
|
||||
"fencing": {
|
||||
"key": "fencing",
|
||||
"name": "ECRY.ui.fencing",
|
||||
"max": 0,
|
||||
"value": 0
|
||||
},
|
||||
"brawling": {
|
||||
"key": "brawling",
|
||||
"name": "ECRY.ui.brawling",
|
||||
"max": 0,
|
||||
"value": 0
|
||||
},
|
||||
"shooting": {
|
||||
"key": "shooting",
|
||||
"name": "ECRY.ui.shooting",
|
||||
"max": 0,
|
||||
"value": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"mental": {
|
||||
"name": "ECRY.ui.mental",
|
||||
"pnjvalue": 0,
|
||||
"skilllist": {
|
||||
"anthropomecanology": {
|
||||
"key": "anthropomecanology",
|
||||
"name": "ECRY.ui.anthropomecanology",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"ecrymology": {
|
||||
"key": "ecrymology",
|
||||
"name": "ECRY.ui.ecrymology",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"traumatology": {
|
||||
"key": "traumatology",
|
||||
"name": "ECRY.ui.traumatology",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"traversology": {
|
||||
"key": "traversology",
|
||||
"name": "ECRY.ui.traversology",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"urbatechnology": {
|
||||
"key": "urbatechnology",
|
||||
"name": "ECRY.ui.urbatechnology",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
"social": {
|
||||
"name": "ECRY.ui.social",
|
||||
"pnjvalue": 0,
|
||||
"skilllist": {
|
||||
"quibbling": {
|
||||
"key": "quibbling",
|
||||
"name": "ECRY.ui.quibbling",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"creativity": {
|
||||
"key": "creativity",
|
||||
"name": "ECRY.ui.creativity",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"loquacity": {
|
||||
"key": "loquacity",
|
||||
"name": "ECRY.ui.loquacity",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"guile": {
|
||||
"key": "guile",
|
||||
"name": "ECRY.ui.guile",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"performance": {
|
||||
"key": "performance",
|
||||
"name": "ECRY.ui.performance",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"impacts": {
|
||||
"physical": {
|
||||
"superficial": 0,
|
||||
"light": 0,
|
||||
"serious": 0,
|
||||
"major": 0
|
||||
},
|
||||
"mental": {
|
||||
"superficial": 0,
|
||||
"light": 0,
|
||||
"serious": 0,
|
||||
"major": 0
|
||||
},
|
||||
"social": {
|
||||
"superficial": 0,
|
||||
"light": 0,
|
||||
"serious": 0,
|
||||
"major": 0
|
||||
}
|
||||
},
|
||||
"cephaly": {
|
||||
"name": "ECRY.ui.cephaly",
|
||||
"skilllist": {
|
||||
"elegy": {
|
||||
"name": "ECRY.ui.elegy",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"entelechy": {
|
||||
"name": "ECRY.ui.entelechy",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"mekany": {
|
||||
"name": "ECRY.ui.mekany",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"psyche": {
|
||||
"name": "ECRY.ui.psyche",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
},
|
||||
"scoria": {
|
||||
"name": "ECRY.ui.scoria",
|
||||
"value": 0,
|
||||
"max": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
"internals": {
|
||||
"confrontbonus": 0
|
||||
}
|
||||
},
|
||||
"npccore": {
|
||||
"npctype": "",
|
||||
"description": ""
|
||||
},
|
||||
"annency": {
|
||||
"base": {
|
||||
"iscollective": false,
|
||||
"ismultiple": false,
|
||||
"characters": [],
|
||||
"location": {"1": "", "2": "", "3":"", "4":"", "5":"" },
|
||||
"description": "",
|
||||
"enhancements": ""
|
||||
},
|
||||
"boheme": {
|
||||
"name": "",
|
||||
"ideals": "",
|
||||
"politic": "",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"annency": {
|
||||
"templates": [
|
||||
"annency"
|
||||
]
|
||||
},
|
||||
"npc": {
|
||||
"templates": [
|
||||
"biodata",
|
||||
"core"
|
||||
]
|
||||
},
|
||||
"pc": {
|
||||
"templates": [
|
||||
"biodata",
|
||||
"core"
|
||||
]
|
||||
}
|
||||
},
|
||||
"Item": {
|
||||
"types": [
|
||||
"equipment",
|
||||
"trait",
|
||||
"weapon",
|
||||
"specialization",
|
||||
"maneuver"
|
||||
],
|
||||
"templates": {
|
||||
"common": {
|
||||
"description": ""
|
||||
},
|
||||
"equipement": {
|
||||
"weight": 0,
|
||||
"cost": 0,
|
||||
"costunit": ""
|
||||
}
|
||||
},
|
||||
"maneuver": {
|
||||
"templates": [
|
||||
"common"
|
||||
]
|
||||
},
|
||||
"confrontation": {
|
||||
"templates": [
|
||||
"common"
|
||||
],
|
||||
"attackerId": "",
|
||||
"defenserId": "",
|
||||
"rolllist": [],
|
||||
"bonusexecution": 0,
|
||||
"bonuspreservation": 0
|
||||
},
|
||||
"equipment": {
|
||||
"templates": [
|
||||
"common",
|
||||
"equipement"
|
||||
],
|
||||
"quantity": 1,
|
||||
"weight": 0
|
||||
},
|
||||
"trait": {
|
||||
"templates": [
|
||||
"common"
|
||||
],
|
||||
"traitype": "normal",
|
||||
"level": 1
|
||||
},
|
||||
"weapon": {
|
||||
"templates": [
|
||||
"common",
|
||||
"equipement"
|
||||
],
|
||||
"weapontype": "melee",
|
||||
"effect": 0
|
||||
},
|
||||
"specialization": {
|
||||
"bonus": 2,
|
||||
"templates": [
|
||||
"common"
|
||||
],
|
||||
"skillkey": ""
|
||||
},
|
||||
"scar": {
|
||||
"templates": [
|
||||
"common"
|
||||
],
|
||||
"skillcategory": [
|
||||
"physical",
|
||||
"mental",
|
||||
"social",
|
||||
"cephalie"
|
||||
],
|
||||
"scarLevel": 1
|
||||
},
|
||||
"annency": {
|
||||
"templates": [
|
||||
"common"
|
||||
],
|
||||
"collective": false,
|
||||
"multiple": false,
|
||||
"improvements": ""
|
||||
},
|
||||
"boheme": {
|
||||
"templates": [
|
||||
"common"
|
||||
],
|
||||
"ideals": "",
|
||||
"political": ""
|
||||
},
|
||||
"contact": {
|
||||
"templates": [
|
||||
"common"
|
||||
],
|
||||
"attitude": "neutral",
|
||||
"organization": "",
|
||||
"location": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,24 +17,24 @@
|
||||
{{#each pcs as |pc key|}}
|
||||
<li class="item flexrow" data-actor-id="{{pc.id}}">
|
||||
<div class="item-field item-name item-name-label-long">
|
||||
<a class="actor-open character-summary-rollable">{{pc.name}}</a>
|
||||
<a data-action="actorOpen" class="character-summary-rollable">{{pc.name}}</a>
|
||||
</div>
|
||||
{{#each pc.system.attributs as |attr key|}}
|
||||
<div class="item-field flex2 item-name-label-short">
|
||||
<a class="summary-roll character-summary-rollable" data-type="attribut" data-key="{{key}}">{{attr.value}}</a>
|
||||
<a data-action="summaryRoll" class="character-summary-rollable" data-type="attribut" data-key="{{key}}">{{attr.value}}</a>
|
||||
</div>
|
||||
{{/each}}
|
||||
<div class="item-field flex item-name-label-short">
|
||||
<a class="summary-roll" data-type="destin" data-key="pointdestin">{{pc.system.pointdestin}}</a>
|
||||
<a data-action="summaryRoll" data-type="destin" data-key="pointdestin">{{pc.system.pointdestin}}</a>
|
||||
</div>
|
||||
<div class="item-field flex item-name-label-short">
|
||||
<a class="summary-roll" data-type="fluide" data-key="fluide">{{pc.system.fluide}}</a>
|
||||
<a data-action="summaryRoll" data-type="fluide" data-key="fluide">{{pc.system.fluide}}</a>
|
||||
</div>
|
||||
<div class="item-field flex item-name-label-short">
|
||||
<a class="summary-roll" data-type="mpmb" data-key="mpmb">{{pc.system.mpmb}}</a>
|
||||
<a data-action="summaryRoll" data-type="mpmb" data-key="mpmb">{{pc.system.mpmb}}</a>
|
||||
</div>
|
||||
<div class="item-field flex item-name-label-short">
|
||||
<a class="summary-roll" data-type="mpmn" data-key="mpmn">{{pc.system.mpmn}}</a>
|
||||
<a data-action="summaryRoll" data-type="mpmn" data-key="mpmn">{{pc.system.mpmn}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@@ -55,28 +55,28 @@
|
||||
{{#each npcs as |pc key|}}
|
||||
<li class="item flexrow" data-actor-id="{{pc.id}}">
|
||||
<div class="item-field item-name item-name-label-long">
|
||||
<a class="actor-open character-summary-rollable">{{pc.name}}</a>
|
||||
<a data-action="actorOpen" class="character-summary-rollable">{{pc.name}}</a>
|
||||
</div>
|
||||
{{#each pc.system.attributs as |attr key|}}
|
||||
<div class="item-field flex2 item-name-label-short">
|
||||
<a class="summary-roll character-summary-rollable" data-type="attribute" data-key="{{key}}">{{attr.value}}</a>
|
||||
<a data-action="summaryRoll" class="character-summary-rollable" data-type="attribute" data-key="{{key}}">{{attr.value}}</a>
|
||||
</div>
|
||||
{{/each}}
|
||||
<div class="item-field flex item-name-label-short">
|
||||
<a class="summary-roll" data-type="destin" data-key="pointdestin">{{pc.system.pointdestin}}</a>
|
||||
<a data-action="summaryRoll" data-type="destin" data-key="pointdestin">{{pc.system.pointdestin}}</a>
|
||||
</div>
|
||||
<div class="item-field flex item-name-label-short">
|
||||
<a class="summary-roll" data-type="fluide" data-key="fluide">{{pc.system.fluide}}</a>
|
||||
<a data-action="summaryRoll" data-type="fluide" data-key="fluide">{{pc.system.fluide}}</a>
|
||||
</div>
|
||||
<div class="item-field flex item-name-label-short">
|
||||
<a class="summary-roll" data-type="mpmb" data-key="mpmb">{{pc.system.mpmb}}</a>
|
||||
<a data-action="summaryRoll" data-type="mpmb" data-key="mpmb">{{pc.system.mpmb}}</a>
|
||||
</div>
|
||||
<div class="item-field flex item-name-label-short">
|
||||
<a class="summary-roll" data-type="mpmn" data-key="mpmn">{{pc.system.mpmn}}</a>
|
||||
<a data-action="summaryRoll" data-type="mpmn" data-key="mpmn">{{pc.system.mpmn}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-field flex1 right">
|
||||
<a class="item-control actor-delete" title="{{localize "BOL.ui.delete"}}"><i class="fas fa-trash"></i></a>
|
||||
<a data-action="actorDelete" class="item-control" title="{{localize "BOL.ui.delete"}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
|
||||
+11
-22
@@ -1,31 +1,19 @@
|
||||
<div class="chat-message-header">
|
||||
<img class="actor-icon" src="systems/fvtt-ecryme/images/icons/logo-ecryme.webp" alt="Écryme" />
|
||||
<img
|
||||
class="actor-icon"
|
||||
src="systems/fvtt-ecryme/images/icons/logo-ecryme.webp"
|
||||
alt="Écryme"
|
||||
/>
|
||||
<h4 class="chat-actor-name">Écryme RPG</h4>
|
||||
</div>
|
||||
|
||||
<div class="ecryme-chat-body">
|
||||
|
||||
<h3 class="welcome-message-h3">⚙ Bonjour à tous !</h3>
|
||||
|
||||
<div class="welcome-section">
|
||||
👋 Juste un petit message pour vous informer que :
|
||||
<br />
|
||||
<strong>⚠️ Le nouveau financement participatif pour la prochaine extension
|
||||
d'Écryme, LES SECRETS DE L'ÉCRYME ouvre le 21 octobre !</strong>
|
||||
</div>
|
||||
|
||||
<div class="welcome-section">
|
||||
⚠️ Suivez la page de pré-lancement ici pour être sûr de ne pas manquer le
|
||||
lancement :<br />
|
||||
<a href="https://shorturl.at/qDjg7">https://shorturl.at/qDjg7</a>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="welcome-section">
|
||||
Nous avons aussi un nouveau Discord pour ceux ou celles qui souhaiteraient
|
||||
participer plus activement à la communauté des jeux d'Open Sesame Games, avec
|
||||
un espace dédié aux écrymiens !<br />
|
||||
participer plus activement à la communauté des jeux d'Open Sesame Games,
|
||||
avec un espace dédié aux écrymiens !<br />
|
||||
Nouveaux joueurs comme vétérans sont les bienvenus, n'hésitez pas à passer
|
||||
pour papoter, profiter de nos ressources, ou suivre les nouvelles d'OSG plus
|
||||
directement.<br />
|
||||
@@ -35,13 +23,14 @@
|
||||
<div class="welcome-section">
|
||||
Ce système vous est proposé par <strong>Open Sesame Games</strong>.<br />
|
||||
Vous trouverez de l'aide dans
|
||||
@UUID[Compendium.fvtt-ecryme.help.JournalEntry.wooTFYjEwh83FwgT]{Aide pour Écryme}<br />
|
||||
@UUID[Compendium.fvtt-ecryme.help.JournalEntry.wooTFYjEwh83FwgT]{Aide pour
|
||||
Écryme}<br />
|
||||
ainsi que sur le Discord de Foundry FR :<br />
|
||||
<a href="https://discord.gg/pPSDNJk">Discord Foundry FR</a>
|
||||
</div>
|
||||
|
||||
<div class="welcome-footer">
|
||||
⚙ Merci pour votre attention et à très bientôt ! — L'équipe Open Sesame Games
|
||||
⚙ Merci pour votre attention et à très bientôt ! — L'équipe Open Sesame
|
||||
Games
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user