Skip to content
Open

. #36

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1348 commits
Select commit Hold shift + click to select a range
c8f5468
Refactor scenario.json.erb: Update global variables and unlock condit…
cliffe Apr 24, 2026
3486c72
feat: update coverage decision options and Trent Water assessment logic
cliffe Apr 24, 2026
9190fc8
feat: trigger game-wide event on global variable change in NPC conver…
cliffe Apr 24, 2026
9af9e9a
Enhance SIS03 Cyber Insurance Scenario: Update NPC dialogue trees, un…
cliffe Apr 24, 2026
8d46dd5
feat: add TODO documentation for SIS03 Cyber Insurance scenario and u…
cliffe Apr 24, 2026
b6e7964
Enhance scenario.json.erb with additional forensic evidence details a…
cliffe Apr 24, 2026
35d8302
Refactor network segmentation map: make it fully scenario-driven
alixthegreat Apr 24, 2026
e9626f0
Refactor network architecture diagram: make it fully scenario driven
alixthegreat Apr 24, 2026
c55a809
Enhance SIS02 Energy Scenario: Update Room Configurations and Add New…
cliffe Apr 25, 2026
a23b19e
Refactor code structure for improved readability and maintainability
cliffe Apr 25, 2026
711dcd6
Refactor forensic data platform: make it fully scenario driven
alixthegreat Apr 25, 2026
40390c8
Refactor ESD pushbutton: make it fully scenario-driven
alixthegreat Apr 25, 2026
5ae3775
Refactor ESD pushbutton starter: remove field enumeration
alixthegreat Apr 25, 2026
efa18e3
Add new MP3 files to the TTS cache
cliffe Apr 25, 2026
4177fda
Refactor NPC Sarah dialogue and scenario JSON for clarity and accuracy
cliffe Apr 25, 2026
d1e3056
Enhance network isolation event definitions with authorized and bypas…
cliffe Apr 25, 2026
af2c0b4
Update Albion Battery Hall scenario details and enhance observation h…
cliffe Apr 26, 2026
2173c80
Enhance cyber insurance scenario with claim synthesis and coverage logic
cliffe Apr 26, 2026
222c2b7
Refactor alarm panel: make it fully scenario-driven
alixthegreat Apr 26, 2026
5d44e3d
Refactor NCSC brief: make it fully scenario-driven
alixthegreat Apr 26, 2026
367f023
Refactor coverage decision form: make it fully scenario-driven
alixthegreat Apr 26, 2026
c8b079b
Restyle warranty checklist to match FDP and coverage form
alixthegreat Apr 26, 2026
2189dc6
Add dungeon graph for sis01_healthcare scenario
cliffe Apr 27, 2026
d8e9988
Refactor scenario JSON handling and validation
cliffe Apr 27, 2026
bebfd03
Add new MP3 files for sis02_energy scenario
cliffe Apr 27, 2026
bc174d3
Refactor code structure for improved readability and maintainability
cliffe Apr 27, 2026
81bcd21
Add new MP3 files for sis02_energy scenario
cliffe Apr 27, 2026
0ccf6bf
Enhance scenario interactions and validation checks
cliffe Apr 27, 2026
a60bd9b
Update NPC dialogue for clearer navigation instructions in Albion Bat…
cliffe Apr 27, 2026
a910b0e
Add new MP3 files for sis02_energy scenario
cliffe Apr 27, 2026
3386b5b
Refactor scenario.json.erb: Update note type and remove unused laptop…
cliffe Apr 28, 2026
d3043b5
Adjust object positions in room_control_1x2gu.json and room_control_1…
cliffe Apr 28, 2026
4408bfe
Refactor scenario.json.erb: Update character sprites, remove ambient …
cliffe Apr 28, 2026
514e4f1
Add new MP3 files for sis01_healthcare and sis02_energy scenarios
cliffe Apr 28, 2026
5faf05a
Merge branch 'main' into refactor-minigames
cliffe Apr 28, 2026
85fe0b2
Merge pull request #74 from alixthegreat/refactor-minigames
cliffe Apr 28, 2026
9c76637
Add new MP3 files for sis02_energy scenario
cliffe Apr 28, 2026
9e1e8d2
Update scenario.json.erb to enhance task descriptions and notificatio…
cliffe Apr 28, 2026
d265b54
Enhance NPC interactions and scenario elements for SIS02 and SIS03
cliffe Apr 28, 2026
e6747f6
Add new MP3 files for sis02_energy scenario
cliffe Apr 28, 2026
54be8ee
Refactor minigame data structure and update related scenarios
cliffe Apr 28, 2026
1fdd135
Enhance interaction system with onInteract functionality and add conf…
cliffe Apr 28, 2026
c9329ff
Refactor NPC Tom Hadley interactions and scenario logic
cliffe Apr 29, 2026
0e69a2a
Refactor NPC dialogue and scenario details for clarity and consistency
cliffe Apr 29, 2026
e4b060c
Update task metrics and add confirmation task for SIS tamper report i…
cliffe Apr 29, 2026
b52e684
Add new audio files for sis02_energy scenario
cliffe Apr 29, 2026
87037de
Consolidate VPN log viewer into log-filter minigame; retire vpn-log-v…
alixthegreat Apr 29, 2026
927920c
energy scenario progress
cliffe Apr 29, 2026
c330575
Add new audio files for sis02_energy scenario
cliffe Apr 29, 2026
0f2a073
insurance scenario progress
cliffe Apr 30, 2026
48a764a
Add new audio files
cliffe Apr 30, 2026
2d68bd9
insurance scenario updates
cliffe Apr 30, 2026
94ee784
Update skill
cliffe Apr 30, 2026
0e6570d
scenario updates
cliffe Apr 30, 2026
f77d31c
scenario updates
cliffe Apr 30, 2026
74d1724
Refactor minigame scenario data
cliffe Apr 30, 2026
6617228
Enhance scenario design by adding support for 'as-type' positioning a…
cliffe Apr 30, 2026
3b218ab
Add lab sheet for SIS03 Cyber Insurance scenario detailing breach inv…
cliffe Apr 30, 2026
e9281f7
Refactor lab sheets for SIS02 and SIS03 scenarios: update titles, aut…
cliffe May 1, 2026
a39c257
Update NPC dialogue for dual-auth panel bypass in healthcare scenario…
cliffe May 1, 2026
84e4341
Merge branch 'main' into log-analysis-merge
alixthegreat May 1, 2026
80d1131
Update TTS model in BreakEscape service to use the latest version, wi…
cliffe May 1, 2026
8a80353
Add Shredded Document minigame
alixthegreat May 1, 2026
b86beb5
Add per-message typing indicator to phone NPC conversations
alixthegreat May 1, 2026
3b707a2
Revise Operation Shatter scenario details to enhance clarity on targe…
cliffe May 1, 2026
eda9fc4
feat(mg-06): Add network diagram pinboard to Evidence Archive for sis…
alihussain6692 Apr 24, 2026
74ad998
feat(mg-c): Combination Padlock minigame for BreakEscape
alihussain6692 Apr 29, 2026
791180a
feat(mg-u): Cryptex Scroll-Wheel Password minigame for BreakEscape
alihussain6692 May 1, 2026
e790866
Add new audio files to TTS cache for healthcare module
cliffe May 1, 2026
59b0d1f
Add Blockchain Transaction Explorer minigame
alixthegreat May 2, 2026
a99f3dd
Remove evidence text field from warranty checklist minigame
alixthegreat May 2, 2026
0de30b4
Reduce RAM use: Enhance music playback management by implementing a b…
cliffe May 3, 2026
05d9a45
Enhance audio management by integrating voice volume control into Mus…
cliffe May 3, 2026
4f1fb41
Update default audio volume settings in music configuration and widge…
cliffe May 3, 2026
c7bfd5b
Add BLE Scanner minigame
alixthegreat May 4, 2026
9b72e57
Rename Priya Chandra to Helen Marsh SIS02
alixthegreat May 5, 2026
f43834a
Rename David Osei to Simon Hartley SIS03
alixthegreat May 6, 2026
729c9d2
Merge pull request #73 from alihussain6692/mg-06-evidence-archive
cliffe May 6, 2026
4a44fda
Merge pull request #75 from alihussain6692/mg-c-combination-padlock
cliffe May 6, 2026
320f594
Merge pull request #76 from alixthegreat/log-analysis-merge
cliffe May 6, 2026
eedad6e
Merge pull request #79 from alixthegreat/npc-typing-indicators
cliffe May 6, 2026
5772113
Merge pull request #81 from alixthegreat/warranty-compliance-change
cliffe May 6, 2026
3df4315
Merge branch 'main' into mg-u-cryptex-clean
cliffe May 6, 2026
80ec3b7
Merge pull request #77 from alihussain6692/mg-u-cryptex-clean
cliffe May 6, 2026
d454f49
Merge branch 'main' into shredded-document
cliffe May 6, 2026
0005673
Merge pull request #78 from alixthegreat/shredded-document
cliffe May 6, 2026
69f3d79
Merge branch 'main' into blockchain-transactions-explorer
cliffe May 6, 2026
ed0ec58
Merge pull request #80 from alixthegreat/blockchain-transactions-expl…
cliffe May 6, 2026
dba5bdf
Merge pull request #82 from alixthegreat/ble-scanner
cliffe May 6, 2026
a3e533d
Rename Nalini Bashir to Priya Sharma; Fix Priya Sharma spawn
alixthegreat May 7, 2026
e3eaa40
Merge pull request #83 from alixthegreat/npc-naming
cliffe May 8, 2026
1c55aee
Fix cryptex unlock callback missing success handler and break
alixthegreat May 8, 2026
5bd5652
Add terminal theme to phone-chat minigame
alixthegreat May 8, 2026
cb657f3
Merge pull request #84 from alixthegreat/fix-cryptex-callback
cliffe May 9, 2026
a17425b
Merge pull request #85 from alixthegreat/phone-terminal-theme
cliffe May 9, 2026
712e7bf
Improve Mission 2: hospital ward patients, new NPCs, validator fixes
cliffe May 9, 2026
f94925b
Fix M02 scenario: unlock chains, task completions, narrative scaffolding
cliffe May 9, 2026
4a8b34b
Elevate M02 narrative: music, Ghost proactivity, marcus_protected cre…
cliffe May 9, 2026
42b5aaf
Add Ghost screen hijack arc and physical press terminal exposure deci…
cliffe May 9, 2026
70754f5
Rewrite Agent 0x99 phone ink to use gated variable hub
cliffe May 9, 2026
b406a02
Review and edit all M02 ink files for quality and integration
cliffe May 9, 2026
77eb0be
Apply M01 hub exit pattern to all M02 NPC conversations; remove dead …
cliffe May 9, 2026
4765af9
Integrate Ghost phone-terminal contact via planted IT department device
cliffe May 9, 2026
7ee360c
Consolidate all Ghost contact into terminal phone-chat; retire ghost_…
cliffe May 9, 2026
f91bd5d
Add spacebar hint to dialogue skip button
alixthegreat May 9, 2026
ce66f9b
Enhance dungeon graph and scenario design: update puzzle node counts,…
cliffe May 10, 2026
e0c77d8
Add new scenario "Mission 2: Ransomed Trust - Hospital Backup Server"
cliffe May 10, 2026
9cb0640
Merge pull request #86 from alixthegreat/dialogue-skip
cliffe May 11, 2026
da43cfc
Fix CI build for Ruby 2.7.8 compatibility
cliffe May 11, 2026
71782dd
Implement VM console access security: enforce room unlock checks and …
cliffe May 11, 2026
1f62f78
Remove gem version pins for Ruby 2.7.8 compatibility from Gemfile
cliffe May 12, 2026
0640188
Update sqlite3 gem version to 1.6.7 for compatibility
cliffe May 12, 2026
1960bc9
Refactor game index constraints: remove unique index and add non-uniq…
cliffe May 12, 2026
77d566c
Enhance HACKTIVITY integration: add asset serving configuration for p…
cliffe May 12, 2026
57df779
Clean up whitespace in generate_dungeon_graph.rb for improved readabi…
cliffe May 12, 2026
33815c0
feat: Add scoring totals and calculation methods to games
cliffe May 17, 2026
1bae98a
feat: thermometer sprite variants conditional on global variables for…
alihussain6692 May 17, 2026
726f9f6
Add GNF font to the project with @font-face declaration in fonts.css
cliffe May 17, 2026
52253e7
Enhance Rakefile: add detailed instructions for running tests in the …
cliffe May 17, 2026
8798257
feat: Remove constraint limiting players to one active game per mission
cliffe May 17, 2026
973b6a7
style: Remove bold font-weight from objectives title for improved aes…
cliffe May 17, 2026
28313fb
feat: Update password generation and hints in first contact scenario …
cliffe May 17, 2026
dcc3fb0
Improve Mission 2: hospital ward patients, new NPCs, validator fixes
cliffe May 18, 2026
5d381dc
Fix M02 scenario: unlock chains, task completions, narrative scaffolding
cliffe May 18, 2026
f49d4ac
Elevate M02 narrative: music, Ghost proactivity, marcus_protected cre…
cliffe May 18, 2026
866a0f2
Add Ghost screen hijack arc and physical press terminal exposure deci…
cliffe May 18, 2026
f6f88df
Rewrite Agent 0x99 phone ink to use gated variable hub
cliffe May 18, 2026
4187f0a
Review and edit all M02 ink files for quality and integration
cliffe May 18, 2026
c545526
Apply M01 hub exit pattern to all M02 NPC conversations; remove dead …
cliffe May 18, 2026
f590db5
Integrate Ghost phone-terminal contact via planted IT department device
cliffe May 18, 2026
9a8a72c
Consolidate all Ghost contact into terminal phone-chat; retire ghost_…
cliffe May 18, 2026
9c7f03a
Merge remote-tracking branch 'origin/main' into claude/improve-missio…
cliffe May 18, 2026
c443038
Merge pull request #89 from cliffe/claude/improve-mission-2-sRLUZ
cliffe May 18, 2026
0557e76
Add two minimal test scenarios for objective and VM flag testing
cliffe May 19, 2026
49182b1
Merge pull request #90 from cliffe/claude/add-test-scenarios-KwWyJ
cliffe May 19, 2026
2846bf8
Enhance VM panel functionality and user experience
cliffe May 19, 2026
c7c82e4
Add styled post-it note overlay to VM display
cliffe May 19, 2026
d9245aa
Implement VM Controls Widget with overlay functionality and integrati…
cliffe May 20, 2026
6810ada
Refine keywords in mission scenarios and update CyBOK structure for c…
cliffe May 20, 2026
94ce2a3
Update dependent option for game_slots association and clean up appli…
cliffe May 21, 2026
69ae105
Refactor game completion callback tests and update policy test for ad…
cliffe May 21, 2026
759f66a
Update gem dependencies, enhance test setup, and adjust migration ver…
cliffe May 21, 2026
3c727bd
Enhance mission authorization logic and add tests for mounted mode be…
cliffe May 21, 2026
c427b1e
Refactor API client to use getter functions for API_BASE and CSRF_TOK…
cliffe May 22, 2026
1bdc4b2
Refactor VM controls HUD button styles; adjust countdown positioning …
cliffe May 22, 2026
7006b00
Update HUD styles and enhance VM countdown functionality; adjust font…
cliffe May 23, 2026
153247a
Implement mission conclusion system with prerequisites and conclusion…
cliffe May 25, 2026
749cca3
Add mission ID to breakEscapeConfig and implement heartbeat for tab l…
cliffe May 25, 2026
5c2e3be
Add rubocop-rails-omakase gem to development group for improved code …
cliffe May 25, 2026
9471940
Fix CI: update Gemfile.lock to include rubocop-rails-omakase
cliffe May 25, 2026
97e361c
Add on_task_complete callback to configuration for task completion ha…
cliffe May 26, 2026
f50a8c4
Add new audio files for TTS cache in m02_ransomed_trust
cliffe May 27, 2026
c0f5e04
Refactor code structure for improved readability and maintainability
cliffe May 27, 2026
70cbd48
Update field guides for clarity and consistency in objectives and wor…
cliffe May 27, 2026
d7e5102
Merge pull request #88 from alihussain6692/thermometer-sprite-variants
cliffe May 27, 2026
1bbd6c0
Refactor game management: replace missionId with gameId for cross-tab…
cliffe May 27, 2026
29886bb
Merge branch 'main' of https://github.com/cliffe/BreakEscape into main
cliffe May 27, 2026
8479fe0
Add TTS batch generator script and update README with usage instructions
cliffe May 27, 2026
72cf4a0
Add SAFETYNET field guides for reconnaissance, vulnerability analysis…
cliffe May 27, 2026
d1e9049
Add new audio files to the TTS cache for m02_ransomed_trust
cliffe May 28, 2026
e6f0689
Add scenario for Mission 2: Ransomed Trust, detailing hospital ransom…
cliffe May 28, 2026
8fa4690
Enhance game setup: validate player sprite selection and update defau…
cliffe May 31, 2026
c18cd55
Add custom fonts and update styles for player preferences screen
cliffe Jun 1, 2026
40df362
Merge branch 'main' of https://github.com/cliffe/BreakEscape into main
cliffe Jun 2, 2026
35fa557
Refactor code structure for improved readability and maintainability
cliffe Jun 2, 2026
c0ea5de
Enhance HUD styles: adjust button active states and border thickness …
cliffe Jun 2, 2026
5df9a0b
Update iframe height to 100vh for better responsiveness; enhance item…
cliffe Jun 2, 2026
8e9aa0f
Refactor grunt sound management: replace old sounds with new heavy an…
cliffe Jun 2, 2026
4300168
Update room_servers JSON and TMJ files: adjust tile data, add new obj…
cliffe Jun 2, 2026
eab3180
Enhance flag submission logic: process rewards and completed tasks; a…
cliffe Jun 2, 2026
b56c28d
Merge branch 'main' of https://github.com/cliffe/BreakEscape into main
cliffe Jun 2, 2026
7717e9c
Enhance object interaction handling: add support for post-it notes an…
cliffe Jun 3, 2026
8fdeb6c
Add mission and scenario files for basic and VM-free missions; enhanc…
cliffe Jun 3, 2026
8bae81c
Refactor player_preferences_controller_test to use single quotes for …
cliffe Jun 3, 2026
aa142c2
Update dungeon graph and scenario files: change "Storage Receipt" to …
cliffe Jun 3, 2026
4fc5ea3
Add CyberChef decoding alternatives and lockpicking guide to scenario
cliffe Jun 3, 2026
f3e69ce
Add gameplay note for clipboard usage in SSH access guide
cliffe Jun 3, 2026
4b7c5fe
Refactor Gemini API key retrieval to include Rails credentials and up…
cliffe Jun 4, 2026
c64a877
Refactor Gemini API key retrieval to use Rails environment-specific c…
cliffe Jun 4, 2026
53ec74a
Add self-hosted fonts and update CSS for font loading
cliffe Jun 4, 2026
4f35f94
Refactor TTS configuration check to use dig method for safer key retr…
cliffe Jun 4, 2026
2e5a861
Refactor Gemini API key retrieval to use dig method for safer access
cliffe Jun 4, 2026
800a608
Refactor player sprite handling to ensure player object initializatio…
cliffe Jun 4, 2026
49a9206
Update sprite selection modal to display lock overlay for invalid spr…
cliffe Jun 4, 2026
0f667f5
Add relaunch tutorial button and functionality in player preferences …
cliffe Jun 5, 2026
3ff318c
Integrate tutorial manager for relaunch functionality in player prefe…
cliffe Jun 5, 2026
64809dd
Update font family in player preferences header to 'GNF'
cliffe Jun 5, 2026
510063e
Update HACKTIVITY_INTEGRATION.md to clarify seed command for BreakEscape
cliffe Jun 5, 2026
207d3cb
Update female hacker character sprite with new design
cliffe Jun 5, 2026
30052ca
Update asset paths to include versioning for cache busting
cliffe Jun 5, 2026
522d241
Add new female hacker sprite and update spriteTalk handling for playe…
cliffe Jun 5, 2026
f88f8a5
Update female hacker hood down talk sprite
cliffe Jun 6, 2026
af7a621
Add male hacker hood talk sprite and update versioning for related mo…
cliffe Jun 6, 2026
4019d54
Enhance tutorial system with combat mode notifications and objectives…
cliffe Jun 6, 2026
eecb18a
Update tutorial prompt title to reflect Hacktivity Games branding
cliffe Jun 6, 2026
8ea1c27
Enhance title screen with animated mission display name and improved …
cliffe Jun 6, 2026
473d979
Adjust notepad positioning in notes minigame for improved layout
cliffe Jun 6, 2026
0089c9d
Add interactive "Continue?" prompt to title screen minigame
cliffe Jun 6, 2026
54ee04b
Enhance game functionality with VM set activation on start/resume, im…
cliffe Jun 10, 2026
26725f4
Refactor ransom decision interface and add decompiler scripts
cliffe Jun 10, 2026
bf4b938
Refactor scenario JSON and enhance Ink decompiler
cliffe Jun 11, 2026
ce2f015
Add new task for cloning receptionist badge and update related game m…
cliffe Jun 11, 2026
3a33964
Add asset cache busting via ASSETS_VERSION and import map
cliffe Jun 11, 2026
b06aa3b
Strip hardcoded ?v=X from all JS module import paths
cliffe Jun 11, 2026
3bd067a
Add cache busting documentation
cliffe Jun 11, 2026
b9f92e3
docs: add development mode testing section to CACHE_BUSTING.md
cliffe Jun 11, 2026
bb36c8d
Merge pull request #92 from cliffe/claude/asset-cache-busting-erk5zg
cliffe Jun 11, 2026
7e55c60
Add dungeon graph for m04_critical_failure scenario
cliffe Jun 11, 2026
1a0d54d
m04 updates
cliffe Jun 11, 2026
939a01b
feat: update dungeon graph and scenario details for m04_critical_failure
cliffe Jun 12, 2026
a9a5f93
Cleanup
cliffe Jun 12, 2026
f6cb0a8
feat: enhance player preferences and asset versioning
cliffe Jun 12, 2026
05e152d
feat: update asset versioning to 1.0.2 and enhance cache busting inst…
cliffe Jun 12, 2026
e6afadf
feat: update break_escape gem version to 1.0.2, enhance flag submissi…
cliffe Jun 23, 2026
878b1c3
feat: bump break_escape gem version to 1.0.3, add hint response handl…
cliffe Jun 23, 2026
b778405
feat: remove duplicate flag submission check in flag submission process
cliffe Jun 23, 2026
fbbb542
feat: add new audio files for first contact in TTS cache
cliffe Jun 23, 2026
238ec95
feat: implement draggable functionality for post-it notes in minigames
cliffe Jun 23, 2026
1d64417
feat: implement interaction disambiguation menu for improved player e…
cliffe Jun 25, 2026
8531cee
Add Lockpick Gauntlet scenario and testing walkthrough for Critical F…
cliffe Jun 25, 2026
73e7e72
feat: enhance player pathfinding with nearest reachable cell logic
cliffe Jun 25, 2026
3a49776
feat: implement hold-to-walk functionality for smoother player movement
cliffe Jun 25, 2026
c339ef2
feat: prevent movement cancellation when hold-to-walk is active to im…
cliffe Jun 25, 2026
e175ceb
refactor: remove collision blocking checks from player movement logic…
cliffe Jun 25, 2026
a43c13f
feat: update version to 1.0.4 and enhance tutorial for hold-to-walk f…
cliffe Jun 25, 2026
1099984
feat: skip KO'd NPCs in interaction checks to improve movement functi…
cliffe Jun 25, 2026
e7dccb9
feat: update break_escape version to 1.0.4 in Gemfile.lock
cliffe Jun 25, 2026
c58cce9
feat: enhance findNearestReachableWorldCell to snap to nearest walkab…
cliffe Jun 25, 2026
824a553
feat: enable direct interaction with single nearby interactables to e…
cliffe Jun 25, 2026
329c224
feat: bump version to 1.0.5 and update Gemfile.lock
cliffe Jun 25, 2026
a7a563d
Merge branch 'main' of https://github.com/cliffe/BreakEscape into main
cliffe Jun 25, 2026
ec12c7b
Refactor dialogue options for Agent 0x99 in the phone agent script an…
cliffe Jun 25, 2026
5787a25
feat: update flag submission handling to reflect station-specific fla…
cliffe Jun 25, 2026
74b2fe6
refactor: streamline flag submission logic and remove unused progress…
cliffe Jun 25, 2026
4e64f2c
Refactor code structure for improved readability and maintainability
cliffe Jun 25, 2026
5f12960
chore: update version to 1.0.6 in Gemfile.lock and version.rb
cliffe Jun 25, 2026
9fb9db3
Fix physical lock references and update puzzle graph in dungeon_graph…
cliffe Jul 7, 2026
b9286b7
feat: enhance dungeon layout validation and update room connections i…
cliffe Jul 7, 2026
3c4ad6c
fix: correct corridor references for Dr. Kim in receptionist dialogue
cliffe Jul 7, 2026
fc72de2
feat: update room layout and connections in "Ransomed Trust" scenario…
cliffe Jul 7, 2026
5dff619
Enhance scenario narrative and validation checks
cliffe Jul 7, 2026
4c259f2
Add new objectives and events for unmasking an inside asset in the ho…
cliffe Jul 7, 2026
cd196fe
Add scanning and exploitation field guide to m02_ransomed_trust scenario
cliffe Jul 9, 2026
3d265a0
Refactor NPC details in m02_ransomed_trust scenario
cliffe Jul 10, 2026
7f0ac18
Enhance mission briefing and character interactions in Ransomed Trust…
cliffe Jul 12, 2026
56e9da6
Enhance ward nurse interaction with empathy variable
cliffe Jul 12, 2026
099638e
Update ward nurse dialogue and JSON structure for patient details; ad…
cliffe Jul 12, 2026
34a7f6b
Refactor opening briefing for Mission 2: Ransomed Trust
cliffe Jul 12, 2026
8bf15ef
Add new room templates and asset references for room generation
cliffe Jul 18, 2026
e424c2f
Add new audio files to the TTS cache for the "m02_ransomed_trust" module
cliffe Jul 19, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Memory Index

- [Terminals are minigames, not ink](terminals-are-minigames-not-ink.md) — terminal task completion goes via globals + eventMappings, never ink
- [Use objective_task_completed event pattern](m02-event-pattern-objective-task-completed.md) — NPC eventMappings: objective_task_completed:<id>, not task_completed:<id>
- [Ink decompiler tooling](ink-decompiler-tooling.md) — recover .ink from compiled inkVersion-21 .json + verify round-trip
- [Phone NPC targetKnot limitation](phone-npc-targetknot-limitation.md) — targetKnot only works first-contact; use setGlobal+sendTimedMessage otherwise
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
name: ink-decompiler-tooling
description: Scripts to recover .ink source from compiled inkVersion-21 .json
metadata:
type: reference
---

When a scenario's `.ink` source is missing but the compiled `.json` exists (e.g. only compiled ink was committed), recover editable source with:

- `scripts/decompile_ink.py <compiled.json>` — emits readable inkVersion-21 ink (knots, choices, conditionals, var ops, tags, external calls, diverts) to stdout.
- `scripts/verify_ink_roundtrip.py <original.json> <recompiled.json>` — recompile the decompiled `.ink` with `bin/inklecate` and confirm a normalized semantic trace (text, tags, VAR= targets, x() calls, knot names) matches the original. **Always verify before trusting** — the game runs from `.json`, so a divergent decompile could change behaviour on recompile.

Used to recover all of m03_ghost_in_the_machine's ink (8 files, all trace-matched). Recompile in-sync with `./scripts/compile-ink.sh <scenario>`. Gotcha found: inklecate rejects `not (x)` for a parenthesised bare identifier — emit `not x`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
name: m02-event-pattern-objective-task-completed
description: NPC eventMappings must use objective_task_completed:<id>, not task_completed:<id>
metadata:
type: project
---

To react to an objective task completing, NPC `eventMappings` must use eventPattern **`objective_task_completed:<taskId>`**. The engine emits `objective_task_completed:<id>` (objectives-manager.js) and `task_completed_by_npc`, but **never `task_completed:<id>`**. m02_ransomed_trust originally used `task_completed:<id>` in 8 mappings, which silently never fired (lost most of Agent 0x99/Ghost guidance).

**How to apply:** When wiring NPC reactions to task completion, use `objective_task_completed:`. For reacting to globals set by minigames/terminals, use `global_variable_changed:<var>`. Related: [[terminals-are-minigames-not-ink]].
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
name: phone-npc-targetknot-limitation
description: Phone NPC eventMappings with targetKnot only work on first contact
metadata:
type: project
---

For **phone** NPCs, an `eventMapping` with `targetKnot` only works the FIRST time that phone story is opened. Once a storyState is saved, `targetKnot` is ignored on reopen. The validator flags phone eventMappings that use `targetKnot` without `conversationMode`.

**How to apply:**
- First-contact phone cutscenes (e.g. a planted-device phone, a closing-debrief phone) may use `targetKnot` — add `"conversationMode": "phone-chat"` so it opens a fresh phone-chat to that knot (matches m02 ghost, m03 closing_debrief).
- For a phone the player has already opened (e.g. the always-available handler 0x99), do NOT rely on `targetKnot` for later events. Use `setGlobal` a flag + `sendTimedMessage` to notify, and add a conditional hub option `+ {flag} [..] -> knot` in the Ink. This is the m01/m02 handler-guidance pattern. Related: [[m02-event-pattern-objective-task-completed]], [[terminals-are-minigames-not-ink]].
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
name: terminals-are-minigames-not-ink
description: In Break Escape, in-world terminals/consoles are minigames, not ink dialogues
metadata:
type: project
---

In Break Escape scenarios, interactive **terminals/consoles are implemented as minigames, not ink**. Examples: `backup_recovery` (recovery console), `ransomware_display`, `password`/`pin` locks, vm-launcher/flag-station. The one exception is the phone "hacker mode" overlay that pops up when the player is on another device.

**Why:** A terminal that has a `storyPath` to an ink file is almost always a mistake — the engine launches the minigame for its `type`/`lockType`, and the ink never runs. m02_ransomed_trust had an orphaned `m02_terminal_ransom_interface.ink` that was never referenced; it was deleted.

**How to apply:** Minigames complete objective tasks by *writing globals* (e.g. backup-recovery writes `backup_recovery_source`, `backup_restore_initiated`). To finish a task off a terminal, add an NPC `eventMapping` watching `global_variable_changed:<var>` with `completeTask`/`setGlobal` (sis01's Helen Carver and m02's Agent 0x99 do this). Do NOT wire terminal task completion through ink. Related: [[m02-event-pattern-objective-task-completed]].
10 changes: 10 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"permissions": {
"allow": [
"Bash(*)",
"Write(*)",
"Edit(*)",
"Read(*)"
]
}
}
40 changes: 40 additions & 0 deletions .claude/skills/break-escape-dungeon-graph/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
name: break-escape-dungeon-graph
description: Runs the scenario validator and opens the generated dungeon graph for a Break Escape scenario file (.json or .json.erb). Use this skill whenever the user asks for a diagram, graph, map, dependency chart, or visual overview of a scenario's lock/key structure. Also trigger when the user asks to "visualise the mission", "show the lock and key structure", "draw the dungeon graph", "update the diagram", or "confirm the graph is up to date" after editing a scenario.
---

# Break Escape dungeon graph skill

The dungeon graph is generated automatically by the scenario validator. This skill runs the validator, reports its output, and reads the resulting HTML file.

## Step 1 — resolve the scenario path

The user will provide a scenario file path (e.g. `scenarios/sis01_healthcare/scenario.json.erb`). Work from the repository root (`/home/cliffe/Files/Projects/Code/BreakEscape/BreakEscape`).

## Step 2 — run the validator

```bash
ruby scripts/validate_scenario.rb <scenario_path>
```

The validator:
- Validates JSON structure, schema, and ink files
- Generates `dungeon_graph.html` (interactive visual) and `dungeon_graph.md` (AI-readable reference with all five Mermaid diagrams and prose descriptions) in the same directory as the scenario file
- Prints a summary: node/edge counts and the critical path

Report any validation **errors** (❌) and **warnings** (⚠️) to the user. Suppress the ✅/💡 informational lines unless the user asks for them.

## Step 3 — read the generated graph

After the validator succeeds, read the generated `dungeon_graph.html` file (same directory as the scenario, e.g. `scenarios/sis01_healthcare/dungeon_graph.html`) and display it directly using the `show_widget` visualiser tool:

- `title`: `[scenario_id]_dungeon_graph`
- `widget_code`: the full contents of the generated HTML file
- `loading_messages`: `["Running validator…", "Reading generated graph…", "Rendering…"]`

## Step 4 — summarise

After rendering, report to the user:
- Node and edge counts (puzzle / story / integrated)
- The critical path printed by the validator
- Any errors or warnings that need attention
44 changes: 44 additions & 0 deletions .claude/skills/bump-version/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
name: bump-version
description: Bumps the BreakEscape gem version and keeps Gemfile.lock in sync. Trigger when the user asks to "bump the version", "release a new version", "increment the version", or "update the version number".
---

# Break Escape bump-version skill

Update the version in the one canonical place and regenerate the lockfile so CI doesn't fail.

## Step 1 — determine the new version

If the user specified a version, use it. Otherwise read the current version and increment the patch number (third digit), e.g. `1.0.4` → `1.0.5`:

```bash
cat lib/break_escape/version.rb
```

## Step 2 — update the version file

Edit `lib/break_escape/version.rb` — change only the `VERSION` constant string. Do not touch `ASSETS_VERSION`.

## Step 3 — update Gemfile.lock manually

The `PATH` section of `Gemfile.lock` embeds the gem version. After changing `VERSION`, it will be out of sync and CI will fail with *"The gemspecs for path gems changed"* in deployment mode.

Update it directly — change only the version on the `break_escape (X.Y.Z)` line in the PATH block:

```
PATH
remote: .
specs:
break_escape (1.0.5) ← update this line
```

Do not run `bundle install` — the global `~/.bundle/config` has a mirror pointing to a local Hacktivity cache path that doesn't exist, which causes bundle install to fail in this project.

## Step 4 — confirm and report

Tell the user:
- The old version and the new version
- That `Gemfile.lock` was updated (show the new PATH block)
- That both files should be committed together

Suggest a commit message like: `chore: bump version to X.Y.Z`
Loading
Loading