Add typeof checks for all function calls to modules loaded with defer attribute.
This prevents ReferenceError when loading old maps (1.108.11) in version 1.108.13.
Functions protected:
- getCurrentPreset() - from style.js
- addCustomColorScheme() - from style.js
- updateTextureSelectValue() - from style.js
- focusOn() - from editors.js
- invokeActiveZooming() - from zoom.js
- fitMapToScreen() - from zoom.js
- declareFont() - from fonts.js
- moveBurgToGroup() - from burgs.js (3 locations)
This fixes zoom/pan issues when loading old maps.
Add comprehensive Obsidian integration as intermediate step toward
PostgreSQL migration, enabling modern Markdown-based note editing:
**Features:**
- Obsidian Local REST API integration for vault access
- Coordinate-based note matching (searches vault YAML frontmatter)
- Shows top 5-8 closest matches when clicking burgs/markers
- Modern Markdown editor with live preview
- [[Wikilink]] support for connecting notes
- "Open in Obsidian" button to jump to native app
- Configuration UI for API setup and testing
**Technical Implementation:**
- modules/io/obsidian-bridge.js - Core API integration layer
- modules/ui/obsidian-notes-editor.js - Markdown editor UI
- modules/ui/obsidian-config.js - Configuration panel
- OBSIDIAN_INTEGRATION.md - Complete setup/usage guide
**Coordinate Matching:**
- Parses YAML frontmatter for x/y coordinates
- Calculates distance to clicked element
- Supports nested (coordinates.x) and flat (x:) formats
- Handles missing FMG IDs (common with PostgreSQL imports)
**User Workflow:**
1. Configure Obsidian REST API connection
2. Click burg/marker in FMG
3. System finds matching notes by coordinates
4. Select note or create new one
5. Edit in modern Markdown editor
6. Save syncs to Obsidian vault instantly
This replaces the "Win95-style TinyMCE" editor with a clean,
modern Markdown experience while maintaining compatibility with
the eventual PostgreSQL backend migration. Users can edit notes
in either FMG or Obsidian - both stay in sync via file system.
Version: 1.108.13
Add ability to set a specific map as the default that opens on load:
- Add 'Open default map' option to onload behavior dropdown
- Implement saveAsDefaultMap() to store map as default in IndexedDB
- Implement clearDefaultMap() to remove default map setting
- Modify checkLoadParameters() to load default map when configured
- Add UI buttons in Save dialog for setting/clearing default map
- Update version to 1.108.12 and hash in index.html
Users can now:
1. Open any map they want as default
2. Go to Options > Onload behavior > Select "Open default map"
3. Save > Click "Set as default" button
4. The map will now open automatically every time
This sets the foundation for the planned time-based worldbuilding
and lore database features by ensuring users always start with
their primary world map.
The id field for geojson export was not consistent with csv exports.
Removes the prefix on routes, rivers and markers geojson, and on
markers csv, to make them all use only an integer as id.
This makes it easier to import and do joins in other software.
* feat: style - store emblem size mod in style (v1.99.10)
* fix the isOutdated function for versions past 1.99
* fix: showUploadMessage function not called correctly for isUpdated case
* feat: load - improve version detection
* feat: improve version detection and update process
* feat: Update version and use constant for VERSION in multiple files
* Update versioning.js to fix incorrect message display for stored version
* feat: zones editor - update to work with pack data
* feat: zones editor - update editor
* feat: zones editor - update editor
* chore: update version
* feat: zones - regenerate
* feat: zones - render zones as continuius line
* feat: zones - editot changes
* feat: zones - auto-update
* feat: zones - generation fixes
* feat: zones - generation fixes
* feat: zones - restore layer
* feat: zones - proselytism - check population
---------
Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
* Scale bar styling (#1025)
* feat: style scale bar
* feat: style scale bar - style presets
---------
Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
* Ocean heightmap to v1.96 (#1044)
* feat: allow to render ocean heightmap
* feat: allow to render ocean heightmap - test
* feat: allow to render ocean heightmap - fix issue
* feat: allow to render ocean heightmap - cleanup
---------
Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
* fix: scale bar size
* fix: remove mask on terrs lavel
* fix: regenerate heigtmap preview to use current graph size
* Add the name of culture and namesbase in the name editor dialog (#1033)
* Add the name of culture and namesbase in the name editor dialog
Added the name of the culture and namesbase in the dialog "name editor".
This tells information on the "click to generate a culture-specific name"
It tells you the culture before changing name.
* cultureName into cultureId + cultureName
And deleted the incomplete code of showing culture name on datatip
* refactor: leave culture name only
---------
Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
* Added Burgs column to province editor (#1031)
* Added Burgs column to province editor
Added to province editor:
+ Burgs column
+ the number of Burgs, p.burgs.length
+ "icon-dot-circled" to go to overviewBurgs.
+ overviewBurgs Filtered by state id.
+ Fixed some typos.
* fixed code as Azgaar suggested
+ Corrected provincesHeader distance in em.
+ const stateId = pack.provinces[p].state;
- Deleted cell count.
* deleted HTML code for provincesFooter cells
- Deleted Total land cells number HTML from provincesFooter.
* deleting totalCells in the code, maybe i will add provinceCells in the future.
Deleted lines for const totalCells and for (+cells / totalCells) * 100 + "%";
* refactor: cleanup
* refactor: cleanup
---------
Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
* fix: burgs overview - add MFCG link back
* feat: add more details to burgs export
* feat: don't show auto-update dialog
* feat: pump version
* fix: #1041
* feat: update style presets
---------
Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
Co-authored-by: Ángel Montero Lamas <angel.montero1@gmail.com>