Files
sde-meeting-toolkit/CHANGELOG.md
Matt Mabrey 6baf908cf9 Connect the two tools: cross-nav links and Send to Scope Lock handoff
- Add a header link on each tool pointing to the other.
- Add a Send to Scope Lock button on Workshop clusters that carry a
  candidate solution tag. Writes the item to a shared localStorage
  queue (sde_scope_handoff_v1).
- Scope Lock drains that queue on load and adds each item to the
  Scope Boundary Board as unsorted, deduping by a deterministic id so
  a repeat send never creates a duplicate.
- No backend needed: both tools already share the same browser origin.
- Verified with a jsdom test covering send, drain, reload, and
  re-send-after-reset.
- Update README and CHANGELOG.
2026-09-04 14:44:16 -07:00

5.7 KiB

Changelog

All notable changes to this project are logged here, newest first. This file starts from the point the toolkit was handed off and set up in this repo.

2026-09-04 (2)

  • Added: the two tools now work together. Each tool's header has a link to the other tool. On the Field Problem Workshop, a cluster tagged with a candidate solution (for example "Tracking MVP (pilot)") gets a "Send to Scope Lock" button. Clicking it adds that cluster as a real, unsorted item on the Scope Lock Meeting Suite's Scope Boundary Board. Both tools already share the same browser origin, so this uses a small shared localStorage queue; no backend or database was needed. The item lands on Scope Lock's board the next time that tool is opened or refreshed, and re-sending the same cluster will not create a duplicate. Verified with a jsdom test that simulates both tools sharing one browser's storage.

2026-09-04

  • Fixed: Portainer stack deploy failed with env file /data/compose/44/.env not found. Cause: docker-compose.yml used env_file: - .env, which requires a real file on disk; Portainer's UI-entered environment variables satisfy ${VAR} substitution in the compose file but do not create that file. Changed docker-compose.yml to reference each setting as ${VAR:-default} under environment: instead, which works both for a real local .env (auto-loaded by Compose for substitution) and for values entered directly in Portainer. Corrected the wrong explanation of this in PORTAINER_DEPLOY.md.
  • Changed: renamed the default branch from master to main, both locally and in PORTAINER_DEPLOY.md's repository reference. The old name was just git init's local fallback default, not a deliberate choice.
  • Added: PORTAINER_DEPLOY.md, a step-by-step guide for deploying this as its own stack in Portainer, pulled straight from the Gitea repo, including how to set environment variables through Portainer's UI since .env is not committed.
  • Changed: swapped ANTHROPIC_API_KEY from a personal key to a company-owned key.
  • Milestone: pushed the repo to Gitea at https://primegit.primecontrols-dev.com/m.mabrey/sde-meeting-toolkit.

2026-08-24

  • Changed: enlarged the Breadcrumbs working area. The selected breadcrumb's editor card now has more padding, a taller minimum height, and taller text fields, so it uses more of the page instead of sitting as a small box.
  • Changed: the breadcrumb delete button now reads "Delete" instead of a bare "✕".
  • Fixed: every delete action now shows a confirmation before it deletes. Replaced the browser's plain confirm() popup with a custom on-brand modal (a card with a red left accent, matching the app's existing "attention" styling, on a dimmed backdrop). Covers cluster delete, issue delete, breadcrumb delete, action delete, scope item delete, priority-rank item delete, decision delete, and both Reset buttons. Several of these had no confirmation at all before this change.
  • Fixed: the new breadcrumb list was rendering as single-character vertical columns instead of a normal list. Cause: the list used a <nav> tag, which collided with the app's existing nav{display:flex} rule written for the top tab bar. Changed the element to a <div>.
  • Fixed: the app was capped at max-width:1500px and centered, wasting space on wide screens. Removed the cap so the app fills the browser width.
  • Changed: redesigned the Breadcrumbs panel in the Field Problem Workshop tool. Previously every breadcrumb card showed all 7 fields fully expanded at once, for every breadcrumb, all the time. Replaced with a list-plus-detail split view: a compact status-dot list on the left, the full field editor for one selected breadcrumb on the right.

2026-08-21

  • Added: UNIFIED_TOOL_ROADMAP.md, a design and phased-rollout plan for eventually merging the Field Problem Workshop and the Scope Lock Meeting Suite onto one backend with a shared database. Planning only; not built.
  • Changed: turned the per-user daily token quota off by default (TOKEN_LIMIT_PER_USER=0). A cost analysis against the tool's own baseline usage showed real spend at stake was small enough that the quota wasn't worth the added complexity yet. The code stays in place and can be re-enabled with one setting.
  • Added: a per-user daily token quota (TOKEN_LIMIT_PER_USER), tracked per named user in APP_USERS and persisted to data/token-usage.json, mounted as a Docker volume so usage survives a container restart.
  • Added: MOCK_AI mode. Set MOCK_AI=true to test the AI draft button, the login gate, and the token quota with a canned response, no API key and no cost.

2026-08-20

  • Added: DOCKER_TESTING.md, a step-by-step guide for standing up and testing the Docker environment.
  • Added: a shared login gate (APP_USERS, or legacy APP_USERNAME/APP_PASSWORD) and per-IP rate limiting (RATE_LIMIT_MAX / RATE_LIMIT_WINDOW_MS) ahead of running this for the whole company on the internal network.
  • Added: Dockerfile, .dockerignore, docker-compose.yml to containerize the toolkit, so it can run standalone or alongside the Work Package Suite container.
  • Fixed: the AI draft button returned "Failed to fetch." Cause: it called the Anthropic API directly from the browser with no key, which the browser's CORS policy blocks. Added server.js, a local Node server that serves the two tools and proxies /api/claude to Anthropic server-side, so the API key never reaches the browser. Updated the button in field-problem-workshop.html to call /api/claude instead of api.anthropic.com directly.
  • Added: initial import of the toolkit into this Git repository — README.md, QUICKSTART.md, package.json, .gitignore, the two tool files under tools/, and the breadcrumb-methodology skill under skills/.