64 Commits

Author SHA1 Message Date
acda71ee7b fix(lib): remove extra blank line in RichTextEditor
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 08:52:57 +01:00
77391dde19 refactor(editor): migrate to native @tiptap/markdown extension
- Replace community `tiptap-markdown` with official `@tiptap/markdown`
- Use new API: `editor.getMarkdown()` instead of `editor.storage.markdown.getMarkdown()`
- Add `contentType: 'markdown'` for direct markdown loading
- Remove unused `@tiptap/extension-color` (no UI was using it)
- Remove custom MarkdownStorage type declaration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 08:52:57 +01:00
b40b6c8160 fix: case-insensitive UUID matching in preprocessItemMentions
UUIDs can contain both uppercase and lowercase hex characters (A-F, a-f).
The regex was only matching lowercase, causing @mentions to not be
converted to links in TextViewStatic.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 16:58:15 +01:00
b944a7f401 feat(TextViewStatic): add item colors to @mentions
- Pass items and getItemColor to simpleMarkdownToHtml
- Item mentions now display with correct colors (item.color → tag color → layer default)
- Add font-weight: bold to hashtags and item mentions for consistency

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 16:54:39 +01:00
33f99ce4a2 fix(VideoEmbed): resolve lint errors
- Replace deprecated frameBorder with style={{ border: 'none' }}
- Fix unsafe regex patterns to prevent ReDoS vulnerabilities
  - Anchor patterns with ^ for exact matching
  - Use fixed-length YouTube video IDs (11 chars)
  - Add proper terminators for URL parsing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 15:42:42 +01:00
0e9548e25f fix(lint): resolve eslint errors in suggestion components
- Fix import order issues
- Fix TypeScript type annotations
- Use .at() for array access to satisfy lint rules
- Cast props to correct types in command handlers
- Fix template literal type issues

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 15:38:56 +01:00
c644f182e4 feat(TipTap): add hashtag and item mention suggestions
- Add suggestion system for #hashtags and @item-mentions in RichTextEditor
- New files:
  - HashtagSuggestion.tsx: autocomplete for existing tags, create new tags
  - ItemMentionSuggestion.tsx: autocomplete for items with @syntax
  - ItemMention.tsx: TipTap node for item links with markdown serialization
  - SuggestionList.tsx: shared popup UI component
  - useItemColor.tsx: hook for consistent item color calculation
- Features:
  - Type # to see tag suggestions, space key confirms selection
  - Type @ to see item suggestions with correct colors
  - New tags can be created inline
  - Clickable mentions in view mode (hashtags filter map, @mentions navigate)
  - Bold styling for all mentions and suggestions
  - Disabled clicks in edit mode
- Refactored components to use useItemColor hook for consistent colors

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 15:31:17 +01:00
382f284f31 feat(VideoEmbed): add paste handler, editor preview, and markdown serialization
- Add ReactNodeViewRenderer for video preview in RichTextEditor
- Add ProseMirror plugin for paste detection of video URLs
- Add markdown serialization to output autolink format <url>
- Integrate VideoEmbed extension in RichTextEditor
- Preprocess video links when loading content

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 11:41:14 +01:00
393d882cfe fix(preprocessMarkdown): handle autolink syntax for video URLs
Support markdown autolinks <https://youtube.com/...> in addition to
standard markdown links [text](url) for YouTube and Rumble videos.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 11:07:53 +01:00
5b446f933c chore: export TextViewStatic and use it in MapContainer
- Export TextViewStatic from ItemPopupComponents and Item modules
- Update MapContainer to use TextViewStatic instead of TextView for popups

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 10:35:54 +01:00
7e1d95ecdd feat(TextViewStatic): add lightweight static renderer for popups
Add TextViewStatic component for Leaflet popups and card previews:
- Uses simple HTML rendering instead of TipTap EditorContent
- No contenteditable attribute = no Leaflet click blocking issues
- Better performance for rendering many items

Changes:
- Add TextViewStatic.tsx for popups/cards
- Add simpleMarkdownToHtml.tsx utility for lightweight markdown conversion
- Update ItemViewPopup to use TextViewStatic
- Update ItemCard to use TextViewStatic

TextView (full TipTap) remains for profile pages with all features.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 10:32:07 +01:00
319f4a5057 refactor(TextView): migrate from react-markdown to TipTap
Replace react-markdown with TipTap read-only editor for TextView component.

Changes:
- Create TipTap extensions folder with custom Hashtag and VideoEmbed nodes
- Hashtag extension: clickable hashtags with tag colors and filter integration
- VideoEmbed extension: YouTube and Rumble iframe embeds
- Add preprocessMarkdown utility for URL, email, video link, and hashtag conversion
- Migrate TextView to use TipTap with StarterKit, Markdown, Link extensions
- Remove unused itemId prop from TextView and all callers

Known issue: Popup buttons may not work correctly when TextView has content
due to Leaflet's handling of contenteditable elements. To be fixed in follow-up.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 09:58:43 +01:00
dependabot[bot]
f099e7893d
refactor(deps): update react-router-dom from v6 to 7.10.1 and adapt to breaking changes (#579)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Anton Tranelis <31516529+antontranelis@users.noreply.github.com>
Co-authored-by: mahula <lenzmath@posteo.de>
2025-12-18 13:01:42 +01:00
4fa004aebe make update item toast closeable 2025-12-17 08:12:42 +01:00
mahula
279110f011
refactor(other): update eslint to v9 with the flat configuration (#405) 2025-12-16 20:21:28 +00:00
Anton Tranelis
a4d8bbeae8
fix(lib): fix tiptap crash in firefox (#608) 2025-12-16 20:20:30 +01:00
Anton Tranelis
2eec9f959f
fix(app): show past items (#433)
Co-authored-by: mahula <lenzmath@posteo.de>
Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-11-24 21:48:03 +01:00
Anton Tranelis
0c6391e901
fix(other): removed unused packages and package-lock.json and fix vulnerabilities… (#588)
Co-authored-by: mahula <lenzmath@posteo.de>
2025-11-19 20:43:49 +01:00
dependabot[bot]
e400309971
build(deps): bump react-leaflet-cluster from 2.1.0 to 3.1.1 (#587)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Anton Tranelis <mail@antontranelis.de>
Co-authored-by: Anton Tranelis <31516529+antontranelis@users.noreply.github.com>
2025-11-19 18:36:14 +01:00
Copilot
1b22b37b09
fix(lib): empty text fields not saving in profile forms (#437)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: antontranelis <31516529+antontranelis@users.noreply.github.com>
Co-authored-by: mahula <lenzmath@posteo.de>
2025-11-19 06:51:31 +00:00
Copilot
d5080e2bc9
fix(lib): remove UUID from URL when popup closes (#435)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: antontranelis <31516529+antontranelis@users.noreply.github.com>
Co-authored-by: Anton Tranelis <mail@antontranelis.de>
Co-authored-by: mahula <lenzmath@posteo.de>
2025-11-18 18:59:55 +00:00
Anton Tranelis
5cf49cfcd3
fix(lib): align zoom-control and tags (#427) 2025-11-11 15:14:59 +01:00
Anton Tranelis
462d9056f4
fix(lib): set login link in placeholder text (#432) 2025-11-11 14:49:39 +01:00
Anton Tranelis
c808fdd470
fix(lib): fix icons in ´SearchControl´ (#431)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-11-11 14:39:29 +01:00
Anton Tranelis
8391532d83
fix(lib): fix missing secret bug (#430) 2025-11-11 11:05:53 +01:00
Anton Tranelis
2ee10f0f55
fix(app): refactor icons (#428) 2025-11-10 16:55:31 +01:00
Anton Tranelis
719e1e16b5
fix(lib): fix invite url (#426) 2025-10-14 12:10:04 +02:00
Anton Tranelis
590be2b7e5
fix(lib): optimized layout elements (#424)
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-14 12:00:23 +02:00
Anton Tranelis
15fbd3e6ce
fix(lib): improved item header (#383)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-13 13:15:06 +02:00
Anton Tranelis
2411017c33
feat(lib): maplibre (#425) 2025-10-13 13:10:38 +02:00
Anton Tranelis
d10f924fa0
fix(lib): update tiptap to v3 (#422)
Co-authored-by: mahula <lenzmath@posteo.de>
2025-10-10 18:14:59 +02:00
mahula
78a8c68800
feat(other): initial end-to-end tests working in github ci and locally (#402)
Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-10-09 21:59:06 +02:00
Anton Tranelis
e261d68534
feat(lib): blanked out maps support (#416)
Co-authored-by: mahula <lenzmath@posteo.de>
Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-10-09 15:50:32 +02:00
Anton Tranelis
27ebc26a41
fix(lib): lists style in info modal (#412) 2025-10-06 13:23:17 +02:00
Copilot
b25ded083f
feat(lib): add Fullscreen Control to UtopiaMap Component (#408)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: antontranelis <31516529+antontranelis@users.noreply.github.com>
Co-authored-by: Anton Tranelis <mail@antontranelis.de>
2025-10-04 08:04:20 +02:00
Anton Tranelis
c5232093dc
feat(lib): relation component (#387)
* Fix relations view

* extended relation component

* added backend fields

* bidirectional direction

* fix linting
2025-09-15 11:32:19 +02:00
Anton Tranelis
298876a269
fix(lib): fix user_created reset when updating other users profile marker (#380)
* fix user_created new set when updating other users profile marker

* fix same issue on different places

* fix linting

* fix tests
2025-09-12 21:50:33 +02:00
Anton Tranelis
a49590243a
adjust UserControl for external profiles and small item edits (#363) 2025-09-07 13:47:50 +02:00
Anton Tranelis
659efc0d5e
fix(lib): adjust index page for external profiles (#361)
* don't open internal profile, if item has external profile url

* refactor(backend): simplified icon config (#359)

* simplified icon config

* fixed linting

* fixed linting

* fix linting and searchControl

* adjust useSelectPosition

* adjust useSelectPosition

* fixed presets

* removed menuIcon artefacts

* fix example

* adjust icon size in addButton

* item index page is now not opening internal profile if external profile exist

* fix imports

* reset layer

* fix behaviour

* set map position to popup form
2025-09-07 13:42:29 +02:00
Anton Tranelis
879dbf1631
refactor(backend): simplified icon config (#359)
* simplified icon config

* fixed linting

* fixed linting

* fix linting and searchControl

* adjust useSelectPosition

* adjust useSelectPosition

* fixed presets

* removed menuIcon artefacts

* fix example

* adjust icon size in addButton
2025-09-05 22:26:26 +02:00
Anton Tranelis
02e5598266
fix(lib): login info box (#345)
* login info box

* fixed linting

* fix linting

---------

Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-09-02 09:56:15 +00:00
Anton Tranelis
1aaabebc99
reinsert uuid to fix notifiations in backend (#342) 2025-08-27 13:20:46 +02:00
Anton Tranelis
94ec2e5576
fix popup button (#339) 2025-08-27 13:17:20 +02:00
Anton Tranelis
1b0b51e91a
fix behaviour of modal (#340) 2025-08-27 10:05:42 +02:00
Anton Tranelis
7e059d8deb
feat(app): added external profile url (#328)
* added external profile url

* switch port back to 5174

* fix linting

* chaneged target to _parent
2025-08-26 14:56:55 +02:00
Anton Tranelis
cb6737d370
feat(app): popup customizing (#333)
* small form edits

* fix linting

* custom button label

* more popup customizing

* reset dev port
2025-08-26 14:55:15 +02:00
Anton Tranelis
a599eddca6
feat(lib): add optional request password button to login page (#334)
* add optional request password button to login page

* fix linting

* fix linting

* added field to backend config
2025-08-26 14:43:31 +02:00
Anton Tranelis
1ef562cf3c
feat(lib): hide signup option (#329)
* hide signup option

* directus pull
2025-08-26 14:22:26 +02:00
Anton Tranelis
fbe1eb9e0f
avatar-widget showing external image (#330) 2025-08-25 11:03:59 +02:00
2baabe7940 disable close on click outside in location update dialog 2025-08-20 19:02:08 +02:00