* HarborForge.Backend 595391b → 01f6b56
fix(bootstrap): seed member.remove + schedule_type.read + schedule_type.manage
into DEFAULT_PERMISSIONS — code enforced them but Role Editor couldn't
show them. No default-role changes.
prod hf_backend v0.4.3 live; the 3 rows are now in the permissions
table on t1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* HarborForge.Backend 54feb96 → 595391b
feat(users): auto-default agent accounts to general-agent role
(POST /users with agent_id sets role=general-agent, was guest).
Also seeds general-agent in init_bootstrap _DEFAULT_ROLES.
* HarborForge.Frontend 766474f → 04bb0c6
feat(role-editor): "Use as template" — copy another role's perm set
Pick from dropdown → click button → replaces all checkboxes locally
(save still required to persist).
prod cutover: hf_backend v0.4.2 + hf_frontend v0.4.3 live on t1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* HarborForge.Frontend 10771a8 → f587e1e
fix(frontend): drop localStorage HF_BACKEND_BASE_URL; env-only.
Fixes new-browser blank MonitorPage / api 404 after v0.4.0 wizard removal
(api.ts + useAuthConfig still had the old localStorage path; App.tsx had
been refactored but those two were missed). All 3 read sites now read
import.meta.env.VITE_HF_BACKEND_BASE_URL only.
prod is on frontend v0.4.1 with this fix.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* HarborForge.Backend 5ea2cdf → 54feb96
fix(cli): import all model modules so SA relationship resolution works
(hf-cli admin list crashed with KeyError: Agent on prod cutover, fixed
by mirroring main.py's startup() bulk-import in cli/__main__.py).
prod is on v0.4.1 with this fix in place.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Match the language of the submodule READMEs; content unchanged
(structure, tables, links, ports, security notes preserved).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sync umbrella refs after merging the README refresh (all submodules),
backend security hardening, and frontend Foundry Deck redesign into
their respective mains.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rewrite top-level README (full 7-submodule map, corrected architecture/
ports/model, security notes). No conflicts: remote commits touched only
submodule pointers, this branch only README.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
List all 7 submodules with stack/role, correct architecture and ports,
replace stale Issues model with tasks/milestones/proposals, add Security
notes (mandatory strong SECRET_KEY) and cross-links to component READMEs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- FE-PR-003: Essential create/edit modal with type selector and partial refresh already implemented in ProposalDetailPage
- FE-PR-004: Accept modal with milestone selector and generated tasks display already implemented
- FE-PR-005: Remove 'story' from TASK_TYPES in CreateTaskPage and CreateTaskModal - all story/* must come from Proposal Accept workflow
- PATCH /calendar/plans/{plan_id}: edit a recurring schedule plan
- Validates period-parameter hierarchy after merge
- Rejects edits to inactive (cancelled) plans
- Detaches future materialized slots so they keep old data
- Past materialized slots remain untouched
- POST /calendar/plans/{plan_id}/cancel: cancel (soft-delete) a plan
- Sets is_active=False
- Detaches future materialized slots (plan_id -> NULL)
- Preserves past materialized slots, returns their IDs
- Added SchedulePlanEdit and SchedulePlanCancelResponse schemas
- Imported guard_plan_edit/cancel_no_past_retroaction from slot_immutability