Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
283 commits
Select commit Hold shift + click to select a range
04592a9
feat(ai): upgrade dynamic models fetcher to use Select2 for an advanc…
hacklab-dgs Apr 1, 2026
22b3eb2
feat(ui): implement read-only mode for model input and reveal Select2…
hacklab-dgs Apr 1, 2026
777965c
fix(ai): improve prompt validator robustness and forbid Prompt Engine…
hacklab-dgs Apr 1, 2026
731eda0
fix(ai): aggressively enforce flat JSON array schema across all model…
hacklab-dgs Apr 1, 2026
a0b30bc
fix(ai): restore missing JSON schema formatting to the Prompt Enginee…
hacklab-dgs Apr 1, 2026
ca0f3ad
fix(ai): enforce verbatim copy of JSON rules in Prompt Engineer Assis…
hacklab-dgs Apr 1, 2026
7cae903
fix(ai): aggressively force LLM to include verbatim JSON output schem…
hacklab-dgs Apr 1, 2026
90f6561
fix(ui): correct skeleton loader IDs and tab initialization logic
hacklab-dgs Apr 1, 2026
17add6e
feat(debug): enhance JSON parser resilience and add secure API Debugg…
hacklab-dgs Apr 1, 2026
05ba7e6
fix(ai): prohibit LLMs from returning non-JEO keys like city or count…
hacklab-dgs Apr 1, 2026
8e03c9c
docs: document surgical JSON parser and negative key constraints in a…
hacklab-dgs Apr 1, 2026
b6fcc6e
fix(ai): enforce JEO JSON schema via setInstructions and optimize doc…
hacklab-dgs Apr 1, 2026
be813bb
feat(ai): enhance AI Logs dashboard with aggregate token usage per model
hacklab-dgs Apr 1, 2026
d81eadf
feat(ai): implement complete RAG architecture for semantic Knowledge …
hacklab-dgs Apr 2, 2026
88faf91
build: bump plugin version to 3.6.3-experimental
hacklab-dgs Apr 2, 2026
c85661a
feat(ai): add RAG feasibility check and UI locking
hacklab-dgs Apr 2, 2026
04e8c60
fix(security): enforce .htaccess protection on RAG vector store
hacklab-dgs Apr 2, 2026
6e7c4af
Fix i18n
leopiccionia Apr 7, 2026
a7554a1
Refactor AI georeferencing modal to own file
leopiccionia Apr 7, 2026
5b08487
Add preview map to AI geocoding modal
leopiccionia Apr 7, 2026
bb87232
Merge branch 'feature/experimental-neuron-ai' into feature/experimental
hacklab-dgs Apr 9, 2026
311747a
feat: remove Google Maps support and implement Legacy Bulk AI Geoloca…
hacklab-dgs Apr 14, 2026
d6f1192
ajustes
hacklab-dgs Apr 14, 2026
b6b49f1
chore: bump version to 3.6.4 and fix vendor packaging in build.sh
hacklab-dgs Apr 14, 2026
53fb227
fix: implement missing dashboard API endpoints and advanced filtering UI
hacklab-dgs Apr 15, 2026
94891d1
feat: improve bulk processor feedback, security in RAG loader, and Po…
hacklab-dgs Apr 15, 2026
c2b2f24
feat: implement confidence scoring system, relevance switcher, and ad…
hacklab-dgs Apr 15, 2026
8659545
feat: implement RAG backup system, dual-point timeline slider, and re…
hacklab-dgs Apr 15, 2026
6af2595
refactor: standardize geodata keys to lng, update IA mandates in GEMI…
hacklab-dgs Apr 15, 2026
98e76ca
fix: resolve NaN coordinate errors in manual georeferencing and imple…
hacklab-dgs Apr 15, 2026
634020b
refactor: global lng standardization and NaN coordinate protection ac…
hacklab-dgs Apr 16, 2026
d580ac6
feat: implement geodata enrichment, relevance switcher, and finalize …
hacklab-dgs Apr 16, 2026
ab9d4ba
feat: implement full address enrichment (street, number, postcode) in…
hacklab-dgs Apr 16, 2026
5904252
feat: migrate AI settings to a dedicated top-level menu with native t…
hacklab-dgs Apr 16, 2026
fdda8af
refactor: nest AI settings under JEO main menu as 'AI (novo)' with na…
hacklab-dgs Apr 16, 2026
eb605d9
refactor: reorder AI (novo) submenu to appear after Dashboard and bef…
hacklab-dgs Apr 16, 2026
06dff24
feat: implement secure API key vault with smart sanitization and dyna…
hacklab-dgs Apr 16, 2026
0cb8ae0
release: v3.6.5 - secure API key vault, modular AI settings, RAG back…
hacklab-dgs Apr 16, 2026
10a49a4
feat: refine AI settings UI with native tabs, skeleton loader, and fu…
hacklab-dgs Apr 17, 2026
cd5c250
feat: decouple RAG embeddings from main AI provider, support fallback…
hacklab-dgs Apr 17, 2026
596853c
fix: enforce explicit embedding model selection and correct gemini em…
hacklab-dgs Apr 17, 2026
6fc287f
fix: unblock knowledge base tab to allow embedding model selection
hacklab-dgs Apr 17, 2026
c28c945
docs(gemini): contextualize RAG decoupling, Gemini API rules, sync ba…
hacklab-dgs Apr 17, 2026
15d85c0
fix: resolve background indexing UX deadlock, correct CPT progress co…
hacklab-dgs Apr 17, 2026
3c28cbb
feat: implement internal WP-Cron logging system and render execution …
hacklab-dgs Apr 17, 2026
eea6b82
docs(gemini): document background logging protocol, CPT progress bar …
hacklab-dgs Apr 17, 2026
b9c1337
fix: remove infinite loop from manual bulk processing endpoint
hacklab-dgs Apr 17, 2026
23ef45b
docs(gemini): formally prohibit pre_option hooks for temporary overri…
hacklab-dgs Apr 17, 2026
bbc4e88
chore: bump version to 3.6.5 across configuration files and documenta…
hacklab-dgs Apr 17, 2026
27b3366
refactor: map _geocode_lng back to _geocode_lon across all react comp…
hacklab-dgs Apr 17, 2026
4480d6d
fix: cast map coordinates to float in React to comply with WP REST AP…
hacklab-dgs Apr 17, 2026
5024eff
fix: enforce strict PHP float casting in metadata sanitizer to preven…
hacklab-dgs Apr 17, 2026
02959d2
fix: recursively sanitize legacy meta point coordinates in Javascript…
hacklab-dgs Apr 17, 2026
976a563
fix: ensure bulk clear and reset all completely erase legacy and AI-g…
hacklab-dgs Apr 17, 2026
3f67fac
refactor: enforce 'lon' over 'lng' for geodata and make RAG backups s…
hacklab-dgs Apr 21, 2026
5b6eec2
Merge develop into feature/experimental, resolving conflicts
hacklab-dgs Apr 21, 2026
7649c68
remove files not used
hacklab-dgs Apr 21, 2026
04b867b
Fix plugin build
leopiccionia Apr 22, 2026
10d88ce
Restore content from merge
leopiccionia Apr 22, 2026
b243327
Check if storymap CPT is not empty before assigning its template
leopiccionia Apr 23, 2026
ab3af28
Update Composer lockfile
leopiccionia Apr 23, 2026
c145250
List only text-based models (#534)
leopiccionia Apr 23, 2026
1144123
Remove dependency on Carto
leopiccionia Apr 24, 2026
435c601
Add clusters to dashboard map (#538)
leopiccionia Apr 24, 2026
14e8473
Style range picker
leopiccionia Apr 24, 2026
8c48a61
Improve styling of timeline range
leopiccionia Apr 24, 2026
3a37922
Add AI-aware documentation
leopiccionia Apr 24, 2026
9ab5bb9
Add PHPDoc comments
leopiccionia Apr 24, 2026
73c153c
Lint PHP code
leopiccionia Apr 24, 2026
446bd30
Lint PHP code: warnings
leopiccionia Apr 24, 2026
8d9f0c0
Stories Near You (WIP)
leopiccionia Apr 29, 2026
39881cc
Stories Near You: Improve styling on dark themes
leopiccionia Apr 29, 2026
b111553
Fix content toggles
leopiccionia Apr 29, 2026
5a189bb
Add post-author to Stories Near You
leopiccionia Apr 29, 2026
620914f
Fix HTML output
leopiccionia Apr 29, 2026
2fff735
Tentatively fix map/layer preview in WP 6.x
leopiccionia Apr 29, 2026
6bba9d5
Revert breaking change on default longitude field
leopiccionia Apr 29, 2026
a923722
Add thumbnail placeholder; support co-authors; fix back-end rendering
leopiccionia Apr 29, 2026
55a1029
Add `zip` extension on smoke test
leopiccionia Apr 29, 2026
5a87d59
Minilayers API backend (WIP)
leopiccionia Apr 30, 2026
82a2028
Layers RAG pipeline (WIP)
leopiccionia May 1, 2026
d24b1c0
Minimaps block (WIP)
leopiccionia May 1, 2026
4df23aa
Tentatively fix PHPCS
leopiccionia May 1, 2026
7c8fd55
Hue name should never be null
leopiccionia May 5, 2026
09dc06a
Minimap should prefer stylizable layers
leopiccionia May 5, 2026
a228deb
Show error if trying to use Minimap without Mapbox API key
leopiccionia May 5, 2026
0821714
Revert `center_lng` to `center_lon` for backwards compatibility
leopiccionia May 6, 2026
12057ec
Try to fix map layer rendering in one-time maps
leopiccionia May 6, 2026
ffb9351
Fix minimap popups
leopiccionia May 6, 2026
d41f532
Fix resolution of retina layers
leopiccionia May 6, 2026
cd1a335
Fix language handling in minimaps
leopiccionia May 6, 2026
ba49316
Allow customizing the style of vector layers (MVP)
leopiccionia May 7, 2026
d2cc7b7
Optimize layer rendering
leopiccionia May 8, 2026
9d07678
Re-use decoding function
leopiccionia May 8, 2026
4300748
Tentatively fix some CI steps
leopiccionia May 8, 2026
72bf193
Tentatively fix some CI steps
leopiccionia May 8, 2026
79a4bc4
Toggle minimap generation on button; some cleanup
leopiccionia May 11, 2026
cf486b9
Allow generating minimap from text prompt (WIP)
leopiccionia May 11, 2026
39b2ddc
fix(settings, compliance, docs): sanitize mapbox runtime, fix WP.org …
hacklab-dgs May 12, 2026
10e9658
docs(AGENTS): align AGENTS.md with codebase reality after deep audit
hacklab-dgs May 12, 2026
325cdae
fix(privacy, security, compliance): resolve all WP.org critical and h…
hacklab-dgs May 12, 2026
2de362c
docs(architecture, AGENTS): document privacy, security, and complianc…
hacklab-dgs May 12, 2026
56ff603
Merge branch 'feature/experimental' into feature/minimap
leopiccionia May 12, 2026
4736a6f
feat(uninstall): add explicit confirmation screen before plugin deletion
hacklab-dgs May 12, 2026
e88e4e9
feat(dev): add Docker-based local WordPress dev environment
hacklab-dgs May 12, 2026
11d3a68
New UI for minimap block
leopiccionia May 12, 2026
d17471e
fix(ai): graceful error handling when AI API key is missing
hacklab-dgs May 12, 2026
062bbb3
Restore geocoding from prompt
leopiccionia May 12, 2026
4ea56eb
Conversational minimap generation (WIP)
leopiccionia May 13, 2026
bc33263
Improve minimap message output; lint code
leopiccionia May 13, 2026
1a937d9
Minimap UI refinements
leopiccionia May 13, 2026
a84c835
Minimap UI refinements
leopiccionia May 13, 2026
89340b2
fix(build): force NODE_ENV=production in build:assets script
hacklab-dgs May 13, 2026
457df61
fix(ai-settings): add skeleton reveal script to main-page template
hacklab-dgs May 13, 2026
7a56622
Integration with minilayers
leopiccionia May 13, 2026
b5db651
Tentatively avoid re-renderings
leopiccionia May 13, 2026
bcb2538
feat(ai): enhance AI Prompt Engineer Assistant with calibration contr…
hacklab-dgs May 13, 2026
36b33dc
fix: add file_exists guards for .asset.php includes and AI provider v…
hacklab-dgs May 14, 2026
f02aee5
feat: configurable confidence thresholds for primary/secondary/disabl…
hacklab-dgs May 14, 2026
ce7992f
ui: move Primary/Secondary threshold controls below Minimum Confidence
hacklab-dgs May 14, 2026
ebb8d7e
feat: add is_primary boolean field to AI georeferencing response
hacklab-dgs May 14, 2026
3d9789b
feat: configurable primary/secondary pin icon URLs with CDN fallback
hacklab-dgs May 14, 2026
8af0db9
fix: correct jsDelivr fallback URLs for leaflet-color-markers
hacklab-dgs May 14, 2026
6226412
feat: fullscreen map with collapsible overlay panel in geolocation mo…
hacklab-dgs May 14, 2026
6c6fb52
feat(ai): fullscreen map modals with draggable panel and new AI Setti…
hacklab-dgs May 14, 2026
a9c3172
feat(build): add release build script and ignore dist artifacts
hacklab-dgs May 14, 2026
9432b15
feat(ai): add Retry AI button to approval modal
hacklab-dgs May 14, 2026
7105c93
Allow prompt-based minimap to access post content and chat history
leopiccionia May 14, 2026
aac3cb7
feat(ai): implement NeuronAI Structured Output for georeferencing
hacklab-dgs May 14, 2026
80b1062
Merge branch 'feature/experimental' into feature/minimap
hacklab-dgs May 14, 2026
ba2b812
chore: bump minimum PHP requirement from 8.2 to 8.3
hacklab-dgs May 15, 2026
0cef39c
feat(dev): add easy PHP version switching for Docker environment
hacklab-dgs May 15, 2026
bd89098
Adjust PHP compatibility
leopiccionia May 19, 2026
6f9f4c2
feat(ai): add WP_User_Memory_Storage to normalize memory namespace
leopiccionia May 19, 2026
49cfc67
chore: Fix CI
leopiccionia May 19, 2026
132ba4d
Segregate dev and prod Composer dependencies
leopiccionia May 19, 2026
03527ef
chore: Update dependencies
leopiccionia May 19, 2026
e981988
Ensure Minilayer_Agent runs in agent mode
leopiccionia May 19, 2026
81968f0
feat(ai): make default prompt calibration-aware and add primary/secon…
hacklab-dgs May 19, 2026
a2e1f7a
docs(agents): document AI prompt calibration convention
hacklab-dgs May 19, 2026
10590f0
Add tools restriction to post analyzer
leopiccionia May 19, 2026
7781a50
Tentatively fix Gemini structured output
leopiccionia May 19, 2026
12ad77d
Merge branch 'origin/feature/experimental' into feature/experimental
hacklab-dgs May 19, 2026
355ecd9
fix(rag): configurable topK, layer deduplication, and minimap fronten…
hacklab-dgs May 19, 2026
129444d
docs(architecture): document configurable RAG topK and minimap fronte…
hacklab-dgs May 19, 2026
499a468
fix(minimap): validate agent layer IDs and remove destructive Map key…
hacklab-dgs May 19, 2026
44e71fe
Merge branch 'feature/minimap' into feature/experimental
hacklab-dgs May 19, 2026
9b27944
modified composer.lock
hacklab-dgs May 19, 2026
b3364ee
feat(build): auto-detect Node 24 via nvm fallback in install-and-buil…
hacklab-dgs May 19, 2026
e07442c
refactor(ai): Phase 1 — unified factory, tool registry, REST permissions
hacklab-dgs May 20, 2026
c72f9ab
refactor(ai): Phase 2 — unified prompt builder + georeferencing conve…
hacklab-dgs May 20, 2026
9d9d3ab
refactor(ai): migrate Minilayer to hacklabr/ai-assistant with native MCP
hacklab-dgs May 20, 2026
86c326d
style(bulk): fix WPCS violations in class-bulk-processor.php
hacklab-dgs May 20, 2026
2c04bc3
feat(ai): enable structured output by default with UI disclaimers
hacklab-dgs May 20, 2026
6e493b1
fix(ai): correct namespace reference for AI_REST_Permissions in Minil…
hacklab-dgs May 20, 2026
7f1d68c
Make post ID required for prompt-based minimaps
leopiccionia May 21, 2026
ab4ce26
Hide CPT options from map blocks sidebars
leopiccionia May 21, 2026
f58f2a9
Improve minilayer generation
leopiccionia May 22, 2026
d3ed23a
Implement deduplication on Stories Near You block
leopiccionia May 25, 2026
1338d14
Move Stories Near You towards Newspack Blocks parity
leopiccionia May 25, 2026
ae81b00
Stories Near You use native Gutenberg rendering, fix de-duplication
leopiccionia May 25, 2026
fa36be1
Fix rendering of Stories Near You block in Newspack
leopiccionia May 25, 2026
588b86a
feat: add AI Context Assistant for editorial paragraph generation
hacklab-dgs May 26, 2026
3ec8315
Improve consent handling in Stories Near You block
leopiccionia May 26, 2026
62365a8
feat: add toggle and default prompt reference for Context Assistant s…
hacklab-dgs May 26, 2026
157786c
Move 'Embedded Data' tab from main nav to link inside Settings tab
hacklab-dgs May 26, 2026
a6e2f0a
Configure user location granularity on Stories Near You block
leopiccionia May 26, 2026
207468c
Improve skeleton rendering in Gutenberg
leopiccionia May 26, 2026
db25cfc
Allow inline HTML in context assistant paragraphs
hacklab-dgs May 26, 2026
129b00b
Fix copy button and add HTML entity decoding for context paragraphs
hacklab-dgs May 26, 2026
99ce119
Fix Copy button to preserve rich text (HTML links/formatting)
hacklab-dgs May 26, 2026
bd36e5b
Strengthen execCommand copy with focus and reflow for iframe editors
hacklab-dgs May 26, 2026
517eac8
Reforce grid
leopiccionia May 26, 2026
8f28a0b
Improve chat message sanitization to strip inline JSON schema noise
hacklab-dgs May 26, 2026
e647335
Store clean chat messages separately to avoid JSON schema pollution
hacklab-dgs May 26, 2026
0ff14c2
docs: Update AGENTS.md and architecture docs for Context Assistant ch…
hacklab-dgs May 26, 2026
01a9067
Add retry, content validation, retry/clear buttons, and user badges
hacklab-dgs May 26, 2026
4f8ba28
docs: Update AGENTS.md and architecture docs for new Context Assistan…
hacklab-dgs May 26, 2026
9cfb9a8
Fix retry context, badge position, timestamp, and prevent double insert
hacklab-dgs May 26, 2026
515f6cc
Revamp docs text, add new sections
leopiccionia May 26, 2026
780223a
Fix Markdown
leopiccionia May 26, 2026
c2f16cf
Add some new screenshots to docs
leopiccionia May 26, 2026
ddfa238
Localize more strings
leopiccionia May 26, 2026
891e139
Remove redundant translation hook
leopiccionia May 26, 2026
26f82d8
First interaction now asks clarifying questions before generating par…
hacklab-dgs May 27, 2026
53caf11
Force AI responses in WordPress site language
hacklab-dgs May 27, 2026
ca115e9
Restore screenshots removed by AI
leopiccionia May 27, 2026
3004cdc
Make AI retry more resilient to network errors and timeouts
hacklab-dgs May 27, 2026
88e257b
Strip HTML tags from assistant_message and message fields
hacklab-dgs May 27, 2026
e71f61b
Merge branch 'feature/experimental' into feature/experimental-context…
hacklab-dgs May 27, 2026
b4de749
Add final screenshots to docs, refine dev docs
leopiccionia May 27, 2026
874b943
Merge branch 'feature/experimental' of github.com:InfoAmazonia/jeo-pl…
leopiccionia May 27, 2026
0c0d3fa
Document AI content assistant (WIP)
leopiccionia May 27, 2026
60e47c9
Improve styling of Stories Near You block
leopiccionia May 27, 2026
4a8ad7c
Improve styling of Stories Near You block
leopiccionia May 27, 2026
670442d
Move MkDocs site to path /docs
leopiccionia May 27, 2026
15360eb
Add prints to AI assistant docs
leopiccionia May 29, 2026
722f517
Add more documentation about AI usage in JEO
leopiccionia May 29, 2026
7bb5e17
Merge branch 'develop' into feature/experimental
leopiccionia Jun 8, 2026
d9d825b
Merge branch 'develop' into feature/experimental
leopiccionia Jun 8, 2026
cd6bf70
Improve CI
leopiccionia Jun 8, 2026
9788637
Improve CI
leopiccionia Jun 8, 2026
fa418e9
Merge branch 'develop' into feature/experimental
leopiccionia Jun 8, 2026
18f259d
Merge branch 'develop' into feature/experimental
leopiccionia Jun 11, 2026
20886ca
Remove missing files from docs nav
leopiccionia Jun 11, 2026
e8eca82
Run `npm audit fix`
leopiccionia Jun 12, 2026
3c4efdf
Update dependencies and size report
leopiccionia Jun 12, 2026
1014739
Improve i18n strings
leopiccionia Jun 12, 2026
f1d192f
Replace text domain
leopiccionia Jun 12, 2026
429a481
Merge branch 'develop' into feature/experimental
leopiccionia Jun 12, 2026
7b1ac57
Add skeleton to avoid users stuck in skeleton phase
leopiccionia Jun 15, 2026
61709d9
Lint code
leopiccionia Jun 15, 2026
86e62a1
Fix Git merge
leopiccionia Jun 17, 2026
d28c6f2
Fix posts ordering in Stories Near You block
leopiccionia Jun 17, 2026
dc53763
Don't use over-precise locations in Stories Near You block
leopiccionia Jun 17, 2026
48746f8
Improve handling of style layers in editor
leopiccionia Jun 18, 2026
b068e0d
Fix missing import
leopiccionia Jun 18, 2026
bbcdda8
Fix missing import
leopiccionia Jun 18, 2026
7dacd97
feat(ai): add Context Assistant prompt engineering and WP-CLI Docker …
hacklab-dgs Jun 19, 2026
4e12411
feat(context): redesign Context Assistant prompt generator to match P…
hacklab-dgs Jun 19, 2026
13be35a
feat(context): transparent structured-output storage for custom prompt
hacklab-dgs Jun 19, 2026
c0b99fd
docs(context): document structured-output storage for ai_context_prompt
hacklab-dgs Jun 19, 2026
e5b24ba
Improve map and layer previews performance
leopiccionia Jun 19, 2026
9de562b
Map default longitude should be used in preview
leopiccionia Jun 19, 2026
d4c4f45
feat(minimap, stories-near-you): Phase 1-2 validation and RAG improve…
hacklab-dgs Jun 19, 2026
d5b0a41
Merge branch 'feature/experimental' of github.com:InfoAmazonia/jeo-pl…
hacklab-dgs Jun 19, 2026
0ea9505
Allow filtering stories by radius
leopiccionia Jun 19, 2026
e007782
feat(build): add self-contained WordPress ZIP builder
hacklab-dgs Jun 19, 2026
7290df6
feat(minimap): Phase 3 — refinement stability
hacklab-dgs Jun 20, 2026
2e4f583
feat(minimap): Phase 1-2 — UX fixes, RAG improvements and layer reasons
hacklab-dgs Jun 20, 2026
b5956b5
feat(stories-near-you): Phase 4.4-4.6 — ordering, scoring and age filter
hacklab-dgs Jun 20, 2026
61275e7
feat(minimap, layers): Phase 4.1-4.3 — layer themes, proactive admin …
hacklab-dgs Jun 20, 2026
0549f2c
docs(architecture): update minimap and stories-near-you READMEs
hacklab-dgs Jun 20, 2026
5d61a29
feat(build): add self-contained WordPress ZIP builder
hacklab-dgs Jun 20, 2026
c039e5c
feat(minimap, stories-near-you): port Phases 3-4 from feature/experim…
hacklab-dgs Jun 20, 2026
4f6cc35
fix(settings): ensure map default lat/lon are floats in frontend config
hacklab-dgs Jun 20, 2026
be2bc19
feat(editor): port preview architecture from feature/experimental
hacklab-dgs Jun 20, 2026
ddc8b61
fix(minimap,stories,context): address editorial feedback (Carolina/Ju…
hacklab-dgs Jun 21, 2026
7a12f8b
Merge branch 'feature/experimental-correcoes-2026-06-19' into feature…
hacklab-dgs Jun 21, 2026
1cd5173
Add claude context
hacklab-dgs Jun 23, 2026
99c07e5
build(scripts): unify release scripts and fix Node 24 check
hacklab-dgs Jun 23, 2026
82de631
build(scripts): preflight required PHP extensions before composer
hacklab-dgs Jun 23, 2026
e971756
Merge branch 'develop' into feature/experimental
leopiccionia Jun 23, 2026
dad0e8a
Tentatively fix merge
leopiccionia Jun 23, 2026
524f2dd
Merge branch 'feature/experimental' of github.com:InfoAmazonia/jeo-pl…
hacklab-dgs Jun 23, 2026
2a0d4ae
Translate remaining strings
leopiccionia Jun 23, 2026
7d2d159
Merge branch 'feature/experimental' of github.com:InfoAmazonia/jeo-pl…
leopiccionia Jun 23, 2026
670ae0a
Add translator comments
leopiccionia Jun 23, 2026
9e3431f
Chore: Update PHP dependencies
leopiccionia Jun 23, 2026
6a5f713
Make plugin check action fail on errors
leopiccionia Jun 23, 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
  •  
  •  
  •  
163 changes: 163 additions & 0 deletions .architecture/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
# JEO Plugin — Architecture for AI Agents

> **Navigation index** — consult the files below based on your current task.

## Quick Reference

| Task | File |
|------|------|
| Create/modify Gutenberg blocks | [`blocks/README.md`](blocks/README.md) |
| Work with maps (CPT `map`) | [`maps/README.md`](maps/README.md) |
| Work with layers | [`layers/README.md`](layers/README.md) |
| Geocoding, post geolocation | [`geocoding/README.md`](geocoding/README.md) |
| Storymap (scrollytelling) | [`storymap/README.md`](storymap/README.md) |
| Discovery feature | [`discovery/README.md`](discovery/README.md) |
| Stories Near You block | [`stories-near-you/README.md`](stories-near-you/README.md) |
| AI integration (georef, RAG, bulk, minilayer) | [`ai/README.md`](ai/README.md) |
| Minilayer (AI-generated layers) | [`minilayer/README.md`](minilayer/README.md) |
| AI Context (editorial suggestions) | [`context/README.md`](context/README.md) |
| Minimap (AI-assisted map block) | [`minimap/README.md`](minimap/README.md) |
| REST API endpoints | [`rest-api/README.md`](rest-api/README.md) |
| Settings, admin pages | [`settings/README.md`](settings/README.md) |
| Frontend: MapLibre/Mapbox, React, iframe | [`frontend/README.md`](frontend/README.md) |
| Templates PHP/EJS, shortcodes, embeds | [`templates/README.md`](templates/README.md) |
| Build (webpack), scripts, CI | [`build/README.md`](build/README.md) |
| Deploy to WordPress.org | [`deployment/README.md`](deployment/README.md) |

## Project Overview

```
jeo-plugin/
├── src/ # WordPress plugin (deployed as-is)
│ ├── jeo.php # Main entry point (PHP 8.2+)
│ ├── includes/ # Backend PHP
│ │ ├── class-jeo.php # Central orchestrator (Singleton)
│ │ ├── loaders.php # PSR-0 autoloader + global functions
│ │ ├── maps/ # CPT `map`
│ │ ├── layers/ # CPT `map-layer`
│ │ ├── layer-types/ # Layer types + JS renderers
│ │ ├── legend-types/ # Legend types + JS renderers
│ │ ├── geocode/ # Geocoders (Nominatim, Mapbox)
│ │ ├── storymap/ # CPT `storymap`
│ │ ├── ai/ # AI: georef, RAG, bulk, providers
│ │ ├── settings/ # Settings page
│ │ ├── sidebars/ # Gutenberg sidebars (assets)
│ │ ├── menu/ # Admin menu
│ │ ├── admin/ # Dashboard + Welcome pages
│ │ ├── cli/ # WP-CLI commands
│ │ └── traits/ # Singleton, Rest_Validate_Meta
│ ├── js/
│ │ ├── src/ # JS/React source
│ │ │ ├── lib/ # MapLibre/Mapbox abstraction
│ │ │ ├── jeo-map/ # Frontend map rendering
│ │ │ ├── map-blocks/ # Gutenberg blocks
│ │ │ ├── layers-sidebar/ # Layer editor sidebar
│ │ │ ├── maps-sidebar/ # Map editor sidebar
│ │ │ ├── posts-sidebar/ # Geolocation sidebar
│ │ │ ├── posts-selector/ # Related posts selector
│ │ │ ├── jeo-storymap/ # Storymap display
│ │ │ ├── discovery/ # Discovery app
│ │ │ ├── icons/ # SVG/PNG assets
│ │ │ └── shared/ # Hooks, utils, shared components
│ │ └── build/ # Build output (webpack)
│ ├── css/ # SCSS
│ ├── templates/ # PHP + EJS templates
│ └── languages/ # .pot / translations
├── scripts/ # Build and CI scripts
├── docs/ # MkDocs documentation
└── .github/workflows/ # CI/CD
```

## Stack

| Layer | Technology |
|-------|-----------|
| Backend | PHP 8.2+, WordPress 6.x |
| Frontend | React 18, WordPress Element, Gutenberg Data |
| Maps | MapLibre GL JS (default) / Mapbox GL JS (optional) |
| Build | Webpack 5, @wordpress/scripts |
| Lint | PHPCS (WPCS), ESLint (via wp-scripts) |
| Tests | Jest (JS), PHPUnit (PHP) |
| AI | NeuronAI (10 providers: Gemini, OpenAI, DeepSeek, etc.) |

## Key Conventions

- **PHP**: PSR-0 autoloading (`Jeo\ClassName` → `class-class-name.php`), WPCS coding standards
- **Singleton**: All main classes use `Jeo\Singleton` trait
- **Global accessors**: `jeo()`, `jeo_maps()`, `jeo_layers()`, `jeo_settings()`, etc.
- **Meta REST**: `_related_point` for geolocation, registered with full REST schema
- **Iframe compat**: Extensive patching for Block API v3 (Gutenberg iframe editor)
- **JS entries**: Each webpack entry point is independent; `dependOn` for shared chunks

## Architecture Diagram (C4 Container)

```mermaid
graph TB
User[User/Editor] --> WP[WordPress]
WP --> JEO[JEO Plugin PHP]
JEO --> DB[(WordPress DB)]
JEO --> REST[REST API /jeo/v1/]
REST --> GB[Gutenberg Blocks/Sidebars]
GB --> ML[MapLibre GL / Mapbox GL]
JEO --> AI[AI Providers]
JEO --> GEO[Geocoding APIs]
JEO --> MCP[Mapbox DevKit MCP]
AI --> RAG[RAG Vector Store]
ML --> Tiles[Tile Servers]

subgraph Frontend JS
GB
ML
end

subgraph External APIs
AI
GEO
Tiles
end
```

## Data Model

```mermaid
erDiagram
MAP ||--o{ MAP_LAYER : "has layers"
MAP ||--o{ POST : "related posts"
POST ||--o{ RELATED_POINT : "geolocated at"
STORYMAP ||--o{ CHAPTER : "has chapters"
STORYMAP ||--o{ MAP_LAYER : "chapter layers"
MAP_LAYER ||--|| LAYER_TYPE : "type of"
MAP_LAYER ||--|| LEGEND_TYPE : "displayed as"

MAP {
int ID PK
float center_lat
float center_lon
int initial_zoom
json layers
json pan_limits
json related_posts
}
MAP_LAYER {
int ID PK
string type
json layer_type_options
string source_url
string legend_type
json legend_type_options
}
POST {
int ID PK
}
RELATED_POINT {
float lat
float lon
string city
string region
string country
int relevance
}
STORYMAP {
int ID PK
}
```
Loading
Loading