Commit Graph

528 Commits

Author SHA1 Message Date
Hamid Reza Mohammadi
f15bf951bf people tags #387 2026-10-04 15:23:26 +03:30
Hamid Reza Mohammadi
2e0e87d277 people tags #387 2026-10-04 07:58:00 +03:30
Hamid Reza Mohammadi
3493225dc5 people tags #387 2026-10-03 21:16:42 +03:30
Hamid Reza Mohammadi
fecbf0ec3b people tags #387 2026-10-03 18:05:55 +03:30
Hamid Reza Mohammadi
4ba7da57b8 people tags #387 2026-10-03 08:41:31 +03:30
Hamid Reza Mohammadi
b8c45ed93c book list api 2026-10-02 13:40:21 +03:30
Hamid Reza Mohammadi
433cffa5ae people tags #387 2026-10-02 08:06:26 +03:30
Hamid Reza Mohammadi
d7ac35a9fc people tags #387 2026-10-01 22:05:18 +03:30
Hamid Reza Mohammadi
cee01357fc people tags #387 2026-10-01 08:01:18 +03:30
Hamid Reza Mohammadi
ddbef76d94 people tags #387 2026-09-30 20:44:35 +03:30
Hamid Reza Mohammadi
eb88056d0b people tags #387 2026-09-30 18:31:59 +03:30
Hamid Reza Mohammadi
f305394ad7 people tags #387 2026-09-30 18:17:44 +03:30
Hamid Reza Mohammadi
0cb288228d people tags #387 2026-09-29 21:10:46 +03:30
Hamid Reza Mohammadi
e0ab9915b6 people tags #387 2026-09-29 19:53:09 +03:30
Hamid Reza Mohammadi
bb68c074b0 people tags #387 2026-09-29 19:32:57 +03:30
Hamid Reza Mohammadi
9d12c23400 people tags #387 2026-09-29 17:13:02 +03:30
Hamid Reza Mohammadi
1c65da5ade people tags #387 2026-09-29 12:35:40 +03:30
Hamid Reza Mohammadi
07cb45f58c people tags #387 2026-09-28 20:10:20 +03:30
Hamid Reza Mohammadi
8110e09a07 people tags #387 2026-09-28 14:41:47 +03:30
Hamid Reza Mohammadi
5003f92f00 people tags #387 2026-09-28 08:54:42 +03:30
Hamid Reza Mohammadi
da4a0f7c14 people tags #387 2026-09-28 08:40:25 +03:30
Hamid Reza Mohammadi
f6bd5a756c enable users to suggest geo location tags #421 2026-09-18 17:34:30 +03:30
Ehsan Mohandesi
cb7b1b03a3 Replace Spotify search with a validated music link box
The Spotify Web API integration stopped working, leaving /spotify unable to
suggest songs at all. Replace the artist/album/track search flow with a single
box where the user pastes a link to the track on a music service.

Links are checked against a hardcoded allow-list of legal streaming and store
domains so links to ripped audio cannot be submitted. The check lives in the
service layer, not just the page: any authenticated user can POST to
/api/ganjoor/song directly and bypass the UI. Hosts are matched against the
full host or a dot-prefixed suffix, so look-alikes such as
open.spotify.com.evil.com are rejected; https is required, and userinfo and
non-default ports are refused. Accepted URLs are canonicalised - https,
lowercased host, tracking parameters stripped - so the same track always yields
the same stored URL and duplicate detection actually works.

Links are stored under one new type, PoemMusicTrackType.MusicUrl, with the
platform derived from the host at render time. That needs no migration or
backfill, and supporting another service later needs no new enum value. The
duplicate check no longer keys on TrackType, which closes a gap where the same
URL could be resubmitted as a different type. Several links per poem remain
allowed; only an identical URL for the same poem is refused.

The Spotify search page and its OAuth plumbing are kept and simply redirect to
/musiclink while the existing SpotifyWorking flag is false, so the old flow can
be restored if that API ever works again.

Track URLs are no longer written through Html.Raw into href attributes. They
previously came from the Spotify API; now that they are user supplied, encoding
them prevents stored XSS.

Also fixes two latent bugs in SuggestSong that this flow would have hit: a null
dereference when TrackUrl is empty, and a singer lookup that matched any singer
with an empty Url.
2026-09-13 22:16:18 -05:00
Hamid Reza Mohammadi
0811bfd868 moderation new option 2026-09-13 13:39:48 +03:30
Hamid Reza Mohammadi
4920e85e45 include couplet sumaries in public data export 2026-09-12 16:06:54 +03:30
Hamid Reza Mohammadi
64fdb6318c semantic search 2026-09-11 16:45:47 +03:30
Hamid Reza Mohammadi
47445877d2 semantic search 2026-09-10 19:38:38 +03:30
Hamid Reza Mohammadi
e63c8c5e9d semantic search 2026-09-10 13:03:20 +03:30
Hamid Reza Mohammadi
0762f19fb4 semantic search 2026-09-09 11:07:09 +03:30
Hamid Reza Mohammadi
978c6f6e0e tajik + persian text backend 2026-08-16 16:53:49 +03:30
Hamid Reza Mohammadi
c030a192d2 #498 export tajik data 2026-08-14 21:44:19 +03:30
Hamid Reza Mohammadi
a19c8a3128 #498 import public data 2026-08-14 15:02:44 +03:30
Hamid Reza Mohammadi
0fb3110dd9 #498 imprort public data 2026-08-14 14:57:00 +03:30
Hamid Reza Mohammadi
6768ee4c52 #498 export public data 2026-08-14 13:49:57 +03:30
Hamid Reza Mohammadi
ae50557acc Open source all public data
#498
2026-08-14 13:37:43 +03:30
Hamid Reza Mohammadi
2fcf7241f2 new sorting option 2026-08-04 20:58:05 +03:30
Hamid Reza Mohammadi
ca2f708add #495 rating comments 2026-08-04 15:47:05 +03:30
Hamid Reza Mohammadi
9d32aa27c0 #495 RateCommentAsync 2026-07-22 19:30:16 +03:30
Hamid Reza Mohammadi
64ca7ddaa4 #495 GanjoorCommentReactions 2026-07-22 18:42:56 +03:30
Hamid Reza Mohammadi
5b7e53c47c #495 GanjoorComment + new fields 2026-07-21 21:19:22 +03:30
Hamid Reza Mohammadi
f6b0886c6c #495 GanjoorCommentReaction model 2026-07-21 21:15:29 +03:30
Hamid Reza Mohammadi
2ba0056b44 #493 GanjoorUserPrePoemVisitViewModel 2026-06-27 15:02:10 +03:30
Hamid Reza Mohammadi
349d9ec9e9 #493 GanjoorUserPrePoemVisitViewModel 2026-06-26 19:09:49 +03:30
Hamid Reza Mohammadi
1fdcf9da29 #493 GanjoorUserPoemVisit += Counter
Related Work Items: #4
2026-06-26 19:01:23 +03:30
Hamid Reza Mohammadi
506de8eeac #478 user create date 2025-03-29 18:23:13 +03:30
Hamid Reza Mohammadi
881ddd7c45 #478 user contributions + PublicUserNotes 2025-03-29 11:31:08 +03:30
Hamid Reza Mohammadi
a0726bea94 #478 add publication date for poet spec lines and pictures 2025-03-28 16:01:30 +03:30
Hamid Reza Mohammadi
e5bf27f60a #478 UserContributionsViewModel 2025-03-28 13:20:25 +03:30
Hamid Reza Mohammadi
75d75cd265 #478 GetApprrovedEditsSummedUpStatsAsync 2025-03-26 19:41:40 +03:30
Hamid Reza Mohammadi
3d2560440e #478 GetApprovedEditsGroupedByUserAsync 2025-03-26 19:36:27 +03:30