Skip to content

Commit ed9f810

Browse files
committed
Merge branch 'release/2.40.0' into main
2 parents e4cb4e2 + 1bf7a1f commit ed9f810

File tree

20 files changed

+344
-190
lines changed

20 files changed

+344
-190
lines changed

CLAUDE.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Shieldmaiden
2+
3+
D&D combat tracker web app built with Vue 2 + Quasar 1 + Firebase.
4+
5+
## Tech Stack
6+
7+
- **Framework**: Vue 2.7 + Quasar 1 (SSR mode)
8+
- **Build**: Webpack 4 via `@quasar/app ~2.4.3`
9+
- **Backend**: Firebase v8 (namespaced API — do NOT migrate to modular v10+ API)
10+
- **State**: Vuex with modules in `src/store/modules/`
11+
- **Node**: >= 24, npm >= 10.2.4
12+
13+
## Dev Commands
14+
15+
```bash
16+
npm run ssr # Start dev server (SSR mode)
17+
npm run build # quasar build -m ssr
18+
npm run lint # ESLint
19+
```
20+
21+
## Key Constraints
22+
23+
- **Firebase v8 namespaced API** is used across 63+ files — do not switch to modular API
24+
- Vue 2 / Quasar 1 ecosystem locks transitive deps (postcss 7, webpack 4, etc.)
25+
- Many audit vulnerabilities are unfixable without framework migration — do not attempt to fix them
26+
- `package.json` uses `overrides` to force-update transitive deps
27+
28+
## Project Structure
29+
30+
```
31+
src/
32+
boot/ # Quasar boot files (plugins, firebase-auth, etc.)
33+
components/ # Vue components
34+
layouts/ # App layouts
35+
views/ # Page-level views
36+
store/ # Vuex store
37+
modules/
38+
userContent/ # User data (campaigns, encounters, players, etc.)
39+
content/ # API content (spells, monsters, items, conditions)
40+
services/ # Firebase service layer (one file per resource)
41+
utils/
42+
generalFunctions.js # Shared utility functions
43+
generalConstants.js # Shared constants
44+
```
45+
46+
## Patterns
47+
48+
- Services in `src/services/` handle Firebase reads/writes
49+
- Vuex modules dispatch to services and cache results in state
50+
- Extension communication uses `window.postMessage` bridge (not `chrome.runtime` directly)
51+
- Utility functions go in `src/utils/generalFunctions.js`
52+
53+
## Git Workflow
54+
55+
We use **Git Flow**. Follow these rules strictly:
56+
57+
### Branch Structure
58+
- `main` — production releases only
59+
- `develop` — integration branch
60+
- `feature/*` — new features, branched from `develop`
61+
- `release/*` — release preparation, branched from `develop`
62+
- `hotfix/*` — urgent production fixes, branched from `main`
63+
64+
### Merging Rules
65+
- **Features**: open a PR from `feature/*``develop`
66+
- **Releases**: merge `release/*``main` AND `develop` (no PR required)
67+
- **Hotfixes**: merge `hotfix/*``main` AND `develop` (no PR required)
68+
- Never merge features directly to `main`
69+
70+
### Tags
71+
- Tag every merge to `main` with the version number (e.g. `2.39.2`)
72+
73+
### Commits & PRs
74+
- Do NOT add Claude as a co-author in commits or PR descriptions

package-lock.json

Lines changed: 32 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "2.39.2",
2+
"version": "2.40.0",
33
"name": "shieldmaiden",
44
"description": "A Dungeons and Dragons Combat Tracker",
55
"productName": "Shieldmaiden",

quasar.conf.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module.exports = function (/* ctx */) {
2020
// --> boot files are part of "main.js"
2121
// https://v1.quasar.dev/quasar-cli/boot-files
2222
boot: [
23+
"prototypes",
2324
{ path: "plugins", server: false },
2425
{ path: "hk-components", server: false },
2526
{ path: "vee-validate", server: false },

src/boot/plugins.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import Croppa from "vue-croppa";
66
import { Cookies } from "quasar";
77
import { Splitpanes, Pane } from "splitpanes";
88
import VueGtm from "@gtm-support/vue2-gtm";
9-
109
export default async ({ router, Vue }) => {
1110
Vue.config.productionTip = false;
1211

@@ -18,8 +17,6 @@ export default async ({ router, Vue }) => {
1817
Vue.component("Splitpanes", Splitpanes);
1918
Vue.component("Pane", Pane);
2019

21-
require("../functions.js");
22-
2320
Vue.use(VueGtm, {
2421
id: "GTM-5XJCCDMS",
2522
queryParams: {},

src/boot/prototypes.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import "../functions.js";

0 commit comments

Comments
 (0)