Commit Graph

222 Commits

Author SHA1 Message Date
71250e2ea1 chore(submodules): bump HarborForge.Cli + HarborForge.OpenclawPlugin
- HarborForge.Cli: pull main → c0ab087 (PR #8: assign-schedule-type dispatch fix)
- HarborForge.OpenclawPlugin: pull main → c8998c6 (PR #11: meta-push perf — cached api.config)
2026-05-29 08:50:00 +01:00
836bc17fd3 chore: bump Backend + Cli (project.create gate trifecta)
* HarborForge.Backend 01f6b56 → HEAD
  fix(projects): perm-gate create + apikey-via-Bearer + introspect with apikey.
  - POST /projects checks project.create perm (was hardcoded is_admin)
  - /auth/me/permissions accepts API key (was JWT-only → broke hf-cli local gate)
  - get_current_user_or_apikey falls back to API-key lookup when Authorization:
    Bearer fails JWT decode (hf-cli only emits Bearer headers)
  - init_bootstrap seeds project.create perm + assigns to mgr role
* HarborForge.Cli      a42ba6f
  fix(cli): gate `hf project create` on project.create (was project.write).

prod e2e verified: nav (mgr) /auth/me/permissions returns 26 perms
including project.create; POST /projects with nav API key returns 201.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 22:10:49 +01:00
52de061570 chore: bump Backend → 01f6b56 (seed 3 perms missing from catalog)
* 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>
2026-05-24 21:18:49 +01:00
79be9f34c3 chore: bump Backend + Frontend submodule pointers
* 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>
2026-05-24 19:40:00 +01:00
45e7615b25 chore: bump HarborForge.Frontend (role editor dark-theme redesign)
* HarborForge.Frontend f587e1e → HEAD
  style(role-editor): rewrite on Foundry Deck tokens — fixes unreadable
  role names + faded check cards + washed-out banner.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 19:26:01 +01:00
ed952bdf77 chore: bump HarborForge.Frontend → f587e1e (drop localStorage backend URL)
* 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>
2026-05-24 19:18:33 +01:00
b4856cea05 chore: bump HarborForge.Backend → 54feb96 (CLI model-import fix)
* 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>
2026-05-24 19:11:33 +01:00
87f908f16f chore: bump 4 submodule pointers — wizard removal + supporting work
* HarborForge.Backend  90b494f → 5ea2cdf  feat(backend)!: kill AbstractWizard, env-driven config + hf-cli
* HarborForge.Frontend aaf36a4 → 10771a8  feat(frontend)!: drop SetupWizardPage, backend URL via build-time VITE_*
* HarborForge.Cli      8dd58ba → b0f4aa2  feat(cli): hf user create --agent-id/--claw-identifier + hf user bind-agent
* HarborForge.OpenclawPlugin c9f6141 → c2d00c1  feat(hf-plugin): __hfAgentStatus.hasOnCallCovering(agentId, from, to)

Cuts off AbstractWizard entirely at this submodule snapshot: backend +
frontend bootstrap is operator-driven via `docker exec hf_backend hf-cli
admin create-user ...` and `hf-cli config oidc ...`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 19:04:32 +01:00
5f6c526af2 docs: translate top-level README to English
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>
2026-05-16 18:32:21 +01:00
f7adf66fa4 chore: bump all 7 submodule pointers to latest main
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>
2026-05-16 17:57:30 +01:00
05f1af6c0e Merge docs/readme-refresh into main
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>
2026-05-16 17:54:09 +01:00
d69bd5213c docs: rewrite top-level README — full component map
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>
2026-05-16 17:50:52 +01:00
zhi
e8c7f36950 chore: bump HarborForge.OpenclawPlugin submodule to latest main
Submodule changes:
- ESM conversion (type:module + nodenext + .js extensions everywhere)
- Migrated default export to definePluginEntry per current openclaw plugin
  authoring contract; modernized openclaw.plugin.json (drop entry/version,
  add activation.onStartup, declare contracts.tools).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 08:29:44 +00:00
h z
0ea665331a Merge pull request 'zhi-2026-04-18' (#8) from zhi-2026-04-18 into main
Reviewed-on: #8
2026-05-08 08:14:23 +00:00
zhi
12faa805c3 chore: update Backend + Cli submodules — schedule type system
Backend: schedule_types table, CRUD API, agent assignment API
Cli: schedule-type list/create/delete + assign-schedule-type commands

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-21 09:26:02 +00:00
zhi
d8564adafb chore: update Backend + OpenclawPlugin submodules
Backend: add /calendar/sync endpoint for multi-agent schedule sync
Plugin: multi-agent scheduler with dispatchInboundMessage wakeup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 09:32:48 +00:00
zhi
482462fa4d chore: update OpenclawPlugin submodule — revert Discord wakeup, keep spawn
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 20:45:47 +00:00
zhi
0dc968e625 chore: update OpenclawPlugin submodule — Discord wakeup
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 20:29:10 +00:00
zhi
d99bece398 chore: update OpenclawPlugin submodule — schedule cache + sync
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 17:45:39 +00:00
zhi
7e0ab6e1fd chore: update OpenclawPlugin submodule ref
Points to zhi-2026-04-18 branch with daily-routine workflow prompts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 17:31:49 +00:00
19174c899e quick fix 2026-04-15 07:14:36 +01:00
zhi
b9242a1588 chore: update HarborForge.Test submodule pointer to main head 2026-04-05 22:18:03 +00:00
zhi
08cae38b42 chore: update HarborForge submodule pointers 2026-04-05 22:14:41 +00:00
h z
e42926ec65 Merge pull request 'dev-2026-03-29' (#7) from dev-2026-03-29 into main
Reviewed-on: #7
2026-04-05 22:11:44 +00:00
27817fb0b9 chore: bump HarborForge component pointers for code-first indexing 2026-04-03 16:25:48 +00:00
zhi
7b3eb7b940 TEST-CLI-CAL-001 TEST-CLI-PR-001 complete CLI test tasks 2026-04-01 12:03:37 +00:00
zhi
fbc88f908b TEST-FE-PR-001: Mark task as completed
- Essential 列表与表单 ✓
- Accept milestone 选择 ✓
- story 创建入口限制 ✓
2026-04-01 11:41:56 +00:00
zhi
bdb8586612 TEST-FE-CAL-001 complete calendar frontend test coverage 2026-04-01 11:06:05 +00:00
zhi
69b2d2774e TEST-BE-CAL-001 record calendar backend test completion 2026-04-01 10:35:57 +00:00
zhi
dced5bbcd3 TEST-BE-PR-001 verify backend proposal tests 2026-04-01 10:04:50 +00:00
zhi
77fc66c0fc PLG-CAL-004: Mark task as complete - ScheduledGatewayRestart handling
- Update submodule to include state persistence and restart handling
- Mark PLG-CAL-004 tasks as complete in TASKLIST.md
2026-04-01 09:41:24 +00:00
zhi
8a886a1dff PLG-CAL-003 complete plugin deferred replanning 2026-04-01 08:52:16 +00:00
zhi
ac94f7aa32 PLG-CAL-002: Mark task as complete
- Update TASKLIST.md to mark PLG-CAL-002 as completed
- Plugin submodule updated with scheduler implementation
2026-04-01 08:45:38 +00:00
zhi
0b7fb3a002 chore: mark PLG-CAL-001 complete in TASKLIST.md
- PLG-CAL-001: Calendar heartbeat format — all 3 sub-items completed:
  claw_identifier 传递方式 / agent_id 传递方式 / slot 列表结构
- Spec documented in HarborForge.OpenclawPlugin/docs/PLG-CAL-001-calendar-heartbeat-format.md
2026-04-01 07:52:39 +00:00
zhi
28b21c96c4 feat(OpenclawPlugin): PLG-CAL-001: Calendar heartbeat format — submodule update
Update HarborForge.OpenclawPlugin to commit 55d7d11:
- plugin/calendar/types.ts: heartbeat request/response TypeScript types
- plugin/calendar/calendar-bridge.ts: CalendarBridgeClient HTTP client
- plugin/calendar/index.ts: module exports
- docs/PLG-CAL-001-calendar-heartbeat-format.md: full format specification
- plugin/openclaw.plugin.json: calendar config options

Ref: HarborForge.NEXT_WAVE_DEV_DIRECTION.md §6, PLG-CAL-001
2026-04-01 07:52:07 +00:00
zhi
fec154f14f CLI-CAL-001/002/003/004/005/006/007/008/009/010: Calendar CLI commands 2026-04-01 07:02:47 +00:00
zhi
15360f2a4b CLI-PR-001/002/003/004: Proposal rename, Essential commands, story restriction 2026-04-01 06:56:30 +00:00
zhi
50fdd0f50b FE-CAL-004/005: Calendar create/edit/cancel + status warnings 2026-04-01 06:50:11 +00:00
zhi
a540506752 FE-CAL-001/002/003: Calendar page skeleton with slot list and plans view 2026-04-01 06:48:22 +00:00
zhi
1bc9ba7dab Update Frontend submodule: FE-PR-005 story restriction 2026-04-01 06:46:27 +00:00
zhi
cd137f3b69 FE-PR-003/004/005: Mark existing Essential forms & Accept modal done; remove story from task creation
- 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
2026-04-01 06:46:01 +00:00
zhi
75ccb17742 FE-PR-002: Mark task as completed in TASKLIST.md 2026-04-01 06:28:52 +00:00
zhi
235d636fee FE-PR-002: Update Frontend submodule for Essential list feature 2026-04-01 06:25:54 +00:00
zhi
86250e0c0f FE-PR-001: Update Frontend submodule - Propose -> Proposal rename 2026-04-01 04:46:50 +00:00
zhi
c9fe8f1f51 BE-AGT-004 complete exhausted recovery parsing 2026-04-01 04:18:48 +00:00
zhi
fe7b1408ad BE-AGT-003: mark task complete, update Backend submodule ref 2026-04-01 02:50:20 +00:00
zhi
dafac0305d BE-AGT-002: mark task complete, update Backend submodule ref 2026-04-01 00:46:23 +00:00
zhi
b1ea8ccccd BE-AGT-001: mark task complete, update backend submodule 2026-03-31 23:01:52 +00:00
zhi
c73fd07295 BE-CAL-API-007: update submodule ref and mark task complete 2026-03-31 20:46:53 +00:00
zhi
b5cdd5c3c2 BE-CAL-API-006: implement plan-edit and plan-cancel API endpoints
- 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
2026-03-31 16:46:22 +00:00