Skip to content
Merged

Vue3 #29

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
3d177bd
Vue 3 rewrite using @phila/layerboard
ajrothwell Jan 30, 2026
fdda3bc
Add FontAwesome Pro auth to CI workflows
ajrothwell Jan 30, 2026
345041a
Update to @phila/layerboard 3.0.0-beta.1 with bundled CSS
ajrothwell Jan 30, 2026
56226eb
Fix __publicField error, update dependencies
ajrothwell Jan 30, 2026
fd38a67
uses @phila/layerboard 3.0.0-beta.2
ajrothwell Jan 30, 2026
2b5a8cd
Update @phila/layerboard to 3.0.0-beta.6
ajrothwell Feb 2, 2026
b18ba78
upgrades vue3-layerboard
ajrothwell Feb 6, 2026
2a51cc4
another upgrade
ajrothwell Feb 6, 2026
000131a
changes to push file
ajrothwell Feb 9, 2026
06f25e0
trigger deploy
ajrothwell Feb 9, 2026
7078adf
uses new pinboard
ajrothwell Feb 10, 2026
450f134
uses vue3-layerboard 3.0.0-beta.10
ajrothwell Feb 10, 2026
4ed637c
uses vue3-layerboard 3.0.0-beta.11
ajrothwell Feb 10, 2026
5fea3ef
uses vue3-layerboard 3.0.0-beta.12
ajrothwell Feb 10, 2026
608e089
uses vue3-layerboard 3.0.0-beta.13
ajrothwell Feb 11, 2026
76ec930
Add Prettier and ESLint tooling matching phila-ui-4 config
ajrothwell Feb 11, 2026
7e2023d
Apply Prettier formatting and fix ESLint errors
ajrothwell Feb 11, 2026
2d12cf5
Add beads issue tracking and gitattributes
ajrothwell Feb 11, 2026
808c4f3
feat: add showTime popup override for Crime Incidents layer
ajrothwell Feb 11, 2026
37d7ec7
fix: use production webmap ID
ajrothwell Feb 11, 2026
9a9f337
uses vue3-layerboard 3.0.0-beta.14
ajrothwell Feb 12, 2026
c2bb5b6
uses vue3-layerboard 3.0.0-beta.15
ajrothwell Feb 12, 2026
eab250d
uses vue3-layerboard 3.0.0-beta.16, adds google analytics and clarity
ajrothwell Feb 12, 2026
e617dfc
adds prettierignore
ajrothwell Feb 12, 2026
786b57e
uses layerboard 3.0.0-beta.17
ajrothwell Feb 13, 2026
1ac916b
update .prettierignore to match standard ignore list
ajrothwell Feb 13, 2026
c4ed430
add .claude/ to .prettierignore
ajrothwell Feb 13, 2026
834263d
uses layerboard 3.0.0-beta.18
ajrothwell Feb 13, 2026
433762b
uses layerboard 3.0.0-beta.19
ajrothwell Feb 17, 2026
eb353cc
add Playwright smoke test design doc
ajrothwell Feb 17, 2026
c0a92e7
add Playwright smoke tests implementation plan
ajrothwell Feb 17, 2026
62cffb1
add Playwright dependency and test:e2e script
ajrothwell Feb 17, 2026
3bb11b3
add Playwright config (Chromium only, trace/video on failure)
ajrothwell Feb 17, 2026
0fab7e8
add Playwright artifacts to .gitignore
ajrothwell Feb 17, 2026
f8dbd12
add 5 Playwright smoke tests for openmaps
ajrothwell Feb 17, 2026
0f04c2a
add post-deploy Playwright smoke tests to dev workflow
ajrothwell Feb 17, 2026
239158d
add post-deploy Playwright smoke tests to prod workflow
ajrothwell Feb 17, 2026
3d2d7c6
fix popup test to use Census Tracts layer for reliable feature clicks
ajrothwell Feb 17, 2026
15c0be0
uses layerboard 3.0.0-beta.20
ajrothwell Feb 17, 2026
11c2762
uses layerboard 3.0.0-beta.21
ajrothwell Feb 17, 2026
fcf609d
close bead 3fz: Prettier and ESLint already configured
ajrothwell Feb 17, 2026
7d200a0
uses layerboard 3.0.0-beta.22
ajrothwell Feb 17, 2026
d55b494
add README
ajrothwell Feb 18, 2026
8b77910
uses layerboard 3.0.0-beta.23
ajrothwell Feb 18, 2026
dfe06af
add Firefox and WebKit to Playwright test projects
ajrothwell Feb 18, 2026
ad33b67
run only chromium project in CI smoke tests
ajrothwell Feb 18, 2026
4dbb23e
bump layerboard to beta.28
ajrothwell Feb 24, 2026
68b6ffa
bump layerboard to beta.29
ajrothwell Feb 24, 2026
be86485
bump layerboard to beta.31
ajrothwell Feb 24, 2026
010b923
bump @phila/layerboard to 3.0.0-beta.32
ajrothwell Mar 3, 2026
18d1c4e
bump layerboard to beta.33, fix mobile smoke test
ajrothwell Mar 3, 2026
8d24b1a
bump layerboard to beta.34
ajrothwell Mar 4, 2026
38ab1f2
bump layerboard to beta.35
ajrothwell Mar 9, 2026
1805640
bump layerboard to beta.37, gitignore .claude/
ajrothwell Mar 16, 2026
1fea702
bump layerboard to beta.38, remove workspace overrides
ajrothwell Mar 18, 2026
8336cf1
bump @phila/layerboard to 3.0.0-beta.39
ajrothwell Mar 23, 2026
5f7e649
Bump @phila/layerboard to 3.0.0 and @phila/phila-ui-link to 1.0.3
ajrothwell Mar 23, 2026
c0eb3c3
change to prod push file
ajrothwell Mar 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions .beads/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# SQLite databases
*.db
*.db?*
*.db-journal
*.db-wal
*.db-shm

# Daemon runtime files
daemon.lock
daemon.log
daemon.pid
bd.sock
sync-state.json
last-touched

# Local version tracking (prevents upgrade notification spam after git ops)
.local_version

# Legacy database files
db.sqlite
bd.db

# Worktree redirect file (contains relative path to main repo's .beads/)
# Must not be committed as paths would be wrong in other clones
redirect

# Merge artifacts (temporary files from 3-way merge)
beads.base.jsonl
beads.base.meta.json
beads.left.jsonl
beads.left.meta.json
beads.right.jsonl
beads.right.meta.json

# Sync state (local-only, per-machine)
# These files are machine-specific and should not be shared across clones
.sync.lock
sync_base.jsonl

# NOTE: Do NOT add negation patterns (e.g., !issues.jsonl) here.
# They would override fork protection in .git/info/exclude, allowing
# contributors to accidentally commit upstream issue databases.
# The JSONL files (issues.jsonl, interactions.jsonl) and config files
# are tracked by git by default since no pattern above ignores them.
85 changes: 85 additions & 0 deletions .beads/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Beads - AI-Native Issue Tracking

Welcome to Beads! This repository uses **Beads** for issue tracking - a modern, AI-native tool designed to live directly in your codebase alongside your code.

## What is Beads?

Beads is issue tracking that lives in your repo, making it perfect for AI coding agents and developers who want their issues close to their code. No web UI required - everything works through the CLI and integrates seamlessly with git.

**Learn more:** [github.com/steveyegge/beads](https://github.com/steveyegge/beads)

## Quick Start

### Essential Commands

```bash
# Create new issues
bd create "Add user authentication"

# View all issues
bd list

# View issue details
bd show <issue-id>

# Update issue status
bd update <issue-id> --status in_progress
bd update <issue-id> --status done

# Sync with git remote
bd sync
```

### Working with Issues

Issues in Beads are:

- **Git-native**: Stored in `.beads/issues.jsonl` and synced like code
- **AI-friendly**: CLI-first design works perfectly with AI coding agents
- **Branch-aware**: Issues can follow your branch workflow
- **Always in sync**: Auto-syncs with your commits

## Why Beads?

✨ **AI-Native Design**

- Built specifically for AI-assisted development workflows
- CLI-first interface works seamlessly with AI coding agents
- No context switching to web UIs

🚀 **Developer Focused**

- Issues live in your repo, right next to your code
- Works offline, syncs when you push
- Fast, lightweight, and stays out of your way

🔧 **Git Integration**

- Automatic sync with git commits
- Branch-aware issue tracking
- Intelligent JSONL merge resolution

## Get Started with Beads

Try Beads in your own projects:

```bash
# Install Beads
curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash

# Initialize in your repo
bd init

# Create your first issue
bd create "Try out Beads"
```

## Learn More

- **Documentation**: [github.com/steveyegge/beads/docs](https://github.com/steveyegge/beads/tree/main/docs)
- **Quick Start Guide**: Run `bd quickstart`
- **Examples**: [github.com/steveyegge/beads/examples](https://github.com/steveyegge/beads/tree/main/examples)

---

_Beads: Issue tracking that moves at the speed of thought_ ⚡
62 changes: 62 additions & 0 deletions .beads/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Beads Configuration File
# This file configures default behavior for all bd commands in this repository
# All settings can also be set via environment variables (BD_* prefix)
# or overridden with command-line flags

# Issue prefix for this repository (used by bd init)
# If not set, bd init will auto-detect from directory name
# Example: issue-prefix: "myproject" creates issues like "myproject-1", "myproject-2", etc.
# issue-prefix: ""

# Use no-db mode: load from JSONL, no SQLite, write back after each command
# When true, bd will use .beads/issues.jsonl as the source of truth
# instead of SQLite database
# no-db: false

# Disable daemon for RPC communication (forces direct database access)
# no-daemon: false

# Disable auto-flush of database to JSONL after mutations
# no-auto-flush: false

# Disable auto-import from JSONL when it's newer than database
# no-auto-import: false

# Enable JSON output by default
# json: false

# Default actor for audit trails (overridden by BD_ACTOR or --actor)
# actor: ""

# Path to database (overridden by BEADS_DB or --db)
# db: ""

# Auto-start daemon if not running (can also use BEADS_AUTO_START_DAEMON)
# auto-start-daemon: true

# Debounce interval for auto-flush (can also use BEADS_FLUSH_DEBOUNCE)
# flush-debounce: "5s"

# Git branch for beads commits (bd sync will commit to this branch)
# IMPORTANT: Set this for team projects so all clones use the same sync branch.
# This setting persists across clones (unlike database config which is gitignored).
# Can also use BEADS_SYNC_BRANCH env var for local override.
# If not set, bd sync will require you to run 'bd config set sync.branch <branch>'.
# sync-branch: "beads-sync"

# Multi-repo configuration (experimental - bd-307)
# Allows hydrating from multiple repositories and routing writes to the correct JSONL
# repos:
# primary: "." # Primary repo (where this database lives)
# additional: # Additional repos to hydrate from (read-only)
# - ~/beads-planning # Personal planning repo
# - ~/work-planning # Work planning repo

# Integration settings (access with 'bd config get/set')
# These are stored in the database, not in this file:
# - jira.url
# - jira.project
# - linear.url
# - linear.api-key
# - github.org
# - github.repo
Empty file added .beads/interactions.jsonl
Empty file.
1 change: 1 addition & 0 deletions .beads/issues.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"id":"openmaps-3fz","title":"Add Prettier and ESLint matching phila-ui-4 rules","description":"## Goal\r\nAdd `pnpm format`, `pnpm lint`, and verify `pnpm type-check` work in vue3-layerboard, using the same rules as phila-ui-4.\r\n\r\n## What to add\r\n\r\n### Prettier\r\n- Install `prettier` (^3.6.2)\r\n- Add `prettier.config.js` matching phila-ui-4: semi, trailingComma \"all\", double quotes, printWidth 120, tabWidth 2, no tabs, bracketSpacing, no bracketSameLine, arrowParens \"avoid\", endOfLine \"lf\", vueIndentScriptAndStyle false\r\n- Add scripts: `\"format\": \"prettier --write .\"` and `\"format:check\": \"prettier --check .\"`\r\n\r\n### ESLint\r\n- Install: `eslint` (^9.x), `@eslint/js`, `typescript-eslint`, `eslint-plugin-vue`, `eslint-config-prettier`, `globals`\r\n- Add `eslint.config.js` flat config matching phila-ui-4 (without storybook plugin):\r\n - Ignores: *.d.ts, coverage, dist, node_modules\r\n - Extends: eslint recommended, typescript-eslint recommended, vue flat/essential + flat/recommended, eslint-config-prettier\r\n - Files: **/*.{ts,vue}\r\n - Rules: vue/multi-word-component-names off, vue/no-v-html off, vue/order-in-components error, vue/attributes-order error, @typescript-eslint/no-unused-vars error (with ^_ ignore pattern)\r\n- Add scripts: `\"lint\": \"eslint src/**/*.{ts,vue}\"` and `\"lint:fix\": \"eslint src/**/*.{ts,vue} --fix\"`\r\n\r\n### Type-check\r\n- Already exists as `vue-tsc --build` — keep as-is (more correct for Vue project with project references)\r\n\r\n## Notes\r\n- Do NOT install eslint-plugin-storybook (layerboard doesn't use storybook)\r\n- Work on a new branch so it can be discarded if things go sideways\r\n","status":"closed","priority":2,"issue_type":"task","owner":"rothwell.andy@gmail.com","created_at":"2026-02-11T11:00:15.091709-05:00","created_by":"rothwell.andy@gmail.com","updated_at":"2026-02-17T15:43:24.338036-05:00","closed_at":"2026-02-17T15:43:24.338036-05:00","close_reason":"Closed"}
4 changes: 4 additions & 0 deletions .beads/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"database": "beads.db",
"jsonl_export": "issues.jsonl"
}
48 changes: 0 additions & 48 deletions .eslintrc.js

This file was deleted.

3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

# Use bd merge for beads JSONL files
.beads/issues.jsonl merge=beads
102 changes: 62 additions & 40 deletions .github/workflows/dev_push_to_s3.yml
Original file line number Diff line number Diff line change
@@ -1,52 +1,74 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
# Build and deploy OpenMaps Vue 3 to S3 for development preview
# Deploys to openmaps-dev.phila.gov

name: dev Push to S3

on:
push:
branches:
- main
- vue3

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Use Node.js 16.x
uses: actions/setup-node@v3
with:
node-version: '16.x'
cache: 'npm'

- name: install npm 6
run: |
npm install -g npm@6

- name: npm install, and build
run: |
printf "@fortawesome:registry=https://npm.fontawesome.com/\n//npm.fontawesome.com/:_authToken=${FONTAWESOME_NPM_AUTH_TOKEN}" >> ~/.npmrc
git config --global url."https://".insteadOf ssh://
npm ci
npm run build
env:
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FA_AUTH_TOKEN }}
VUE_APP_GATEKEEPER_KEY: ${{ secrets.VUE_APP_GATEKEEPER_KEY }}
VUE_APP_CYCLOMEDIA_API_KEY: ${{ secrets.VUE_APP_CYCLOMEDIA_API_KEY }}
VUE_APP_CYCLOMEDIA_PASSWORD: ${{ secrets.VUE_APP_CYCLOMEDIA_PASSWORD }}
VUE_APP_CYCLOMEDIA_USERNAME: ${{ secrets.VUE_APP_CYCLOMEDIA_USERNAME }}

- name: Deploy to Dev s3, Set index headers, and Invalidate Cloudfront
env:
AWS_DEFAULT_REGION: 'us-east-1'
AWS_S3_BUCKET: openmaps-dev.phila.gov
AWS_CLOUDFRONT_DISTRIBUTION: E3T7BKDV4NKW92
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
aws s3 sync dist s3://$AWS_S3_BUCKET --region us-east-1 --delete
aws s3 cp s3://$AWS_S3_BUCKET s3://$AWS_S3_BUCKET --recursive --exclude "*" --include "*.html" --metadata-directive REPLACE --acl public-read --cache-control max-age=0,no-cache,no-store,must-revalidate,proxy-revalidate,public --expires "0" --content-type "text/html; charset=utf-8"
aws cloudfront create-invalidation --distribution-id $AWS_CLOUDFRONT_DISTRIBUTION --paths "/*"
- uses: actions/checkout@v4

- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- name: Use Node.js 22.x
uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "pnpm"

- name: Configure FontAwesome registry
run: |
echo "@fortawesome:registry=https://npm.fontawesome.com/" >> .npmrc
echo "//npm.fontawesome.com/:_authToken=${{ secrets.FA_AUTH_TOKEN }}" >> .npmrc

- name: pnpm install
run: pnpm install

- name: Build
run: pnpm build
env:
VITE_GATEKEEPER_KEY: ${{ secrets.VITE_GATEKEEPER_KEY }}
VITE_CYCLOMEDIA_API_KEY: ${{ secrets.VITE_CYCLOMEDIA_API_KEY }}
VITE_CYCLOMEDIA_PASSWORD: ${{ secrets.VITE_CYCLOMEDIA_PASSWORD }}
VITE_CYCLOMEDIA_USERNAME: ${{ secrets.VITE_CYCLOMEDIA_USERNAME }}
VITE_PICTOMETRY_CLIENT_ID: ${{ secrets.VITE_PICTOMETRY_CLIENT_ID }}
VITE_PICTOMETRY_CLIENT_SECRET: ${{ secrets.VITE_PICTOMETRY_CLIENT_SECRET }}

- name: Deploy to openmaps-dev.phila.gov
env:
AWS_DEFAULT_REGION: "us-east-1"
AWS_S3_BUCKET: openmaps-dev.phila.gov
AWS_CLOUDFRONT_DISTRIBUTION: E3T7BKDV4NKW92
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
aws s3 sync dist s3://$AWS_S3_BUCKET --region us-east-1 --delete
aws s3 cp s3://$AWS_S3_BUCKET s3://$AWS_S3_BUCKET --recursive --exclude "*" --include "*.html" --metadata-directive REPLACE --acl public-read --cache-control max-age=0,no-cache,no-store,must-revalidate,proxy-revalidate,public --expires "0" --content-type "text/html; charset=utf-8"
aws cloudfront create-invalidation --distribution-id $AWS_CLOUDFRONT_DISTRIBUTION --paths "/*"

- name: Install Playwright browsers
run: npx playwright install --with-deps chromium

- name: Wait for CloudFront propagation
run: sleep 30

- name: Run smoke tests
run: pnpm test:e2e --project=chromium

- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report-dev
path: playwright-report/
retention-days: 7
Loading
Loading