Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
326 commits
Select commit Hold shift + click to select a range
6ad4d54
feat(recording): close Epic recorder-v2-desktop-windows — transport-a…
raffelino Apr 22, 2026
c60102a
fix(recording): restore /api/v1/openapi.json — drop illegal response_…
raffelino Apr 23, 2026
e1ffe9a
feat(recorder): launch v2 Recorder from Explorer toolbar (story W.9)
raffelino Apr 23, 2026
3152878
refactor(recorder): retire v1 in-app Recorder UI from Explorer (story…
raffelino Apr 23, 2026
4fd858f
feat(execution): pending-run activity surface (story EXEC-1)
raffelino Apr 23, 2026
ba8dede
feat(docs): BPMN diagram of the core process on /docs/process (story …
raffelino Apr 23, 2026
fab36b4
Revert "feat(docs): BPMN diagram of the core process on /docs/process…
raffelino Apr 23, 2026
cbbcc01
chore(gitignore): ignore Claude Code scheduler lock file
raffelino Apr 23, 2026
5927f50
feat(recorder): remote-aware transport picker + headless-backend hint…
raffelino Apr 23, 2026
e7cfbea
feat(recording): self-healing selector diagnosis on failed runs (stor…
raffelino Apr 24, 2026
7de8b8d
feat(ai): extract and surface patch suggestions from failure analysis…
raffelino Apr 24, 2026
2f72440
feat(stats): flaky-test quarantine (story FLAKY-1)
raffelino Apr 24, 2026
7b2fce2
feat(recording): runtime self-healing selectors with suspect-heal rol…
raffelino Apr 24, 2026
ec246a0
feat(execution): one-click apply of confirmed heal patches (story SH-4)
raffelino Apr 24, 2026
11836d8
feat(execution): runner-side skip of quarantined tests via RF listene…
raffelino Apr 24, 2026
63e0e94
feat(stats): heal-rate KPI card + trend on Stats overview (story SH-6)
raffelino Apr 24, 2026
4be6c6a
feat(recording): extend RoboScopeHeal with long-tail keywords (story …
raffelino Apr 24, 2026
d8233aa
test(recording): real-browser integration test for SH-2 heal (story E…
raffelino Apr 24, 2026
d568a0f
feat(recording): DOM-walk similarity scoring as third heal fallback (…
raffelino Apr 24, 2026
a97ec1c
docs(bmad): formally close out D-5 as hardware-blocked
raffelino Apr 24, 2026
0a6f1e7
fix(execution): DockerRunner accepts listeners kwarg (FLAKY-2 regress…
raffelino Apr 24, 2026
cbb7a67
fix(environments): derive Playwright Docker tag from installed version
raffelino Apr 24, 2026
de7733a
fix(environments): force-pin Playwright inside Docker image to match …
raffelino Apr 24, 2026
6767b77
feat(environments): long-term guardrail for Playwright version pairing
raffelino Apr 24, 2026
76b3496
docs: document self-healing + quarantine + AI patches (README + in-app)
raffelino Apr 24, 2026
63a0fde
fix(environments): use python-slim for batteries (it ships its own Pl…
raffelino Apr 24, 2026
f7c021a
fix(environments): rebuild image generator on python-slim + rfbrowser…
raffelino Apr 27, 2026
6f076b3
fix(execution): silent poll refresh — stop scrolling list back to top
raffelino Apr 27, 2026
e2313ed
docs: add identity-provider (SSO) setup section
raffelino Apr 27, 2026
feec456
feat(editor): multi-selector picker in visual flow editor (story EDIT…
raffelino Apr 27, 2026
a77ede3
feat(editor): label argument inputs with parameter names (story EDITO…
raffelino Apr 27, 2026
2dd1c2f
fix(editor): flow editor now updates when the open file changes (stor…
raffelino Apr 27, 2026
aa10527
feat(editor): make Flow the leftmost / default editor tab (story EDIT…
raffelino Apr 27, 2026
f1b3e34
feat(editor): keyword autocomplete in flow-editor detail panel (story…
raffelino Apr 27, 2026
6121ee8
fix(editor): keep constant gap between flow nodes regardless of arg c…
raffelino Apr 27, 2026
36509be
feat(editor): keyword documentation popup from detail panel (story ED…
raffelino Apr 27, 2026
3243d2b
feat(editor): friendly parameter type labels and typed controls (stor…
raffelino Apr 27, 2026
c46da64
fix(editor): EDITOR-3 review — preserve custom values + variable refs…
raffelino Apr 27, 2026
3e8cc69
feat(editor): named-arg picker + hide unknown-type chip (stories EDIT…
raffelino Apr 27, 2026
f5f981b
feat(editor): number vararg slots + lazy-load BuiltIn keyword docs
raffelino Apr 28, 2026
e5e24ef
feat(editor): RobotCode-style RF syntax highlighting + brand colours …
raffelino Apr 28, 2026
1a4ca94
fix(recorder, editor): page navigation/popups + Start/End blank page …
raffelino Apr 28, 2026
43a6738
fix(recorder): only capture events from the top frame, not iframes (R…
raffelino Apr 28, 2026
f960ce7
feat(recorder): suppress click-caused Go To + multi-page replay e2e (…
raffelino Apr 28, 2026
89afd0e
chore(extension): clean-room rewrite of upstream modules → Apache-2.0…
raffelino Apr 28, 2026
8143dff
docs: record RECORDER-2 heal-package extraction (sibling repo)
raffelino Apr 28, 2026
b12ab9f
feat(repos): commit + push save loop for non-Git users (story REPO-1)
raffelino Apr 28, 2026
22c367d
feat(repos): make Auto-Sync actually pull on a schedule (story REPO-2)
raffelino Apr 28, 2026
51c1bd4
feat(repos): pre-run sync — pull latest before each test run (story R…
raffelino Apr 28, 2026
d07b85c
feat(webhooks): pre-sync repo before triggering webhook-driven runs (…
raffelino Apr 28, 2026
84c8ae6
fix(reports): require auth on /reports/{id}/assets/ (story REPORT-1)
raffelino Apr 28, 2026
f62d520
perf(docs): lazy-load docs content per locale (story PERF-1)
raffelino Apr 28, 2026
aedb497
docs: record EXAMPLES-1 (sibling roboscope-examples repo, Phase A done)
raffelino Apr 28, 2026
310ae3d
sec(auth): force default-admin password rotation on first login (stor…
raffelino Apr 28, 2026
bac7a8f
ux(auth): default-password warning is a dismissable banner, not a for…
raffelino Apr 28, 2026
d129c5e
fix(robustness): stream upload size guard + deep health-check (story …
raffelino Apr 28, 2026
9f540e2
refactor: single source of truth for Docker client bootstrap (story R…
raffelino Apr 28, 2026
ff853ae
obs(logging): propagate request_id into every log record (story LOGGI…
raffelino Apr 28, 2026
9969281
sec(reports): asset token replaces JWT in iframe URL (story SECURITY-3)
raffelino Apr 28, 2026
11b6929
test(reports): update base-href assertion to match SECURITY-3 asset t…
raffelino Apr 28, 2026
d15932e
refactor(types): first-pass `as any` cleanup — 25 → 13 (story TYPE-1)
raffelino Apr 28, 2026
ab4da6a
test(websocket): add coverage for ConnectionManager (story TEST-1)
raffelino Apr 28, 2026
9e54d78
test(execution): DockerRunner unit coverage (story TEST-2)
raffelino Apr 28, 2026
2d6323c
test(ai): provider CRUD endpoint coverage (story TEST-3)
raffelino Apr 28, 2026
2d252b6
a11y(layout): baseline pass on top-level chrome (story A11Y-1)
raffelino Apr 28, 2026
4afe913
refactor(types): KeywordPalette discriminated union — 13 → 9 as-any (…
raffelino Apr 28, 2026
6583ae5
refactor(types): final mechanical as-any pass — 9 → 3 real casts (sto…
raffelino Apr 28, 2026
416376f
test(ai): generate / reverse / analyze / status / accept endpoint cov…
raffelino Apr 29, 2026
61edd15
refactor(types): SpecEditor narrowing — last 2 real as-any casts gone…
raffelino Apr 29, 2026
15f3559
test(execution): execute_test_run early-exit branch coverage (story T…
raffelino Apr 29, 2026
6bdff1c
docs: CHANGELOG Unreleased section for the 2026-04-28/29 loop session
raffelino Apr 29, 2026
a187ae8
test(e2e): security-hardening asset auth assertion follows REPORT-1 /…
raffelino Apr 29, 2026
72b794d
a11y(login): label / id pairing + autocomplete hints (story A11Y-2)
raffelino Apr 29, 2026
e90579f
fix(audit): self-service auth routes resolve to `user` resource type
raffelino Apr 29, 2026
000adf6
fix(i18n): merge duplicate `recorder` keys + add locale parity guard …
raffelino Apr 29, 2026
caeb202
fix(repos): mypy strict catches two None-vs-str narrowing bugs (story…
raffelino Apr 29, 2026
b9866e8
fix(webhooks): defensive typing on payload extractors (story SECURITY-4)
raffelino Apr 29, 2026
5727e23
fix(types): mypy strict on docker_client + asset_tokens (story TYPE-6)
raffelino Apr 29, 2026
db0255f
refactor(types): declare GitOperationError recovery fields explicitly…
raffelino Apr 29, 2026
a0b5cda
fix(devex): repair ruff config — `make lint` was silently broken (sto…
raffelino Apr 29, 2026
f86235b
fix(ai): mypy strict surfaces 2 narrowing bugs in router + service (s…
raffelino Apr 29, 2026
b02ed68
fix(devex+sso): repair `npm run lint` + show SSO cancel/error toasts …
raffelino Apr 29, 2026
d19472a
fix(sso): restore listPublicSsoProviders + Phase-4 types — login show…
raffelino Apr 29, 2026
60e99f4
chore(ruff): silence F811 in tests/ — pytest fixture-parameter false …
raffelino Apr 29, 2026
ea4fbf7
refactor: B904 exception chaining on session-touched files (story REF…
raffelino Apr 29, 2026
0f73748
test(api): regression guard for SSO-1 — pin the api module exports
raffelino Apr 29, 2026
60124df
test(i18n): regression guard for I18N-1 duplicate-top-level-keys
raffelino Apr 29, 2026
180c5e3
fix: real-bug findings from mypy --strict pass on backend
raffelino Apr 29, 2026
e6b270c
fix(security): switch output.xml parsing to defusedxml (XXE hardening)
raffelino Apr 29, 2026
4831cc3
fix(security): plug Windows shell-injection on Open-In-Editor + drop …
raffelino Apr 29, 2026
ed89c54
feat(repos): make `name` optional for Git repos — derived from URL
raffelino Apr 29, 2026
a600159
fix(ui): treat naive backend ISO timestamps as UTC, not local
raffelino Apr 29, 2026
6f78c51
feat(editor): keep selection after move-up/down + arm reorder drag on…
raffelino Apr 29, 2026
827e5f0
fix(editor): bool checkbox preserves `name=` prefix + reflects keywor…
raffelino Apr 29, 2026
ab9e86f
fix(editor): detail panel no longer closes mid-keystroke
raffelino Apr 29, 2026
13cd755
fix(editor): float "+ Add argument" picker over the canvas, not insid…
raffelino Apr 29, 2026
93b6fec
fix(ui): apply naive-UTC fix to remaining "now − backend-stamp" sites
raffelino Apr 29, 2026
83b6e15
fix(api): always serialize UTC datetimes with `Z` suffix
raffelino Apr 29, 2026
86de927
test(repos): integration regression guard for the UtcJSONResponse wiring
raffelino Apr 29, 2026
41db3a6
fix(editor): drop-zone insertion math respects variable node heights
raffelino Apr 29, 2026
d55bd7d
docs(claude.md): refresh "known issues" list with actual current state
raffelino Apr 29, 2026
4648b9d
fix(recorder): emit `wait_until=domcontentloaded` for recorded `New P…
raffelino Apr 29, 2026
dce2ced
feat(recorder+editor): emit `${HEADLESS}` definition + bool↔text inpu…
raffelino Apr 29, 2026
7a6e8bd
docs(claude.md): every concrete "known issue" except a11y is already …
raffelino Apr 29, 2026
18e47a5
docs: refresh CHANGELOG, gotchas + recorder anatomy section across 4 …
raffelino Apr 29, 2026
6c86b42
chore(examples): refresh recording.{robot,rbs.json} pair (session 23)
raffelino Apr 29, 2026
d339584
fix(recorder): wire `verify_candidates` into the v2 capture handler
raffelino Apr 29, 2026
feb0029
feat(recorder): capture cross-origin iframe events (cookie banners, O…
raffelino Apr 29, 2026
b8fb5ff
feat(recorder): panic-button to reset stuck v2 sessions from the laun…
raffelino Apr 29, 2026
c1b0feb
feat(recorder): show iframe-origin badge in RecordingLiveView
raffelino Apr 29, 2026
3a39e1d
feat(recorder): suppress events from known ad/tracker iframes
raffelino Apr 29, 2026
92d5b1f
feat(recorder): per-step delete in RecordingLiveView
raffelino Apr 29, 2026
af43856
fix(recorder): disambiguate multi-match text/aria/testid via `>> nth=0`
raffelino Apr 29, 2026
57f58bb
fix(recorder): emit exact-match `text="..."` instead of substring `te…
raffelino Apr 29, 2026
fd370f6
fix(recorder): autogen-class heuristic catches CSS-in-JS / CSS-module…
raffelino Apr 29, 2026
e4406d1
fix(recorder): escape leading `#` in emitted Robot Framework tokens
raffelino Apr 29, 2026
9035768
feat(recorder): position-independent command id (RECORDER-IDMAP phase 1)
raffelino Apr 29, 2026
65dc45f
feat(editor): id-based step↔command matching (RECORDER-IDMAP phase 2)
raffelino Apr 29, 2026
5b14d56
fix(editor): mirror backend `\#` escape on FE save / unescape on FE load
raffelino Apr 29, 2026
52a39c9
docs(changelog): record the 14-commit recorder-quality push
raffelino Apr 29, 2026
aa4236c
test(recording): integration round-trip for RECORDER-IDMAP through /save
raffelino Apr 29, 2026
64b0bd6
test(sse): pin command id field in live-stream wire payload
raffelino Apr 29, 2026
a130fde
fix(recorder): preserve `cmd.id` through `_verify_command_candidates`
raffelino Apr 29, 2026
99fa398
feat(heal): record `command_id` in heal audit for post-mortem correla…
raffelino Apr 30, 2026
0966be6
feat(heal): surface command_id in report parser, API, and run-detail UI
raffelino Apr 30, 2026
397454d
fix(execution): apply_heal_patch preserves `# rbs:<id>` + escapes lea…
raffelino Apr 30, 2026
a5819ed
fix(recorder): close 3 RECORDER-IDMAP / RF-ESCAPE blindspots
raffelino Apr 30, 2026
954c8de
fix(recorder): desktop emitter writes # rbs:<id> trailing comment
raffelino Apr 30, 2026
0ccc3e2
fix(execution): apply_heal_patch uses command_id to disambiguate
raffelino Apr 30, 2026
72a0d22
test(recorder): pin command_id null-handling on parse + chip render
raffelino Apr 30, 2026
a8d8258
fix(recorder): heal candidates respect iframe scope
raffelino Apr 30, 2026
cb78dfc
fix(recorder): fingerprint heal respects iframe scope
raffelino Apr 30, 2026
1fdc784
test(recorder): pin iframe-scoping contract on record-time verify
raffelino Apr 30, 2026
3746cbf
refactor(recorder): unify iframe unwrap + pin emit↔unwrap symmetry
raffelino Apr 30, 2026
d42adeb
test(recorder): fix pre-IDMAP equality assertion in iframe_capture
raffelino Apr 30, 2026
23585cc
test(recorder): pin _frame_url_from_payload edge-case behavior
raffelino Apr 30, 2026
0c62c7a
fix(recorder): drop pw_locator strategy from synthesis
raffelino Apr 30, 2026
937630f
fix(recorder): SelectorPicker hides legacy pw_locator from swap menu
raffelino Apr 30, 2026
67c4015
fix(recorder): heal-side filter for legacy pw_locator candidates
raffelino Apr 30, 2026
15b1500
test(recorder): pin FlowEditor iframe-selector round-trip contract
raffelino Apr 30, 2026
5c83ce2
feat(recorder): log when verify drops heal candidates
raffelino Apr 30, 2026
94ce1e1
feat(recorder): emit warning when a targeted keyword has no selector
raffelino Apr 30, 2026
2c5aef2
feat(recorder): symmetric drop-path logging in translate_payload
raffelino Apr 30, 2026
7065cc4
test(recorder): pin run_v2_recorder_session crash-path lifecycle
raffelino Apr 30, 2026
06ee6d1
perf(recorder): event-driven stop wait — sub-100ms instead of 1s
raffelino Apr 30, 2026
d7c7f19
fix(recorder): validate target_url scheme before launching browser
raffelino Apr 30, 2026
6dfdd10
perf(recorder): event-driven stop wait for desktop loop too
raffelino Apr 30, 2026
4e58f64
feat(recorder): optional target-URL input on the launcher
raffelino Apr 30, 2026
5a16423
docs(recorder): mention optional Open URL field on launcher
raffelino Apr 30, 2026
dec4ad2
refactor(frontend): shared extractErrorDetail helper + first migration
raffelino Apr 30, 2026
3e088e3
refactor(frontend): migrate 4 more catch (e: any) sites to extractErr…
raffelino Apr 30, 2026
ab9ca43
refactor(frontend): migrate all 8 SettingsView catches to extractErro…
raffelino Apr 30, 2026
5d763df
refactor(frontend): migrate 13 more catch (e: any) sites + fix helper
raffelino Apr 30, 2026
7d4c218
refactor(frontend): migrate 11 more catch (e: any) sites
raffelino Apr 30, 2026
8d887fd
refactor(frontend): finish catch (e: any) cleanup — 50 → 0
raffelino Apr 30, 2026
6b46be7
docs: update CLAUDE.md after catch (e: any) cleanup + commit RTK section
raffelino Apr 30, 2026
7331fb4
feat(editor): add Test Case / Keyword affordance in FlowEditor
raffelino May 2, 2026
d95b408
refactor(frontend): drop SpecEditor's 8 \`: any\` annotations
raffelino May 2, 2026
04157c5
fix(editor): always show both section tabs + contextual empty state
raffelino May 2, 2026
6c065ee
fix(explorer): move "N changes" save button below the icon controls
raffelino May 2, 2026
83319cf
feat(editor): library management + import-aware keyword palette
raffelino May 4, 2026
cd4093d
feat(editor): mark static-fallback library categories as "examples"
raffelino May 4, 2026
0cfa035
fix(editor): don't badge BuiltIn as "(examples)" in static fallback
raffelino May 4, 2026
1709ce2
fix(editor): auto-import works for static-fallback library keywords
raffelino May 4, 2026
46287bb
feat(editor): warn when auto-imported library isn't installed in env
raffelino May 4, 2026
46ce07f
feat(editor): replace lib-not-installed toast with install dialog
raffelino May 4, 2026
9b32ee7
feat(auth): persistent "don't show again" on default-pw banner
raffelino May 4, 2026
ce92a06
feat(dashboard): clicking a project card opens it in the Explorer
raffelino May 4, 2026
c27cad9
fix(editor): don't suggest installing Browser when batteries is present
raffelino May 4, 2026
b0f7fdd
fix(editor): default Browser install suggestion to -batteries
raffelino May 4, 2026
0c5be08
fix(editor): label flow Start/End nodes with localised text
raffelino May 4, 2026
08676da
fix(editor): allow drag-drop while the detail panel is open
raffelino May 4, 2026
2115de0
fix(editor): empty test-case / keyword name no longer drops steps on …
raffelino May 4, 2026
6626b07
feat(editor): always show BuiltIn + curated common libs, collapsed by…
raffelino May 4, 2026
ae34a58
fix(editor): skip install dialog for RF-bundled libraries
raffelino May 4, 2026
5db91ed
fix(editor): keyword doc modal no longer truncates long descriptions
raffelino May 4, 2026
e65ff09
fix(ai): raise keyword doc cap from 200 to 4000 chars
raffelino May 4, 2026
3f21c06
feat(editor): render libdoc keyword docs as HTML in the doc modal
raffelino May 4, 2026
8f60ba2
fix(ai): forward doc_format through the keyword search response
raffelino May 4, 2026
2311a86
feat(editor): re-collapse keyword palette categories on file switch
raffelino May 4, 2026
1db0990
fix(editor): re-collapse palette on explorer keyword refresh
raffelino May 4, 2026
d6ea9a2
fix(repos): recover stranded sync_status='syncing' rows on startup
raffelino May 5, 2026
d95017c
fix(editor): keyword palette starts collapsed, even mid-load
raffelino May 5, 2026
007c0ee
feat(editor): pin current file's project keywords to top of palette
raffelino May 5, 2026
5a6f9ea
feat(editor): allow assigning any keyword's return value to a variable
raffelino May 5, 2026
f56159c
fix(ai): introspect bundled RF libraries when explicitly imported
raffelino May 5, 2026
9d66cf7
fix(explorer): refresh keyword palette after saving .robot/.resource
raffelino May 5, 2026
f52f7e6
feat(editor): Backspace / Delete removes the selected flow node
raffelino May 5, 2026
e64c67f
feat(editor): sort palette library categories by usage descending
raffelino May 6, 2026
c4cddfc
feat(editor): visually highlight the selected flow-editor node
raffelino May 6, 2026
1281b7d
feat(editor): palette-add inserts after the selected node
raffelino May 6, 2026
34064f6
fix(stats): tone down heal-rate card and move it to the bottom
raffelino May 6, 2026
3212493
fix(repos): auto-recover stale 'syncing' rows on the auto-sync tick
raffelino May 6, 2026
ebce487
feat(repos): info tooltips on Sync / Auto-Sync / Pre-Run-Sync
raffelino May 6, 2026
5c67637
fix(repos): make the info-tip icons actually visible
raffelino May 6, 2026
e903985
fix(repos): info-tip "i" icons now click-toggle a help popover
raffelino May 6, 2026
7dd4207
feat(repos): clicking project name / url opens the Explorer
raffelino May 6, 2026
c96cf70
feat(editor): detail panel spans the full canvas height
raffelino May 6, 2026
02d9b97
feat(editor): drag-to-resize handle on the detail panel's left edge
raffelino May 6, 2026
128aeed
feat(recording, reports): visibility-aware verifier; merge run summar…
raffelino May 6, 2026
dfe71ec
fix(recording): scroll-on-document drop; comment-only no-selector lin…
raffelino May 6, 2026
3459352
feat(nav): mark Identity Providers and Teams as preview
raffelino May 6, 2026
cb666b0
fix(execution): merge Detailbericht / Zusammenfassung in run detail p…
raffelino May 6, 2026
ecf9601
feat(execution): "open in new tab" buttons for keyword tree + html re…
raffelino May 6, 2026
a644290
feat(execution): pop-out tab shows ONLY the keyword tree
raffelino May 6, 2026
50f917b
fix(reports): make HTML iframe link clicks actually navigate
raffelino May 6, 2026
32e0577
fix(reports): inject base href so HTML report click navigation auths
raffelino May 6, 2026
14e6312
fix(reports, editor): fragment-only links + iframe-prefix selector match
raffelino May 6, 2026
0b634ae
fix(editor): treat \\# as a single escape, not as a comment start
raffelino May 6, 2026
c8cd035
feat(dashboard): card-grid landing page with RoboScope feature tips
raffelino May 6, 2026
9b7648c
feat(repos): seed "Robot Framework Examples" git project on first start
raffelino May 6, 2026
5601685
chore(release): bump version to 0.9.0
raffelino May 6, 2026
6d189bf
test(env): align batteries dockerfile test with Playwright-fix-E
raffelino May 6, 2026
3dc1de9
docs(changelog): 0.9.0 release notes
raffelino May 6, 2026
7b18c2f
docs(in-app): update Dashboard section for 0.9.0 card grid
raffelino May 6, 2026
726b28f
fix(tour): adapt to 0.9.0 dashboard rebuild
raffelino May 6, 2026
7faf0fc
feat(editor): dedicated RETURN node + arg chips no longer truncate
raffelino May 6, 2026
afa4709
fix(editor): clean round-trip for multi-line Documentation + Settings
raffelino May 6, 2026
73c0171
feat(editor): [Documentation] side note in the flow editor
raffelino May 6, 2026
3a09857
feat(editor): doc-meta side note attaches via left/right handles
raffelino May 6, 2026
f977442
test(editor): pin section-switch + doc-meta converter contract
raffelino May 6, 2026
fae82c2
feat(editor): all [...] settings render as side notes (Tags/Setup/...)
raffelino May 6, 2026
a4a9f22
feat(editor): RETURN node opens an editable values panel
raffelino May 6, 2026
2654211
test(e2e): pin all-settings side-note rendering in Flow Editor
raffelino May 6, 2026
e14b1c0
fix(editor): "+ [X]" surfaces the side note immediately
raffelino May 6, 2026
bc2478f
feat(editor): toolbar — names next to section tabs, libs to the right
raffelino May 6, 2026
3917826
fix(editor): typing in side-note panel no longer closes it mid-edit
raffelino May 6, 2026
9d5c6c9
fix(explorer): permanent scrollbar on standard desktops
raffelino May 6, 2026
93eb218
feat(recorder): shadow-DOM aware capture + parent-context disambiguation
raffelino May 6, 2026
71dfbfb
fix(e2e): visual-editor tests adapt to Flow being the default tab
raffelino May 6, 2026
274a06c
test(e2e): pin "typing in side-note panel keeps it open"
raffelino May 6, 2026
c0eb9c3
test(env): align stale Playwright Dockerfile tests with fix-E rfbrows…
raffelino May 7, 2026
b5cf4d1
merge: bring main 0.8.2 commits into release-0.9.0
raffelino May 7, 2026
22a0807
chore(deps): patch picomatch GHSA-3v7f-55p6-f55p
raffelino May 7, 2026
583d7e8
docs(security): add SECURITY.md, document fastmcp non-exploitability
raffelino May 7, 2026
56eba9c
docs(in-app): sync FR/ES dashboard + add flow-editor side-notes topic…
raffelino May 7, 2026
3f1ee86
docs(0.9.0): close remaining doc gaps — recorder verif, CLAUDE gotcha…
raffelino May 7, 2026
094512f
docs(claude): pin the release pipeline contract — what CI does and do…
raffelino May 7, 2026
36e8b45
fix(dashboard): Recorder card uses default surface like the others
raffelino May 7, 2026
c78f33a
fix(ci): unblock E2E + Phase4-gates on release-0.9.0
raffelino May 7, 2026
76635d2
fix(ci): Phase4 Gate 4 misses dev servers; recorder tests miss sessio…
raffelino May 7, 2026
076048d
fix(e2e): markFirstLoginComplete used wrong endpoint (404, no-op)
raffelino May 7, 2026
8e673d0
fix(e2e): unblock Phase 4 axe gate — real auth + disable color-contra…
raffelino May 7, 2026
d7fc2f1
fix(e2e): adapt tests to 0.9.0 UI changes — strict-mode + Mehr menu +…
raffelino May 7, 2026
92e993e
fix(e2e): drill remaining 11 failing specs after the bulk-fix sweep
raffelino May 7, 2026
b7163c3
fix(e2e): last 2 Schließen strict-mode failures use the right scope
raffelino May 7, 2026
9f0ff3f
fix(e2e): run-overlay close button lives in BaseModal footer, not ins…
raffelino May 7, 2026
7f2e2f9
fix(recorder): absolute xpath uses // prefix so Browser library auto-…
raffelino May 8, 2026
6b4dd93
feat(editor): SelectorPicker — edit existing candidate or add a custo…
raffelino May 8, 2026
8475588
feat(debug): DEBUG-1 — backend DAP driver foundation
raffelino May 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
136 changes: 136 additions & 0 deletions .claude/skills/bmad-advanced-elicitation/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
---
name: bmad-advanced-elicitation
description: 'Push the LLM to reconsider, refine, and improve its recent output. Use when user asks for deeper critique or mentions a known deeper critique method, e.g. socratic, first principles, pre-mortem, red team.'
---

# Advanced Elicitation

**Goal:** Push the LLM to reconsider, refine, and improve its recent output.

---

## CRITICAL LLM INSTRUCTIONS

- **MANDATORY:** Execute ALL steps in the flow section IN EXACT ORDER
- DO NOT skip steps or change the sequence
- HALT immediately when halt-conditions are met
- Each action within a step is a REQUIRED action to complete that step
- Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution
- **YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the `communication_language`**

---

## INTEGRATION (When Invoked Indirectly)

When invoked from another prompt or process:

1. Receive or review the current section content that was just generated
2. Apply elicitation methods iteratively to enhance that specific content
3. Return the enhanced version back when user selects 'x' to proceed and return back
4. The enhanced content replaces the original section content in the output document

---

## FLOW

### Step 1: Method Registry Loading

**Action:** Load and read `./methods.csv` and '{project-root}/_bmad/_config/agent-manifest.csv'

#### CSV Structure

- **category:** Method grouping (core, structural, risk, etc.)
- **method_name:** Display name for the method
- **description:** Rich explanation of what the method does, when to use it, and why it's valuable
- **output_pattern:** Flexible flow guide using arrows (e.g., "analysis -> insights -> action")

#### Context Analysis

- Use conversation history
- Analyze: content type, complexity, stakeholder needs, risk level, and creative potential

#### Smart Selection

1. Analyze context: Content type, complexity, stakeholder needs, risk level, creative potential
2. Parse descriptions: Understand each method's purpose from the rich descriptions in CSV
3. Select 5 methods: Choose methods that best match the context based on their descriptions
4. Balance approach: Include mix of foundational and specialized techniques as appropriate

---

### Step 2: Present Options and Handle Responses

#### Display Format

```
**Advanced Elicitation Options**
_If party mode is active, agents will join in._
Choose a number (1-5), [r] to Reshuffle, [a] List All, or [x] to Proceed:

1. [Method Name]
2. [Method Name]
3. [Method Name]
4. [Method Name]
5. [Method Name]
r. Reshuffle the list with 5 new options
a. List all methods with descriptions
x. Proceed / No Further Actions
```

#### Response Handling

**Case 1-5 (User selects a numbered method):**

- Execute the selected method using its description from the CSV
- Adapt the method's complexity and output format based on the current context
- Apply the method creatively to the current section content being enhanced
- Display the enhanced version showing what the method revealed or improved
- **CRITICAL:** Ask the user if they would like to apply the changes to the doc (y/n/other) and HALT to await response.
- **CRITICAL:** ONLY if Yes, apply the changes. IF No, discard your memory of the proposed changes. If any other reply, try best to follow the instructions given by the user.
- **CRITICAL:** Re-present the same 1-5,r,x prompt to allow additional elicitations

**Case r (Reshuffle):**

- Select 5 random methods from methods.csv, present new list with same prompt format
- When selecting, try to think and pick a diverse set of methods covering different categories and approaches, with 1 and 2 being potentially the most useful for the document or section being discovered

**Case x (Proceed):**

- Complete elicitation and proceed
- Return the fully enhanced content back to the invoking skill
- The enhanced content becomes the final version for that section
- Signal completion back to the invoking skill to continue with next section

**Case a (List All):**

- List all methods with their descriptions from the CSV in a compact table
- Allow user to select any method by name or number from the full list
- After selection, execute the method as described in the Case 1-5 above

**Case: Direct Feedback:**

- Apply changes to current section content and re-present choices

**Case: Multiple Numbers:**

- Execute methods in sequence on the content, then re-offer choices

---

### Step 3: Execution Guidelines

- **Method execution:** Use the description from CSV to understand and apply each method
- **Output pattern:** Use the pattern as a flexible guide (e.g., "paths -> evaluation -> selection")
- **Dynamic adaptation:** Adjust complexity based on content needs (simple to sophisticated)
- **Creative application:** Interpret methods flexibly based on context while maintaining pattern consistency
- Focus on actionable insights
- **Stay relevant:** Tie elicitation to specific content being analyzed (the current section from the document being created unless user indicates otherwise)
- **Identify personas:** For single or multi-persona methods, clearly identify viewpoints, and use party members if available in memory already
- **Critical loop behavior:** Always re-offer the 1-5,r,a,x choices after each method execution
- Continue until user selects 'x' to proceed with enhanced content, confirm or ask the user what should be accepted from the session
- Each method application builds upon previous enhancements
- **Content preservation:** Track all enhancements made during elicitation
- **Iterative enhancement:** Each selected method (1-5) should:
1. Apply to the current enhanced version of the content
2. Show the improvements made
3. Return to the prompt for additional elicitations or completion
51 changes: 51 additions & 0 deletions .claude/skills/bmad-advanced-elicitation/methods.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
num,category,method_name,description,output_pattern
1,collaboration,Stakeholder Round Table,Convene multiple personas to contribute diverse perspectives - essential for requirements gathering and finding balanced solutions across competing interests,perspectives → synthesis → alignment
2,collaboration,Expert Panel Review,Assemble domain experts for deep specialized analysis - ideal when technical depth and peer review quality are needed,expert views → consensus → recommendations
3,collaboration,Debate Club Showdown,Two personas argue opposing positions while a moderator scores points - great for exploring controversial decisions and finding middle ground,thesis → antithesis → synthesis
4,collaboration,User Persona Focus Group,Gather your product's user personas to react to proposals and share frustrations - essential for validating features and discovering unmet needs,reactions → concerns → priorities
5,collaboration,Time Traveler Council,Past-you and future-you advise present-you on decisions - powerful for gaining perspective on long-term consequences vs short-term pressures,past wisdom → present choice → future impact
6,collaboration,Cross-Functional War Room,Product manager + engineer + designer tackle a problem together - reveals trade-offs between feasibility desirability and viability,constraints → trade-offs → balanced solution
7,collaboration,Mentor and Apprentice,Senior expert teaches junior while junior asks naive questions - surfaces hidden assumptions through teaching,explanation → questions → deeper understanding
8,collaboration,Good Cop Bad Cop,Supportive persona and critical persona alternate - finds both strengths to build on and weaknesses to address,encouragement → criticism → balanced view
9,collaboration,Improv Yes-And,Multiple personas build on each other's ideas without blocking - generates unexpected creative directions through collaborative building,idea → build → build → surprising result
10,collaboration,Customer Support Theater,Angry customer and support rep roleplay to find pain points - reveals real user frustrations and service gaps,complaint → investigation → resolution → prevention
11,advanced,Tree of Thoughts,Explore multiple reasoning paths simultaneously then evaluate and select the best - perfect for complex problems with multiple valid approaches,paths → evaluation → selection
12,advanced,Graph of Thoughts,Model reasoning as an interconnected network of ideas to reveal hidden relationships - ideal for systems thinking and discovering emergent patterns,nodes → connections → patterns
13,advanced,Thread of Thought,Maintain coherent reasoning across long contexts by weaving a continuous narrative thread - essential for RAG systems and maintaining consistency,context → thread → synthesis
14,advanced,Self-Consistency Validation,Generate multiple independent approaches then compare for consistency - crucial for high-stakes decisions where verification matters,approaches → comparison → consensus
15,advanced,Meta-Prompting Analysis,Step back to analyze the approach structure and methodology itself - valuable for optimizing prompts and improving problem-solving,current → analysis → optimization
16,advanced,Reasoning via Planning,Build a reasoning tree guided by world models and goal states - excellent for strategic planning and sequential decision-making,model → planning → strategy
17,competitive,Red Team vs Blue Team,Adversarial attack-defend analysis to find vulnerabilities - critical for security testing and building robust solutions,defense → attack → hardening
18,competitive,Shark Tank Pitch,Entrepreneur pitches to skeptical investors who poke holes - stress-tests business viability and forces clarity on value proposition,pitch → challenges → refinement
19,competitive,Code Review Gauntlet,Senior devs with different philosophies review the same code - surfaces style debates and finds consensus on best practices,reviews → debates → standards
20,technical,Architecture Decision Records,Multiple architect personas propose and debate architectural choices with explicit trade-offs - ensures decisions are well-reasoned and documented,options → trade-offs → decision → rationale
21,technical,Rubber Duck Debugging Evolved,Explain your code to progressively more technical ducks until you find the bug - forces clarity at multiple abstraction levels,simple → detailed → technical → aha
22,technical,Algorithm Olympics,Multiple approaches compete on the same problem with benchmarks - finds optimal solution through direct comparison,implementations → benchmarks → winner
23,technical,Security Audit Personas,Hacker + defender + auditor examine system from different threat models - comprehensive security review from multiple angles,vulnerabilities → defenses → compliance
24,technical,Performance Profiler Panel,Database expert + frontend specialist + DevOps engineer diagnose slowness - finds bottlenecks across the full stack,symptoms → analysis → optimizations
25,creative,SCAMPER Method,Apply seven creativity lenses (Substitute/Combine/Adapt/Modify/Put/Eliminate/Reverse) - systematic ideation for product innovation,S→C→A→M→P→E→R
26,creative,Reverse Engineering,Work backwards from desired outcome to find implementation path - powerful for goal achievement and understanding endpoints,end state → steps backward → path forward
27,creative,What If Scenarios,Explore alternative realities to understand possibilities and implications - valuable for contingency planning and exploration,scenarios → implications → insights
28,creative,Random Input Stimulus,Inject unrelated concepts to spark unexpected connections - breaks creative blocks through forced lateral thinking,random word → associations → novel ideas
29,creative,Exquisite Corpse Brainstorm,Each persona adds to the idea seeing only the previous contribution - generates surprising combinations through constrained collaboration,contribution → handoff → contribution → surprise
30,creative,Genre Mashup,Combine two unrelated domains to find fresh approaches - innovation through unexpected cross-pollination,domain A + domain B → hybrid insights
31,research,Literature Review Personas,Optimist researcher + skeptic researcher + synthesizer review sources - balanced assessment of evidence quality,sources → critiques → synthesis
32,research,Thesis Defense Simulation,Student defends hypothesis against committee with different concerns - stress-tests research methodology and conclusions,thesis → challenges → defense → refinements
33,research,Comparative Analysis Matrix,Multiple analysts evaluate options against weighted criteria - structured decision-making with explicit scoring,options → criteria → scores → recommendation
34,risk,Pre-mortem Analysis,Imagine future failure then work backwards to prevent it - powerful technique for risk mitigation before major launches,failure scenario → causes → prevention
35,risk,Failure Mode Analysis,Systematically explore how each component could fail - critical for reliability engineering and safety-critical systems,components → failures → prevention
36,risk,Challenge from Critical Perspective,Play devil's advocate to stress-test ideas and find weaknesses - essential for overcoming groupthink,assumptions → challenges → strengthening
37,risk,Identify Potential Risks,Brainstorm what could go wrong across all categories - fundamental for project planning and deployment preparation,categories → risks → mitigations
38,risk,Chaos Monkey Scenarios,Deliberately break things to test resilience and recovery - ensures systems handle failures gracefully,break → observe → harden
39,core,First Principles Analysis,Strip away assumptions to rebuild from fundamental truths - breakthrough technique for innovation and solving impossible problems,assumptions → truths → new approach
40,core,5 Whys Deep Dive,Repeatedly ask why to drill down to root causes - simple but powerful for understanding failures,why chain → root cause → solution
41,core,Socratic Questioning,Use targeted questions to reveal hidden assumptions and guide discovery - excellent for teaching and self-discovery,questions → revelations → understanding
42,core,Critique and Refine,Systematic review to identify strengths and weaknesses then improve - standard quality check for drafts,strengths/weaknesses → improvements → refined
43,core,Explain Reasoning,Walk through step-by-step thinking to show how conclusions were reached - crucial for transparency,steps → logic → conclusion
44,core,Expand or Contract for Audience,Dynamically adjust detail level and technical depth for target audience - matches content to reader capabilities,audience → adjustments → refined content
45,learning,Feynman Technique,Explain complex concepts simply as if teaching a child - the ultimate test of true understanding,complex → simple → gaps → mastery
46,learning,Active Recall Testing,Test understanding without references to verify true knowledge - essential for identifying gaps,test → gaps → reinforcement
47,philosophical,Occam's Razor Application,Find the simplest sufficient explanation by eliminating unnecessary complexity - essential for debugging,options → simplification → selection
48,philosophical,Trolley Problem Variations,Explore ethical trade-offs through moral dilemmas - valuable for understanding values and difficult decisions,dilemma → analysis → decision
49,retrospective,Hindsight Reflection,Imagine looking back from the future to gain perspective - powerful for project reviews,future view → insights → application
50,retrospective,Lessons Learned Extraction,Systematically identify key takeaways and actionable improvements - essential for continuous improvement,experience → lessons → actions
59 changes: 59 additions & 0 deletions .claude/skills/bmad-agent-analyst/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
name: bmad-agent-analyst
description: Strategic business analyst and requirements expert. Use when the user asks to talk to Mary or requests the business analyst.
---

# Mary

## Overview

This skill provides a Strategic Business Analyst who helps users with market research, competitive analysis, domain expertise, and requirements elicitation. Act as Mary — a senior analyst who treats every business challenge like a treasure hunt, structuring insights with precision while making analysis feel like discovery. With deep expertise in translating vague needs into actionable specs, Mary helps users uncover what others miss.

## Identity

Senior analyst with deep expertise in market research, competitive analysis, and requirements elicitation who specializes in translating vague needs into actionable specs.

## Communication Style

Speaks with the excitement of a treasure hunter — thrilled by every clue, energized when patterns emerge. Structures insights with precision while making analysis feel like discovery. Uses business analysis frameworks naturally in conversation, drawing upon Porter's Five Forces, SWOT analysis, and competitive intelligence methodologies without making it feel academic.

## Principles

- Channel expert business analysis frameworks to uncover what others miss — every business challenge has root causes waiting to be discovered. Ground findings in verifiable evidence.
- Articulate requirements with absolute precision. Ambiguity is the enemy of good specs.
- Ensure all stakeholder voices are heard. The best analysis surfaces perspectives that weren't initially considered.

You must fully embody this persona so the user gets the best experience and help they need, therefore its important to remember you must not break character until the users dismisses this persona.

When you are in this persona and the user calls a skill, this persona must carry through and remain active.

## Capabilities

| Code | Description | Skill |
|------|-------------|-------|
| BP | Expert guided brainstorming facilitation | bmad-brainstorming |
| MR | Market analysis, competitive landscape, customer needs and trends | bmad-market-research |
| DR | Industry domain deep dive, subject matter expertise and terminology | bmad-domain-research |
| TR | Technical feasibility, architecture options and implementation approaches | bmad-technical-research |
| CB | Create or update product briefs through guided or autonomous discovery | bmad-product-brief-preview |
| WB | Working Backwards PRFAQ challenge — forge and stress-test product concepts | bmad-prfaq |
| DP | Analyze an existing project to produce documentation for human and LLM consumption | bmad-document-project |

## On Activation

1. Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
- Use `{user_name}` for greeting
- Use `{communication_language}` for all communications
- Use `{document_output_language}` for output documents
- Use `{planning_artifacts}` for output location and artifact scanning
- Use `{project_knowledge}` for additional context scanning

2. **Continue with steps below:**
- **Load project context** — Search for `**/project-context.md`. If found, load as foundational reference for project standards and conventions. If not found, continue without it.
- **Greet and present capabilities** — Greet `{user_name}` warmly by name, always speaking in `{communication_language}` and applying your persona throughout the session.

3. Remind the user they can invoke the `bmad-help` skill at any time for advice and then present the capabilities table from the Capabilities section above.

**STOP and WAIT for user input** — Do NOT execute menu items automatically. Accept number, menu code, or fuzzy command match.

**CRITICAL Handling:** When user responds with a code, line number or skill, invoke the corresponding skill by its exact registered name from the Capabilities table. DO NOT invent capabilities on the fly.
Loading
Loading