profile
viewpoint
Max Stoiber mxstbr @gatsbyjs Vienna, Austria https://mxstbr.com Working on open source at @gatsbyjs—previously @github after they acquired @withspectrum. ✌️ Speciality coffee geek and skier ☕

keystonejs/keystone-classic 14815

Node.js CMS and web app framework

apollographql/apollo-client 14448

:rocket: A fully-featured, production ready caching GraphQL client for every UI framework and GraphQL server

apollographql/react-apollo 6922

:recycle: React integration for Apollo Client

FormidableLabs/urql 4770

The highly customizable and versatile GraphQL client.

jaredpalmer/backpack 4367

🎒 Backpack is a minimalistic build system for Node.js projects.

jaredpalmer/after.js 3752

Next.js-like framework for server-rendered React apps built with React Router 4

draft-js-plugins/draft-js-plugins 3544

React Plugin Architecture for Draft.js including Slack-Like Emojis, FB-Like Mentions and Stickers

apollographql/apollo-cache-persist 915

🎏 Simple persistence for all Apollo Cache implementations

micro-analytics/micro-analytics-cli 742

Public analytics as a Node.js microservice. No sysadmin experience required! 📈

acdlite/react-remarkable 427

A React component for rendering Markdown with remarkable

issue commentgatsbyjs/gatsby

Styling a component is always undefined (e.g. styled(Button))

Can you share the code that isn't working? This definitely works for me:

const Button - (props) => <button {...props} />

const StyledButton = styled(Button)`
  color: blue;
`

https://codesandbox.io/s/elated-montalcini-0tzqg?file=/src/App.js:0-260

bradypp

comment created time in 20 hours

Pull request review commentgatsbyjs/gatsby

feat(gatsby): Store site metadata

 module.exports = async function build(program: IBuildArgs): Promise<void> {     )   } +  await createServiceLock(program.directory, `metadata`, {+    name: program.sitePackageJson.name,+    sitePath: program.directory,+    lastRun: Date.now(),

Is there a reason why this doesn't include pid, but the develop one does? I'm assuming this doesn't store the pid since it's not a long-lived process, but just wanted to clarify!

ascorbic

comment created time in a day

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 0053d24e48d0dff73fd513425d22fe081672f711

feat(gatsby-recipes): add sitemetadata provider (#26160) * feat(gatsby-recipes): add sitemetadata provider * Fix format of sitemetadata provider * Make setting sitemetadata fields work * Fix falsy values * Fix non-existant sitemetadata erroring out * Rename and cleanup filename * Add e2e test, handle other JSON parsing edge cases Co-authored-by: John Otander <johnotander@gmail.com> Co-authored-by: gatsbybot <mathews.kyle+gatsbybot@gmail.com>

view details

push time in a day

delete branch gatsbyjs/gatsby

delete branch : recipes/sitemetadata-provider

delete time in a day

PR merged gatsbyjs/gatsby

Reviewers
feat(gatsby-recipes): add sitemetadata provider topic: admin topic: recipes
  • [x] Read sitemetadata as an object (similar to plugin options)
  • [x] Edit any field in the sitemetadata
  • [x] Delete any field in the sitemetadata
  • [x] Add any field to the sitemetadata

Closes #26155, [ch12800], [ch26160]

+704 -1

10 comments

6 changed files

mxstbr

pr closed time in a day

issue closedgatsbyjs/gatsby

Expose siteMetadata from recipes API

We are going to need a new provider in the Recipes API that exposes the siteMetadata of a certain site and lets us edit it for Admin.

We can likely base that on the plugin options support, since both allow for arbitrary JSON input/output!

cc @johno

closed time in a day

mxstbr

pull request commentgatsbyjs/gatsby

chore(gatsby): expose full structured logs over the develop status websocket server

I could not figure out how to un-flake the e2e test, so I commented it out for now to unblock this PR from shipping. (the e2e test didn't exist before this PR anyway)

mxstbr

comment created time in 2 days

pull request commentDefinitelyTyped/DefinitelyTyped

Increase PERF 10x

The only downside to this is that the "as" prop is now typed as a string.

Just for clarification, does this mean one can no longer do this?

<StyledComponent as={OtherStyledComponent} />
christianalfoni

comment created time in 2 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 2821b980f0fbbf9af04799c84ac1f0356dc9f7b1

Rename and cleanup filename

view details

push time in 2 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 5ebf0bb272fd68863e403f426d65c65ca8cda11a

Temporarily disable flakey e2e test

view details

push time in 2 days

PR opened gatsbyjs/gatsby

feat(gatsby-admin): plugin view topic: admin
  • [x] Move plugin configuration modal to separate client-side screen
  • [ ] Fetch plugin metadata from some API (similar to plugin directory, which probably uses Algolia)
  • [ ] Render readme

Closes #26167

+271 -182

0 comment

7 changed files

pr created time in 2 days

create barnchgatsbyjs/gatsby

branch : admin/plugin-pages

created branch time in 2 days

pull request commentgatsbyjs/gatsby

feat(gatsby): Store site metadata

I reckon we could register in gatsby-cli no matter what command is run, right?

ascorbic

comment created time in 4 days

push eventstyled-components/styled-components-website

Max Stoiber

commit sha 6cff074c05dec29ab35bb648d5c42369dfb29c41

Fix similarweb global rank for Airbnb The airbnb project that uses s-c actually has a similarweb global rank of 341439

view details

push time in 5 days

created taggatsbyjs/gatsby

taggatsby@2.24.21

Build blazing fast, modern apps and websites with React

created time in 5 days

created taggatsbyjs/gatsby

taggatsby-admin@0.1.110

Build blazing fast, modern apps and websites with React

created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha feedd1fa4a4c41f1eb097d71ec6707f007771948

chore(release): Publish - gatsby-admin@0.1.110 - gatsby@2.24.21

view details

push time in 5 days

created taggatsbyjs/gatsby

taggatsby@2.24.20

Build blazing fast, modern apps and websites with React

created time in 5 days

created taggatsbyjs/gatsby

taggatsby-admin@0.1.109

Build blazing fast, modern apps and websites with React

created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 2f61ef94c119abc6aa96895043b1a07889efeecf

chore(release): Publish - gatsby-admin@0.1.109 - gatsby@2.24.20

view details

push time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 157bf79ad4afbbdcea0274fc13d9af18a5588c2a

chore(release): Publish - gatsby-admin@0.1.108 - gatsby@2.24.19

view details

push time in 5 days

created taggatsbyjs/gatsby

taggatsby@2.24.19

Build blazing fast, modern apps and websites with React

created time in 5 days

created taggatsbyjs/gatsby

taggatsby-admin@0.1.108

Build blazing fast, modern apps and websites with React

created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 471cb04bacb0bdfc1788263c471129ac54d41de1

chore(release): Publish - gatsby-admin@0.1.107 - gatsby@2.24.18

view details

push time in 5 days

created taggatsbyjs/gatsby

taggatsby-admin@0.1.107

Build blazing fast, modern apps and websites with React

created time in 5 days

created taggatsbyjs/gatsby

taggatsby@2.24.18

Build blazing fast, modern apps and websites with React

created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 23e6e9bfb4c6f6dde8f380eb15b754411004800c

chore(release): Publish - gatsby-admin@0.1.106 - gatsby@2.24.17

view details

push time in 5 days

created taggatsbyjs/gatsby

taggatsby@2.24.17

Build blazing fast, modern apps and websites with React

created time in 5 days

created taggatsbyjs/gatsby

taggatsby@2.24.16

Build blazing fast, modern apps and websites with React

created time in 5 days

created taggatsbyjs/gatsby

taggatsby-admin@0.1.105

Build blazing fast, modern apps and websites with React

created time in 5 days

created taggatsbyjs/gatsby

taggatsby-plugin-mdx@1.2.31

Build blazing fast, modern apps and websites with React

created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha e9c1f813bc54c835e3804a194327d5d48d5a9583

chore(release): Publish - gatsby-admin@0.1.105 - gatsby-plugin-mdx@1.2.31 - gatsby@2.24.16

view details

push time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 1c5d8e93f0c760d3f36ce1c65a7b0faa4cbb30b9

feat(gatsby-admin): new navbar design (#26159) * feat(gatsby-admin): new navbar design * Update yarn.lock * graphiql

view details

push time in 5 days

PR merged gatsbyjs/gatsby

feat(gatsby-admin): new navbar design topic: admin

Screenshot 2020-07-31 at 09 26 27

Notes:

  • I changed the wording of "Need help?" to "Send feedback" as we don't have any authentication and thus can't reply to people.
  • I have no idea how we're going to show the favicon. If folks have png (or even svg) favicons they could be at any location, we'd have to fetch the index.html and then parse the HTML for the <link rel="icon" /> or something? :confused:

[ch12797] Closes #26129

+214 -23

7 comments

6 changed files

mxstbr

pr closed time in 5 days

issue closedgatsbyjs/gatsby

Align navbar styling with new design

The navbar styling has changed completely. I adapted the existing one slightly in #26124, but we need to work on actually restyling it.

I have two known unknowns: I have no clue how to fetch the favicon for the currently running site, and I'm not sure if the recipes API exposes the siteMetadata yet or if we need to write a provider for that!

closed time in 5 days

mxstbr

Pull request review commentgatsbyjs/gatsby

feat(gatsby): Store site metadata

 export const createServiceLock = async (  export const getService = async (   programPath: string,-  serviceName: string-): Promise<string | null> => {+  serviceName: string,+  ignoreLockfile: boolean = false

I meant from the outside 😅

ascorbic

comment created time in 5 days

push eventgatsbyjs/gatsby

Marcy Sutton

commit sha 32c3e8e7848497ba377cb26aafbf48b1ab85484e

fix: headings in plugin authoring study post failing linter (#26150)

view details

Muescha

commit sha a86658e5e34af88ae2138f35592e3d92c3051dfa

fix(blog): i18n themes - link to discord, indentions in diff, filename in code fences (#26103)

view details

Max Stoiber

commit sha c1110b3fc827238907b2fb0e80d59487a68bb621

feat(gatsby-admin): add modal to manage plugin (#26154) * very rough, includes initial query * very rough, includes initial query * feat(gatsby-admin): add modal to manage plugin * Add loading states * Delete unused file * Show errors in UI Co-authored-by: Laurie Barth <laurie@LauriesrkLaptop.fios-router.home>

view details

Max Stoiber

commit sha 682a3272008c31899ee873dad6eacfbaae64f53a

Merge branch 'master' into admin/navbar

view details

push time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha c1110b3fc827238907b2fb0e80d59487a68bb621

feat(gatsby-admin): add modal to manage plugin (#26154) * very rough, includes initial query * very rough, includes initial query * feat(gatsby-admin): add modal to manage plugin * Add loading states * Delete unused file * Show errors in UI Co-authored-by: Laurie Barth <laurie@LauriesrkLaptop.fios-router.home>

view details

push time in 5 days

PR merged gatsbyjs/gatsby

feat(gatsby-admin): add modal to manage plugin topic: admin

This is what it looks like for now:

Screenshot 2020-07-31 at 08 16 25 Screenshot 2020-07-31 at 08 16 40

Closes #26126, [ch12760]

+233 -79

6 comments

5 changed files

mxstbr

pr closed time in 5 days

issue closedgatsbyjs/gatsby

Implement editing plugin options as JSON

Each plugin should have a modal or page with an input that lets users edit the options of a plugin as JSON.

TBD whether this already works with the Recipes API or if we need to add support for it in a provider!

closed time in 5 days

mxstbr

pull request commentgatsbyjs/gatsby

feat(gatsby-recipes): add sitemetadata provider

I tried adding a test file, but the test suite utils don't seem to work with this specific provider and I couldn't figure out why :confused:

mxstbr

comment created time in 5 days

Pull request review commentgatsbyjs/gatsby

feat(gatsby-recipes): add sitemetadata provider

+const fs = require(`fs-extra`)+const path = require(`path`)+const babel = require(`@babel/core`)+const declare = require(`@babel/helper-plugin-utils`).declare+const Joi = require(`@hapi/joi`)+const prettier = require(`prettier`)++const getDiff = require(`../utils/get-diff`)+const resourceSchema = require(`../resource-schema`)++const isDefaultExport = require(`./utils/is-default-export`)+const getObjectFromNode = require(`./utils/get-object-from-node`)+const { REQUIRES_KEYS } = require(`./utils/constants`)+const template = require(`@babel/template`).default++const addFieldToSiteMetadata = (src, { name, value }) => {+  const addPlugins = new BabelPluginSetSiteMetadataField({+    key: name,+    value,+  })++  const { code } = babel.transform(src, {+    plugins: [addPlugins.plugin],+    configFile: false,+  })++  return code+}++const removeFieldFromSiteMetadata = (src, { name }) => {+  const addPlugins = new BabelPluginSetSiteMetadataField({+    key: name,+    value: undefined,+  })++  const { code } = babel.transform(src, {+    plugins: [addPlugins.plugin],+    configFile: false,+  })++  return code+}++const getSiteMetdataFromConfig = src => {+  const getSiteMetadata = new BabelPluginGetSiteMetadataFromConfig()++  babel.transform(src, {+    plugins: [getSiteMetadata.plugin],+    configFile: false,+  })++  return getSiteMetadata.state+}++const getConfigPath = root => path.join(root, `gatsby-config.js`)++const readConfigFile = async root => {+  let src+  try {+    src = await fs.readFile(getConfigPath(root), `utf8`)+  } catch (e) {+    if (e.code === `ENOENT`) {+      src = `/**+ * Configure your Gatsby site with this file.+ *+ * See: https://www.gatsbyjs.org/docs/gatsby-config/+ */++module.exports = {+  plugins: [],+}`+    } else {+      throw e+    }+  }++  return src+}++const create = async ({ root }, { name, value }) => {+  const configSrc = await readConfigFile(root)+  const prettierConfig = await prettier.resolveConfig(root)++  let code = addFieldToSiteMetadata(configSrc, { name, value })+  code = prettier.format(code, { ...prettierConfig, parser: `babel` })++  await fs.writeFile(getConfigPath(root), code)++  return await read({ root }, name)+}++const read = async ({ root }, id) => {+  try {+    const configSrc = await readConfigFile(root)++    const siteMetadata = getSiteMetdataFromConfig(configSrc)++    if (!siteMetadata || typeof siteMetadata[id] === undefined) return null++    return {+      name: id,+      value: JSON.stringify(siteMetadata[id]),+    }+  } catch (e) {+    console.log(e)+    throw e+  }+}++const destroy = async ({ root }, resource) => {+  const configSrc = await readConfigFile(root)++  const newSrc = removeFieldFromSiteMetadata(configSrc, resource)++  await fs.writeFile(getConfigPath(root), newSrc)+}++class BabelPluginSetSiteMetadataField {+  constructor({ key, value }) {+    this.plugin = declare(api => {+      api.assertVersion(7)++      return {+        visitor: {+          ExpressionStatement(path) {+            const { node } = path+            const { left, right } = node.expression++            if (!isDefaultExport(left)) {+              return+            }++            const siteMetadata = right.properties.find(+              p => p.key.name === `siteMetadata`+            )++            if (!siteMetadata || !siteMetadata.value) return++            const siteMetadataObj = getObjectFromNode(siteMetadata.value)++            const newSiteMetadataObj = {+              ...siteMetadataObj,+              [key]: typeof value === `string` ? JSON.parse(value) : value,+            }++            const newSiteMetadataTemplate = template(`+              const foo = ${JSON.stringify(newSiteMetadataObj, null, 2)}+            `)()++            const newSiteMetadata = newSiteMetadataTemplate.declarations[0].init

We control the code that is parsed (the const foo thing), so we know this will always exist! 👍

mxstbr

comment created time in 5 days

Pull request review commentgatsbyjs/gatsby

feat(gatsby-recipes): add sitemetadata provider

+const fs = require(`fs-extra`)+const path = require(`path`)+const babel = require(`@babel/core`)+const declare = require(`@babel/helper-plugin-utils`).declare+const Joi = require(`@hapi/joi`)+const prettier = require(`prettier`)++const getDiff = require(`../utils/get-diff`)+const resourceSchema = require(`../resource-schema`)++const isDefaultExport = require(`./utils/is-default-export`)+const getObjectFromNode = require(`./utils/get-object-from-node`)+const { REQUIRES_KEYS } = require(`./utils/constants`)+const template = require(`@babel/template`).default++const addFieldToSiteMetadata = (src, { name, value }) => {+  const addPlugins = new BabelPluginSetSiteMetadataField({+    key: name,+    value,+  })++  const { code } = babel.transform(src, {+    plugins: [addPlugins.plugin],+    configFile: false,+  })++  return code+}++const removeFieldFromSiteMetadata = (src, { name }) => {+  const addPlugins = new BabelPluginSetSiteMetadataField({

Nope! 👍

mxstbr

comment created time in 5 days

issue openedgatsbyjs/gatsby

Add UI to the Gatsby site itself that highlights the existence of Admin

Maybe something similar to the WordPress top bar or some kind of floating action button or something that reminds people that Admin exists and makes it only be a click away!

Needs to be configurable (through gatsby-config.js and thus Admin in the UI :wink:) so people can turn it off!

created time in 5 days

issue openedgatsbyjs/gatsby

Build search/installation interface for plugins that includes the readme

Similar to the plugin directory, if one can install and configure plugins in Admin people need to be able to figure out what the possible options are.

Since we don't have a schema for the options and can't show that in the UI, we should show the documentation (i.e. the README) for the plugin in the configuration interface.

This will need some design work as to what that exactly looks like.

created time in 5 days

issue openedgatsbyjs/gatsby

Build recommended plugin card

Once we know which plugins we want to recommend (#26165), we gotta build the interface for showing and installing them!

created time in 5 days

issue openedgatsbyjs/gatsby

Define initial static list of recommended plugins in Admin

I think there’s a big opportunity for us to recommend plugins not many people are using but should. I.e. not gatsby-source-filesystem, but the real hidden gems that almost everyone should use.

We’re going to have to be careful about what we recommend, with great power comes great responsibility, but it’s a big opportunity.

We might be able to use the answers to this tweet as a source: https://twitter.com/GatsbyJS/status/1288904321493606402

created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha ac9df0c1bf0586664053d399ef8dd45ac5d1ac33

graphiql

view details

push time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 35ed20a7e951ecf9be35badcc5a538c7e7139139

Show errors in UI

view details

push time in 5 days

Pull request review commentgatsbyjs/gatsby

feat(gatsby): Store site metadata

 export const createServiceLock = async (  export const getService = async (   programPath: string,-  serviceName: string-): Promise<string | null> => {+  serviceName: string,+  ignoreLockfile: boolean = false

Doesn't look like the new parameter is used anywhere? 🤔

ascorbic

comment created time in 5 days

pull request commentgatsbyjs/gatsby

feat(gatsby-recipes): add sitemetadata provider

Lint failure is from a blogpost in master, unrelated to this PR.

Checking formatting...
docs/blog/2019-04-25-plugin-authoring-study/index.md
Code style issues found in the above file(s). Forgot to run Prettier?
mxstbr

comment created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha f9c3e9fc5ab0c91f939875858f1e765748061872

Fix non-existant sitemetadata erroring out

view details

push time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha ce49ddc41dcadcca38f49665022163b606d13c4e

Fix falsy values

view details

push time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha f5ac033bc0f3a083da6a919159fa859842905157

Make setting sitemetadata fields work

view details

push time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 43f4ebb8e0b9fdac7cc0ed0edb594b6ad698637c

Fix format of sitemetadata provider

view details

push time in 5 days

PR opened gatsbyjs/gatsby

Reviewers
feat(gatsby-recipes): add sitemetadata provider topic: admin
  • [x] Read sitemetadata as an object (similar to plugin options)
  • [ ] Edit any field in the sitemetadata
  • [ ] Delete any field in the sitemetadata
  • [ ] Add any field to the sitemetadata
  • [ ] Plan any change with a diff

Closes #26155, [ch12800]

+293 -1

0 comment

3 changed files

pr created time in 5 days

create barnchgatsbyjs/gatsby

branch : recipes/sitemetadata-provider

created branch time in 5 days

pull request commentgatsbyjs/gatsby

feat(gatsby-admin): new navbar design

Lint error is in a blogpost that was not edited in this PR, same error exists in master.

mxstbr

comment created time in 5 days

PR opened gatsbyjs/gatsby

Reviewers
feat(gatsby-admin): new navbar design topic: admin

Screenshot 2020-07-31 at 09 26 27

Note that I changed the wording of "Need help?" to "Send feedback" as we don't have any authentication and thus can't reply to people.

[ch12797] Closes #26129

+214 -23

0 comment

6 changed files

pr created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha ad424a8860386bf2070f404e1fbae8c7adc15e74

Update yarn.lock

view details

push time in 5 days

create barnchgatsbyjs/gatsby

branch : admin/navbar

created branch time in 5 days

issue openedgatsbyjs/gatsby

Add ability to edit site metadata

Maybe we start with simply the name of the site, but we could also add all other fields that are supported in siteMetadata once we have #26155!

created time in 5 days

issue openedgatsbyjs/gatsby

Expose siteMetadata from recipes API

We are going to need a new provider in the Recipes API that exposes the siteMetadata of a certain site and lets us edit it for Admin.

We can likely base that on the plugin options support, since both allow for arbitrary JSON input/output!

cc @johno

created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha aa6b0c9ef7c542555d943d71eba8090e78eec3ed

Delete unused file

view details

push time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 230359dd34f3dd1d174e1b04be9800cb04236bf6

Add loading states

view details

push time in 5 days

PR opened gatsbyjs/gatsby

Reviewers
feat(gatsby-admin): add modal to manage plugin topic: admin

This is what it looks like for now:

Screenshot 2020-07-31 at 08 16 25 Screenshot 2020-07-31 at 08 16 40

Closes #26126, [ch12760]

+238 -78

0 comment

6 changed files

pr created time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 91f0506f4351a7de2df8a658d70c987b91f0c9e3

feat(gatsby-admin): add modal to manage plugin

view details

push time in 5 days

PR opened gatsby-inc/gatsby-interface

Use "body" font family for <Text />

The Text component hardcodes the use of the "system" font stack. This unfortunately means that to globally use a different font family we have to override it in the theme like so:

const theme = {
  ...baseTheme,
  fonts: {
    ...baseTheme.fonts,
    system: '...other fonts...'
  }
}

But then manually using fontFamily: 'system' no longer shows system fonts. That is really confusing! :confused:

Instead, this PR changes the Text component to use the "body" font stack, which is aliased to "system" by default anyway, so no behavior changes. We can then adjust that font stack without anything being confusing! :tada:

const theme = {
  ...baseTheme,
  fonts: {
    ...baseTheme.fonts,
    body: '...other fonts...'
  }
}
+1 -1

0 comment

1 changed file

pr created time in 5 days

create barnchgatsby-inc/gatsby-interface

branch : text-font-family

created branch time in 5 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 12ac4905c62e62c1fb750725111ed8c683dd16ae

Fix contrast issues

view details

push time in 6 days

pull request commentgatsbyjs/gatsby

feat(admin): new dashboard design

Accessibility review is showing me the color contrast for the grey font on top of the chosen background color is not enough though. Can we fix that?

Yep I saw the same thing and meant to left a comment in Figma for Nachi about it but forgot! Done that now 👍

mxstbr

comment created time in 6 days

issue openedgatsbyjs/gatsby

Add page detail view

We need to add a page detail view for every page in a Gatsby site that shows:

  1. Where the page was sourced (/pages, gatsby-node, source plugin, CMS, etc.)
  2. A preview of the page (probably an iframe as I experimented with in #25637?)
  3. A link to GraphiQL for each of the pageQueries (stretch goal?)

We already have the data for 1. (#26104) and 2., however we don't have the data for 3. yet. I'm not sure if the Gatsby core API exposes that information?

created time in 6 days

issue openedgatsbyjs/gatsby

Style pages explorer

Once we have a design, we need to make Admin's /pages actually look good :wink:

created time in 6 days

issue openedgatsbyjs/gatsby

Align navbar styling with new design

The navbar styling has changed completely. I adapted the existing one slightly in #26124, but we need to work on actually restyling it.

I have two known unknowns: I have no clue how to fetch the favicon for the currently running site, and I'm not sure if the recipes API exposes the siteMetadata yet or if we need to write a provider for that!

created time in 6 days

PR opened jsumnersmith/jsumnersmith.com

Fix typo in 2019.mdx (accesible => accessible)

Spotted while reading! :bow:

+2 -2

0 comment

1 changed file

pr created time in 6 days

push eventmxstbr/jsumnersmith.com

Max Stoiber

commit sha 8a8ea3758186a573a6406126b95275ee5bed9459

Fix typo in 2019.mdx (accesible => accessible) Spotted while reading! :bow:

view details

push time in 6 days

fork mxstbr/jsumnersmith.com

Gatsby version of jsumnersmith.com

fork in 6 days

issue openedgatsbyjs/gatsby

Add telemetry to Admin

We need to track some basic usage statistics for Admin and various actions performed within. Going to defer to @jsumnersmith on which specific actions we should to track!

created time in 6 days

issue openedgatsbyjs/gatsby

Implement editing plugin options as JSON

Each plugin should have a modal or page with an input that lets users edit the options of a plugin as JSON.

TBD whether this already works with the Recipes API or if we need to add support for it in a provider!

created time in 6 days

Pull request review commentgatsbyjs/gatsby

feat(gatsby-recipes): add recipes gui

-const React = require(`react`)-const { Suspense } = require(`react`)+import React, { Suspense, useContext, useState } from "react"+import Queue from "p-queue"+import lodash from "lodash" -const resources = require(`../resources`)+import resources from "../resources" -const RecipesReconciler = require(`./reconciler`)-const ErrorBoundary = require(`./error-boundary`)-const transformToPlan = require(`./transform-to-plan-structure`)+import RecipesReconciler from "./reconciler"+import ErrorBoundary from "./error-boundary"+import transformToPlan from "./transform-to-plan-structure"+import {+  ParentResourceProvider,+  useParentResourceContext,+} from "./parent-resource-provider"+import { useRecipeStep } from "./step-component"+import { InputProvider } from "./input-provider"+import { ResourceProvider, useResourceContext } from "./resource-provider" -const promises = []-const errors = []-const cache = new Map()+const queue = new Queue({ concurrency: 5, autoStart: false })++let errors = []+const resultCache = new Map()+const inFlightCache = new Map()++const ModeContext = React.createContext({})+const useMode = () => useContext(ModeContext)+const ModeProvider = ModeContext.Provider++const getInvalidProps = errors => {+  const invalidProps = errors.filter(e => {+    const details = e.details+    const unknownProp = details.find(e => e.type === `object.allowUnknown`)+    return unknownProp+  })+  return invalidProps+}  const getUserProps = props => {   // eslint-disable-next-line   const { mdxType, children, ...userProps } = props   return userProps } -const Wrapper = ({ children }) => (-  <ErrorBoundary>-    <Suspense fallback={<p>Loading recipe...</p>}>{children}</Suspense>-  </ErrorBoundary>-)+const SetResourcesProvider = React.createContext() -const ResourceComponent = ({ _resourceName: Resource, ...props }) => {-  const userProps = getUserProps(props)+let resourcesCache++const Wrapper = ({ children, inputs, isApply }) => {+  const [resourcesList, setResources] = useState(resourcesCache || [])+  resourcesCache = resourcesList    return (-    <Suspense fallback={<p>Reading resource...</p>}>+    <ErrorBoundary>+      <ModeProvider value={{ mode: isApply ? `apply` : `plan` }}>+        <SetResourcesProvider.Provider value={setResources}>+          <ResourceProvider value={resourcesList}>+            <InputProvider value={inputs}>+              <Suspense fallback={<p>Loading recipe...</p>}>+                {children}+              </Suspense>+            </InputProvider>+          </ResourceProvider>+        </SetResourcesProvider.Provider>+      </ModeProvider>+    </ErrorBoundary>+  )+}++const ResourceComponent = ({+  _resourceName: Resource,+  _uuid,+  _type,+  children,+  ...props+}) => {+  const { mode } = useMode()+  const step = useRecipeStep()+  const parentResourceContext = useParentResourceContext()+  const allResources = useResourceContext()++  const setResources = useContext(SetResourcesProvider)+  // TODO add provider onto context+  const resourceData = handleResource(

I think handleResource will always throw an error unless cached, where the thrown value is a Promise? (currently line 213; throw promise). Is this some kind of hack to circumvent having to wait for promises to resolve etc?

I have no context on this code so I don't know if this is right, but this sounds exactly like a React Suspense implementation, in which case React would handle the re-rendering etc. :blush:

KyleAMathews

comment created time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha a24132162efdc50581a88957d6d56d5d3e8483e8

const Comp => function Comp

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha a24eb4d0ff6e8c77c7fde2849b87e65944713bb2

Add alt text to img

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 3eb8ccc9ecc1b06200f0477a8c59a8d746ef6bf8

Iconssss

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha f6298a6dc15b1c68cfa92efba0768216bdf31b84

Cleanup "Coming soon"

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha b86d5dce8b1686428d1d6711d18df89ffc06d4bb

Fix badge bg

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 3644995512079b10cf7e8ee69aef2f55cb855310

Add illustration

view details

Max Stoiber

commit sha f3131e4d830ed565657c96ae872758f179a8e52d

Fix typescript

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 4996aeda753ca7e21096b7010f2201fd90fb0057

Add "Coming soon!" for recommended plugins

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 69df1f03ac389c33f38d56bee8600d90414a1fb1

Move global background color to <body>

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 185902ec0aac21465becf9e3dd3afbd1e5e8bc38

Various spacing updates

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 37c8f70ea4028ab2285c40aac45657c662850737

Fix global backgbround

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 752a001aaf1e97102225aba190bdbbd1b7d38fea

Add global layout spacing, update nav a little bit

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 4601e2ca3941ce0617008f306fd0027eeb149883

Fix spacing

view details

push time in 6 days

PR opened gatsbyjs/gatsby

Reviewers
feat(admin): new dashboard design topic: admin
+194 -107

0 comment

7 changed files

pr created time in 6 days

create barnchgatsbyjs/gatsby

branch : admin/new-dashboard

created branch time in 6 days

push eventsystem-ui/theme-ui

Cyril CHAPON

commit sha 317f0932bd5f294fbea1e353da9f3bc609db3051

First pass: switch typography to ts

view details

Cyril CHAPON

commit sha f148324710100fcef747eb46ab875e36ed53b212

First test TS pass and some fixes after tests

view details

Cyril CHAPON

commit sha 4802eb2e4375c3043ddb158ff2e465e7d964e4c7

Typography-ts: Cleaner types and references DT PRs

view details

Daniel Castillo

commit sha e630712fac7118aae35808d7d39db84e5429cf02

remove custom outline from buttons in navbar

view details

Daniel Castillo

commit sha b8c41c4bc2fa8bfbccf5c23c07b629d1bb982fd5

make SkipLink less obtrusive in dark mode

view details

Tomas Carnecky

commit sha 3d848598e7f41752811c8c88467ecbebee9d5205

Do not depend on window during setState initialization

view details

Daniel Castillo

commit sha dbd8120335f7e0184ef819dbab6a9fbbde2cbf03

revert SkipLink colors to original

view details

Dany Castillo

commit sha 65f7cdee0aadcb5f9904def0a15a2d8b82d0fe77

revert Prettier formatting in SkipLink

view details

hasparus

commit sha 4458fc7e4d264b72d73a3e9ded0c5d698d605d64

Turn ColorMode into an interface and update comment - Interfaces support declaration merging, and thus are superior in this case. An user can add his own color names. The index signature might be removed some day for "strict mode". - The comment is outdated. - Smaller types in tooltips lead to more readable type errors.

view details

hasparus

commit sha 0c4ad6714f0aacecf6be82540028581799a31659

Move colors scale to separate interface

view details

hasparus

commit sha e38b48bd2676900e0d6c60b86c16e949de2fda0e

Fix ThemeProvider components prop type

view details

hasparus

commit sha c43df5c365300ec53e0a8dc63f6f0b881f10f439

Make all ColorMode keys optional and allow unknown keys in ThemeStyles

view details

hasparus

commit sha 5220be3ec7e6650fa51e9137ec714b12b65d6703

Remove redundant Partial

view details

hasparus

commit sha 9dce7baf193d9bd83baeccc5a2fd7d360807d108

Add jsx: react to root tsconfig for convenience

view details

hasparus

commit sha 517fc3554da546ed3706319c8505f2b1817be59e

Fix packages/editor types and use CSS.Properties instead of Fallback

view details

hasparus

commit sha 607547ebbee89f54b1a0833881d00480f02c5024

Turn theme-ui tests to TypeScript

view details

hasparus

commit sha 77d5216389610a8b934666552134a568f642f322

Rename SystemStyleObject to ThemeUIStyleObject

view details

hasparus

commit sha db8e187bf99aa62a4ef797729e97f464f5ba9c73

Support VendorProperties in types

view details

hasparus

commit sha 9c996f103fca2a35958f0a09558055b03086f0ed

Export ThemeStyles

view details

dependabot-preview[bot]

commit sha ec89341eece1f816e3f1d29c53fd1bc4b22d148d

chore(deps-dev): bump execa from 4.0.0 to 4.0.2 Bumps [execa](https://github.com/sindresorhus/execa) from 4.0.0 to 4.0.2. - [Release notes](https://github.com/sindresorhus/execa/releases) - [Commits](https://github.com/sindresorhus/execa/compare/v4.0.0...v4.0.2) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

view details

push time in 6 days

push eventgatsbyjs/gatsby

Max Stoiber

commit sha 3f129590f62289bc8c96d1ebd4b55d7c16ffcc9e

chore(gatsby-admin): move sitemap to /pages (#26120)

view details

push time in 6 days

PR merged gatsbyjs/gatsby

Reviewers
chore(gatsby-admin): move sitemap to /pages topic: admin

This moves the list of pages to a hidden page at /pages:

Screenshot 2020-07-30 at 06 55 36 Screenshot 2020-07-30 at 06 55 40

+75 -42

6 comments

2 changed files

mxstbr

pr closed time in 6 days

Pull request review commentgatsbyjs/gatsby

feat(gatsby-recipes): add recipes gui

+const { createServiceLock } = require(`gatsby-core-utils/dist/service-lock`)+const execa = require(`execa`)++const startServer = async () => {+  // Use 50400 as our port as it's a highly composite number! Meaning it has+  // more divisors than any smaller positive integer.+  const port = 50400

Do we need to getRandomPort(50400) here, similar to what we do everywhere else for all behind-the-scenes services?

KyleAMathews

comment created time in 6 days

PR opened gatsbyjs/gatsby

Reviewers
feat(gatsby-admin): add favicon topic: admin

This copies the favicon from www (gatsbyjs.org) to brand Gatsby Admin a little bit more.

+1 -0

0 comment

2 changed files

pr created time in 6 days

create barnchgatsbyjs/gatsby

branch : admin/favicon

created branch time in 6 days

more