naeel
eb517594bc
v1.2.4: collapsible help section in scenario editor modal
...
scenario-form.js: <details> block between name and steps:
- How steps work (operation → target)
- Create: service + output name
- Non-create: instance from scenario or cloud
- Parameters: key=value format with example
- Buttons: ↑↓ reorder, ✕ delete
2026-07-31 11:49:04 +04:00
naeel
622a7c7023
v1.2.3: instance_ref shows cloud instances + bigger CRUD buttons
...
scenario-form.js:
- showScenarioEditor loads /api/instances/list alongside services
- renderStepRow: non-create instance_ref dropdown shows:
🆕 outputs from previous create steps
☁ existing cloud instances filtered by service_id
- Removed separate instance_uid text field (now in dropdown)
scenario-list.js:
- CRUD buttons: ✏📋 🗑 bigger (13px, padding), vertical layout
- Run button: full-width, left-aligned
2026-07-31 11:40:29 +04:00
naeel
15f5ebe647
v1.2.2: modal scenario editor with dropdowns + output/ref
...
scenario-form.js — full rewrite:
- Full-screen modal (backdrop + content, 800px max-width)
- Services dropdown (GET /api/services, cached)
- Operations dropdown (GET /api/operations/{svcId}, cached)
- output field for create steps
- instance_ref dropdown (previous outputs) + explicit instance_uid
- [↑][↓] reorder buttons
- Auto-load operations on service change
index.html — modal CSS (#scenario-modal, .modal-backdrop, .modal-content)
2026-07-31 10:19:26 +04:00
naeel
353e07bfa8
v1.2.1: fix tracker_add in executor + labelCls + descr context + script order
...
Opus review fixes:
- executor.py: tracker_add inside executor after instance_uid, before params/run (A3, orphan protection)
- executor.py: descr parameter (version/context instead of hardcoded)
- api_test.py: pass client_id/stand/descr, remove duplicate tracker_add
- scenario.py: pass client_id/stand/descr with scenario context
- params-render.js: fix labelCls ReferenceError in renderMapFixedRow (pre-existing bug)
- index.html: params-render.js already before operations.js (verified)
2026-07-31 09:45:05 +04:00
naeel
91e97f6f75
v1.2.0: unified executor + flexible instance refs + params-render.js
...
Phase 1 — New modules:
- api/utils.py: find_uid(), uid_from_location() (replaces 2 duplicates)
- operations/poll.py: poll_until_done() (shared sync/async polling)
- operations/executor.py: execute_operation() (single CREATE/non-CREATE flow)
Phase 2 — Format + validation:
- routes/api_scenario_defs.py: _validate_steps with output/instance_ref/instance_uid
- operations/scenario.py: resolve instance_uid > instance_ref > service_id,
use executor + poll_until_done, persist instance_bindings
Phase 3 — Migration:
- routes/api_test.py: create/non-create through executor, _finish_op through poll_until_done
- db/init_db.py: startup cleanup of stuck scenario_runs (>1h)
Phase 4 — UI shared module:
- static/js/params-render.js: renderParamRow, renderMapFixedRow, collectParams
- static/js/operations.js: use params-render.js (remove duplicates)
- templates/index.html: include params-render.js
- app.py: bump 1.1.57 → 1.2.0
2026-07-31 08:55:06 +04:00
naeel
38f58ddbd7
v1.1.57: fix scenario editor body bug + relativeTime columns + infra UUIDs
...
- scenario-form.js: fix ReferenceError body is not defined in renderEditor()
- utils.js: relativeTime(iso) → 3ч 12м / 2д 5ч / только что
- instances.js: columns created / modified with relativeTime()
- index.html: instanceUid under displayName in infra column
2026-07-30 22:22:19 +04:00
naeel
7ae172e863
v1.1.56: fix JS load order — selectService() moved to app.js (was calling stopPoll before operations.js loaded)
2026-07-30 22:09:26 +04:00
naeel
a96658b9b5
v1.1.55: split large files + CRUD scenario editor
...
Backend (5→7 files):
- api_test.py: 622→479, terraform functions → operations/terraform.py (142)
- api_scenario.py: 241→split into run (153) + defs (108) with _validate_steps()
- db/scenario_defs.py: +client_id, stand, is_seed in list_definitions
Frontend (1→10 files):
- app.js: 554→16 (loader), split into:
utils.js (45), instances.js (89), operations.js (249),
history.js (35), scenario-list.js (90)
- New CRUD: scenario-form.js (128), create (25), edit (12), delete (13)
Max file size: JS 249, PY 479
2026-07-30 22:02:22 +04:00
naeel
189a2779d6
v1.1.54: remove delete from dummy_test scenario (cannot delete without suspend)
2026-07-30 16:12:42 +04:00
naeel
e5e96593f1
v1.1.53: filter scenario history by app_version (fix stale results after redeploy)
2026-07-30 16:10:53 +04:00
naeel
7354d9c125
v1.1.52: fix scenario create (drop svcOperationId) + http_client _status debug
2026-07-30 15:51:22 +04:00
naeel
6f051aa348
v1.1.51: fix seed — list/get also match global defaults (client_id='' stand='')
2026-07-30 15:25:16 +04:00
naeel
983b387708
v1.1.50: scenario_definitions DB+CRUD, seed, runner from DB, 409 lock, UI definitions, drop config.yaml scenarios
2026-07-30 15:06:05 +04:00
naeel
67f6390509
v1.1.49: UUID extraction directly in http_client.post() — Location header → instanceUid/instanceOperationUid
2026-07-30 14:37:35 +04:00
naeel
7f69c916ec
v1.1.48: fix 4 scenario bugs — save_run: scenario_run_id+step_number, run_id before thread (202), TIMEOUT op_data init, RUNNING before API call, GET /run/<id>
2026-07-30 14:08:29 +04:00
naeel
566a6da8d9
v1.1.47: fix scenario UUID extraction — _find_uid + _uid_from_location fallback
2026-07-30 13:57:34 +04:00
naeel
7eeb1131b3
v1.1.46: phase2 — scenario runner MVP (YAML config, DB schema, API endpoints, UI section)
2026-07-30 13:48:34 +04:00
naeel
0ab6b3a89e
v1.1.45: phase1 — escape fixes, refSvc top-level, redact secrets, validate inputs, no traceback, TIMEOUT save, remove legacy api_bp
2026-07-30 13:43:48 +04:00
naeel
045ca438c6
cleanup: move all docs to root DOCS
2026-07-30 13:38:33 +04:00
naeel
acc28351c5
docs: ARCHITECTURE-FULL.md + README link
2026-07-30 13:36:35 +04:00
naeel
b6808423da
remove questions-to-sol.md — moved to root DOCS
2026-07-30 13:24:46 +04:00
naeel
b26332fbe7
docs: 14 questions to Sol — discuss before implementing
2026-07-30 13:20:19 +04:00
naeel
3f653a7205
docs: GPT-5.6 Sol — 10-step MVP plan
2026-07-30 13:16:48 +04:00
naeel
0c6cd75028
docs: GPT-5.6 Sol prompt — architecture ideas + bug hunt
2026-07-30 13:02:26 +04:00
naeel
b5d139a04a
v1.1.44: 5 fixes — null-guard + try/catch in toggleInstance/selectService/refreshInstances/CMDB
2026-07-30 09:49:08 +04:00
naeel
b7f7bba22c
docs: Sonnet final audit — all bugs + user actions review
2026-07-30 09:36:56 +04:00
naeel
de18ea7d43
v1.1.43: fix missing opsEl declaration in toggleInstance
2026-07-30 09:33:27 +04:00
naeel
16848544fa
v1.1.42: busy check BEFORE stopPoll in toggleInstance
2026-07-30 09:29:40 +04:00
naeel
272c5c2b3a
v1.1.41: block selectService when busy
2026-07-30 09:10:10 +04:00
naeel
8bd68e1eed
v1.1.40: busy blocks instance expand completely
2026-07-30 09:08:22 +04:00
naeel
4dcd61f25d
v1.1.39: populate empty valueList from state.out + normalize value_list
2026-07-30 08:47:13 +04:00
naeel
363ac7e29c
docs: Sonnet response — state.out valueList + normalize fix
2026-07-30 08:43:32 +04:00
naeel
59776bed9d
docs: Sonnet question — populate valueList from state.out
2026-07-30 08:37:55 +04:00
naeel
a0a17e183f
v1.1.38: operations per instance svcId + operation name header
2026-07-30 08:33:03 +04:00
naeel
f79301b245
v1.1.37: params for all ops + polling try/catch + refresh always + tracker CMDB + firstServiceId
2026-07-30 07:47:43 +04:00
naeel
ac45796138
docs: Sonnet response — 6 bugs found, params for all operations
2026-07-30 07:41:01 +04:00
naeel
2c35ed5307
docs: Sonnet question — parameterized operations + full audit
2026-07-30 07:32:13 +04:00
naeel
9c062a225e
v1.1.36: CMDB raw_delete uses clean requests (no auth headers)
2026-07-30 07:14:25 +04:00
naeel
b1ec156fc8
v1.1.35: close stale ops panels when busy resets
2026-07-29 15:07:25 +04:00
naeel
81c27fb270
v1.1.34: busy=false in catch + CMDB OK no polling
2026-07-29 14:54:59 +04:00
naeel
65d10d5c35
v1.1.33: CMDB delete logging — log HTTP status code
2026-07-29 14:09:56 +04:00
naeel
b6a497400c
v1.1.32: not-created instances — only show delete operation
2026-07-29 13:57:51 +04:00
naeel
d17c84548d
v1.1.31: CMDB hard delete + fix _resolve_ref_svc params update
2026-07-29 13:48:49 +04:00
naeel
b4980aed76
v1.1.30: fix json.loads('') in _resolve_ref_svc
2026-07-29 13:43:30 +04:00
naeel
0092a4a0e3
v1.1.29: busy=false on early FAIL return — prevent permanent lock
2026-07-29 13:41:57 +04:00
naeel
5af8c5218f
v1.1.28: HttpClient.get() resilient to empty body — return {} instead of JSONDecodeError
2026-07-29 13:32:17 +04:00
naeel
edb2d0d526
v1.1.27: busy lock — block operations while another is running
2026-07-29 13:30:53 +04:00
naeel
8cc7f54b23
v1.1.26: handle empty validate-cfs response (JSONDecodeError)
2026-07-29 13:24:00 +04:00
naeel
ed6612fb3c
v1.1.25: full Terraform parity — normalize, resolveRefSvc, send ALL params, 30min timeout, svc in fields
2026-07-29 13:17:45 +04:00
naeel
d3164ebe76
v1.1.24: step 6 from REAL operation (not template) — fixes serviceInstanceUid
2026-07-29 12:59:13 +04:00
naeel
82b674d05f
docs: Sonnet found root cause — template vs real operation for step 6
2026-07-29 12:57:41 +04:00
naeel
c861a3683e
docs: add Terraform provider source paths to Sonnet request
2026-07-29 12:51:48 +04:00
naeel
ce19eff9de
docs: Sonnet — full Terraform diff analysis request
2026-07-29 12:49:10 +04:00
naeel
32008463bc
v1.1.23: fix None defaultValue for map-fixed — build JSON from sub-param defaults
2026-07-29 12:48:23 +04:00
naeel
0df6804d79
v1.1.22: fix currentSvcShort scope — move to module level
2026-07-29 12:37:50 +04:00
naeel
515fadbcde
v1.1.21: 6 fixes — _finish_op args, connection leak, pool init, XSS, secure cookie, let
2026-07-29 12:01:00 +04:00
naeel
8bc87193d4
docs: Sonnet vs Opus comparison + fix plan
2026-07-29 11:59:01 +04:00
naeel
64c16fdc4a
docs: Sonnet full review response — 3 critical + 4 important bugs
2026-07-29 11:52:24 +04:00
naeel
95d6d6caf6
docs: Sonnet FULL code review — all 17 files
2026-07-29 11:40:38 +04:00
naeel
f75c6ce42a
v1.1.20: fix _client() → get_client() — NameError in status polling
2026-07-29 11:39:56 +04:00
naeel
ca33b45f1a
v1.1.19: send required+default params (Terraform step 6) + validate-cfs
2026-07-29 11:15:41 +04:00
naeel
286c5ab680
docs: Sonnet new chat — full context for missing required params
2026-07-29 11:12:25 +04:00
naeel
2295a36eb2
docs: Sonnet round 3 — missing required params in CREATE
2026-07-29 11:10:01 +04:00
naeel
2eecf17aa4
v1.1.18: fix stages position for CREATE — after create-btn, not in inst-list
2026-07-29 11:03:31 +04:00
naeel
6e913a309f
v1.1.17: fix sort TypeError — string negation crashed API
2026-07-29 10:21:34 +04:00
naeel
e214d36a75
v1.1.16: remove serviceId filter, sort by svc+date, scrollable inst-list
2026-07-29 10:10:41 +04:00
naeel
b23ea0ee4e
v1.1.15: dynamic stages-box — inline after instance, not below all
2026-07-29 09:43:29 +04:00
naeel
735bf4d3d6
v1.1.14: serviceId filter, svcShort displayName, descr, remove duplicate endpoint
2026-07-29 09:34:46 +04:00
naeel
334e0ac668
docs: absolute paths in Sonnet round 2
2026-07-29 09:26:33 +04:00
naeel
4dd636be3b
docs: Sonnet round 2 — remaining bugs and fix plan
2026-07-29 09:22:36 +04:00
naeel
8f802c3a17
v1.1.13: service highlight, dynamic btn text, defaultValue in dataDescriptor
2026-07-29 09:05:23 +04:00
naeel
b763469c5c
v1.1.12: fix NameError — missing import + JS error handling in showParams
2026-07-29 08:53:53 +04:00
naeel
6a85da6088
docs: Sonnet 4.6 code review questions for v1.1.11
2026-07-29 08:45:52 +04:00
naeel
659681dbf6
v1.1.11: normalize valueList CSV→array for nested dataDescriptor params
2026-07-28 13:56:58 +04:00
naeel
da88fa6bd8
v1.1.10: real svc per instance, create header, required marks for nested
2026-07-28 13:50:34 +04:00
naeel
d326b63aa2
v1.1.9: expand dataDescriptor — nested map params as individual fields
2026-07-28 13:38:57 +04:00
naeel
a3ecbcd6c4
v1.1.8: instance type column — 3 columns: name | service | status
2026-07-28 13:33:19 +04:00
naeel
9b003b4723
v1.1.7: move create-btn after params, before history
2026-07-28 13:17:00 +04:00
naeel
5a4fad5d96
v1.1.6: fix orphan </div> in refreshInstances — JS syntax error, all frontend broken
2026-07-28 13:01:33 +04:00
naeel
95bcbfae41
v1.1.5: fix sed garbage — orphan HTML in app.js
2026-07-28 12:48:40 +04:00
naeel
3cef910004
v1.1.4: fix Undefined JSON error — config.VERSION always set
2026-07-28 11:53:32 +04:00
naeel
9090a4a9c3
v1.1.3: refSvcId — select dropdown from API for cross-service params
2026-07-28 11:42:58 +04:00
naeel
393e433b4f
v1.1.2: UI — params inline, no header, create button below list
2026-07-28 11:31:45 +04:00
naeel
12e3d12e09
v1.1.1: scrollable services + dynamic CREATE for any service
2026-07-28 11:24:51 +04:00
naeel
0b810fdee1
v1.1.0: per-stand services list from Terraform — services_dev.txt + services_test.txt
2026-07-28 11:15:19 +04:00
naeel
5a20962015
v1.0.99: fix all Flask-proxy in background thread — user_email + app_version as params
2026-07-28 10:49:21 +04:00
naeel
3dbddda858
v1.0.99: debug logging for save_run — will show why it fails
2026-07-28 10:42:43 +04:00
naeel
10ec617c74
v1.0.98: bump version
2026-07-28 10:35:08 +04:00
naeel
b9234a0d0b
v1.0.97: fix missing get_token_info import
2026-07-28 10:34:25 +04:00
naeel
f6598650b5
v1.0.97: fix save_run — user_email passed as param, not called in background thread
2026-07-28 10:26:24 +04:00
naeel
be9e165b4f
v1.0.96: history UI — collapsible table below instances, auto-refresh on finish
2026-07-28 10:15:31 +04:00
naeel
99b0a79cbd
v1.0.95: full test data — op_uid, user_email, app_version, params saved to runs
2026-07-28 10:12:16 +04:00
naeel
163dd02419
v1.0.94: lazy schema init — pool.py runs init_db on first DB access, not at import
2026-07-28 09:56:44 +04:00
naeel
203c12638d
v1.0.93: HISTORY + ARCHITECTURE updated with v1.0.90-1.0.93 changes
2026-07-28 09:51:30 +04:00
naeel
5e120db0d6
v1.0.93: separate DB_* env vars (DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD, DB_SSLMODE) + TEST endpoint default
2026-07-28 09:50:00 +04:00
naeel
f175319148
v1.0.92: jsonEnv — all vars + TEST endpoint default
2026-07-28 09:39:52 +04:00
naeel
7fc17ab3cd
v1.0.92: back to DATABASE_URL — JSON format for jsonEnv
2026-07-28 09:37:14 +04:00
naeel
d239458d97
v1.0.92: separate DB_* env vars instead of DATABASE_URL
2026-07-28 09:35:40 +04:00
naeel
d95afc60e3
v1.0.92: Steps 5-9 — dynamic services, PostgreSQL history, /api/history
2026-07-27 22:59:52 +04:00
naeel
4952f8b096
v1.0.91: Step 5 — JS extracted to /static/app.js + window.APP
2026-07-27 22:57:29 +04:00