Skip to content

Commit a32b7ed

Browse files
committed
Merge branch 'hotfix/1.41.1' into develop
2 parents be8ad85 + f7417df commit a32b7ed

69 files changed

Lines changed: 2580 additions & 3193 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ changelog:
33
- title: New Features 🚀
44
labels:
55
- "Feature"
6+
- "feature"
67
- title: Improvements 🦾
78
labels:
89
- "improvement"

.github/workflows/build_main.yml

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
2-
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
1+
# Build and push the production image only when a version tag is pushed on main.
2+
# Pushing to main itself no longer deploys — releases are gated on tagging.
3+
# Tag format matches the project convention (e.g. 2.39.2).
34

45
name: Deploy Live
56

67
on:
78
push:
8-
branches: [main]
9+
tags:
10+
- '[0-9]+.[0-9]+.[0-9]+'
911
workflow_dispatch:
1012

1113
jobs:
@@ -15,14 +17,22 @@ jobs:
1517
steps:
1618
- uses: actions/checkout@v4
1719

20+
- name: Verify package.json version matches tag
21+
run: |
22+
PKG=$(jq -r .version package.json)
23+
TAG=${GITHUB_REF_NAME}
24+
if [ "$PKG" != "$TAG" ]; then
25+
echo "::error::package.json version ($PKG) does not match git tag ($TAG). Did you forget 'npm version'?"
26+
exit 1
27+
fi
28+
1829
- name: Create env file
1930
run: |
2031
cat << EOF >> .env.production.local
2132
${{ secrets.ENV_FILE }}
2233
EOF
2334
24-
- # Login against GitHub Container Registry
25-
name: Log in to GitHub Container Registry
35+
- name: Log in to GitHub Container Registry
2636
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
2737
with:
2838
registry: ghcr.io
@@ -32,12 +42,22 @@ jobs:
3242
- name: Set up Docker Buildx
3343
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
3444

35-
- # Build and push Docker image
36-
name: Build and push
45+
- name: Extract image metadata
46+
id: meta
47+
uses: docker/metadata-action@v5
48+
with:
49+
images: ghcr.io/harmlesskey/harmlesskey
50+
tags: |
51+
type=semver,pattern={{version}}
52+
type=semver,pattern={{major}}.{{minor}}
53+
type=raw,value=latest
54+
55+
- name: Build and push
3756
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
3857
with:
3958
context: .
4059
push: true
41-
tags: ghcr.io/harmlesskey/harmlesskey
60+
tags: ${{ steps.meta.outputs.tags }}
61+
labels: ${{ steps.meta.outputs.labels }}
4262
cache-from: type=gha,scope=live
4363
cache-to: type=gha,scope=live,mode=max

.github/workflows/build_staging.yml

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
2-
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3-
41
name: Deploy Staging
52

63
on:
74
push:
8-
branches: [develop]
5+
branches: [develop, 'release/**']
96
pull_request:
107
branches: [develop]
118
workflow_dispatch:
@@ -23,8 +20,7 @@ jobs:
2320
${{ secrets.STAGING_ENV_FILE }}
2421
EOF
2522
26-
- # Login against GitHub Container Registry
27-
name: Log in to GitHub Container Registry
23+
- name: Log in to GitHub Container Registry
2824
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
2925
with:
3026
registry: ghcr.io
@@ -34,12 +30,21 @@ jobs:
3430
- name: Set up Docker Buildx
3531
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
3632

37-
- # Build and push Docker image
38-
name: Build and push
33+
- name: Extract image metadata
34+
id: meta
35+
uses: docker/metadata-action@v5
36+
with:
37+
images: ghcr.io/harmlesskey/harmlesskey_staging
38+
tags: |
39+
type=sha,prefix=sha-,format=short
40+
type=raw,value=latest
41+
42+
- name: Build and push
3943
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
4044
with:
4145
context: .
4246
push: true
43-
tags: ghcr.io/harmlesskey/harmlesskey_staging
47+
tags: ${{ steps.meta.outputs.tags }}
48+
labels: ${{ steps.meta.outputs.labels }}
4449
cache-from: type=gha,scope=staging
4550
cache-to: type=gha,scope=staging,mode=max

CLAUDE.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
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+
## File Editing Rules
22+
23+
- **Always use the `Edit` or `Write` tools** to modify files — never use Bash, `sed`, `awk`, `python`, or `node` for file editing
24+
- If the `Edit` tool fails due to whitespace mismatches, investigate the exact characters with `cat -A` and adjust the match — do not fall back to shell scripts
25+
26+
## Vue Component Rules
27+
28+
- `computed`, `data`, `methods`, `watch`, `props` and all other component options can only appear **once** per Vue component — JavaScript silently discards the first when two keys share the same name. Always merge into a single block rather than adding a second one.
29+
30+
## Key Constraints
31+
32+
- **Firebase v8 namespaced API** is used across 63+ files — do not switch to modular API
33+
- Vue 2 / Quasar 1 ecosystem locks transitive deps (postcss 7, webpack 4, etc.)
34+
- Many audit vulnerabilities are unfixable without framework migration — do not attempt to fix them
35+
- `package.json` uses `overrides` to force-update transitive deps
36+
37+
## Project Structure
38+
39+
```
40+
src/
41+
boot/ # Quasar boot files (plugins, firebase-auth, etc.)
42+
components/ # Vue components
43+
layouts/ # App layouts
44+
views/ # Page-level views
45+
store/ # Vuex store
46+
modules/
47+
userContent/ # User data (campaigns, encounters, players, etc.)
48+
content/ # API content (spells, monsters, items, conditions)
49+
services/ # Firebase service layer (one file per resource)
50+
utils/
51+
generalFunctions.js # Shared utility functions
52+
generalConstants.js # Shared constants
53+
```
54+
55+
## Patterns
56+
57+
- Services in `src/services/` handle Firebase reads/writes
58+
- Vuex modules dispatch to services and cache results in state
59+
- Extension communication uses `window.postMessage` bridge (not `chrome.runtime` directly)
60+
- Utility functions go in `src/utils/generalFunctions.js`
61+
62+
## Planning Artifacts
63+
Feature specs live in `.planning/`.
64+
- Always check `.planning/` for an existing spec before investigating or implementing anything
65+
- When writing a spec, always write it to `.planning/<feature-name>.md`
66+
- Never begin implementation without a spec file present in `.planning/`
67+
68+
69+
## Git Workflow
70+
71+
We use **Git Flow**. Follow these rules strictly:
72+
73+
### Branch Structure
74+
- `main` — production releases only
75+
- `develop` — integration branch
76+
- `feature/*` — new features, branched from `develop`
77+
- `release/*` — release preparation, branched from `develop`
78+
- `hotfix/*` — urgent production fixes, branched from `main`
79+
80+
### Merging Rules
81+
- **Features**: open a PR from `feature/*``develop`
82+
- **Releases**: merge `release/*``main` AND `develop` (no PR required)
83+
- **Hotfixes**: merge `hotfix/*``main` AND `develop` (no PR required)
84+
- Never merge features directly to `main`
85+
86+
### Tags
87+
- Tag every merge to `main` with the version number (e.g. `2.39.2`)
88+
89+
### Commits & PRs
90+
- Do NOT add Claude as a co-author in commits or PR descriptions

0 commit comments

Comments
 (0)