{"users":[{"id":115923,"username":"Discourse","name":null,"avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/discourse/{size}/148734_2.png","admin":true,"trust_level":4},{"id":100484,"username":"JammyDodger","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/jammydodger/{size}/254611_2.png","trust_level":3},{"id":83775,"username":"fitzy","name":"Michael Fitz-Payne","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/fitzy/{size}/192549_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"trust_level":4},{"id":35474,"username":"Canapin","name":"Coin-coin le Canapin","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/canapin/{size}/119591_2.png","trust_level":3},{"id":166720,"username":"opcourdis","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/o/45deac/{size}.png","trust_level":2},{"id":135392,"username":"NateDhaliwal","name":"Nate Dhaliwal","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/natedhaliwal/{size}/313494_2.png","flair_name":"theme_authors","flair_url":"paintbrush","flair_bg_color":"ddd","flair_color":"111","flair_group_id":73,"trust_level":3},{"id":5859,"username":"j127","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/j127/{size}/79093_2.png","trust_level":2},{"id":27773,"username":"bletch","name":"Danny Goodall","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/bletch/{size}/69088_2.png","trust_level":2},{"id":15209,"username":"pfaffman","name":"Jay Pfaffman","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/pfaffman/{size}/120154_2.png","flair_name":"support-experts","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_group_id":142,"trust_level":4},{"id":117526,"username":"Dave_Driesmans","name":"Dave Driesmans","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/dave_driesmans/{size}/253276_2.png","trust_level":0},{"id":179822,"username":"kcahtoor","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/{size}.png","trust_level":1},{"id":1,"username":"sam","name":"Sam Saffron","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/sam/{size}/102149_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":40486,"username":"TheBestPessimist","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/thebestpessimist/{size}/247704_2.png","trust_level":2},{"id":57427,"username":"Machigatta","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/machigatta/{size}/125064_2.png","trust_level":1},{"id":104279,"username":"nat","name":"Natalie T","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/nat/{size}/235063_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":19127,"username":"webeindustry","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/webeindustry/{size}/53973_2.png","trust_level":2},{"id":27611,"username":"Jen_Lijo","name":"Jen","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/jen_lijo/{size}/77057_2.png","trust_level":2},{"id":19,"username":"eviltrout","name":"Robin Ward","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/eviltrout/{size}/5275_2.png","trust_level":4},{"id":23842,"username":"AhmadF.Cheema","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/ahmadf.cheema/{size}/87109_2.png","trust_level":2},{"id":13093,"username":"pacharanero","name":"Marcus Baw","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/pacharanero/{size}/500583_2.png","primary_group_name":"VolunteerMods","flair_name":"VolunteerMods","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/2/7/d/27de051915b8a604d176484cd260d10cfc956d42.svg","flair_group_id":276,"trust_level":4},{"id":28866,"username":"schungx","name":"Stephen Chung","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/schungx/{size}/70989_2.png","trust_level":2},{"id":141900,"username":"maaatt","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/m/ecb155/{size}.png","trust_level":2},{"id":25674,"username":"Jithin_Krishnan","name":"Jithin Krishnan","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/jithin_krishnan/{size}/121329_2.png","trust_level":1},{"id":704,"username":"AstonJ","name":"AstonJ","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/astonj/{size}/215041_2.png","trust_level":2},{"id":149694,"username":"Ambient.Impact","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/ambient.impact/{size}/387027_2.png","trust_level":1},{"id":-1,"username":"system","name":"system","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/system/{size}/443519_2.png","admin":true,"moderator":true,"trust_level":4},{"id":23968,"username":"david","name":"David Taylor","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/david/{size}/157490_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":127856,"username":"Lilly","name":"Lillian ","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/lilly/{size}/555832_2.png","trust_level":3},{"id":27384,"username":"merefield","name":"Robert","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/merefield/{size}/176214_2.png","trust_level":3},{"id":21029,"username":"pmusaraj","name":"Penar Musaraj","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/pmusaraj/{size}/119489_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":139654,"username":"AliBenBongo","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/a/da6949/{size}.png","trust_level":1},{"id":36685,"username":"Arkshine","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/arkshine/{size}/298682_2.png","flair_name":"support-advocates","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/4/e4038d4d9848de2eabab38e17b8bdb69da154024.svg","flair_bg_color":"FFFFFF","flair_group_id":148,"trust_level":3},{"id":93926,"username":"taravasya","name":"Вася Тарарин","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/taravasya/{size}/214539_2.png","trust_level":2},{"id":114728,"username":"darkpixlz","name":"Pyx ","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/darkpixlz/{size}/549896_2.png","primary_group_name":"VolunteerMods","flair_name":"VolunteerMods","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/2/7/d/27de051915b8a604d176484cd260d10cfc956d42.svg","flair_group_id":276,"trust_level":4},{"id":14353,"username":"simon","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/simon/{size}/339122_2.png","trust_level":2},{"id":105081,"username":"Decorbuz","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/decorbuz/{size}/235124_2.png","trust_level":2},{"id":125230,"username":"Pieces","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/p/958977/{size}.png","trust_level":2},{"id":15442,"username":"jericson","name":"Jon Ericson","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/jericson/{size}/116215_2.png","flair_name":"support-explorers","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/d/1/b/d1ba0acf09b9d01f87f9e05bbee1dc5b0e316d5f.png","flair_bg_color":"dddddd","flair_color":"111111","flair_group_id":118,"trust_level":2},{"id":36692,"username":"seanblue","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/{size}.png","trust_level":2},{"id":131037,"username":"GregorSondermeier","name":"Gregor Sondermeier","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/gregorsondermeier/{size}/299039_2.png","trust_level":2},{"id":119723,"username":"dubwoc","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/{size}.png","trust_level":2},{"id":95552,"username":"Moin","name":"","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/moin/{size}/554653_2.png","trust_level":3},{"id":155596,"username":"Daimonds_and_netherite","name":"USCHESSID: 32121789","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/d/e0b2c6/{size}.png","trust_level":1},{"id":174008,"username":"Dimava","name":"Dimava","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/dimava/{size}/498540_2.png","trust_level":2},{"id":127446,"username":"gormus","name":"Osman Görmüş","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/gormus/{size}/428592_2.png","flair_name":"theme_authors","flair_url":"paintbrush","flair_bg_color":"ddd","flair_color":"111","flair_group_id":73,"trust_level":2},{"id":9858,"username":"dfabulich","name":"Dan Fabulich","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/dfabulich/{size}/108716_2.png","trust_level":2},{"id":101447,"username":"leonardo","name":"Leonardo Mosquera","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/leonardo/{size}/228634_2.png","trust_level":2},{"id":128201,"username":"kjs-fgx","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/k/a9adbd/{size}.png","trust_level":1},{"id":192487,"username":"micke","name":"Micke","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/micke/{size}/553682_2.png","trust_level":1},{"id":23163,"username":"j.jaffeux","name":"Joffrey Jaffeux","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/j.jaffeux/{size}/60297_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":2},{"id":2770,"username":"awesomerobot","name":"Kris","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/awesomerobot/{size}/142900_2.png","primary_group_name":"team","flair_name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_color":"111","flair_group_id":47,"admin":true,"trust_level":3},{"id":39365,"username":"sarahann","name":"Sarah","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/sarahann/{size}/96703_2.png","trust_level":2},{"id":131832,"username":"hocine","name":"Hocine Mahmoudi","avatar_template":"/user_avatar/meta-redesign-2026.discourse.group/hocine/{size}/301751_2.png","trust_level":1}],"primary_groups":[{"id":47,"name":"team"},{"id":276,"name":"VolunteerMods"}],"flair_groups":[{"id":47,"name":"team","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/b/ebee30bd98aef20357e4a177a5a1e45b877ce088.svg","flair_bg_color":"","flair_color":"111"},{"id":73,"name":"theme_authors","flair_url":"paintbrush","flair_bg_color":"ddd","flair_color":"111"},{"id":142,"name":"support-experts","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/2/e250ec403580530d19e6a9ed42d0d525a51a9dbe.svg","flair_bg_color":"FFFFFF","flair_color":""},{"id":276,"name":"VolunteerMods","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/2/7/d/27de051915b8a604d176484cd260d10cfc956d42.svg","flair_bg_color":"","flair_color":""},{"id":148,"name":"support-advocates","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/e/4/e4038d4d9848de2eabab38e17b8bdb69da154024.svg","flair_bg_color":"FFFFFF","flair_color":""},{"id":118,"name":"support-explorers","flair_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/d/1/b/d1ba0acf09b9d01f87f9e05bbee1dc5b0e316d5f.png","flair_bg_color":"dddddd","flair_color":"111111"}],"topic_list":{"can_create_topic":false,"more_topics_url":"/c/documentation/developer-guides/56?page=1","per_page":30,"top_tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":820,"name":"أدلة-السمات","slug":"theme-guides"},{"id":819,"name":"رمز","slug":"code"},{"id":274,"name":"أدلة-الإضافات","slug":"plugin-guides"},{"id":484,"name":"دروس-تعليمية","slug":"tutorial"},{"id":150,"name":"تثبيت-المطور","slug":"dev-install"},{"id":482,"name":"مرجع","slug":"reference"},{"id":479,"name":"شرح","slug":"explanation"},{"id":70,"name":"جمرة","slug":"ember"},{"id":58,"name":"اختبار","slug":"testing"},{"id":543,"name":"ذكاء-اصطناعي","slug":"ai"},{"id":643,"name":"الوضع-المظلم-التلقائي","slug":"auto-dark"},{"id":275,"name":"أتمتة","slug":"automation"},{"id":436,"name":"css","slug":"css"},{"id":814,"name":"تخصيص","slug":"customization"},{"id":24,"name":"docker","slug":"docker"},{"id":799,"name":"فهرس","slug":"index"},{"id":52,"name":"ماركداون","slug":"markdown"},{"id":328,"name":"واجهة-برمجة-تطبيقات-الإضا","slug":"plugin-api"},{"id":566,"name":"منشئ-السمة","slug":"theme-creator"},{"id":16,"name":"ترجمة","slug":"translation"},{"id":25,"name":"منشورات-الويكي","slug":"wiki-posts"}],"topics":[{"fancy_title":"فهرس أدلة المطورين","fancy_title_localized":true,"locale":"en","id":308036,"title":"Developer Guides Index","slug":"developer-guides-index","posts_count":1,"reply_count":1,"highest_post_number":1,"image_url":null,"created_at":"2024-05-15T06:05:51.350Z","last_posted_at":"2024-05-15T06:05:51.457Z","bumped":true,"bumped_at":"2026-06-01T15:09:46.938Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"توثيق حول توسيع Discourse باستخدام الإضافات والمظاهر ومكونات المظاهر، والعمل مع الكود الأساسي، واستخدام واجهة برمجة تطبيقات Discourse.\nمقدمة\n\nمقدمة: مقدمة في تطوير Discourse\n\nالتطوير…","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":799,"name":"فهرس","slug":"index"}],"tags_descriptions":{"فهرس":"فهرس مواضيع فئة التوثيق."},"views":1986,"like_count":13,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":13,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Discussion about creating a plugin skeleton, with the original link now found at https://meta.discourse.org/t/automating-discourse-plugin-setup-with-create-discourse-plugin-gem/315013, which provides a rake task for automating Discourse plugin setup.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"كاتب المنشور الأصلي، أحدث كاتب منشور","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":100484,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"إعداد Discourse للتطوير على Fedora Linux","fancy_title_localized":true,"locale":"en","id":163348,"title":"Set up Discourse for development on Fedora Linux","slug":"set-up-discourse-for-development-on-fedora-linux","posts_count":13,"reply_count":12,"highest_post_number":25,"image_url":null,"created_at":"2020-09-08T11:00:32.308Z","last_posted_at":"2026-06-05T08:25:11.120Z","bumped":true,"bumped_at":"2026-06-05T08:25:11.120Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"تم اختبار هذا الدليل مقابل تثبيت جديد لـ Fedora 31 و 33، ولكنه قد يعمل على إصدارات أقدم تستخدم أيضًا dnf كأداة لإدارة الحزم. هذا ليس دليلًا رسميًا ولكنه قد يكون مفيدًا للمطورين الآخرين...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":150,"name":"تثبيت-المطور","slug":"dev-install"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة","تثبيت-المطور":"تعليمات ومشاكل تثبيت Discourse للتطوير"},"views":4491,"like_count":43,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":27,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users question the guide's official status and the use of an outdated Ruby version (2.7.1) in the Fedora Discourse development setup instructions.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":83775,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"ناشر متكرر","user_id":35474,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":166720,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"إنشاء ومشاركة مخطط ألوان","fancy_title_localized":true,"locale":"en","id":61196,"title":"Create and share a color scheme","slug":"create-and-share-a-color-scheme","posts_count":2,"reply_count":0,"highest_post_number":3,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_1024x670.png","created_at":"2017-04-18T14:44:23.540Z","last_posted_at":"2025-08-01T18:49:05.210Z","bumped":true,"bumped_at":"2026-06-02T14:54:24.218Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"يدعم Discourse الآن استيراد مخططات الألوان من مستودع بعيد. سأوضح هنا كيفية القيام بذلك.\nانتقل إلى الألوان وأضف مخطط ألوان.\nاذهب إلى /admin/customize/colors على موقعك…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1950,"height":1276,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":670,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_1024x670.png"},{"max_width":800,"max_height":800,"width":800,"height":523,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_800x523.png"},{"max_width":600,"max_height":600,"width":600,"height":392,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_600x392.png"},{"max_width":400,"max_height":400,"width":400,"height":261,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_400x261.png"},{"max_width":300,"max_height":300,"width":300,"height":196,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_300x196.png"},{"max_width":200,"max_height":200,"width":200,"height":130,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/3X/b/7/b7fced237ee399d52c634a3ab6fcc9416db65605_2_200x130.png"}],"tags":[{"id":478,"name":"كيفية","slug":"how-to"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة"},"views":6291,"like_count":23,"has_summary":false,"last_poster_username":"j127","category_id":56,"op_like_count":23,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"User suggests adding 'hover' and 'selected' fields to the color scheme configuration for enhanced customization.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":5859,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"إنشاء ومشاركة مكون سمة الخط","fancy_title_localized":true,"locale":"en","id":62462,"title":"Create and share a font theme component","slug":"create-and-share-a-font-theme-component","posts_count":5,"reply_count":0,"highest_post_number":7,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_1024x412.png","created_at":"2017-05-10T20:48:47.477Z","last_posted_at":"2025-08-19T22:34:35.578Z","bumped":true,"bumped_at":"2026-06-02T14:54:22.736Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"يدعم Discourse استيراد السمات التي تحتوي على أصول من مستودع بعيد. يتيح هذا لمؤلفي السمات مشاركة الخطوط والصور. قم بإنشاء مستودع git جديد يحتوي على الخط\nmkdir discourse-roboto-theme\ncd discourse-r…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1508,"height":608,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":412,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_1024x412.png"},{"max_width":800,"max_height":800,"width":800,"height":322,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_800x322.png"},{"max_width":600,"max_height":600,"width":600,"height":241,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_600x241.png"},{"max_width":400,"max_height":400,"width":400,"height":161,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_400x161.png"},{"max_width":300,"max_height":300,"width":300,"height":120,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_300x120.png"},{"max_width":200,"max_height":200,"width":200,"height":80,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/1/d/c1de6b52ae98df03f557c91f1ae02251f08cda18_2_200x80.png"}],"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":820,"name":"أدلة-السمات","slug":"theme-guides"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة"},"views":5991,"like_count":23,"has_summary":false,"last_poster_username":"kcahtoor","category_id":56,"op_like_count":19,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users report errors with undefined variables and missing assets when following the font theme component guide, questioning if the instructions need updating.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":27773,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":null,"description":"ناشر متكرر","user_id":117526,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":179822,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"تطوير إضافات Discourse - الجزء 6: إضافة اختبارات القبول","fancy_title_localized":true,"locale":"en","id":32619,"title":"Developing Discourse Plugins - Part 6 - Add acceptance tests","slug":"developing-discourse-plugins-part-6-add-acceptance-tests","posts_count":33,"reply_count":26,"highest_post_number":38,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_1024x715.png","created_at":"2015-08-27T21:32:26.323Z","last_posted_at":"2022-06-02T11:06:38.274Z","bumped":true,"bumped_at":"2026-06-02T14:54:21.418Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"التعليم السابق: تطوير إضافات Discourse - الجزء 5 - إضافة واجهة إدارية\n\nهل كنت تعلم أن لدى Discourse مجموعتي اختبار كبيرتين لبيانات الكود الخاصة به؟ على جانب الخادم، يحتوي كود Ruby الخاص بنا على مجموعة اختبار تستخدم rs…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1058,"height":739,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":715,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_1024x715.png"},{"max_width":800,"max_height":800,"width":800,"height":558,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_800x558.png"},{"max_width":600,"max_height":600,"width":600,"height":419,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_600x419.png"},{"max_width":400,"max_height":400,"width":400,"height":279,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_400x279.png"},{"max_width":300,"max_height":300,"width":300,"height":209,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_300x209.png"},{"max_width":200,"max_height":200,"width":200,"height":139,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/6/0/2/602e6bb3fe340f0569c1bfd60bb74f6d83d92893_2_200x139.png"}],"tags":[{"id":484,"name":"دروس-تعليمية","slug":"tutorial"},{"id":274,"name":"أدلة-الإضافات","slug":"plugin-guides"},{"id":58,"name":"اختبار","slug":"testing"}],"tags_descriptions":{"دروس-تعليمية":""},"views":17409,"like_count":82,"has_summary":false,"last_poster_username":"nat","category_id":56,"op_like_count":30,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users are troubleshooting issues with running acceptance tests for Discourse plugins, resolving errors related to test suites, plugin registration, and EmberCLI, with solutions involving test setup, plugin configuration, and code updates.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":1,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"ناشر متكرر","user_id":40486,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":57427,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":104279,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"تطوير إضافات Discourse - الجزء 5 - إضافة واجهة إدارية","fancy_title_localized":true,"locale":"en","id":31761,"title":"Developing Discourse Plugins - Part 5 - Add an admin interface","slug":"developing-discourse-plugins-part-5-add-an-admin-interface","posts_count":47,"reply_count":40,"highest_post_number":51,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3.png","created_at":"2015-08-04T20:34:32.128Z","last_posted_at":"2024-09-24T11:10:58.173Z","bumped":true,"bumped_at":"2026-06-02T14:54:20.026Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"الدرس السابق: تطوير إضافات Discourse - الجزء 4 - إعداد git\n\nفي بعض الأحيان، لا تكون إعدادات الموقع كافية كواجهة إدارية لكي تعمل إضافتك بالطريقة التي تريدها. على سبيل المثال، إذا قمت بتثبيت إضافة discourse-akism&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":995,"height":244,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3.png"},{"max_width":800,"max_height":800,"width":800,"height":196,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_800x196.png"},{"max_width":600,"max_height":600,"width":600,"height":147,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_600x147.png"},{"max_width":400,"max_height":400,"width":400,"height":98,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_400x98.png"},{"max_width":300,"max_height":300,"width":300,"height":73,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_300x73.png"},{"max_width":200,"max_height":200,"width":200,"height":49,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/f/c8f5548016153a30a3ace7679111c95847f293c3_2_200x49.png"}],"tags":[{"id":484,"name":"دروس-تعليمية","slug":"tutorial"},{"id":274,"name":"أدلة-الإضافات","slug":"plugin-guides"}],"tags_descriptions":{"دروس-تعليمية":""},"views":26495,"like_count":85,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":28,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users discuss and resolve issues with adding admin interfaces for their Discourse plugins, sharing code fixes and troubleshooting advice on Ember routing, file naming conventions, and testing errors.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":19127,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":27611,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":19,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"تطوير إضافات Discourse - الجزء 4 - إعداد git","fancy_title_localized":true,"locale":"en","id":31272,"title":"Developing Discourse Plugins - Part 4 - Setup git","slug":"developing-discourse-plugins-part-4-setup-git","posts_count":11,"reply_count":5,"highest_post_number":11,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007.png","created_at":"2015-07-21T20:54:59.409Z","last_posted_at":"2024-01-30T11:12:28.312Z","bumped":true,"bumped_at":"2026-06-02T14:54:17.764Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"الدرس السابق: تطوير إضافات Discourse - الجزء 3 - إضافة إعدادات مخصصة للموقع\n\nالآن بعد أن أصبحت إضافتك أكثر تطورًا، حان الوقت لأن تصبح أكثر تطورًا في طريقة تطويرها.\nنقترح أن تقوم بـ...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":730,"height":413,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007.png"},{"max_width":600,"max_height":600,"width":600,"height":339,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_600x339.png"},{"max_width":400,"max_height":400,"width":400,"height":226,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_400x226.png"},{"max_width":300,"max_height":300,"width":300,"height":169,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_300x169.png"},{"max_width":200,"max_height":200,"width":200,"height":113,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/b/d/4/bd4e72b31887f4016cfe86b0d0617f1799f1d007_2_200x113.png"}],"tags":[{"id":484,"name":"دروس-تعليمية","slug":"tutorial"},{"id":274,"name":"أدلة-الإضافات","slug":"plugin-guides"}],"tags_descriptions":{"دروس-تعليمية":""},"views":13108,"like_count":37,"has_summary":false,"last_poster_username":"maaatt","category_id":56,"op_like_count":23,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Windows and macOS users face challenges with symbolic links in Discourse plugin development; solutions include using junctions in Windows, aliases in macOS, or a synced folder in Vagrant to create working symlinks within the development environment.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":23842,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":13093,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"ناشر متكرر","user_id":28866,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":141900,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"تطوير إضافات Discourse - الجزء الأول - إنشاء إضافة أساسية","fancy_title_localized":true,"locale":"en","id":30515,"title":"Developing Discourse Plugins - Part 1 - Create a basic plugin","slug":"developing-discourse-plugins-part-1-create-a-basic-plugin","posts_count":33,"reply_count":87,"highest_post_number":141,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73.png","created_at":"2015-06-26T21:01:08.310Z","last_posted_at":"2025-07-08T20:52:10.855Z","bumped":true,"bumped_at":"2026-06-02T14:54:16.316Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"إن بناء إضافة في Discourse يمكن أن يكون بسيطًا للغاية، بمجرد أن تتعرف على بعض الخصائص الفريدة. يهدف هذا المنشور إلى إنشاء هيكل أساسي للإضافة وتعريفك بالأساسيات.\nبيئة التطوير الخاصة بك\nتأكد من أن لديك...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":845,"height":128,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73.png"},{"max_width":800,"max_height":800,"width":800,"height":121,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_800x121.png"},{"max_width":600,"max_height":600,"width":600,"height":90,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_600x90.png"},{"max_width":400,"max_height":400,"width":400,"height":60,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_400x60.png"},{"max_width":300,"max_height":300,"width":300,"height":45,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_300x45.png"},{"max_width":200,"max_height":200,"width":200,"height":30,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/9/7/b/97b7e2daac4cae0c6b3642a17d5b87dcec4b5c73_2_200x30.png"}],"tags":[{"id":484,"name":"دروس-تعليمية","slug":"tutorial"},{"id":274,"name":"أدلة-الإضافات","slug":"plugin-guides"}],"tags_descriptions":{"دروس-تعليمية":""},"views":82768,"like_count":210,"has_summary":false,"last_poster_username":"Ambient.Impact","category_id":56,"op_like_count":110,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The discussion details an issue encountered when creating plugins with the Docker setup, requiring users to configure Git's user email and name within the container before running `rake plugin:create`.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":25674,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":13093,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"ناشر متكرر","user_id":704,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":149694,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"استخدام واجهة برمجة تطبيقات DModal لعرض نوافذ منبثقة (المعروفة أيضًا باسم النوافذ المنبثقة أو الحوارات) في Discourse","fancy_title_localized":true,"locale":"en","id":268304,"title":"Using the DModal API to render Modal windows (aka popups/dialogs) in Discourse","slug":"using-the-dmodal-api-to-render-modal-windows-aka-popups-dialogs-in-discourse","posts_count":1,"reply_count":1,"highest_post_number":1,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35.png","created_at":"2023-07-03T09:52:06.275Z","last_posted_at":"2023-07-03T09:52:06.275Z","bumped":true,"bumped_at":"2026-06-02T14:54:11.378Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"يأتي Discourse 3.1.0.beta6 مع واجهة برمجة تطبيقات جديدة تمامًا تعتمد على المكون &lt;DModal&gt;.\n\n:information_source: هذه الواجهة تحل محل واجهة برمجة التطبيقات القديمة القائمة على المتحكمات، والتي أصبحت الآن قديمة. إذا كان لديك نوافذ منبثقة موجودة تستخدم واجهات برمجة التطبيقات القديمة، فستحتاج...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":696,"height":258,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35.png"},{"max_width":600,"max_height":600,"width":600,"height":222,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_600x222.png"},{"max_width":400,"max_height":400,"width":400,"height":148,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_400x148.png"},{"max_width":300,"max_height":300,"width":300,"height":111,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_300x111.png"},{"max_width":200,"max_height":200,"width":200,"height":74,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/4/0/b/40be9a7c253202136882269ba77d47ad86bd6d35_2_200x74.png"}],"tags":[{"id":819,"name":"رمز","slug":"code"}],"tags_descriptions":{},"views":2083,"like_count":17,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":17,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Discourse 3.1.0.beta6 introduces the <DModal> component API for rendering modals, replacing the deprecated controller-based method, with examples for template use, component wrapping, and service-based triggering.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"كاتب المنشور الأصلي، أحدث كاتب منشور","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":1,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"أدرج نصوصًا أو صورًا في أي مكان على موقعك باستخدام عناصر CSS الوهمية","fancy_title_localized":true,"locale":"en","id":99200,"title":"Insert text or images anywhere on your site using CSS pseudo-elements","slug":"insert-text-or-images-anywhere-on-your-site-using-css-pseudo-elements","posts_count":1,"reply_count":6,"highest_post_number":1,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_1024x471.png","created_at":"2018-10-11T11:12:34.130Z","last_posted_at":"2018-10-11T11:12:34.130Z","bumped":true,"bumped_at":"2026-06-01T15:09:42.855Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"إذن، تريد إدراج نص أو صورة في موقع Discourse الخاص بك. \nفيما يتعلق بالنص، في معظم الحالات يكفي تعديله من /admin/customize/site_texts. \nلكن في بعض الأحيان، يكون رغبتنا هي إضافة جملة …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1911,"height":879,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":471,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_1024x471.png"},{"max_width":800,"max_height":800,"width":800,"height":367,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_800x367.png"},{"max_width":600,"max_height":600,"width":600,"height":275,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_600x275.png"},{"max_width":400,"max_height":400,"width":400,"height":183,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_400x183.png"},{"max_width":300,"max_height":300,"width":300,"height":137,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_300x137.png"},{"max_width":200,"max_height":200,"width":200,"height":91,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/3/8/7382dd2cbcd102675e74e8a1853a79d2e32a0021_2_200x91.png"}],"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":814,"name":"تخصيص","slug":"customization"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة"},"views":17984,"like_count":33,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":33,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"To insert text or images on a site, use CSS pseudo-elements `:before` and `:after` to add content to elements without modifying existing HTML, by editing the site's stylesheet in the browser's developer console.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"كاتب المنشور الأصلي، أحدث كاتب منشور","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Designing for Different Devices (Viewport Size, Touch/Hover, etc.)","fancy_title_localized":false,"locale":null,"id":367810,"title":"Designing for Different Devices (Viewport Size, Touch/Hover, etc.)","slug":"designing-for-different-devices-viewport-size-touch-hover-etc","posts_count":15,"reply_count":11,"highest_post_number":15,"image_url":null,"created_at":"2025-05-27T18:17:05.719Z","last_posted_at":"2026-01-25T21:34:26.908Z","bumped":true,"bumped_at":"2026-06-01T15:09:36.242Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This document outlines the APIs used to adapt Discourse’s user interface for different devices. \nViewport Size\nThe most important characteristic to consider is the viewport size. We design “mobile first” and then add cus&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":701,"like_count":24,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":12,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Discourse is phasing out legacy mobile/desktop modes in favor of viewport and touch detection; users discuss deprecating outdated classes like pull-left and adapting core components for responsive layouts across devices.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"ناشر متكرر","user_id":23968,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"ناشر متكرر","user_id":127856,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Guidelines for CSS classes using BEM","fancy_title_localized":false,"locale":null,"id":361851,"title":"Guidelines for CSS classes using BEM","slug":"guidelines-for-css-classes-using-bem","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2025-04-15T05:48:23.418Z","last_posted_at":"2025-04-15T05:48:23.483Z","bumped":true,"bumped_at":"2026-06-01T15:09:34.864Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Background\nWhen writing CSS classes for Discourse components, themes, or plugins, we follow a modified variant of Block Element Modifier (BEM). Following these guidelines will make it much less likely for CSS conflicts t&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":294,"like_count":8,"has_summary":false,"last_poster_username":"system","category_id":56,"op_like_count":8,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Discourse uses a modified BEM variant for CSS classes, following specific syntax and guidelines to minimize conflicts and improve specificity.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"كاتب المنشور الأصلي، أحدث كاتب منشور","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Using Transformers to customize client-side values and behavior","fancy_title_localized":false,"locale":null,"id":349954,"title":"Using Transformers to customize client-side values and behavior","slug":"using-transformers-to-customize-client-side-values-and-behavior","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2025-01-31T20:19:51.229Z","last_posted_at":"2025-11-03T03:00:09.908Z","bumped":true,"bumped_at":"2026-06-01T15:09:33.590Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Discourse core includes a number of “transformer” hooks which can be used to customize client behavior. These fall into two categories: \n\n\nValue Transformers take an output from Discourse core, and optionally modify it, &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":605,"like_count":11,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":10,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A discussion on using Discourse's transformer hooks to customize client-side values and behavior, with recent updates including a PR to modify the Transformers registry link to the frontend directory.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"دليل المطور لتوسعات Markdown","fancy_title_localized":true,"locale":"en","id":66023,"title":"Developer's guide to Markdown extensions","slug":"developers-guide-to-markdown-extensions","posts_count":2,"reply_count":13,"highest_post_number":24,"image_url":null,"created_at":"2017-07-11T21:23:25.941Z","last_posted_at":"2026-06-01T08:45:53.539Z","bumped":true,"bumped_at":"2026-06-01T08:45:53.539Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"يستخدم Discourse محرك ماركداون يسمى Markdown-it.\nإليك بعض ملاحظات المطورين التي ستساعدك إما في إصلاح الأخطاء في النواة أو إنشاء إضافاتك الجديدة.\nالأساسيات\nيحتوي Discourse على عدد قليل فقط من الأدوات المساعدة فوق المحرك، ...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":482,"name":"مرجع","slug":"reference"},{"id":52,"name":"ماركداون","slug":"markdown"},{"id":819,"name":"رمز","slug":"code"}],"tags_descriptions":{},"views":13554,"like_count":35,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":35,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"While the guide details creating Markdown extensions for Discourse, a user inquires whether these customizations can be implemented within Theme Components or are restricted to plugins.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Theme Developer Tutorial: 2. Creating a remote theme","fancy_title_localized":false,"locale":null,"id":357797,"title":"Theme Developer Tutorial: 2. Creating a remote theme","slug":"theme-developer-tutorial-2-creating-a-remote-theme","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2025-03-18T15:59:09.382Z","last_posted_at":"2025-03-18T15:59:09.454Z","bumped":true,"bumped_at":"2026-05-29T10:12:51.441Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"In the last chapter, we created a basic theme via the Discourse admin interface. This works well enough for very simple themes. But as soon as you want to do something more complex, or share a theme more widely, you’ll n&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":724,"like_count":2,"has_summary":false,"last_poster_username":"system","category_id":56,"op_like_count":2,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The tutorial guides users through creating a remote Discourse theme using the discourse_theme CLI, syncing it to a Discourse instance, adding custom code, and preparing it for GitHub hosting.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"كاتب المنشور الأصلي، أحدث كاتب منشور","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Write end-to-end system specs for the Discourse user interface","fancy_title_localized":false,"locale":null,"id":325937,"title":"Write end-to-end system specs for the Discourse user interface","slug":"write-end-to-end-system-specs-for-the-discourse-user-interface","posts_count":4,"reply_count":2,"highest_post_number":5,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64.png","created_at":"2024-09-11T04:07:31.148Z","last_posted_at":"2025-08-28T14:51:13.004Z","bumped":true,"bumped_at":"2026-05-29T10:12:45.063Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Background\nRails system specs are used to simulate the actions of a real user using the app in a browser. We use the Playwright ruby driver which is becoming an industry standard. The tests run locally and in CI out of t&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":990,"height":602,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64.png"},{"max_width":800,"max_height":800,"width":800,"height":486,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_800x486.png"},{"max_width":600,"max_height":600,"width":600,"height":364,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_600x364.png"},{"max_width":400,"max_height":400,"width":400,"height":243,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_400x243.png"},{"max_width":300,"max_height":300,"width":300,"height":182,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_300x182.png"},{"max_width":200,"max_height":200,"width":200,"height":121,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/5/5/5/55573c386666cc876d212e64995fd6a7a8bccc64_2_200x121.png"}],"tags":[],"tags_descriptions":{},"views":619,"like_count":12,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":9,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user encountered test failures due to missing color schemes in the test database, which was resolved by resetting the test database using migration commands after confirming the issue was with the local Discourse instance setup.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":21029,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"أحدث كاتب منشور","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"استخدام «العداد» من Google لقياس تغييرات أداء JS في Discourse","fancy_title_localized":true,"locale":"en","id":281158,"title":"Using Google's 'tachometer' to measure JS performance changes in Discourse","slug":"using-googles-tachometer-to-measure-js-performance-changes-in-discourse","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_1024x146.png","created_at":"2023-10-05T13:57:29.422Z","last_posted_at":"2023-10-05T13:57:29.614Z","bumped":true,"bumped_at":"2026-05-29T10:12:43.709Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"عند العمل على الجوانب الخاصة بالعميل في نواة Discourse أو الإضافات أو السمات، من المهم مراعاة الأثر على الأداء. يوفر مشروع «تاكومتر» من جوجل أداة قياس أداء صارمة إحصائيًا يمكن استخدامها لـ …","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1234,"height":176,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":146,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_1024x146.png"},{"max_width":800,"max_height":800,"width":800,"height":114,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_800x114.png"},{"max_width":600,"max_height":600,"width":600,"height":85,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_600x85.png"},{"max_width":400,"max_height":400,"width":400,"height":57,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_400x57.png"},{"max_width":300,"max_height":300,"width":300,"height":42,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_300x42.png"},{"max_width":200,"max_height":200,"width":200,"height":28,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/c/8/c/c8c2c8280eb16bf88a2041b68bf45af1ef81b6d8_2_200x28.png"}],"tags":[{"id":819,"name":"رمز","slug":"code"}],"tags_descriptions":{},"views":986,"like_count":17,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":17,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Google's 'Tachometer' project is used to measure JS performance changes in Discourse by statistically benchmarking changes through a 'round-robin' approach, reducing external factor impact and producing a comparison table after hundreds/thousands of iterations.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"كاتب المنشور الأصلي، أحدث كاتب منشور","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"إعداد بيئة تطوير متعددة المواقع","fancy_title_localized":true,"locale":"en","id":229310,"title":"Set up a multisite development environment","slug":"set-up-a-multisite-development-environment","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-06-07T16:01:37.089Z","last_posted_at":"2022-06-07T16:01:37.228Z","bumped":true,"bumped_at":"2026-05-29T10:12:41.903Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"من الممكن تشغيل discourse في وضع المواقع المتعددة أثناء التطوير. يستخدم خادم المواقع المتعددة قاعدة بيانات واسم مضيف مختلف لكل موقع يخدمه. وهذا مفيد إذا كنت تطور ميزة أو إضافة يجب أن...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":150,"name":"تثبيت-المطور","slug":"dev-install"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة","تثبيت-المطور":"تعليمات ومشاكل تثبيت Discourse للتطوير"},"views":2013,"like_count":12,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":12,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Set up multisite development by adding a `config/multisite.yml` file, specifying a separate DB and hostname for each site, and using the `RAILS_DB` environment variable to run rake tasks against targeted sites.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"كاتب المنشور الأصلي، أحدث كاتب منشور","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"تثبيت الإضافات في بيئة التطوير غير Docker الخاصة بك","fancy_title_localized":true,"locale":"en","id":205337,"title":"Install plugins in your non-Docker development environment","slug":"install-plugins-in-your-non-docker-development-environment","posts_count":1,"reply_count":2,"highest_post_number":1,"image_url":null,"created_at":"2021-10-06T09:47:24.341Z","last_posted_at":"2021-10-06T09:47:24.632Z","bumped":true,"bumped_at":"2026-05-29T10:12:40.846Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"يتناول هذا الدليل فقط تثبيت التطوير غير القائم على Docker. لتثبيت التطوير باستخدام Docker :whale: راجع تثبيت Discourse للتطوير باستخدام Docker\nإذا اتبعت التعليمات لإعداد discourse المحلي لديك، فيمكنك تثبيت إضافة محلي...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":150,"name":"تثبيت-المطور","slug":"dev-install"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة","تثبيت-المطور":"تعليمات ومشاكل تثبيت Discourse للتطوير"},"views":3406,"like_count":16,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":16,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"To install a plugin locally in a non-Docker development environment, download the plugin, run migrations if necessary, restart the server, and edit settings at localhost:4200/admin/plugins.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"كاتب المنشور الأصلي، أحدث كاتب منشور","user_id":115923,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"تثبيت Discourse على Windows لأغراض التطوير","fancy_title_localized":true,"locale":"en","id":75149,"title":"Install Discourse on Windows for development","slug":"install-discourse-on-windows-for-development","posts_count":17,"reply_count":57,"highest_post_number":120,"image_url":null,"created_at":"2017-12-01T06:36:51.406Z","last_posted_at":"2026-04-22T10:18:42.190Z","bumped":true,"bumped_at":"2026-05-29T10:12:39.158Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":information_source: تم اختبار هذا البرنامج التعليمي على نظامي Windows 10 و 11. \nلإعداد بيئة تطوير لـ Discourse على نظام Windows، يمكنك فعل ذلك باستخدام ميزة Windows Subsystem for Linux. \nيتطلب هذا الإعداد ...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":150,"name":"تثبيت-المطور","slug":"dev-install"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة","تثبيت-المطور":"تعليمات ومشاكل تثبيت Discourse للتطوير"},"views":73728,"like_count":68,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":52,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users report installation failures on Ubuntu 24.04 within WSL preventing host access to port 3000, while a workaround involving replacing 127.0.0.1 with localhost resolves specific image loading issues.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":139654,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":36685,"primary_group_id":null,"flair_group_id":148},{"extras":null,"description":"ناشر متكرر","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"أحدث كاتب منشور","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"تثبيت Discourse على Ubuntu أو Debian لأغراض التطوير","fancy_title_localized":true,"locale":"en","id":14727,"title":"Install Discourse on Ubuntu or Debian for Development","slug":"install-discourse-on-ubuntu-or-debian-for-development","posts_count":84,"reply_count":490,"highest_post_number":756,"image_url":null,"created_at":"2014-04-12T22:22:07.751Z","last_posted_at":"2025-06-22T00:31:14.326Z","bumped":true,"bumped_at":"2026-05-29T10:12:37.854Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"⚠️ يغطي هذا الدليل تعليمات التثبيت في بيئة تطوير. للحصول على دليل الإنتاج، راجع: تثبيت Discourse في بيئة الإنتاج باستخدام التعليمات المدعومة رسميًا\n\n\nإذن، تريد إعداد Discour…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":150,"name":"تثبيت-المطور","slug":"dev-install"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة","تثبيت-المطور":"تعليمات ومشاكل تثبيت Discourse للتطوير"},"views":198396,"like_count":133,"has_summary":true,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":66,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"User struggles to configure Discourse to run externally on a remote server, encountering issues with binding to the specified IP address.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":93926,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":114728,"primary_group_id":276,"flair_group_id":276},{"extras":null,"description":"ناشر متكرر","user_id":14353,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"تثبيت Discourse على macOS لأغراض التطوير","fancy_title_localized":true,"locale":"en","id":15772,"title":"Install Discourse on macOS for development","slug":"install-discourse-on-macos-for-development","posts_count":103,"reply_count":236,"highest_post_number":402,"image_url":null,"created_at":"2014-05-19T16:59:50.976Z","last_posted_at":"2026-04-24T18:38:20.659Z","bumped":true,"bumped_at":"2026-05-29T10:12:36.599Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":warning: يغطي هذا الدليل تعليمات التثبيت لبيئة تطوير على نظام macOS. للحصول على أدلة الإنتاج، راجع: تثبيت Discourse في بيئة إنتاج باستخدام التعليمات المدعومة رسميًا\n\nإذن، تريد إعداد Disc&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":150,"name":"تثبيت-المطور","slug":"dev-install"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة","تثبيت-المطور":"تعليمات ومشاكل تثبيت Discourse للتطوير"},"views":114694,"like_count":283,"has_summary":true,"last_poster_username":"jericson","category_id":56,"op_like_count":78,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user suggests editing the newly posted macOS Discourse development installation guide into the first post of the topic for better visibility.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":105081,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":125230,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":14353,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":15442,"primary_group_id":null,"flair_group_id":118}]},{"fancy_title":"تثبيت Discourse للتطوير باستخدام Docker","fancy_title_localized":true,"locale":"en","id":102009,"title":"Install Discourse for development using Docker","slug":"install-discourse-for-development-using-docker","posts_count":227,"reply_count":189,"highest_post_number":326,"image_url":null,"created_at":"2018-11-16T09:40:04.247Z","last_posted_at":"2026-05-22T05:35:27.938Z","bumped":true,"bumped_at":"2026-05-29T10:12:35.336Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"التطوير باستخدام Docker\nنظرًا لأن Discourse يعمل داخل Docker، يجب أن تتمكن من تشغيل Discourse مباشرةً من مجلد المصدر الخاص بك باستخدام حاوية تطوير Discourse. \n:white_check_mark: المزايا: لا حاجة لتثبيت أي ...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":24,"name":"docker","slug":"docker"},{"id":150,"name":"تثبيت-المطور","slug":"dev-install"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة","تثبيت-المطور":"تعليمات ومشاكل تثبيت Discourse للتطوير"},"views":88298,"like_count":366,"has_summary":true,"last_poster_username":"dubwoc","category_id":56,"op_like_count":72,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user attempting to initialize the Discourse Docker development container encounters persistent permission errors when writing to the source directory, leading to failed gem installations, symlink creation issues, and eventual database connection failures despite applying broad chmod fixes.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":36692,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":131037,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":15209,"primary_group_id":null,"flair_group_id":142},{"extras":"latest","description":"أحدث كاتب منشور","user_id":119723,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Developing Discourse on GitHub Codespaces","fancy_title_localized":false,"locale":null,"id":336131,"title":"Developing Discourse on GitHub Codespaces","slug":"developing-discourse-on-github-codespaces","posts_count":15,"reply_count":10,"highest_post_number":17,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_1024x794.png","created_at":"2024-11-14T12:12:38.860Z","last_posted_at":"2025-09-09T13:50:26.566Z","bumped":true,"bumped_at":"2026-05-29T10:12:34.360Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"GitHub Codespaces is a very fast way to get started with Discourse development. Their free tier is good for 30 hours per month of a 4-core machine. \nGetting Started\n\n\nNavigate to the github repository \n\n\nPress the , (com&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1186,"height":920,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03.png"},{"max_width":1024,"max_height":1024,"width":1024,"height":794,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_1024x794.png"},{"max_width":800,"max_height":800,"width":800,"height":620,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_800x620.png"},{"max_width":600,"max_height":600,"width":600,"height":465,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_600x465.png"},{"max_width":400,"max_height":400,"width":400,"height":310,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_400x310.png"},{"max_width":300,"max_height":300,"width":300,"height":232,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_300x232.png"},{"max_width":200,"max_height":200,"width":200,"height":155,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/5/f/e5f24c96d301ed4246d1de639dd5b4b21a0e0d03_2_200x155.png"}],"tags":[],"tags_descriptions":{},"views":1718,"like_count":28,"has_summary":false,"last_poster_username":"NateDhaliwal","category_id":56,"op_like_count":13,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user reports issues with the ember-cli command terminating unexpectedly when impersonating and switching users in a GitHub Codespaces environment.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":95552,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":155596,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":1,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"أحدث كاتب منشور","user_id":135392,"primary_group_id":null,"flair_group_id":73}]},{"fancy_title":"Developing Discourse using a Dev Container","fancy_title_localized":false,"locale":null,"id":336366,"title":"Developing Discourse using a Dev Container","slug":"developing-discourse-using-a-dev-container","posts_count":14,"reply_count":8,"highest_post_number":15,"image_url":null,"created_at":"2024-11-15T16:44:08.898Z","last_posted_at":"2026-05-28T18:59:23.760Z","bumped":true,"bumped_at":"2026-05-29T10:12:32.762Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Dev Containers is an open standard for configuring a development environment inside a container. This almost entirely eliminates the need to install/configure Discourse-specific tools/dependencies on your local machine, &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":17951,"like_count":36,"has_summary":false,"last_poster_username":"dfabulich","category_id":56,"op_like_count":13,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user reported that accessing the Discourse Dev Container via CLI on macOS failed due to port binding issues, leading them to recommend the legacy boot_dev script for non-VS Code environments.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":174008,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":127446,"primary_group_id":null,"flair_group_id":73},{"extras":null,"description":"ناشر متكرر","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"أحدث كاتب منشور","user_id":9858,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"تثبيت إصدارات الإضافات والقوالب لإصدارات Discourse الأقدم (فروع d-compat)","fancy_title_localized":true,"locale":"en","id":272665,"title":"Pinning plugin and theme versions for older Discourse installs (d-compat branches)","slug":"pinning-plugin-and-theme-versions-for-older-discourse-installs-d-compat-branches","posts_count":5,"reply_count":3,"highest_post_number":7,"image_url":null,"created_at":"2023-07-26T10:00:42.315Z","last_posted_at":"2026-05-27T09:30:24.129Z","bumped":true,"bumped_at":"2026-05-27T09:30:24.129Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":":open_book: الخلفية\nعادةً ما يرغب مطورو السمات والإضافات في استهداف أحدث إصدار من Discourse دون القلق بشأن التوافق مع الإصدارات السابقة. ولكن المواقع التي تعمل بإصدارات أقدم من Discourse لا تزال بحاجة إلى إصدار…","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":1334,"like_count":28,"has_summary":false,"last_poster_username":"david","category_id":56,"op_like_count":17,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The documentation now describes the new d-compat branch strategy for pinning plugin and theme versions to older Discourse releases, which is officially available for use.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":135392,"primary_group_id":null,"flair_group_id":73},{"extras":"latest","description":"أحدث كاتب منشور","user_id":23968,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"تحقق تلقائي وتنسيق الكود قبل الالتزامات","fancy_title_localized":true,"locale":"en","id":132947,"title":"Automatically lint and format code before commits","slug":"automatically-lint-and-format-code-before-commits","posts_count":1,"reply_count":2,"highest_post_number":1,"image_url":null,"created_at":"2019-11-08T17:16:11.987Z","last_posted_at":"2019-11-08T17:16:12.188Z","bumped":true,"bumped_at":"2026-05-15T19:55:01.432Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"يستخدم Discourse lefthook للخطافات (hooks) الخاصة بـ git، و bin/lint كنقطة دخول رئيسية لواجهة سطر الأوامر (CLI) لتشغيل نفس الفحوصات يدويًا.\nإذا كنت تعمل في نسخة محلية (local clone)، قم بتثبيت الخطافات مرة واحدة:\npnpm install\npnpm lefthook install\n\nبعد...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":819,"name":"رمز","slug":"code"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة"},"views":1527,"like_count":11,"has_summary":false,"last_poster_username":"Discourse","category_id":56,"op_like_count":11,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"The Discourse repository now uses lefthook to automatically lint and format code before commits, blocking the process if errors are detected after running installation commands.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"كاتب المنشور الأصلي، أحدث كاتب منشور","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":1,"primary_group_id":47,"flair_group_id":47}]},{"fancy_title":"ابدأ باستخدام Theme Creator و Theme CLI","fancy_title_localized":true,"locale":"en","id":108444,"title":"Get started with Theme Creator and the Theme CLI","slug":"get-started-with-theme-creator-and-the-theme-cli","posts_count":9,"reply_count":13,"highest_post_number":27,"image_url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_777x1024.png","created_at":"2019-02-05T18:40:04.304Z","last_posted_at":"2026-05-07T14:04:22.942Z","bumped":true,"bumped_at":"2026-05-07T14:04:22.942Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"سيرشدك هذا الموضوع خلال كيفية استخدام أداة سطر الأوامر للسمات (Theme CLI) مع موقع منشئ السمات (Theme Creator) الخاص بنا لتطوير سمة ومعاينة تغييراتك على موقع Discourse مباشر.\n\nسجّل للحصول على حساب هنا في ميتا إذا لم تكن قد فعلت ذلك بالفعل\n\n...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":[{"max_width":null,"max_height":null,"width":1224,"height":1612,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277.png"},{"max_width":1024,"max_height":1024,"width":777,"height":1024,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_777x1024.png"},{"max_width":800,"max_height":800,"width":607,"height":800,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_607x800.png"},{"max_width":600,"max_height":600,"width":455,"height":600,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_455x600.png"},{"max_width":400,"max_height":400,"width":303,"height":400,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_303x400.png"},{"max_width":300,"max_height":300,"width":227,"height":300,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_227x300.png"},{"max_width":200,"max_height":200,"width":151,"height":200,"url":"//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/7/0/7/707f15c4b072258fb9e33c3a4fe7f30b715b4277_2_151x200.png"}],"tags":[{"id":478,"name":"كيفية","slug":"how-to"},{"id":566,"name":"منشئ-السمة","slug":"theme-creator"},{"id":820,"name":"أدلة-السمات","slug":"theme-guides"}],"tags_descriptions":{"كيفية":"تحتوي أدلة كيفية الإرشاد على خطوات يجب اتباعها لحل مشكلة معينة","منشئ-السمة":"مواضيع حول مُنشئ سمات Discourse"},"views":12830,"like_count":58,"has_summary":false,"last_poster_username":"micke","category_id":56,"op_like_count":42,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A user reports that while the Theme CLI syncs changes successfully, custom color schemes defined in about.json do not appear in the theme selection interface or user preferences, leaving only a default scheme visible.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":101447,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":128201,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":114728,"primary_group_id":276,"flair_group_id":276},{"extras":"latest","description":"أحدث كاتب منشور","user_id":192487,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Discourse toolkit to render forms","fancy_title_localized":false,"locale":null,"id":326439,"title":"Discourse toolkit to render forms","slug":"discourse-toolkit-to-render-forms","posts_count":29,"reply_count":18,"highest_post_number":33,"image_url":null,"created_at":"2024-09-13T21:20:27.941Z","last_posted_at":"2025-12-23T17:55:56.356Z","bumped":true,"bumped_at":"2026-05-06T20:13:17.223Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Basic Usage\nFormKit exposes a single component as its public API: &lt;Form /&gt;. All other elements are yielded as contextual components, modifiers, or plain data. \nEvery form is composed of one or multiple fields, represen&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[],"tags_descriptions":{},"views":1493,"like_count":55,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":6,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"A discussion about correcting the parameter structure for the validateUsername function in FormKit, clarifying that it should accept { data, addError } instead of (name, value, data, { addError }) to avoid destructuring errors.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":23163,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"ناشر متكرر","user_id":2770,"primary_group_id":47,"flair_group_id":47},{"extras":null,"description":"ناشر متكرر","user_id":23968,"primary_group_id":47,"flair_group_id":47},{"extras":"latest","description":"أحدث كاتب منشور","user_id":27384,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"تطوير إضافات Discourse - الجزء 2 - الاتصال بمخرج الإضافة","fancy_title_localized":true,"locale":"en","id":31001,"title":"Developing Discourse Plugins - Part 2 - Connect to a plugin outlet","slug":"developing-discourse-plugins-part-2-connect-to-a-plugin-outlet","posts_count":39,"reply_count":21,"highest_post_number":42,"image_url":null,"created_at":"2015-07-12T17:48:27.322Z","last_posted_at":"2025-11-23T09:35:13.414Z","bumped":true,"bumped_at":"2026-05-05T17:38:29.859Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"الدرس السابق: تطوير إضافات Discourse - الجزء الأول - إنشاء إضافة أساسية\n\nالبداية: القوالب\nتطبيق عميل Discourse مكتوب باستخدام إطار عمل Ember.js لجافا سكريبت. يستخدم Ember القوالب لتوليد...","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"thumbnails":null,"tags":[{"id":484,"name":"دروس-تعليمية","slug":"tutorial"},{"id":274,"name":"أدلة-الإضافات","slug":"plugin-guides"}],"tags_descriptions":{"دروس-تعليمية":""},"views":30155,"like_count":102,"has_summary":false,"last_poster_username":"merefield","category_id":56,"op_like_count":38,"pinned_globally":false,"featured_link":null,"ai_topic_gist":"Users discuss updating a command to find plugin outlets in Discourse, noting a deprecated link and suggesting a replacement resource for current documentation.","has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"كاتب المنشور الأصلي","user_id":115923,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":39365,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":19,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"ناشر متكرر","user_id":131832,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"أحدث كاتب منشور","user_id":27384,"primary_group_id":null,"flair_group_id":null}]}]}}