V7 Reboot Draft Feedback

General Comments:

Loving the responsiveness of the new site! Definitely makes it feel much more modern!

Font Size:

Font size seems a little small. It's at 0.8rem from what I can tell, can that be a smidgen larger?
Looks like TWHL body font size is around 14pt on my 4K 34" screen which feels about right.

Do we need to add the GDPR cookie notice onto the Pit?

Mobile Sliding Sheet Menu:

I'm lovin' the new mobile sheet menu! That's awesome! Since functionally it does exactly what it needs to, can we dress it up to appear less stock?

Give each link the same yellow link style as other links on the site.
Can the text links be slightly larger to feel like top-level menu links? Perhaps larger than a revised 14pt body font size?
Love the inline search bar. That's slick!
Can we replace the Snarkpit text at the top with the image logo? (I may work on a vector .svg version of the logo if possible to replace the text portion potentially).

Home Page:

Content not centered on mobile screen size:

Mobile screen size changes:

Place Community News section first at mobile screen size, followed-by:

Recent Forum Posts
Spotlight (see notes below)
Latest Maps
Recent Updates
Latest Journals

At the medium screen size, move Latest Journals section beneath Latest Maps Section

Spotlight Maps Changes:

I really like how the latest maps are shown in a combined view. Can the spotlight view also be shown this way at the mobile screen resolution breakpoints?

Maps Landing Page:

Love the instant filtering. It's MUCH speedier now, and appreciate the new "upload a map" button location. This will make it much easier to find.
Are star maps and star map sorting still available? As seen from the old site:

Map Item Containers:

This is not anything on your layout, and was always a design element in the original Pit that bugged me, where we had these large gaps at non-standard image sizes for maps and other image elements that left large gaps as shown below:

Can these be containerized in the way the Spotlight map items are contained within a larger frame?

That, or achieve something similar with filler color and middle-aligned images such as on TWHL's vault:

Spotlight container edges look cleaner:

TWHL's filler bars are a nice fix:

Does editing a map's detail page sort it to the top of the newest first list? (not ideal). However,  creating an option to sort by "recently updated" may be useful in that way.

Map Detail Page:

The inline enlarged image view was desperately needed. Thank you for adding that!
Map description text is nice to see without needing to scroll now.
Is it difficult to keep an old "watch discussion" button/link for a map? Shown from the old site below:

Can we rename the download button from "Download" to "SnarkPit Download" ?

This is my effort to highlight that we host our own map files, no need to upload elsewhere.

Optional New Admin feature request:

Can we add a link to the game store / download page?

I want to make it easier for folks to find the actual game, so they can play the mod/map easily.
Can we rename the circled link below from "game:" to "More Content for:"
And then add a new line beneath that titled: "Get game:" and a field link of the game title, populated from an admin table I can edit to include that external game link / store page for each game database entry?

Articles / Downloads Landing Page:

At the largest resolution, can we reduce the size of each row thumbnail image item to a max size of 218 px wide (or around that size?) I think 308px is probably too large for the size of those original images.

User Detail Page:

See notes under Maps Landing Page for Map container Item comments (above).

Forums
Group Landing Page:

Is it easy to add back in the "Other Users online" link and short list?

Forums Thread Landing Page:

Are the snark icons used to represent an individual thread still active (the hot thread icon, etc.)?

Is there a legend or way to see what those represent? Or instead of a legend, just adding an alt text on hover might be enough.

Forum Thread Page:

I really like the centered usernames and blurbs for Individual posts, but can't help but notice the different padding. Please revise slightly:

I REALLY appreciate the new anchor links to individual threads.
Love the new Reply panel!
It appears BBcode was finally replaced. Does that mean the site is already parsing that out?

formatting help page does not yet appear for me.
I like the new formatting buttons and syntax! Does it make sense to use a Markdown parser instead, and replace those functions with markdown, since that seems to be the way most of the internet thread formatting is going?
Smilies appear broken in the live preview pane.

More comments to come!

Glad you're liking it overall, and this is great feedback. Going to make a checklist for myself to work on over the week. Also a few responses to questions/etc:

Increasing the font size is easily done, but might break some other stuff around the site since I styled things using that font size. Not a big deal, but might need some extra fixes if I miss some.
GDPR notice isn't needed, that's only required for non-essential cookies (login cookies are essential). For example if you added ads to the site, you'd need the notice since those almost always use tracking cookies.
SVG (or even PNG) logo would be much appreciated, perhaps in various different layouts (e.g. logo only, logo + text, etc). I couldn't find the original art for the snark so I ended up clipping it out from the original site's graphics.
Reordering the sections on mobile might also require reordering on the desktop layout as well, but I'll need to try it first to see.
I think I might have not implemented the "star maps" feature, should I add it in?
I can add the 'other users online' section back in, maybe it can just show logged in users based on their last activity? If they visited any page on the site in the last 10 mins maybe? Tracking the anonymous logins is a lot harder, and I'd like to avoid that if possible. Same for the link to the dedicated page of online users - it seems somewhat overkill. Maybe the whole thing could be replaced with an "active users" section on the home page, like TWHL has?
The forum thread icons just represent if there's new posts that were posted after your last login. I can add a tooltip to them.
BBCode - the old site had some weirdness going on with bbcode, especially in articles - some of it was pre-parsed and the html saved to the database, and some of it was parsed and converted into html when the page is loaded. It's more consistent now, the bbcode is saved to the database and also converted to html and that's saved into a second database field. It's a little bit more efficient than having to parse the bbcode for every post every time a page is loaded.
The BBCode is actually using the same parser that I made for TWHL, which I call WikiCode. I removed most of the TWHL-specific features and added the missing SnarkPit features so it's pretty much compatible with how SnarkPit did it before. Markdown is probably not a good idea since there's a lot of history in the threads that use BBCode stuff that markdown doesn't support too well. My WikiCode variant is sort of a mashup of BBCode and Markdown which allows stuff like *bold* and /italics/ without typing [b]bold[/b] and so on, so hopefully it does the trick.

Checklist

[ ] Increase font size and review pages to make sure nothing looks weird
[ ] Tweak mobile slideout menu
[ ] Home - mobile updates

[ ] Center content
[ ] Reorder sections
[ ] Change spotlight to smaller icons in mobile

[ ] Maps

[ ] Star maps functionality/filtering
[ ] Normalise map thumbnail heights like TWHL does (do this on user detail page also)
[ ] Sorting options for both recently created and recently modified
[ ] Add 'subscribe' button to map detail page
[ ] Update 'Download' button to 'SnarkPit Download'
[ ] Add link to game purchase / download page, update game label ("More content for:" instead of "game:")

[ ] Admin stuff

[ ] Add game store link / download page to game config editing

[ ] Tweak thumbnail size of article/download images in the index pages
[ ] Add back in 'Online users' section (logged in users only? or active users widget on home page?)
[ ] Forums

[ ] Add tooltips to forum thread icons
[ ] Tweak padding on user details in forum posts
[ ] Fix smilies in the live preview (its pointing to snarkpit.net instead of reboot.snarkpit.net)

Progress in checklist above. Notes:

For changing the order on the mobile layout, I was able to get most of the changes you wanted except for "Recent Updates" which I couldn't put after "Recent Maps" - I can only change the order of things within the same column, but I can't put stuff from the left column underneath stuff from the right column. I put it below "Spotlight" instead, hopefully that's enough. If you really want it that order it's possible, but I would need to duplicate that section into both columns and toggle which one is visible based on the window size - not ideal, but doable.
I made some changes to the mobile home page - only the first news post is shown, and the first 3 spotlight items. Let me know if this is no good, I can change it back. I ended up changing TWHL to just one new post on the front page since we post news so rarely, and it doesn't make a lot of sense to make everyone scroll past multiple old news post to see the forum updates. Spotlight is 3 because 3 icons fits nicely into 1 row (4 seems a bit small, and 5 is way too small).

Hey Dan,
Thanks for continuing to stay on top of this and keeping things moving! I noticed some of the updates, and I think its coming along nicely! I've added my responses below your comments and numbered them for ongoing reference.
1. SVG Graphics / Updated Logo:

SVG (or even PNG) logo would be much appreciated, perhaps in various different layouts (e.g. logo only, logo + text, etc). I couldn't find the original art for the snark so I ended up clipping it out from the original site's graphics.

I noticed the new SVG logo in the slide sheet, which is looking great! I might tweak it a little as I think the black border comes out a little more than I anticipated at a mobile scale, but will work on getting higher-res separated version of the background snark image to finish out the main header logo for 4K screens a little better. More on that later.

2. Responsive Ordering:

For changing the order on the mobile layout, I was able to get most of the changes you wanted except for "Recent Updates" which I couldn't put after "Recent Maps" - I can only change the order of things within the same column, but I can't put stuff from the left column underneath stuff from the right column. I put it below "Spotlight" instead, hopefully that's enough. If you really want it that order it's possible, but I would need to duplicate that section into both columns and toggle which one is visible based on the window size - not ideal, but doable.

Since Journals were always an underutilized tool, I'd like to avoid giving them a spot at the very top of the home page. Can recent journals section go beneath recent maps section on the medium and large screen breakpoints otherwise? I like where it appears beneath the recent maps on the small screen breakpoint now. Does that still keep it in the same column?

3. Star Maps:

I think I might have not implemented the "star maps" feature, should I add it in?

Yes please. That's essentially our recommended maps tag. These are maps that are definitely worth a user's time.

4. Online Users:

I can add the 'other users online' section back in, maybe it can just show logged in users based on their last activity? If they visited any page on the site in the last 10 mins maybe? Tracking the anonymous logins is a lot harder, and I'd like to avoid that if possible. Same for the link to the dedicated page of online users - it seems somewhat overkill. Maybe the whole thing could be replaced with an "active users" section on the home page, like TWHL has?

If you're referring to the awesome active user list on TWHL like below, then yes! I think that would be an awesome addition and provide some much-needed encouragement for users ghosting.

Can we add that beneath the Recent Forum Posts section on the home page?
I'm completely fine with eliminating the dedicated user's list page otherwise.

Additionally, can we add a new line to the common footer on each page?:

Into something that reads like:

© Snarkpit.net 2001 - 2024 • about us • contact
184 users online • 13 members browsing forums
Snarkpit v7.0 created this page in 1.0037 seconds.

5. Forum Icons:

The forum thread icons just represent if there's new posts that were posted after your last login. I can add a tooltip to them.

I think that's completely fine and does the trick!

6. News Items:

I made some changes to the mobile home page - only the first news post is shown, and the first 3 spotlight items. Let me know if this is no good, I can change it back. I ended up changing TWHL to just one new post on the front page since we post news so rarely, and it doesn't make a lot of sense to make everyone scroll past multiple old news post to see the forum updates. Spotlight is 3 because 3 icons fits nicely into 1 row (4 seems a bit small, and 5 is way too small).

I think that's a good idea, especially for mobile. I know the "Community News" header at the top is a link to more news, but should there be a new button added beneath that post in the mobile version to "See more" ? But maybe that's not necessary. What are your thoughts?

7. BB Code:

BBCode - the old site had some weirdness going on with bbcode, especially in articles - some of it was pre-parsed and the html saved to the database, and some of it was parsed and converted into html when the page is loaded. It's more consistent now, the bbcode is saved to the database and also converted to html and that's saved into a second database field. It's a little bit more efficient than having to parse the bbcode for every post every time a page is loaded.
The BBCode is actually using the same parser that I made for TWHL, which I call WikiCode. I removed most of the TWHL-specific features and added the missing SnarkPit features so it's pretty much compatible with how SnarkPit did it before. Markdown is probably not a good idea since there's a lot of history in the threads that use BBCode stuff that markdown doesn't support too well. My WikiCode variant is sort of a mashup of BBCode and Markdown which allows stuff like bold and /italics/ without typing [b]bold[/b] and so on, so hopefully it does the trick.

I think the new system works great, and don't have any other objections to what you pointed out. I think the new system makes a lot more sense for what we need.

Will follow-up with more comments.

Hope all is well, Dan! I've got another round of comments queued up, but I think this will cover the last of the design changes, and the rest should just be bug squashing. There was a bit of time between me initially testing the site to write these down, and me posting them here, so I noticed some were no longer issues, and appreciate you continuing to work on the site!  I'm feeling really good about how both the mobile and desktop versions of the site are coming along. And it's performing beautifully for me! It's so wonderful to see the Pit get the kind of love needed to keep the content around. I really appreciate your time on all this.
Here's a design thoughts I had as I made efforts to check out both the mobile and desktop versions of the site:
Design Requests:

Header Menu Links:

The top menu links are noticeably different from the original website's link font, which I think will remain distracting to some past users. Does it break anything to update the font for those links to the standard web font: Impact at around 26 pt size, per my experiments below?

Side Sheet:

Can the menu items in the side sheet also match the font and style (all-caps) of the main menu?

Threads:

Looks like some users have written URLs and other long strings in their user profile fields that appear next to their avatar on thread posts. Does it make sense to add a truncation script with an ellipsis to each of those items so as to prevent them from overrunning into the body of a post? I'd expect the following example might look something like: "https://www.gamebanana.c..."

Forum Icons:

On a forum's top page with the list of icons along the left side, can we have the icons stack vertically rather than horizontally? They take up a lot of room on mobile, and can make reading the forum topic rather difficult:

Thread Posts on mobile:

On the mobile post shown below, the default author section for each post takes up an inordinate amount of space, which can make for a lot of scrolling through a longer thread:

Does it make sense to provide a different stacking arrangement on mobile breakpoints that reduce or limit some of the author's details? I really appreciate how it was accomplished on TWHL (highlighted below), and I can see that working on the Pit in a similar fashion:

The SnarkPit always listed a lot with a user's post, notable even back on the early 2000's internet standards, so on mobile I would appreciate limiting most of those details in favor of a slimmed down thread to reduce scrolling. I still like the idea of listing their post quantity beneath their name, since that conveys some kind of seniority across user's feedback. Formatted, I can see the following info appear at each author's section above the post itself:
Riven
1,628 posts
Posted on Sun Jul 7th 2024 at 4:22pm

I imagine the author's username would be a little larger font size than the other details.

Thread Edit Buttons on Mobile:

The edit buttons on mobile when logged-in wrap in a way that looks odd or may take up more room than necessary in the overall height of each post. I understand this may only be an issue for the super admin profile, since that account is the only one that sees a delete button on every single post, so consider this a low-priority.

Map Details Page:

Since there was always a bit of inefficiently distributed spacing for a Map's detail page, does it make sense to reorder or sort some of the sections to give more room to the Map Info section, as shown below?

I imagine this would allow the Map Info section to grow into 2/3rds of the space provided ideally.
I'm ok if this means the map rating section needs to come before the downloads section in all breakpoints as they appear on the detail page.

Can we add a breadcrumb trail feature at the top of a map's detail page that gives you a link back to the Map's search page with that game category filtered? This would work in a similar fashion to the forum breadcrumb trail feature. So on a map it might read like: "Maps / Counter Strike Global Offensive / surf_a_xbl..."

I can image the map name itself might need a truncation with ellipses added to prevent the breadcrumb trail from getting too long:

I understand we already have links back to the map's game page, but this would standardize the breadcrumb feature in a way that makes it obvious no matter where you are on the site.

About Us:

Have you visited the About us page (linked in the footer on each page)? Don't forget to add your own entry there, since you've more than earned it! Each developer has had an opportunity to leave their mark there no matter how promising or real you feel it might need to be. I like the sense of history it provides, and a bit of insight into the story of the Pit itself.

Thread Reply Section on Mobile:

While I love how true-to-form you've been able to design and modernize the reply section on SnarkPit, I'm realizing on mobile breakpoints the Smilie section always left much to be desired.

The Smilies sections takes up more than its fair share of space on mobile. Does it make sense to collapse the list to a button on mobile similar to the other icon buttons throughout the rest of the site?

I imagine using this icon or one similar in a button would be sufficient: https://fontawesome.com/icons/face-smile?f=classic&s=regular
Additionally, thinking through the location of the "Add signature" checkbox when the message preview can get quite long on mobile, does it make sense to move that checkbox together with the "Live Preview" checkbox so that its not as easy to miss?
If we also collapse the Smilies section, then I can image both the message preview and editing field would grow to fill the width like so:

This way, when the Smilies button is expanded, it would fill the space in the way the reply section is currently formatted. What are your thoughts on this?

Bugs:

Header:

At medium breakpoint, the top menu expands to wrap links (links that appear when logged-in), causing the SnarkPit logo graphic to split:

Thread Quote Button:

At some point when clicking the quote button on a thread to reply, the page seemed to time-out and never load up. This however, seems to have been fixed between the time I noted this, and posting it today.

Thread Edit Buttons on Mobile:

The edit buttons on mobile when logged-in wrap in a way that looks odd or may take up more room than necessary in the overall height of each post. I understand this may only be an issue for the super admin profile, since that account is the only one that sees a delete button on every single post. So consider this a low-priority.

Maps Pagination on Mobile:

Maps pagination runs off the edge of the screen when viewed at mobile breakpoint:

I'm not sure if this means the pagination list is simply shorter at smaller breakpoints, revealing fewer pages to cycle through. What are your thoughts on that?

Map Detail Page Image Buttons:

On first load of a Map's detail page, the image cycle buttons beneath the image appear correctly sized. However, on tapping or clicking one of them, they become a much larger size as shown below:

I don't necessarily mind the larger button sizes on mobile, as those appear correctly sized for tapping with a finger. I suspect however, the resizing behavior should not be dependent on clicking/tapping one of the buttons, but rather based on real-time breakpoint resizing?

Items I'm working on:

[ ] New .svg icons for each game
[ ] higher resolution version of the snark logo on the main header.

I will continue to review more of the site testing each of its features and will follow-up here. I'll start to limit my comments to bugs and no longer anticipate asking for any new feature requests like what was listed above, so we can start to wrap-up what we have.
Looking forward to hearing back!

Thanks for the detailed feedback, those are all achievable - I'll probably work on them this upcoming weekend.

Ok, I've worked through most of the most recent feedback - I'm aware I've still got some more things to do from the initial post.
Design requests:

[x] Header menu links
[x] Side sheet links
[x] Truncate long text in user details with ellipsis
[x] Thread list icons (will be vertical at mobile breakpoints, horizontal on larger screens)
[x] Post user details compressed on mobile (I played with this a lot to get something that looks good, see what you think)
[x] Post edit/delete buttons wrapping on mobile (I tried to fix this when updating the post user details for mobile)
[x] Breadcrumbs on map details page
[ ] Add my info to about page (I'll do this once it goes live :)
[x] Collapse smilies on mobile (I did this using a dropdown similar to how TWHL does it, but also on mobile I removed the 'show more' option because some of those smilies are rather large and cause the expanded section to be way too big on mobile)

Bugs:

[x] Top menu wrapping at medium desktop resolution
[ ] Thread quote button causing timeout (not sure about this one, quote button shouldn't change the page, but it does do a query to the server to get the bbcode text to quote)
[x] Post edit/delete buttons wrapping on mobile (already mentioned above)
[x] Reduce number of pages in pagination for mobile (this was difficult, there's only so much I can do without redoing a lot of stuff - it'll show the next/back buttons and 2 pages either side for mobile now)
[x] Image back/next buttons resizing on mobile (I just made them the larger size on every breakpoint)

@Riven202 long time no update :)
Someone nudged me about this today as the main site was offline (apache had crashed, I fixed it already) so I figured I'd close out the two last things that I hadn't done yet. No pressure, but it'd be great to get the new site deployed at some point. Let me know if you have more feedback or if there's any feedback I missed in the thread.
Added today - I think this was the last remaining things that weren't done yet:
Active users on front page

Online users in footer - tracking anonymous users is something I would like to avoid, so the footer will only show the count of registered users who have accessed the site in the last 10 minutes - it is cached and only updates once a minute so don't worry if you log in and it doesn't immediately go up by 1.

Hey Dan,
Thanks for soldiering on through the long months! It feels as though we're nearly there. And with the recent Half-Life 2 20th anniversary making a splash in the Valve community, it'd be nice to get the new Pit up and running in time for the holidays this December!
The site is looking slick, and running even better, and the new Active users feature is awesome! It really sells that community energy when you can see others engaging in real time. Thank you for implementing it!
I have just a few more bugs, and some hanging design "cleanup" requests, since I made it a point to navigate the site entirely on mobile, as well as push and turn all the back-end dials you painstakingly re-crafted and re-organized. The site is humming super smoothly, so this is my last list of design items, and with your thumbs-up, I'm comfortable going public with v7. Let me know if you have any objections.
A few notes on my previous promises:

I will probably not get around to producing new .svg icons for the games. And since I noticed you provided an easy process to implement that, no need to wait on this. I'll likely piecemeal those updates over time.
The header Snark graphic itself if sufficient for now, and probably won't get replaced any time soon. However, I'd like to see the new vector text logo and subtitle replace the raster version on the header. Though, I'm not sure how distracting it will appear since it's a bit brighter it seems.

Design Notes:

Menu button overlaps header logo graphic on mobile:
Note: This is not evident for whatever reason when I  emulate a mobile responsive simulation with the dev mode in Edge. So surprising to see it this way:

Poster Listing Squeezed on Mobile:
When viewed on my iPhone Xs, the overlap of the post count above the post timestamp gets a little squashed.  I'm ok hiding the post count on mobile if it means we don't get an awkward blank line between the user's name and the timestamp, since there's many users with usernames just as long as this one.

Home Page Journals section:
a. I may have missed where you previously responded to this, but since the Journals feature was always underutilized, I'd like to avoid giving them a spot at the very top of the home page, especially since they may perpetually remain dated.
b. Can we slip this to the bottom of the maps section at medium and large breakpoints? Otherwise, I like where it appears beneath the recent maps on the small screen breakpoint now.

Access Levels:
Do Moderator, Admin, and Super Admin provide distinctly different access levels? Admin and Super Admin seem to have similarly listed site management options, but I may be missing something.

Snow Snarks:
a. This is an old fan favorite from the very first version of the Pit. They are small images of snarks with santa hats on that gently drift down from the top of the page to the bottom. Clicking on one causes it to play an explosion gif. I enable them manually through the Super Admin > Site Config page under: "snow_snarks" parameter. I usually do this at the beginning of December each year.
b. Since this almost always gets cheers, is it easy to re-implement this feature again?

Upgraded Search:
I'm loving the new search results! It's actually useful, finally!

Support Forum Question / Answer Feature:
a. The v6 edition of the Pit introduce a "Support Forum" which meant the ability for the original poster, or a moderator to select a right / wrong answer on any subsequent post in that thread. That post receives an accepted answer banner. And the option was a drop-down list on each post. The options are:

Unset status
Assisted
Incorrect

b. These threads could be filtered in a search.
c. That forum's thread list also included a column showcasing threads with answers:

d. Image below is what an accepted post looks like, with the drop-down list at the top.

I am not sold on this graphic design for an accepted answer, because I believe it's easy to miss while scrolling down a long thread, but it worked.
Would be nice to have a "jump to first accepted answer" button or something similar at the top of such a thread.

Bugs:

Header Banner No Link on Mobile:
The Navbar banner logo image does not work as a link back to the home page at mobile screen breakpoints.

Missing Reply Text Formatting Buttons on Mobile:
The reply section hides any text formatting menu buttons while viewed on mobile responsive size:

Formatting help Button:
Clicking the "Formatting help" button in the reply section directs you to a 404 section page now. I'm not actually sure what that page used to be though. Do you have a new guide that gives direction on how to use the new text styling syntax and commands?

Forum Thread List Spillover:
a. The Forum thread list on any forum page on mobile overflows outside the mobile width for me on iPhone Xs.
b. Example taken from the Forums / General Banter thread page:
c. This same issue also appears on the Forums / Threads page when accessed from a user's control panel Links list.

Post List Mobile View Not yet Updated:
a. Control Panel > View Forum posts option takes you to a post list that is not yet updated to match the recently revised mobile version of the post list mobile responsive layout.
b. Forum / Posts:

Change Email SQL Error:
a. Control Panel > Update email option takes me to an SQL error page:

Spotlight List Spillover:
a. Admin page > Spotlight > Spotlights table overflows beyond the edge of the frame on mobile:

Games List Spillover:
a. Admin page > Games > Games table overflows at most all breakpoints.
b. Since the table is so wide, maybe it makes sense to give it an in-frame horizontal scroll bar?

Conclusion:
...And that's it! The site is running extremely smooth for me; definitely makes it feel much more energized! Looking forward to being able to reliably use the site on mobile now!
Feel free to reach out to me on Discord if you have any questions/follow-up if we need to chat before taking next steps. Thanks again for putting all your time on this! It really means a lot that you're able to bring the old site back to life! Looking forward to getting feedback from everyone once we go live.
Best,
Eric

Design:

I changed it to hide the snark logo when the viewport is too narrow, I couldn't really think of any decent alternative to handle smaller screens that didn't look worse than that.

Slightly updated the layout on narrow screens to improve the view:

Moved journals to be below latest maps on all size screens
Access levels:

moderators can: delete/edit articles, forum posts, forum threads, downloads, and news
admins can: everything moderators can do, and use all parts of the admin page except for the super admin stuff
super admins can: every admins can do, change the level of other users, obliterate users (for spammers), delete user accounts (for non-spam account remove requests)

TWHL has something similar and its based on the date (displays during December) rather than having to be turned on, so I've done something similar for the snow snarks too. Add ?snow to a url to preview outside of December. Unfortunately the explosion gif looks pretty bad in Firefox due to how it handles looping, I can't do anything about that...
Glad you like it :)
Hoping that we can exclude this feature as it wasn't used too much (only about 1 in 10 posts were marked as answered, and those forums were not used all too much)

Bugs:

Made the header a link for mobile screens
Unfortunately that's hard to change, there's just not enough screen page to put all the buttons there without it looking very messy, which is why those buttons are just hidden on small screens.
I haven't made this page yet but it'll be very similar to the TWHL formatting help page, with adjustments to match the Snarkpit flavour of the formatting.
I hid the 'views' and 'last post' columns on the thread list page for narrow screens, which makes it a bit nicer. On the page accessed from user control panel > links, the 'user' column is also hidden.
Updated the user > forum posts page to match the regular post listing page on mobile.
I can't seem to get this error when I try, can you try again?
To be honest I didn't design any of the admin pages for mobile since that's behind the scenes stuff, but I've fixed this by removing the 'by' column on small screens.
As above, but fixed by tweaking the text wrapping and hiding some columns as the screen shrinks.


Integration of Jinja2 Templating

Refactor Chat Templating to Utilize Jinja2
Overview
This pull request introduces a significant refactor of the chat templating system within the llama-cpp-python project. The primary objective is to simplify template management, enhance flexibility, and minimize dependencies by leveraging Jinja2's templating engine.
Changes Introduced

Jinja2 Templating: Shifted the templating mechanism to use Jinja2, which allows for more sophisticated templating features such as inheritance, macros, and custom filters while maintaining simplicity.
Template Customization: Users can now specify a custom template or fallback to a default provided template, giving them the flexibility to tailor the chat output to their preferences.
Reduced Complexity: The codebase simplification removes previously excessive dependencies and streamlines the chat formatting process.

Code Snippet
class AutoChatFormatter(ChatFormatterInterface):
    def __init__(
        self,
        template: Optional[str] = None,
        template_class: Optional[Template] = None,
    ):
        if template is not None:
            self._template = template
        else:
            self._template = llama2_template  # default template

        self._renderer = jinja2.Environment(
            loader=jinja2.BaseLoader(),
            trim_blocks=True,
            lstrip_blocks=True,
        ).from_string(
            self._template,
            template_class=template_class,
        )

    def __call__(
        self,
        messages: List[Dict[str, str]],
        **kwargs: Any,
    ) -> ChatFormatterResponse:
        formatted_sequence = self._renderer.render(messages=messages, **kwargs)
        return ChatFormatterResponse(prompt=formatted_sequence)

    @property
    def template(self) -> str:
        return self._template

Benefits

Consistency: Provides a consistent templating mechanism for formatting chat messages.
Performance: Reduces the overhead of managing templates and potentially improves the performance due to a simpler processing pipeline.
User Experience: Offers an improved experience for developers who are already familiar with Jinja2's syntax and behavior.
Local and Remote Template Support: Enhances the system's ability to reference both local and remote templates, thus improving usability and flexibility.

Discussion Points

How we can further optimize the templating engine for our use case.
Potential additional features or customizations we might want to include in the future.
Feedback on the default template structure and suggestions for improvements.

Conclusion
This update aims to strike an ideal balance between the sophistication of the templating features and the maintenance simplicity desired by the project's contributors and users. I look forward to the community's input on this proposal.

this looks very clean/simple.  and flexible enough to handle everything.    and if we allow the user to include a template "as a chat format", in addition to registering names, then it can accommodate things we haven't thought of.

Hey @teleprint-me this looks great! I think with the merging of https://github.com/ggerganov/llama.cpp/pull/4125 we can now use your approach to automagically get a chat format without having to rely only on presets (assuming the chat formats are included for new quantized models).

@abetlen
I left it separated to avoid conflicts with any changes you implemented.
How would you like to handle it?

@teleprint-me next steps I see:

Include jinja2 dependency in pyproject.toml
Change the behaviour of chat handler selection, order should be

Use chat_handler if set, else
Use chat_format if set (should be changed to default None in Llama.init), else
Use chat format from gguf file if exists, else
Use llama2 chat format

I think this order makes the most sense and avoids breaking backwards compatibility.

@abetlen
Sounds good!
I'll do my best to get around to it over the weekend.
I haven't had as much free time lately, but this is a high priority for me.
I'll see what I can do and keep you in the loop.
Let me know if anything changes in the mean time.

@teleprint-me thank you so much, I think this will be very helpful for a lot of people, let me know if you need any extra help!
In terms of conflicts there shouldn't be any I'm just working on some performance features for batching / speculative decoding and that should all be independant of the chat format work.

It's good to see this supporting multiple system messages, that's one limitation of the current templates. Some clients insert system messages at positions other than the start to provide instructions when using the chat completion API (e.g. SillyTavern, and the Herika Skyrim mod).
Will this PR replace the existing templates? I fixed the system role mapping for one existing format locally but don't want to create unnecessary conflicts. I definitely think Jinja templates are a good way to go.
Function templates might also be worth considering for the future, at least for what is passed to the model. The current system for that is fairly complicated.

@antcodd
If I understood correctly, no, it will not replace the currently existing templates seeing as @abetlen is looking to avoid breaking backwards compatibility with the current API.
This makes integration a bit more complicated which is why I'm taking my time with it.
That, and I'm in the middle of a bunch of personal projects, so I only have a limited amount of time to spend on each of them and this isn't including work.
@abetlen
How can I get the metadata from the models gguf file so I can extract the chat template if it exists? I didn't see in the spec... maybe I missed it?

@teleprint-me FWIW I think we can replace the implementation of some of the existing chat formats with this simpler Jinja2 approach, it shouldn't break anything on the API.
I haven't tested the embedded chat format approach but if a model supports it you should just be able to call llama_model_meta_val_str from llama_cpp with key tokenizer.chat_template, ie something like:
buflen = 2048 # should be enough, unsure
buf = (ctypes.c_char * buflen)(0)
llama_cpp.llama_modle_meta_val_str(llama.ctx, b"tokenizer.chat_template", buf, buflen)

Exploring llama.cpp and llama-cpp-python for Metadata Extraction
Objective: The main goal was to extract specific metadata from GGUF-formatted models using the llama.cpp and llama-cpp-python libraries, with a focus on keys like tokenizer.chat_template and tokenizer.huggingface.json.
Key Steps and Discoveries:

Initial Experiments:

Utilized llama_cpp.llama_model_meta_val_str to extract metadata from models, focusing on keys such as general.name and tokenizer.ggml.model.
Discoveries: Some keys, notably tokenizer.huggingface.json, returned -1, suggesting their absence or non-implementation in tested models.

Deep Dive into Source Code:

Investigated the C++ and Python code of llama.cpp and llama-cpp-python for insights into metadata management and extraction.
Notable Findings:

Examined structures like llama_model, llama_context, and gguf_context.
Identified LLM_KV_NAMES in llama.cpp, mapping enums to string metadata keys.
Confirmed the non-implementation of tokenizer.huggingface.json in tested models.

Documentation of Findings:

Uncovered the complexities in handling metadata extraction from GGUF files.
Emphasized the necessity of a comprehensive conversion script for model metadata inclusion.

Challenges:

Absence of Key Metadata: Targeted metadata keys (tokenizer.chat_template and tokenizer.huggingface.json) were not found in tested models.
Complexity of Source Code: Navigating intricate C++ and Python code presented challenges in understanding metadata handling.

Future Steps:

Conversion Script Development: Aim to create a script for converting models to include desired metadata, vital for requantizing models like openhermes and deepseek.

Enhancing Conversion Script: Focus on improving the script's ability to handle gguf model file metadata effectively, given its potential impact on the project.

Backend Integration with Llama-cpp-python: Concentrate on integrating Jinja2 templates with the backend to streamline the chat template system, which may offer a more immediate solution.

Tasks

Include jinja2 Dependency in pyproject.toml:

Status: ✅ Completed
Successfully added jinja2 as a dependency in pyproject.toml. Adjusted the initial version constraint from >=2.11.3,<3.0.0 to >=2.11.3 to resolve a dependency conflict with mkdocs-material. This adjustment was thoroughly tested, and the project environment was updated accordingly.

Modify Chat Handler Selection Logic:

Objective: Implement a new chat handler selection process as outlined by the project owner. The updated order should prioritize chat_handler if set, followed by chat_format (defaulting to None), then the chat format from the .gguf file, and finally defaulting to the llama2 chat format.
Status: 🚧 In Progress / To Do
This task involves modifying the existing code to adhere to the new selection criteria. It will require checking the specified conditions in order and applying the appropriate chat format based on the available settings or file configurations.

Hey guys, thanks a lot for working on this :pray:
While doing my investigation for this feature in https://github.com/imartinez/privateGPT I also came to read the parsing of the metadata of the GGUF files, but as well as it's creation, in the gguf-py part of llama.cpp.
While reading their implementation, I found out that tokenizer.chat_template is being added (see the usage of this enum https://github.com/ggerganov/llama.cpp/blob/37c746d687d877bc11803e96b4dc5f378b83c0a0/gguf-py/gguf/constants.py#L73) in new GGUF files (the GGUF version hasn't been increased, but we should see them in gguf files with v3 and onwards.
Looking at the usages of tokenizer.huggingface.json in the GGUF files writer, it seems it is simply not used - maybe a relic from the past.

Is there a discord or something like this for llama-cpp-python? If yes, I'd be interested in joining it :v:
Do not hesitate to come and say hi at Private's GPT one:  (channel #contributors)

@abetlen
I feel like I'm holding this PR hostage and I haven't had time to dig into to it. It technically needs to be integrated, so I'm going to allow it for review so you can do what you need to do. Let me know if you need anything.

Thought I'd add this here because I was experimenting with the latest llama.cpp updates.
The new convert.py script has the Keys.Tokenizer values baked into it now.
The new gguf package makes it a lot easier to extract the templates from the models metadata.
The following is an example on how to do it at a high-level.
"""
main.py - example file to experiment with extracting the chat template from the models metadata
"""
from __future__ import annotations

from gguf import GGUFReader, Keys

def get_chat_template(model_file: str) -> str:
    reader = GGUFReader(model_file)

    # Access the 'chat_template' field directly using its key
    chat_template_field = reader.fields[Keys.Tokenizer.CHAT_TEMPLATE]

    # Extract the chat template string from the field
    chat_template_memmap = chat_template_field.parts[-1]
    chat_template_string = chat_template_memmap.tobytes().decode("utf-8")

    return chat_template_string

def main() -> None:
    # this is just an exercise to determine how it might be done in practice
    model_file = "models/mistralai/Mixtral-8x7B-Instruct-v0.1/Mixtral-8x7B-Instruct-v0.1-q4_0.gguf"
    chat_template = get_chat_template(model_file)
    print(chat_template)

if __name__ == "__main__":
    main()

Which results in:
00:49:13 | ~/Local/llama_cpp_client
(.venv) git:(main | Δ) λ python main.py
{{ bos_token }}{% for message in messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if message['role'] == 'user' %}{{ '[INST] ' + message['content'] + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ message['content'] + eos_token}}{% else %}{{ raise_exception('Only user and assistant roles are supported!') }}{% endif %}{% endfor %}

So, llama_cpp.llama_model_meta_val_str should work now, but this assumes the gguf model file has the embedded metadata.

Hey @teleprint-me thanks for all the work on this, I've merged it in now. I still need to do a little bit to adapt this to the CompletionChatHandler interface so we can have a single method for adding new chat formats using jinja, will likely migrate the existing templates over as well and add support for auto loading from the gguf files but I think this will be really useful.


I want a feature like migrate status in Mybatis Migration.

Description
Mybatis Migration has a migrate status command that shows how far the migration file has been reflected.
https://mybatis.org/migrations/status.html
I want same feature in node-pg-migrate!
Suggested solution
sorry, no idea.
At a minimum, it would be good if one of the following could be accomplished.

Output the names of the latest files that have been reflected
Output the list of files that have been reflected
Output the list of files that have not been reflected

Alternative
No response
Additional context
This text has been translated from Japanese.

I really like this idea! However, due to I'm a single person maintaining this code base, I will put this feature request a bit at the end of the stack of things I currently need to work on. I hope this is ok.

I could take a stab at this if thats ok!


Cloud Assemblies and the App Model

As we progress in our design for an end-to-end developer experience for cloud applications, and start to venture into more complex use cases, there's a common pattern that keeps emerging, where more than a single artifact is needed in order to deploy cloud applications. Moreover, these artifacts interact with each other.
Some examples:

Runtime code: a zip file with a Lambda handler, a Docker image for a container-based app, an AMI for an EC2 fleet, etc.
Nested stacks: nested stacks are CloudFormation resources that point to other templates and deploy them in a single transaction.
Apps with multiple, related stacks: real-world cloud apps normally consist of more than a single stack, and there are cross references between these stacks.
Phased deployments: we know that there are use cases where deployments of a stack must happen in phases (for example, data migration might require deploying a stack that performs the migration and only after it's done, deploy a stack that removes the old resources). Other examples are limitations in CloudFormation such as #201.

In all of these cases, we still want the developer and CI/CD workflows to operate at the app level. What does it mean? It means that if a construct defines a Lambda function that uses some runtime code, when a developer invokes cdk deploy, the runtime code should be uploaded to an S3 bucket and the CloudFormation template should reference the correct bucket/key (and also make sure Lambda has permissions to read from the bucket). This should also seamlessly work within a CI/CD pipeline.
Since the CDK's unit of reuse is a construct library, any solution must not look at the problem from the app's perspective, but from a construct perspective. It should be possible for a construct library to encapsulate runtime code, nested stacks, etc. Then, when this library is consumed, the workflow above should continue to work exactly in the same way.
Design approach
At the moment, synthesis is actually performed at the App level and is tailored to produce a single artifact (CloudFormation template). The proposed design will allow any construct in the tree to participate in the synthesis process and emit arbitrary artifacts.
But it is not sufficient to just emit multiple artifacts. We need to model their interaction somehow (dependencies, data-flow, how do these artifact interact with cloud resources, etc).
Generalizing this, we effective need to have some way to describe the model for our app. If a CloudFormation template define the model for a single stack, we need a way to describe an entire cloud application.
Naturally, we should prefer a desired state configuration approach where the app model doesn't describe steps but rather the desired state, and then tools (like the CDK toolkit or CI/CD systems) can help achieve this desired state.
Let's say that the toolkit only knows how to work with app model files, which describe the desired state of an app in a format similar to CloudFormation templates:
{
  "Resources": {
    "MyLambdaCodePackage": {
      "Type": "AWS::App::Asset",
      "Properties": {
        "File": "./my-handler.zip"
      }
    },
    "MyTemplate": {
      "Type": "AWS::App::Asset",
      "Properties": {
        "File": "./my-template.json"
      }
    },
    "MyStack": {
      "Type": "AWS::App::CloudFormationStack",
      "Proeprties": {
        "TemplateURL": { "Fn::GetAtt": [ "MyTemplate", "URL" ] },
        "Parameters": {
          "MyLambdaCodeS3Bucket": { "Fn::GetAtt": [ "MyLambdaCodePackage", "Bucket" ] },
          "MyLambdaCodeS3Key": { "Fn::GetAtt": [ "MyLambdaCodePackage", "Key" ] }
        }
      }
    }
  }
}

This is not a CloudFormation template! It's an App Model file. It uses the same structure to define the desired state of an entire application. This file, together with all the artifacts synthesized from the app form a self-contained cloud app package ("cloud executable"?).
When tools read this file, they can produce a deployment plan for this app:

Upload the files ./my-handler.zip and ./my-template.json to an S3 bucket.
Deploy a CloudFormation stack. When executing the CreateStack API, use the S3 URL to specify the template URL and pass in parameters that resolve to the location of the S3 bucket and key of the Lambda runtime archive.

The power of this approach is that it is highly extensible. Anyone can implement App Resources which will participate in this process. The desired state approach deems that each resource needs to be able to be CREATED, UPDATED or DELETED, and also DIFFed against the desired state.
Implementation
Synthesis
Each construct in the tree may implement a method synthesize(workdir) which will be called during synthesis. Constructs can emit files (or symlinks) into a working directory at this time.
App Model Resources
Similarly to CloudFormation Resources, we can defined constructs that represent app model resources (AppStack, AppAsset). Similarly to how CloudFormation resources are implemented, these constructs will implement a method toAppModel() which will return an app model JSON chunk to be merged into the complete app model.
The App construct is now a simple construct, in it's synthesis() method, it will collect all app resources from the tree, merge them together and emit an app-model.json (or index.json) into the working directory.
The toolkit will expect to always find an index.json file in the working directory. It will read the file and form a deployment plan (calculate dependency graph based on references). Then, it will execute the deployment plan.
The toolkit can either deploy the entire app or only a subset of the resources, in which case it can also deploy any dependencies of this set.
Each app resource will have a "provider" implemented in the toolkit via an extensible framework. Providers will implement the following operations:

Diff(desired-state) the desired state against the current deployed state
Create/Update(desired-state) the resource to reach the desired state (idempotent)
Delete the resource
GetAtt(name) return the runtime value from the deployed resource (i.e. the actual bucket name)

In the normal flow, the toolkit will simply invoke the create/update operation in topological order (and concurrently if possible). It will supply the contents of the Properties object which represents the desired state. If a property includes a reference to another resource (via Fn::GetAtt), it will replace the token with the value from the other resource.
TODO
List of use cases we should tackle for this new design:

[ ] Transactionality: what happens if a deployment task fails? Should/can we roll it back? I guess it depends on the boundaries of a transaction. Perhaps we should make that part of the solution and for certain tasks (like S3), just "no-op". For tasks that support it, we can trigger an actual rollback if the entire transaction fails.
[ ] Environments: how do environments play here? A stack (and also an S3 object) should be bound to an environment.
[ ] Cross stack refs: how do we implement cross stack/cross env references in this model?
[ ] Docker images
[ ] Runtime values (allowing runtime code to use resolved attributes of infrastructure resources)
[ ] Environmental context
[ ] Construct metadata - where does it go now?
[ ] Vending runtime client libraries for constructs: it should be possible to supply reusable runtime code for a construct. This could be as simple as an API client generated from Swagger definitions or more complex as a Lambda handler base class which requires you to implement a bunch of methods and does magic for you. At any rate, this is something that needs to be somehow cross-language.
[ ] Packaging (see @kiiadi comment below)

The more I think about Stacks the more I think they're an implementation detail we shouldn't care about: the system should just take care of them.
The biggest downside to this is that people migrating over from CloudFormation, who want to recreate their existing templates in CDK, are going to want strict control over them.
I think we should give them that control without putting the concept of a Stack front and center.

This is partly true. I believe structuring the code per "stacks" and naming them accordingly is actually a good practice.
something like the following:
stacks/
  s3_stack/
    bucket.ts
  iam_stack/
    user.ts
    policy.ts


Seems to be not compitible with keycloak version 26?

Hi,
First of all I thank you for your effort as i really need to map group-ids to token and in default keycloak doesnt have such functionality as far as i recognized.
I tried your custom package. After installation it came to the client-scope mapper. When i create a map from your custom mapper, I get error upon login:
{
"error": "unknown_error",
"error_description": "Cannot parse the JSON"
}
Also, keycloak cmd console gives run time exception too.

version 26

What version of Keycloak are you running?

version 26

We haven't tested with that version yet, so it's likely the result of a breaking change somewhere between v22 (which is what we use) and v26.
If you want to do some investigation and submit a PR I'd be happy to review.

submit a PR

well, as i am new to keycloak, i dont have sufficient knowledge for creating my custom mapper :)
I just changed my backend design and for now, i am fine with using 'group names' in the token.


[management] improve validate-transaction

This will give us a rich response upon execution, no response if it has
yet to execute, and an error otherwise. Versus the previous step that
merely informed you that the transaction had been executed.
This is quite ugly in that we do not have the LCS encoded transaction
retrieval yet, but it will do for now.

@JoshLind and @matbd, this PR now only contains changes for management, I've moved the transaction-builder to another PR. There really was no good reason to bundle them. I've also taken care of your concerns, Josh. Please review again when you get a chance.
The other PR: https://github.com/libra/libra/pull/5319

@bors-libra r=gregnazario

:pushpin: Commit b47a67d has been approved by gregnazario

:hourglass: Testing commit b47a67ddcf551d21d217cf78a27a43dff0344bf5 with merge ecbfb612a76a123080a621b1fc8f4ee1d910885a...

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: gregnazario
Pushing ecbfb612a76a123080a621b1fc8f4ee1d910885a to master...


Notifications on telegram

Hello, is it possible to configure the bot to send notifications on telegram? For example, after the construction of a building or for the fleet movements.

Hey there,
No you can't at the moment, although you can modify the tool to include your custom alerts if you understand some python

Ok thanks for the answer. If I have time to develop it, then I can do a pull request for this feature if you want.

Sure thing, we will surely take a look
Good luck and if you have any questions feel free to ask on the Discord server


DB closing issue

async def async_get_db() -> AsyncSession:
    async_session = local_session

    async with async_session() as db:
        yield db

db is yielding here but after the use where should it close?
Now after each db operations I manually close db like db.close()

You don't need to manually close, when the session is yielded in an async context manager, it's automatically closed. From SQLAlchemy docs:
In the example above, the AsyncSession is instantiated using the optional async_sessionmaker helper, which provides a factory for new AsyncSession objects with a fixed set of parameters, which here includes associating it with an AsyncEngine against particular database URL. It is then passed to other methods where it may be used in a Python asynchronous context manager (i.e. async with: statement) so that it is automatically closed at the end of the block; this is equivalent to calling the AsyncSession.close() method.

Hey, @Hari10007, I believe the dependency is resolved once per request, so if you use multiple methods in a request, the connection will be closed only when the request is finished.

So there are two scenarios that I have doubts,

If I don't want our session to wait till all the operation to be completed(Because I am doing a CPU intensive task after the crud operation). Then we have to manually close this session just after the db operation's right.
If I manually close the db ,Then can I use this session for any other db crud operation's in that request.

NB: Just like opening the session only for the db operation in a function

Conceptually, if you close the session, you shouldn't be able to use it in the same request. You would need to open a new DB session for any subsequent DB operations within that request. I haven't actually tested this, though.
If you don't need the CPU-intensive task's result for the second DB operation, you might be better off just offloading the CPU-intensive task to a job queue. This way, you can keep both DB operations within the same request.
If the second DB operation requires the result of the CPU-intensive task, consider splitting the workflow into multiple requests. The first request would handle the initial DB operation and enqueue the CPU-intensive task. The second request, triggered after the task completes, would perform the second DB operation based on the task's result.
In any case, test different ways to approach this and see what works best for you.


Add possibility to log skip/error logs to another destination - eg. database

Maybe add possibility to configure if messages has to be logged somewhere or ignored.


which CPU to choose?

I currently own an RX 570 and am replacing the rest of my computer parts to be compatible with DDR5 Ram Memory. For that, I also want to change my CPU. Any suggestions for choosing a CPU that supports ROCm and DDR5.  So that I can use eg PyTorch?

The only discrete GPU to be officially supported is the 6800W. Therefore, the RX 6800 is the closest consumer GPU to official support as it has the same chip / die. I would expect enterprise-grade levels of support for it. However, that may mean something else to you and me than to AMD. So please still be wary of that. Also, once available support has been dropped for still-selling hardware (gfx803) before. So also be careful with software updates and check for eventual regressions / dropped support. Finally, make sure that you use a supported operating system in a supported version. Specifically, Ubuntu is currently only supported in the second most-recent LTS version.
DDR5 or 4 should not be relevant to ROCm.

Hi @GuiSilvaPA, please close the ticket if your query has been resolved.  Thanks.

Hi @GuiSilvaPA, I am closing the ticket now.  Thanks @Bengt for your feedback.  Please re-open the ticket if your query is still not resolved.  Thanks.


Video transcripts in do not appear sometimes

Description
LEARNER-424
How to test this PR
Go to any video block that have transcript. After loading transcript, navigate back and come to again video block. Repeat this process multiple times. Transcript should load every time.

@salman2013 Ready for review.

@salman2013 Ready for another review.


Attributes don't render on Cloudflare Workers (but work locally)

What happened?
Components built with Markdoc render properly in Remix on Cloudflare Pages using wrangler (locally). But when deploying to CF the attributes part of the component don't render.
To reproduce

Clone this repo
https://github.com/rodbs/markdoc-cf
Run it locally (npm run dev). Components render properly
Deploy to Cloudflare Pages  (npm pages:deploy). Attributes side of the components don't render
https://markdoc-cf.pages.dev/

Version
0.4.0
Additional context
Local

Deployed on CF

No response

I also run into the same issue

hey @rodbs! The issue here isn't with the Cloudflare Workers, but with the production build of the app. The problem is that you're using Callout.name property here, which resolves to "Callout" during development build, but is changed to "pf" in production build (screenshot from cloudflare pages logs below). In your example Markdoc is trying to render a component that doesn't exist.

The easiest way to fix it would be to change Callout.name to be just a "Callout" string.
Another solution if you wanna keep using Callout.name would be to update this line to pass the production name of the component to Markdoc as well:
renderers.react(content, React, { components: {
  [Callout.name]: Callout,
  [Counter.name]: Counter,
} })


Docker doc

Hello team, have added documentation on how to use the docker image in a pipeline. Please take a look and let me know if you have any comments.

need to delete the intellij file....


Refactor GlueSchemaRegistryDataFormatDeserializer to accept Schema object

Background
In order to de-serialize proto messages into POJOs, we need to know the file name of the original proto file registered. We will be using the schemaName as the proto file name. This change refactors the de-serializer to accept Schema object instead of plain schema definition.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Can you make sure the integration tests pass?

Integration test suite is trying to send Protobuf records and failing. They need to be added along with service side support. I will take them up separately.

Can you make sure the integration tests pass?

Integration test suite is trying to send Protobuf records and failing. They need to be added along with service side support. I will take them up separately.

Do all the unit tests pass? Integration tests for AVRO and JSON scenarios are passing?


Some issues with the repeat layer

I have been playing a bit with the repeat layer, and I am facing some problems.
Here's an example that showcases the problems I encoutered:
#include <dlib/dnn.h>

using namespace dlib;
using namespace std;

template <typename SUBNET>
using conblock = relu<bn_con<con<32, 3, 3, 1, 1, SUBNET>>>;

// With this network definition everything works
using net_type = loss_multiclass_log<fc<10, conblock<conblock<conblock<input<matrix<float>>>>>>>;

// If we try to use a repeat layer we face several problems
// this doesn't build, repeat layers can't have an input layer as a SUBNET
// using net_type = loss_multiclass_log<fc<10, repeat<3, conblock, input<matrix<float>>>>>;

// This does build, but then, we can't use the get_final_data_gradient method
// using net_type = loss_multiclass_log<fc<10, repeat<2, conblock, conblock<input<matrix<float>>>>>>;

int main()
{
    net_type net;
    std::vector<adam> solvers(net.num_computational_layers, adam());
    std::vector<long> labels(32, 1);
    std::vector<matrix<float>> samples(32, matrix_cast<float>(gaussian_randm(100, 100)));
    resizable_tensor x;
    net.to_tensor(samples.begin(), samples.end(), x);
    net.compute_loss(x, labels.begin());
    net.back_propagate_error(x);
    net.update_parameters(solvers, 0.1);
    const auto& grad = net.get_final_data_gradient();
    cout << grad.num_samples() << 'x' << grad.k() << 'x' << grad.nr() << 'x' << grad.nc() << endl;
}

Let's break it down, there are 3 network definitions (that define the same architecture)

the first one doesn't use repeat layers, and everything works fine
the second one replaces the 3 conblocks with a repeat layer. Apparently, the SUBNET can't be an input layer.
the third one uses a repeat layer to replace 2 conblocks and and extra conblock before the input, but then I realized that repeat layers don't have a get_final_data_gradient() method.

I am not too worried about the 2nd case, where we can't use an input layer as a SUBNET for the repeat layer, but I think not having the get_final_data_gradient() method is a problem... Is this easily solvable?
Thanks in advance :)

Oh yeah.  The repeat layer is missing a
        const tensor& get_final_data_gradient(
        ) const { return subnetwork.get_final_data_gradient(); }

declaration, which I think is all that's required.  It looks like I just forgot to add it.  Did you find that there was some complication that makes it not work for repeat layers?

Oh yeah.  The repeat layer is missing a
        const tensor& get_final_data_gradient(
        ) const { return subnetwork.get_final_data_gradient(); }

declaration, which I think is all that's required.  It looks like I just forgot to add it.  Did you find that there was some complication that makes it not work for repeat layers?

Actually, I didn't dig that much. Honestly, it's hard to wrap my head around that part of the library... 😔

Actually, I didn't dig that much. Honestly, it's hard to wrap my head around that part of the library... 😔

I just made the change. Should all be working now :)

I just made the change. Should all be working now :)

Great, I've just tried and it works now! Thank you so much.
For information, I was trying to do one thing I'm not sure is possible in dlib: I wanted to accumulate the gradients before performing the backward pass so that I can, effectively, use big batch-sizes even if the GPU does not have enough VRAM.
I need to study the API a bit more, and let you know if I make it work.
Anyway, thanks again for taking your time to look into this :)

Great, I've just tried and it works now! Thank you so much.
For information, I was trying to do one thing I'm not sure is possible in dlib: I wanted to accumulate the gradients before performing the backward pass so that I can, effectively, use big batch-sizes even if the GPU does not have enough VRAM.
I need to study the API a bit more, and let you know if I make it work.
Anyway, thanks again for taking your time to look into this :)

No problem.
Yeah, it's all setup to zero the gradients for you automatically.  Like the contract of each layer's backward() function is that it assigns (i.e. ovewrites) to the parameter gradient.  You would have to go take all those parameter gradients and accumulate them elsewhere.  So it's not going to be very convenient to do it.

No problem.
Yeah, it's all setup to zero the gradients for you automatically.  Like the contract of each layer's backward() function is that it assigns (i.e. ovewrites) to the parameter gradient.  You would have to go take all those parameter gradients and accumulate them elsewhere.  So it's not going to be very convenient to do it.

Yes, that is exactly what I thought, when I saw that gradients were zeroed out automatically. Anyway, not a big deal, it was more for fun that for a necessity.

Yes, that is exactly what I thought, when I saw that gradients were zeroed out automatically. Anyway, not a big deal, it was more for fun that for a necessity.


error=packageurl problem missing scheme

This was due to missing  rows in sbom_package_purl_ref for all sbom_node related to a specific sbom
https://access.redhat.com/security/data/sbom/beta/spdx/eap-7.4.z.json.bz2
https://access.redhat.com/security/data/sbom/beta/spdx/eap-8.0.z-8dab27c2e48b44e9503fa46d9a31e29a87ed0eab

which seems to no longer exist in beta sboms ... so maybe this was just a random issue with that specific SBOM and no longer exists.
We may need to consider data scoring scripts on current database as we ingest valid input which does not necc guarantee good data or make it very hard to ingest bad data (even if its valid sbom).

might be related to https://github.com/trustification/trustify/issues/701

as far as I can tell this was issue with sbom ... closing


Code coverage reporting with other unit tests

Hi,
I want to view the code coverage of my tests with my regular unit tests. I already use jest code coverage reporting in my unit tests and iI would like to merge add the coverage by detox.

@rotemmiz Would you like to reopen this issue? I'd be happy to start tinkering with the code with an eye to eventually contributing a PR.

Sure, do it! It sounds amazing if it's doable!

I'm looking for a way to eval() some JS from DetoxManager (be it the iOS or Android one for now). Or another way to access the value of a JS global var (__coverage__), JSON-encode it and send it via the socket. Any pointers?

Why not bundle it with the packager ?

Is there a way for the Detox client to inject code through the packager as part of its operation?

We need to specifically read this variable at cleanup time, after everything has run. I'm starting to think of an approach like react-native-eval's - emitting an event through one of the existing native modules and listening for a callback from JS: https://github.com/artemyarulin/react-native-eval/blob/master/android/src/main/java/com/evaluator/react/RNMEvaluator.java#L168
That would indeed require us to inject some JS code through the packager. Is this possible to automate in Detox?

Not currently, only with repackager

Hmm. Alternatively, maybe I can put together a standalone, pure JS solution for collecting coverage from a React Native app, and we can tackle Detox integration as a second step?

OK, based on my realisation above that most of what's needed here isn't actually Detox-specific (or even React Native-specific), I've started a project I'm tentatively calling bosphorus, which provides tools for serialising IstanbulJS coverage data from running apps over a socket connection. The architecture is, unsurprisingly, inspired by Detox itself 😄. Here's an example of reporting coverage from a basic Expo app running in the Simulator.

No Detox in there yet but I'll be looking into that next - help welcome!
Now, what's needed on the Detox side for a seamless developer experience? Here's what I think is essential:

Spawn bosphorus-server for the duration of the test run.
Run the equivalent of bosphorus-cli save-coverage right before cleanup (maybe in detox/src/client/Client.js?)

And then for bonus points:

Automate adding babel-plugin-istanbul to the build.
Automate importing and starting bosphorus-client in the testee.

Wow, this is amazing! Keeping an eye on that project.

Might interest you guys as a potential solution but I'm getting coverage in-process via my bridge module i'm working on.
TL;DR bridge extends on detox and allows react native code to run in process alongside the tests.  Main goal is to provide an easier way for React Native module developers to test their native modules - without hacky solutions or writing a ton of separate native android/ios test code. But it could have other uses cases.
Here's a gif of the core features test suite running, as you can see it's rapid:

And here's a gist of the test suite shown above - gives you an idea of what it's doing and what you have access to - no limits e.g. here's an output coverage report of our react-native-firebase library. 🙈

Ooh, nice @Salakar! Is that conceptually/technically similar to how the "debug JS remotely" feature works? This is pretty awesome.

@motiz88 yep pretty much that except it automatically enables that for you and takes over as the debugger instead of chrome.
There's no visible lag or performance hit in doing so that I've noticed either - a quick FPS test I ran the other day maintained around ~55 FPS - so it is lag free and just as performant as the chrome debugger if not more.
Am hoping to have a version published by the end of the weekend. Still a couple of one-off manual setup things that I'd to find a way of automating etc and some weird but worked around issues, such as:

Not sure if it's a RN issue or Detox issue relating to https://github.com/wix/detox/issues/608 - was the same on all versions of RN I tested, 48-54. That setInterval 'solves' the issue but ye it's pretty random - as long as there's a interval coming from native's JSTimers it's all fine. Maybe @rotemmiz can shed some light?

@motiz88 have pushed up my playground app project with this all in if you'd like to take a look: https://github.com/invertase/react-native-firebase/tree/bridge-detox/tests-new
Includes nyc/Istanbul coverage all configured. Bridge code is is bridge dir, I just need to move it out to own repo, document it and publish to npm, but sleep first 😩

@motiz88 cool will keep an eye on your project as well, might be a useful thing for you; nyc/instanbul can wrap directly around detox cli commands, so as long as you can populate global.__coverage__ it will pick it up - it's pretty much what I do between tests, I collate debugger context coverage and merge into global coverage on the node process using istanbul-lib-coverage
https://github.com/invertase/react-native-firebase/blob/bridge-detox/tests-new/bridge/env/node/coverage.js
https://github.com/invertase/react-native-firebase/blob/bridge-detox/tests-new/package.json#L12
https://github.com/invertase/react-native-firebase/blob/bridge-detox/tests-new/package.json#L51

Well, I just published an alpha to NPM :P https://github.com/invertase/bridge - need to document it fully but working on both platforms.

just seeing this thread. awesome news it was reopened and there may still be hope! looks like it's been a few months since there was any activity though. any updates or what is the status? thanks!

Wondering if there was ever a solution to getting some metrics associated with detox and code coverage?

@noomorph Isn't this something similar to what you did?

Closing this issue. This should come from the community.


[CLOUDTRUST-4074] Update OKD4 sonarqube URL.

Whoops, please disregard that. It was meant for our fork. I'll open my eyes a bit better next time.


Several python perftest scenarios failing

After migrating switching the perf worker to GA API, the performance has increased significantly, but some scenarios started failing:
https://grpc-testing.appspot.com/job/gRPC_performance_experiment/1208/

The PR that made the switch https://github.com/grpc/grpc/pull/6787

@nathanielmanistaatgoogle @soltanmm  FYI

Failing how? Are there stack traces?

@nathanielmanistaatgoogle
Its related to the removal of the event() API.  Its my understanding now that there is no way to do async bidirectional streaming?

... except that the event API - at least the "event" part of the gRPC Python Beta API, hasn't yet been removed. To my knowledge it's as much present and working as it was yesterday.
I'm not sure what you mean by "no way to do async bidirectional streaming" - it's certainly the case that applications can do arbitrarily ordered completely random full-duplex streaming.
Nothing about today's code was expected to break anything at all - are you sure there aren't stack traces or anything else to describe the failures you're seeing?

https://github.com/grpc/grpc/blob/master/src/python/grpcio/grpc/beta/_client_adaptations.py#L396
This is where the offending exception is getting thrown.  I was using the event() API to accept bidirectional responses in a non-blocking fashion.

It looks like this was a planned removal #5729.

Oh, the client-side event API. Yeah, that would do it.
This is probably not that much of a big deal - we can either migrate the calling code to use Futures or provide the client-side event API in _client_adaptations. We have options. :-)

Console log doesn't reveal much:
START: qps_json_driver.cpp_to_csharp_protobuf_async_unary_qps_unconstrained
WAITING: ETA 304.0 sec; 8 queued, 1 jobs running, 63 complete, 13 failed
++ dirname tools/run_tests/performance/run_qps_driver.sh
+ cd tools/run_tests/performance/../../..
+ bins/opt/qps_json_driver '--scenarios_json={"scenarios": [{"name": "cpp_to_csharp_protobuf_async_unary_qps_unconstrained", "warmup_seconds": 5, "benchmark_seconds": 30, "num_servers": 1, "server_config": {"async_server_threads": 0, "core_limit": 0, "security_params": {"use_test_ca": true, "server_host_override": "foo.test.google.fr"}, "server_type": "ASYNC_SERVER"}, "client_config": {"client_type": "ASYNC_CLIENT", "security_params": {"use_test_ca": true, "server_host_override": "foo.test.google.fr"}, "payload_config": {"simple_params": {"resp_size": 0, "req_size": 0}}, "client_channels": 64, "async_client_threads": 0, "outstanding_rpcs_per_channel": 100, "rpc_type": "UNARY", "load_params": {"closed_loop": {}}, "histogram_params": {"max_possible":<PHONE_NUMBER>0.0, "resolution": 0.01}}, "num_clients": 0}]}' --scenario_result_file=scenario_result.json
RUNNING SCENARIO: cpp_to_csharp_protobuf_async_unary_qps_unconstrained
D0606 22:56:35.349912444   12241 ev_posix.c:101]             Using polling engine: poll
I0606 22:56:35.351263758   12242 socket_utils_common_posix.c:170] Disabling AF_INET6 sockets because ::1 is not available.
D0606 22:56:35.352100428   12241 ev_posix.c:101]             Using polling engine: poll
D0606 22:56:35.353742075   12241 ev_posix.c:101]             Using polling engine: poll
I0606 22:56:35.355624341   12241 driver.cc:247]              Starting server on grpc-performance-server-8core:10000 (worker #0)
D0606 22:56:35.355684165   12241 ev_posix.c:101]             Using polling engine: poll
E0606 22:56:35.357150469   12241 driver.cc:293]              assertion failed: servers[i].stream->Read(&init_status)
tools/run_tests/performance/run_qps_driver.sh: line 35: 12241 Aborted                 (core dumped) bins/opt/qps_json_driver "$@"

FAILED: qps_json_driver.cpp_to_csharp_protobuf_async_unary_qps_unconstrained [ret=134, pid=12238]

This is partially because error reporting from qps_driver is not so good (https://github.com/grpc/grpc/issues/6540)
I think running the benchmarks locally would reveal the issues.

I think we should just replace those tests with a synchronous streaming client version.  I want to update the qps tests to use the GA API anyways (#6817)

Oh yeah. Of course that's something I wanted to do in the next week or two anyways.

Python performance tests are passing after the merge.


working version of adding/removing foils and adding to collection value

need to cleanup some of the code to make it tidier and need to add support for etched foils still, closes #13

That looks so great, I will clone the branch and test it out.
Hats off for the effort so far!

I merged & changed the default displays a little bit
hope you also like it :)
Thanks for your work!


Docs Guidelines: add some examples/comments about useful sphinx extensions

Qiskit Nature uses some useful sphinx extensions that it would be great to highlight in the docs guidelines for other teams that might want to use them. Generally their conf.py is pretty well written so it would be great to use it as a guide for our mini sphinx build too.
In particular:

they use the intersphinx extension to automatically link to functions from terra, numpy, scipy etc. see this line and this line
see line 30 and 31 which is useful for documentation builds for finding the best path to the docs files in CI

We're not currently prioritizing improvements to the docs guide due to competing priorities. Although, it still exists and we welcome contributions to it. I'm moving tracking of docs guide ideas to https://github.com/Qiskit/qiskit_sphinx_theme/issues/560 so that we can simplify our open issues.
If anyone is interested in working on this, please let us know! We'll gladly reopen this ticket.


Fix homebrew/linuxbrew build of Acton on Linux

So we are using a brew tap git repo that's built by running brew new-tap. It automatically creates GitHub Actions workflows that builds the formulae contained in the repository. The test workflow runs on both Mac OS X and Linux, which I guess is because there are some plans to merge homebrew and linuxbrew into having the same formulae. Anyhow, Acton doesn't build through homebrew on Linux because we depend on libkqueue (a shim providing kqueue compatibility on Linux, i.e. it is built on epoll). However, there is no brew package for libkqueue. (it used to be libkqueue but we got rid of that by switching to native epoll on Linux) of some error:
Unwanted system libraries:
  /lib/x86_64-linux-gnu/libgmp.so.10

I think this means that we have somehow linked in libgmp but do not have a dependency defined on it.
Until then, the linux build is disabled. Ultimately we want to submit our acton formula to homebrew-core rather than provide our own tap for it.... they might not accept a formula that doesn't build on Linux?

I guess we can start with hacking the github workflow to apt install libkqueue, just to verify that is the only thing that is missing.

libkqueue is out of the picture since we switched to native epoll on Linux. I updated the issue description accordingly. Ignore the above comment. However, we are now failing on something else....

Fixed, the final piece was to declare our dependency on gmp. We don't directly link with it but haskell uses it and the produced actonc is dynamically linked with gmp, thus we must depend on it.


Cannot find module './MarkerLayer.types'

Hi guys, I am facing this issue:
Cannot find module './MarkerLayer.types' or its corresponding type declarations.

2 import { IMarkerLayerProps } from "./MarkerLayer.types";
                                    ~~~~~~~~~~~~~~~~~~~~~

Found 1 error in node_modules/react-leaflet-marker/lib/MarkerLayer.d.ts

I already tried to re-install clean my modules etc

Hi. Need to have more information

My bad this was never a problem of this library.


Sequence start token missing when sequence is not indented

Hi!
I've encountered the following error. When sequence items are not indented, they don't generate YAML_BLOCK_SEQUENCE_START_TOKEN before first item, but immediately YAML_BLOCK_ENTRY_TOKEN.
Event parser behaves equaly regardless of indentation.
Is this a bug or a feature?
indented:
seq:
  - item1
  - item2

output from token parser:
STREAM START
[Block mapping]
(Key token)   scalar seq
(Value token) Start Block (Sequence)
Start Block (Entry)
scalar item1
Start Block (Entry)
scalar item2
End block
End block
STREAM END

not idented sequence:
seq:
- item1
- item2

parser output:
STREAM START
[Block mapping]
(Key token)   scalar seq
(Value token) Start Block (Entry)
scalar item1
Start Block (Entry)
scalar item2
End block
STREAM END

test parser used:
yaml_event_parser.c.txt
yaml_token_parser.c.txt

Dear All,  mkaluza,
I am facing the same "YAML_BLOCK_SEQUENCE_START_TOKEN not generated when no indentation" problem.
As I unerstand this is rather a feature than a bug (see comments in scanner.c and below).
But I am using libyaml to convert yaml to json and can't see how to support blocks with no indentation without the YAML_BLOCK_SEQUENCE_START_TOKEN (and its YAML_BLOCK_END_TOKEN counterpart).
Any idea about how to solve this?
mkaluza, did you manage to solve this?
Many thanks in advance,
Francois

YAML also permits non-indented sequences if they are included into a block
mapping.  In this case, the token BLOCK-SEQUENCE-START is not produced:

 key:

 - item 1    # BLOCK-SEQUENCE-START is NOT produced here.

 - item 2

...
the spacing doesn't seem right. Is this a output bug related to this issue?

@jasimmons1973
That's not a bug, just a matter of taste and unrelated


Add AUR Package

I have added the documentation about AUR package and also I have added the badge about available packages and their version.

Yes, you are right. I have removed it.

Yes, you are right. I have removed it.

thank you

thank you

May I ask how this updates on the Arch side? It's automatic or you have to maintain it?

May I ask how this updates on the Arch side? It's automatic or you have to maintain it?

Arch repositories are like the brew one but there isn't any automatic way for them. For now you can mention me in each release but go releaser has plan for automating it.

Arch repositories are like the brew one but there isn't any automatic way for them. For now you can mention me in each release but go releaser has plan for automating it.


Anyone know where my dad went?

My dad went to the liquor store when I was 10, told me he was getting a pack of cigarettes and hasn't come back yet. Anyone seen him?

Actually yeah, give me a sec

Wait, sorry, turns out that was a mannequin


win-8 is dead.

Type of Request
bug
Infrastructure Environment
LUCI, Github, Cocoon scheduler, Autosubmit, etc...
What is happening?
win-8 is dead.

Steps to reproduce
Step 1:
Step 2:
..
Step n:
Expected results
I expect to see X when Y is finished.

win-8 is out of sync with Salt master, rerun command "salt-call state.apply" to re-sync with Salt master.


on basic example, i get an error "'curry' object has no attribute 'T'" !?

Hi,
I'm on Python3.4 32bit windows. With latest dask0.5, I get this strange error trying to do the homepage example. What may have I missed ?
import dask.array as da
x = da.random.random((4, 4), blockshape=(2, 2))
x.T[0, 3].dask
{('x', 0, 0): (np.random.random, (2, 2)),
 ('x', 0, 1): (np.random.random, (2, 2)),
 ('x', 1, 0): (np.random.random, (2, 2)),
 ('x', 1, 1): (np.random.random, (2, 2)),
 ('y', 0, 0): (np.transpose, ('x', 0, 0)),
 ('y', 0, 1): (np.transpose, ('x', 1, 0)),
 ('y', 1, 0): (np.transpose, ('x', 0, 1)),
 ('y', 1, 1): (np.transpose, ('x', 1, 1)),
 ('z',): (getitem, ('y', 0, 1), (0, 1))}

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-1-6434a263a82e> in <module>()
      1 import dask.array as da
      2 x = da.random.random((4, 4), blockshape=(2, 2))
----> 3 x.T[0, 3].dask
      4 {('x', 0, 0): (np.random.random, (2, 2)),
      5  ('x', 0, 1): (np.random.random, (2, 2)),

AttributeError: 'curry' object has no attribute 'T'

Thank you for reporting this.  The README  was out of date.
Change blockshape= to chunks=.  This was a breaking API change in 0.5.0.  The README has now been fixed

Ok thanks.
Then I get a
NameError: name 'np' is not defined

You may add a `import numpy as np'...
Then i get a curious
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-3-b08838500113> in <module>()
     11  ('y', 1, 0): (np.transpose, ('x', 0, 1)),
     12  ('y', 1, 1): (np.transpose, ('x', 1, 1)),
---> 13  ('z',): (getitem, ('y', 0, 1), (0, 1))}

NameError: name 'getitem' is not defined

What do I miss know ?

@stonebig  from operator import getitem

The example shows outputs.  I suspect that you're running the output as input.
You may also want to look at the normal docs http://dask.readthedocs.org/en/latest/array.html which would have other examples.

oups ! indeed.... closing


Cbt experiments

trying to run the tests against cbt

found a way to do this in javascript, closing this one


postgresql93.rb: Bump version from 9.3.9 to 9.3.11

Latest stable 9.3 release. Tested and working on Mac OS X 10.11.4 Beta (15E49a).

This is failing to link to the OpenSSL dependency properly, I suspect you could borrow these two lines from the core formula to fix that.

Ok, I added the OpenSSL lines and after re-compiling I get:
$ otool -L /opt/brew/Cellar/postgresql93/9.3.11/bin/psql
/opt/brew/Cellar/postgresql93/9.3.11/bin/psql:
        /opt/brew/Cellar/postgresql93/9.3.11/lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.6.0)
        /opt/brew/opt/openssl/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
        /opt/brew/opt/readline/lib/libreadline.6.dylib (compatibility version 6.0.0, current version 6.3.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)

I don't use SSL support so I can't test it, though.

Seems to have done the trick. Merged in https://github.com/Homebrew/homebrew-versions/commit/893ddf2995b20019b8663c038c0d0f2363140fab. Thank you for your contribution to Homebrew @alanorth; we appreciate it! :smiley_cat:


AMD: Return API for modules as well

First of all thanks for adding AMD support, Tim!
If I want to use a rangy module, e.g. selectionsaverestore, I currently need to do:
define(
	[
		'rangy/rangy-core',
		'rangy/rangy-selectionsaverestore',
		'MyOtherModule'
	],
	function(rangy, rangySelectionSaveRestore, myOtherModule) {
		rangy.saveSelection();
	}
);

Because the rangy/rangy-selectionsaverestore module doesn't return rangy's API, I need to ignore its return value and require the core module as well.
If the module itself would also return the API, it would be enough to do:
define(
	[
		'rangy/rangy-selectionsaverestore',
		'MyOtherModule'
	],
	function(rangySelectionSaveRestore, myOtherModule) {
		rangySelectionSaveRestore.saveSelection();
	}
);

Do you think we could improve rangy's AMD API?
PS: I think you should also get rid of the "rangy-" prefix before all the file names :)

Modules now return a reference to the main Rangy object (see #270).
Regrading file name prefixes, the files started out without prefixes but I added them ages ago for some reason I have forgotten. Now, I have no strong opinion. Barely even a weak one. I'll change it if more people ask or you can come up with a really persuasive argument :)


Week 4 London Game Time Was Off

The Jets-Fins game in London started at 9AM EDT, but came through in the API as starting at 9PM.

See https://github.com/BurntSushi/nfldb/issues/107

@Ryanharstco Where exactly are you seeing "9PM"? nflgame passes the time reported from NFL.com unaltered. Therefore, it's a bit harder to fix than in nfldb.

Hey Andrew!
We are seeing it in our instance of nfldb.
---Sent on my Apple piPhone---

On Oct 6, 2015, at 05:52, Andrew Gallant<EMAIL_ADDRESS>wrote:
@Ryanharstco Where exactly are you seeing "9PM"? nflgame passes the time reported from NFL.com unaltered. Therefore, it's a bit harder to fix than in nfldb.
—
Reply to this email directly or view it on GitHub.

@Ryanharstco Please see the linked issue.........

@Ryanharstco If you're having issues with nfldb, then please file issues on the nfldb repository. This is the nflgame repository.

My bad
---Sent on my Apple piPhone---

On Oct 6, 2015, at 07:51, Andrew Gallant<EMAIL_ADDRESS>wrote:
@Ryanharstco If you're having issues with nfldb, then please file issues on the nfldb repository. This is the nflgame repository.
—
Reply to this email directly or view it on GitHub.


[Bug] Youtube subscription feed can only load videos older than a month.

When this extension is enabled, the youtube subscription feed can only load videos that are specifically 4 weeks old, I submitted a report which was incorrect that said it can load videos older than 4 weeks old but it actually cannot do that. It loads only 4 week old videos. Sometimes it can load videos that are of a different age old but I'm not sure which age as I couldn't reproduce it again. I'm using Windows 11, Firefox browser Version 112.0.2

For me, my Subscription page does not load at all when this extension is enabled. I just get a spinning loading circle that never goes away.
If I disable this extension, the Subscriptions page works fine, but obviously the awful Shorts come back.
I'm using Windows 10 with Firefox 113.0.1.

I am having similar issues as well. The fix that Sigma stated above has returned my subscription page, but that has removed some of the functionality of the add-on.

Thank you, this has fixed the issue completely (for me). I hope you have a great day.

It works fine for me too. Thanks very much for the fast fix!

Can confirm latest update fixes subscription page for me. Thanks for the quick release!


fix: improve junos parsers

This PR splits the structured and unstructured parsers for ease of maint.

:tada: This PR is included in version 2.0.0-next-major.27 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Better documentation of containerClasses

I failed on replacing the containerClasses with my own.
I tried to replace them as described in the readme, but it seems that the class is just added and not replacing the existing ones.
Furthermore, I could not add more than one class, because adding more classes resulted in "class1, class2" in the dom instead of "class1 class2".
Could you provide an example of how to add multiple classes?
Thank you.

I have re-structured the containerClasses property to accept an array now for adding multiple classes, grab the latest version and try it again @andorfermichael . try ['class1', 'class2'] (readme has been updated).
Please close this if that works!

I have re-structured the containerClasses property to accept an array now for adding multiple classes, grab the latest version and try it again @andorfermichael . try ['class1', 'class2'] (readme has been updated).
Please close this if that works!

Thank you for the fast response. I will have a look asap.

@acidjazz the classes are appended correctly now. Thank you again for the quick reaction.


Add pull request template for improved contribution guidelines

Description

Introduced a structured pull request template to improve contribution guidelines.
The template includes sections for describing changes, a checklist for testing and documentation, and a note on breaking changes.

Changes walkthrough 📝
Relevant filesDocumentation

pull_request_template.mdAdd pull request template for contributors

.github/pull_request_template.md
Added a new pull request template.  Included sections for issue resolution, before and after changes, and a checklist.  Provided guidance for contributors on submitting pull requests.

+27/-0

@gstraccini csharpier


support MS950 encoding

This pull request fixes #1406
Mail::Encodings.value_decode '=?MS950?B?rue26aWrrEapssS1ue6nvaXms3G5SLNX?= =?MS950?B?wMvBfLFNsM/Ay8F8pEirSL1jpmGnfcXn?= =?MS950?B?w9KhXaa5q0il86ywqHSyzqbbsMq1b7Bl?= =?MS950?B?oUG90MJJv++kVaTos3O1sqFBpMWmXrRfKQ==?='"
# => 桃園市政府警察局交通違規檢舉專區檢舉人信箱地址驗證（此信件為系統自動發送，請點選下方連結，勿回復)

It seems like there are 2 places where we can put the test. I picked the first one, let me know if there is a better place for testing.
https://github.com/mikel/mail/blob/8fbb17d4d5364c77cc870769d451bc2739b3a8ce/spec/mail/encoding_spec.rb#L206-L216
https://github.com/mikel/mail/blob/8fbb17d4d5364c77cc870769d451bc2739b3a8ce/spec/mail/encodings_spec.rb#L952-L964

bump!

Hey there @tonytonyjan and @lulalala happy to get this merged in, could you please bring it up to date against Master?

Hey there @tonytonyjan and @lulalala happy to get this merged in, could you please bring it up to date against Master?

Thanks for the reminder. I have updated the change. Thank you!