Below is a list of every PR that was merged at Hacker Noon in 2019. In the coming weeks, expect to see regular product updates (with a bit more context 😉), but for now, please enjoy this dump of commit messages I put together in 15-20 minutes. Note: some PR numbers are skipped because either 1. the PR was not merged, or 2. the PR was closed/merged before or after 2019. You'll also notice some numbers out of sequence -- this indicates that the PR was closed a while after it was opened. #9: WIP - Saving editor content as HTML #12: Author dashboard, v2 #13: Bugfix: update drafts instead of inserting #11: Admin route #14: Admin fix #15: Testing React Hooks #18: Hackernoon component and better nav #16: Admin v1 #21: Editor workflow v1 #22: Editor workflow v2 #23: Confirm component v1 #24: Confirm v2 #27: Editor workflow v2.5 #28: Functionalize #29: Getting closer #30: Whew, at least the page loads now #31: RedirectionBar component (Homepage) #32: Dane/profile #35: Profile v2 #37: Homepage components (Functionality done, partial styling) #38: Homepage components (Class Name refactor, styling) #26: Author Onboarding (Mailgun) #41: Nav improvements #42: Rewriting the TextEditor component #43: Story page #45: Added favicon #46: Editor workflow v2: Recent activity, toast notifications, and more #48: Improvements to editor style #49: Expandable title #52: Cdn v2 #51: Editor improvements with media embed #53: Fixed delete error #54: Integrated Filestack #56: Set up firebase environments #55: Filestack updates #57: Cdn v2 #60: Add readOnly shit back in (bad merge) #61: Added code and divider to editor #63: Author dashboard v2 #66: Drafts v2 #67: More draft css #25: Moved hide component logic #69: fixed draft screen #17: WIP Editor Graph embed #72: Signup screen v2 #74: fixed spacing bug #76: Sponsor workflow v1 #81: Tags v1 #84: Feature/hompegae html #88: Feature/responsive #93: First cut at periodic publisher, only 1 queue #95: stats v1 #96: Feature/tag page #97: Twitter #98: RSS v1 #99: Fixing generate story page bug #101: Update draft style #100: Added fixes to the story build script #108: add comment #109: create story trigger #110: Fixed image bug and delete key bug #111: Better story editor #112: improvements to the story template #113: Improved confirm design #114: Insert code into editor #116: new homepage #117: stats preview #118: Removed dropdown in nav #119: Removed published drafts #120: Fix for duplicate drafts #121: Fixed a few editor bugs #122: Added search to admin #123: homepage curation styling #124: Sponsor style #125: Removed base #126: saved app #127: fixed home default message #128: fontawesome fix #129: moved featured image to content #130: extend confirm to have multiple actions #131: Fixed media sources #132: added disclosures #133: Added first seen at urls #135: Message writer #136: Reject story #137: close on flyout #138: Fixed anchor link serialization #139: fixed block styling #140: Added dashboard to nav #142: delete ui improvements #145: fixed first seen at bug #146: Tag limit + bullet point fix #147: Trusted authors #148: Curation fixes #149: Data disparity #150: Admin shell script #151: Homepage #152: story settings and mailto #153: Story template iteration #154: Story iteration 2 #155: New featured image logic #156: Added bios to story design #157: More story updates #158: Impression + click tracking on ads #159: New bio and updates #160: Time reading #161: Time reading bugfixes #162: Sso wrapup #163: Add CORS to login exchange request #164: Make every new user an author #165: Story links + tons of bugfixes #166: Fix auth token exchange logic #167: Add estimatedTime to stories #168: Generate story scripts #169: Homepage auth #170: generate tag pages #171: updated tag page logic #172: added archive profiles #173: adding profile archive files #174: Draft card update #175: Beta feedback part 2 #176: Fix backspace when multiple blocks are empty #177: Fix draft loading bug (isAuthor/isEditor distinction) #178: Loading state #179: Don't store JWT in localStorage!!! #180: Generating homepage/story fixtures #181: Homepage styling #182: Don't trim the title unless newline is present #183: Fix duplicate draft bug #184: added error page #185: fix require in generate-fixtures #186: admin css fix #187: story update #188: Analytics + API changes #189: story update #190: Revert "Analytics + API changes" #191: Added home search #192: homepage cta animation #193: Fix homepage generation, add logs #194: Fix timeout #195: Archive stories on homepage! :D #196: Search stories on homepage admin #197: Dropdown nav #198: nav css fix #199: Fix story links and slugs #200: wider featured #201: wider featured stories #202: home update #203: more stories bug fix #204: Analytics v2 #205: Whoops, need an async there #206: profile update #207: Fix time reading #208: Showing time read, recording word count #209: user profiles #210: Tag curation #211: Option to override draft lock for author/editor #212: added profile cloud function #213: HN toast messages #214: Duplicate drafts #215: fixed draft image and timestamps #216: fixed homepage bug #217: Fixed draft images with cdn urls #218: fixed timestamps and column width #219: Fix key ref on metric creation #220: Story bios and fixed bugs #221: Showing read time on user stats page #222: Added archived stories to dashboard #223: Firestore rules fix + revert stats page for now #224: Homepage date fix + profile fix #225: Fix logout, actually clear cookie; upgrade react #226: homepage messages #227: Story script to increment pageviews, use floats for time read #228: Fix analytics bug, rich text pasting (80%) #229: Stats page html/css #230: Warning before leaving the page, slugified tags, and a bunch of other stuff #231: Fix a few bugs in the editor #232: fetch missing stories #233: Publishing immediately #234: Publishing immediately #235: Error page #236: color fix #237: fixed profiles #238: nav fix #239: Regeneration script, many little fixes (mostly tag page) #240: Last minute launch fixes #241: Copy change, and fix for generate fixtures script #242: Fix serve script paths #243: Fix images and dates on tagged page #244: Fix tagged links #245: Fix header link, slug check, center images on stories #246: Draft cards: Modification to shorten time #247: Story update fix #248: updated archive stories #249: Stats #250: Fixed default stat count #251: Hotfix for analytics (add op may include full paths) #252: Added comment posting to community #253: added comments #254: Admin stats #255: hack to hide tooltip bug #256: homepage design update #257: Replace all auth.hn links w/ link to community SSO #258: Added favicons #259: Copypasta #260: Timely analytics #261: Opt outs #262: fixed editor bug #263: Stats bugs #264: Fix links on copy-paste #265: Profile updates #266: prevent handle from updating #267: CDN login state #268: Fix story link on profiles #269: Save warning #270: Editor tag removal #271: Profile link fix (missed one) #272: Limit time reading to 2x estimated (needs testing) #273: improved editor link #274: WIP: Editor Dashboard: Draft card update for author name and avatar #275: Move time endpoint to analytics namespace #276: Added youtube embeds #277: Add h2 option to editor #278: Change "Archived" to "More stories by ${author}" #279: fixed code bug #280: added tweet embed #281: added tweet embed #282: fixed adding duplicate tweet bug #283: Don't fully reload the page on first save #284: profile improvements #285: Deploy script to upload CSS/JS #286: Added profile data to drafts #287: Story gap fix #288: mobile media queries #289: Extending stories to include archives #290: Tag fix on story page #291: Comments regen story pages #292: Added cropping on main image of editor #293: Improved toast positioning and timer #294: Reading history #295: Lots of little bugfixes #296: Allow dashes in tags #297: Rollbar integration #298: Simple dedepulication fix on reading history #299: Testing proof-of-concept #300: Bugfixes around links, images #301: Dane/merge dashboard drafts #302: User check before redirecting away from editor #303: Backup script for local cron job #304: ad fix on content pages #305: limit homepage to 6 stories #306: Profile improvements, validations #307: Add tags to bottom of stories #308: Stories 4 to 3 #309: Updated stats view #311: Blank state dashboard Bones #312: Script to scrape medium images #313: Dashboard headers #314: ignore env https://github.com/hackernoon/green/blob/a5b93e6e02ff282ca… #315: Improved blanks state design a bit #316: Replaced darwin with zuck on profile #317: Fixed archive h1 #318: Dashboard refactoring, slight speedup #319: Added archive stories to homepage #320: Featured story design #321: Added get started link to cdn pages #322: Recent Activity Component Color Coding #323: Improved tag design on featured pages #324: Miscellaneous bugfixes #325: Add support for numbered lists, unwrap properly #326: Story Annotations! #327: WIP: Draft Card Updates #328: Updates styling for story tags #329: Big honking button #330: Tagged Page Styling Updates #331: Tag rss feeds #332: Updated packages to fix security holes #333: script to generate a single archive profile #334: Fixed nav bugs on story pages #336: Fixed links in comments #337: Improved comment quotes #338: Fixed image width and tweets #339: Added author names to cards #340: Leftover data #341: DM / Email fix #342: Handle link in activity feed #343: Set handle on new activity feed items #344: Profile links #345: metrics by story #346: Stats 4 boxes #347: fixed new draft error #348: Tag generation fix (no leading slash) #349: Sponsor workflow #350: Show the blank state dash to first time users #351: Fix profile updates on slow firebase conn #352: Fix sponsorships to use analytics data structures #353: Responsive 404 page #354: Feature: Fat footer #355: Bug Fix: Blank profile CTA #356: Hotfix for drafts #357: Missing stories script #358: Homepage heading fix #359: smaller text on home #360: No images with longer titles #361: Interact #362: Sitemap generation script #363: Top nav updates #364: fixed regen scripts #365: fixed header profile image #366: Fixed tag header #367: Tag header fix 2 #368: footer fixes #369: Fixed header padding #370: Fixed tag input CSS #371: Changed CDN links #372: migrate story urls #373: updated logo url #374: Services.js apparently never got uploaded to the CDN #375: Added ga tracking code to app #376: updated cosmic script #377: Bug Fix: Footer Copy #378: Optouts #379: Link and copy changes #380: changes to 404 fix #381: fixing cdn domain #382: regen story script #383: add services.js to story-archive.html #384: redirect users back to app #385: Fixed url #386: Check if annotation has been deleted. #387: throttle cosmic #388: undo displaying note if empty #389: Bug Fix: Welcome dash FAQ copy clean up #390: escape braces #391: dynamically turn annotations on or off globally #392: Modify draft rules to allow admins whatever #393: Miscellaneous paraphernalia #394: Fixing publishedAt setting on update, regen behavior #395: Spread user profile data (in case of null/undefined) #396: Fetch broken media scripts #397: Updating nav #398: Generate Homepage Fixes #399: removing unused code #400: Updated image links #401: Fixed comments #402: Rounding digits on time reading (correcting values) #403: Add commas to stats display on admin #404: Takedown script #405: Self updates #406: updated cosmic archives #407: Fixed font size #408: Added twitter meta tags #409: Show error message on copy-paste error #410: Remove second param on save #411: Add rollbar to google cloud functions #412: Some formatting on stats #413: Added GA to react #414: Hide annotate deploy #415: Dane/mobile ad font size #416: Updated tweeting scripts #417: Added tweet this to reading history #418: Editor tag filtering #419: Fixed dashes in tweets bug #420: updated fetch script #421: Fixed backspace bug #422: Center plus #423: Changed ad to noonies #424: Minor fixes #425: Prevent optout author regen #426: Fixed inline code mark rendering #427: Make ad text non-selectable #428: Fixed backspace delete bug #429: Updated link style #430: Adjusted link underline #431: Convert archive to draft #432: Archive convert submitted #433: Cleaned up errors and added edit link #434: Trying to prevent white screen of death #435: Added ad stats to dashboard #436: Fixed columns on ad stats #437: Fixed tweet bugs #438: Use latest, production version of Firebase #439: Dependency upgrades (incl. security fixes) #440: Get rid of a shitton of compiler warnings #441: Fixed deserializer to work with code #442: Improve editor page #443: Separate save and publish button #444: First cut at archived stats #445: Update the story page on any update #446: Fix deps #447: Fix draft deletion #448: Revert author's submission cards to prev style #449: Inner try/catch on unlink (if file doesn't exist) #450: cuid slug on temp files, try/catch on homepage regen #451: Replace upscribe forms with mailchimp #452: Show proper notifications on submit/publish #453: Integrated with Algolia #454: Fixing canonical links #455: Adding tweet this to stories #456: Fixed story template bug #457: Fix draft edit links to include editors #458: Top nav curation #459: WIP components using our current templates #460: Draft statuses #461: Rejection fix #462: fixed algolia drafts #463: Nav fixes #464: Fix top nav admin #465: Center links #466: Ad click fix #467: Update Algolia #468: Quick and dirty fix for save and publish button #469: Bump eslint-utils from 1.4.0 to 1.4.2 #470: Regen archived tags fix #471: Tag css fix #472: Unlocking drafts w/ id token #473: Migration to fix status on converted drafts #474: Complete Algolia Editor Dashboard v1 #475: Only set up user id timer when user loaded #476: Mobile ad css changes #477: Oop missed a spot #478: Use the fucking CSS luke! #479: Archive/story algolia script fixes #480: Reset confirm dialog before display #481: Fix ad click on mobile #482: My First Email (tm) #483: Use getUnixTimestamp helper #484: Remove rejected stories from algolia drafts index #485: Merge Algolia fixes #486: Moar email #487: Archive dates #488: Fixing dates #489: Account creation email #490: Mark archive conversions as final + migration #491: Reader submit note to author & not automatically show to other readers. #492: Test env #493: Dane/brand as author #494: Fixed stripe form #495: Fix for publishing converted archives #496: stripe live keys #497: Fix topic_id ref #498: Profile xss fix #499: Top nav v2 #500: Fixed credit message #501: Takedown admin #502: Merge algolia-tags and other fixes #503: Fix CTA styling #504: Green, not blue #505: Fix SSO url ref #506: Fix rss dates #507: Use full urls on linkedin profile field #508: Editor field object #509: Slugs matching titles #510: added optimize code #511: Added google tag manager #512: Dane/brand as author fixes #513: Analytics v2 electric boogaloo #514: Complete some requested editorial changes #515: Adding google tag manager to all static pages #516: Create tag if it doesn't exist #517: Slack integration #518: Brand credit purchase email #519: If someone's marked as a brand w/ story: email #520: Fix stupid minute/second mistake #521: rm duplicate stories from stats data #522: Add mark as brand button to story settings #523: Rss fields #524: setTimeout for fun and profit #525: Get rid of extra line breaks adjacent to p tags #526: set new baseline ad #527: Soft breaks ain't hard #528: Fix a small small issues #529: Check for falsy values on canonical url #530: cc utsav, linh, partners on credit purchase #531: Improve Editor stats #532: OG meta tags #533: Profile CSS improvements on mobile, show ad #534: Autosave (WIP) #535: Payment processing message #536: secure auth routes #537: Linked brands on credits #538: Show profile avatars and link on tagged stories #539: Regen tags script #540: Make sticky nav the default on non-mobile UIs #541: fixed blockquote bug #542: Fixing onchange lag #543: Show a smaller message instead of toast notification #544: Irresponsible use of global vars #545: Algolia script fixes, mainly pagination on drafts #546: Disabling editor stats (+ crashing) for now #547: Algolia id fix #548: fixed homepage title css cutoff bug #549: Small updates to editor stats #550: Fix minor responsive issues #551: remove old ads script #552: Add editor field on reject #553: Fixed youtube embeds #554: Feature/mobile menu #555: Fix content overflow issue #556: fixed break all #557: Revert "Feature/mobile menu" #558: Allow unauthed access to brand page #559: First cut at updating profile object on stories #560: Mobile nav css/js #561: changed sponsor link color #562: added base to tag pages #563: Fix brand route to require login #564: fixed mobile nav css #565: Fixed archive dates #566: Fix published story urls on dashboard #567: Full brand list link #568: Regen tag pages on removed tags to remove story from page #569: Slug finalization #570: Fix dashboard tab display bug #571: Home tabs fix #572: Brand page for everyone #573: fixed credit buying function bug #574: Admin credits screen #575: Delete story from CDN when it's deleted from db #576: Removed noonies from homepage #577: Dane/link focus state #578: style h1s #579: fixed 2nd story on mobile css #580: Algolia/results page #581: fixed interaction js link #582: Improve search #583: Dane/unsplash #584: black friday landing page #585: unsplash attribution #586: Unsplash attribution 2 #587: Undo black friday #588: Fix author dashboard image loading #589: Feature/mobile improvements #590: Dane/annotations ui #591: alter unsplash image link #592: update unsplash attribution #593: Hide header CTA on mobile #594: Bump npm from 6.10.2 to 6.13.4 #595: Bump npm from 6.10.2 to 6.13.4 in /functions #596: Darkmode #597: Darkmode bug fixes #598: Fixing autocomplete bug on tags #599: Collections template #600: Removing duplicate stories from CDN pages #601: Bump handlebars from 4.1.2 to 4.5.3 #602: Routable tabs #603: iteration on collections I can't possibly provide context for all of the roughly 600 PRs here, in this meager conclusion, but I hope this at least provided some insight into what the dev team here at Hacker Noon was doing over the past year. Stay tuned... PR credits: Dane Lyons Gian Franco Vitola Austin Pocus Rob Moya Faith Walker Storm Farrell Mark Nadal