►
From YouTube: JupyterLab Dev Meeting, September 2, 2016
Description
Meeting of the JupyterLab development team, September 2, 2016
Meeting Notes: https://jupyter.hackpad.com/JupyterLab-Weekly-Meetings-UUJ3gIQ3iBS
A
B
B
The
thing
is
that,
in
addition
to
some
design,
attention
I
think
we
really
need
to
put
some
user
experience
out
into
it,
because
there's
there's
ramifications
basically
with
with
with
the
new
prompt,
so
I
was
going
to
do
just
a
quick
demo
and
screen
share,
so
you
can
see
the
sorts
of
problems
that
have
arisen.
This
is
all
actually
in
my
PR,
so
anyone
wants
to
play
with
it.
B
B
But
you
don't
you
don't
have
an
editor
here.
What
you
have
is
a
single
line.
You
could
hit
ctrl
enter
but
keep
in
mind.
There's
actual
console
history
going
on.
So
when
you
hit
down
it's
going
to
clear
it
when
you
hit
up
its
gonna
populate
it,
so
this
is
a
thing
that
I
think
either
you
might
want
to
make
this
a
split
panel.
We
might
consider
making
it
automatically
grow.
We
might
consider
having
something
like
the
Qt
console
with
the
gutter,
with
the
dot
dot.
B
Dots,
so
that's
one
thing
to
keep
in
mind
another
thing.
A
B
In
for.
A
B
But
even
if
we
have
height
grow,
the
trouble
is
so
okay,
so
right
now,
I've
actually
got
it
set
to
overflow
and
create
a
scroll
bar,
because
I
think
it'd
be
really
disruptive
if
the
actual
pain
that
you've
picked
the
size
for
changes
size.
But
we
might
decide
that's
what
we
want
and
we
can
just
pick
a
minimum
or
maximum
height
or
minimum
for
the
content.
Something
like
that,
so
yeah
that
that
is
that's
one
thing.
B
The
other
thing
is
that
since
it's
a
split
panel,
I've
created
this
toggle
functionality,
so
you
can
have
it
side
by
side
in
case
this
is
how
you
feel
like
working,
which
I
think
is
nice.
But
again
you
have
all
this
vertical
space,
which
makes
it
feel
like
it
makes
it
feel
like
what
you're
dealing
with
is
this,
but
actually
what
you're
dealing
with
is
the
one
line
that
will
grow.
B
So
you
can
paste
a
lot
of
stuff
and
see
a
lot
of
stuff,
and
that
itself
is
nice,
but
I
put
in
that
gray
background
which
I
don't
really
like
just
so.
You
would
know
that
when
you
hit
down
you're
not
going
down
when
you
hit
up
you're
gonna
go
up
in
history,
because
otherwise,
if
it
were
blank
white,
you
might
hit
down
thinking,
you're
gonna
go
down
and
that's
not
what's
gonna
happen
so
anyway.
This
is
the
current
state
of
affairs
and
it's
I
mean
I.
You
know
it's
not
unusable.
B
It's
fine,
but
I
wasn't
sure
if
we
should
be
merging
the
same.
Quite
yet.
The
example
also
shows
us
and
by
the
way
another
thing
I
want
to
raise
is
that
I
think
we
need
to
be
a
little
bit
more
disciplined
about
not
just
getting
examples
to
compile
but
checking
to
see
if
they
work
literally.
Every
single
example
was
broken
this
week,
they're
fixed
now,
but
when
we
change
stuff
we
should
probably
take
a
look
there,
because
people
look
at
our
examples
as
simplified
ways
of
messing
with
stuff.
B
No,
actually,
let
me
share
my
screen
again.
I
did
not
do
that,
but
as
a
model,
Steve
and
I
talked
about
this
a
lot
today
as
a
model
we
were
looking
at
Firefox's
console,
which
is
different
from
chrome
and
firefox
is
console,
looks
like
this,
and
it's
got
its
its
prompt
is
down
at
the
bottom.
If
you
see,
and
it's
a
and
its
output
is
on
top
just
like
what
we're
talking
about.
B
If
you
want
it
to
grow,
you
can
do
shift
enter,
and
that
does
do
this
and
you
see
there's
a
single
prompt,
the
prompt
is
still
at
the
top
and
they
decided
there's
a
minimum.
You
know,
there's
a
maximum
amount
that
it's
going
to
grow,
and
now
what
you
see
is
my
scroll
bar
getting
some
because
it's
not
grow
larger.
So
this
is
a
model
we
could
go
off
of
I
personally
hate.
The
idea
of
my
pains
that
I've
set
a
specific
size
for
changing
and
the
Firefox
one.
You
can't
drag
this.
B
You
can't
change
it
with
the
mouse.
It
does
it
automatically,
but
we
could
switch
to
a
fox
for
a
phosphor
box
panel
instead
of
a
split
panel
and
do
this
sort
of
behavior
or
we
can
keep
the
split
panel,
allow
you
set
the
size,
but
if
you've
set
the
size,
I
would
highly
suggest
not
overriding
and
changing
that
size.
If
you
haven't
accepted
from
ya
me,
if.
C
You
were
to
make
them
fix
sizes,
there's
not
really
a
need
to
use
a
phosphor
box
panel.
You
can
use
CSS
to
get
the
sizing
automatically.
I
can
have
the
only
time
the
only
the
only
way
that
you
could
get
the
box
panel
to
do.
That
kind
of
behavior
is
to
automatically
update
the
minimum
height
for
the
widget
and
then
do
a
head.
Sound
like
you'd
like
to
implement
firefox's
behavior
you'd,
be
better
off
using
just
regular
CSS
to.
B
B
All
right:
well,
that's
that's
certainly
worth
experimenting,
especially
if
we
decide
this
is
the
model
we
want,
but
I
think
the
now
we're
at
a
point
where
we
have
certain
models
to
look
at
and
we
should
pick
one.
I
I,
don't
I,
don't
think
it's
a
great
use
of
time
to
experimental
experimentally
build
these
out
because
they
take
more
time
to
build
them.
They
do
two
things.
We
wait
this
point
of
view.
What.
C
B
Oh,
that's
a
good
point:
I'm,
not
sure
I'm,
firefight
and
not,
but
but
but
the
code
might
still
be
there,
that
we
can
check
in
in
their
source
code.
It
might
be
what
I
love
or
maybe
not
I'm
not
sure,
but
yeah.
That's
it.
That's
a
good
point
too
I
mean.
A
I
I
totally
agree
that
we're,
probably
just
gonna,
have
to
like
check
it
out
and
play
with
it
interactively
I
should
say
originally.
When
we
had
envisioned
the
visual
design.
We
were
imagining
that
the
the
Firefox
pet
behavior,
and
so
but
let's
just
play
with
the
current
version
and
like
try
to
get
a
feel
of
where
it
works,
where
it
doesn't
work
and
how
we
could
iterate.
B
Yeah,
okay,
what
do
you
think?
What
do
you
think
about
where
it
is
right
now?
Should
we
merge
it?
No.
A
Let's
hold
on
I
mean
I
could
play
with
it
some
today.
Okay,
we,
the
other
thing
I
wanted
to
play
with,
is
just
a
side.
Panel
virgin
yeah.
C
A
I
mean
I,
there's
I,
don't
know
like.
We
definitely
have
thought
and
talked
previously
about
having
modes
in
the
notebook
or
on
Jupiter
lab,
where
input
and
output
were
side
by
side.
The
thing
that's
weird
about
side
by
side
and
console
mode
is
by
definition
the
input
area
can
only
have
one
cell.
So
it's
like
a
wasted
vertical
space,
like
you
noted,
so
it
may.
It
may
not
make
sense,
but
I
just
want
to
play
with
it
and
see,
see
how
it
feels
and
no
close-ups
attention.
B
You
know
treating
it
like
a
rebel
where
you
have
a
whole
file
worth
of
content
and
you
keep
hitting
up
and
editing
it's
more
and
executing
it.
It
up,
and
you
know
treating
it
as
a
thing
where
you
use
it
as
a
way
to
doubt
your
script.
I
can
sort
of
see
that,
but
again,
I'm
not
sure,
I'm
not
sure
what
sort
of
behaviors
this
will
encourage
and
I'm
not
sure
what
we
want.
B
A
D
Enable
third-party
extensions
to
build
themselves
standalone,
but
only
but
I'll,
do
d
duping
either
on
the
server
right
before
serving
the
files
or
on
the
client
as
a
worst-case
scenario,
but
using
the
assembler
mangled
and
version
mangled
import
paths
to
make
sure
you
only
get
one
one
of
each
library.
If
billable,
we
had
originally
thought
that
we
might
want
to
support
doing
a
single
web
pack
build
on
the
final
machine
as
as
as
an
advanced
behavior.
But
one
thing
I
thought
about
the
ramifications
of
that
is
webpack.
D
Loaders
are
global,
so
if
a
an
extension
had
its
own
loaders
that
it
needed
to
produce
its
bundle,
those
may
conflict
with
the
upstream
loaders.
So
we
can't
necessarily
create
a
single
bundle
on
what
sanely.
Without
knowing
you
know
the
person
that
creates
that
bundle
has
to
have
all
the
information
and
make
us
the
same
choice.
But
I
don't
know
that
we
can
do
that
in
automated
fashion.
So
what
this
enables
us
to
star.
D
You
couldn't
you
wouldn't
know
an
automated
weather
that
work
yes
yeah,
but
doing
this
enables
us
to
produce
bundles
that
are
guaranteed
to
work
within
themselves.
But
if
they're
requiring
a
module,
that's
already
been
loaded
elsewhere.
They
just
they
really
get
one
of
those
things.
So
we
get
the
behavior.
D
It
might
be
worth
just
doing
that,
rather
than
having
this
no
dependency,
where
we
take
manifests
that
ship
with
these
bundles
and
dubuque
and
splice
together
a
single
bundle
that
has
only
one
version
of
each
library
that
we
want
each
module
also
something
to
consider,
but
I
just
had
a
conversation
with
Chris
where
we
were
trying
to
get
around
this
problem
of
by
using
the
required
jas
loader.
We
were
insisting
that
things
that
may
not
necessarily
have
been
able
to
work
asynchronously.
D
We
were
trying
to
make
them
or
asynchronously
an
example
as
HTML
to
parser
that
is
required
by
our
sanitized
HTML
package
has
some
circular
imports
that
work
under
the
node
synchronous
model
and
that
the
there's
some
things
that
are
imported
lazily,
that
enable
you
to
get
around
the
circular
import
behavior
and
by
hosting
them
to
a
top-level
asynchronous,
require
we
weren't,
enabling
that
to
happen
now
within
a
web
pack.
Bundle
they
get
around
that,
because
everything
is
available
synchronously,
so
Chris's
idea
was
well,
we've
already
got
the
web
pack
bundle.
D
Why
don't
we,
instead
of
using
their
name
they're
numbered,
require
statements?
We
basically
hijack
it
and
instead
of
a
number
require
we
take
what
I
was
already
generating
from
this
web
pack.
Bundle
in
this
sem
december
mangled
required.
We
also
provide
our
own
defined
function,
which
so
you
put
those
two
together
and
we've.
We've
got
the
this
the
equivalent
behavior
that
we
had
before
without
forcing
things
to
be
asynchronous.
That
didn't
want
to
be
so.
D
You
still
only
load
modules
once
and
the
this
forces
a
lot
less
mangling
on
my
part,
like
I,
still
don't
have
a
clear
way
that
in
mind
of
how
I
was
going
to
enable
asynchronous
loading
of
modules
from
from
that
web
pack
bundle,
but
this
makes
it
seamless.
So
all
it
is,
is
we
we
mangle.
The
web
pack
require
of
a
numbered
module
to
this
summer,
mangled
string,
and
we
we
wrap
each
of
these
things
in
a
defined
block.
D
That's
our
own,
define
that
we're
saying
is
on
the
page
or
at
the
head
of
this
bundle
that
we're
creating,
and
so,
as
things
get
to
find
their
inner
module
registry,
we
have
as
things
get
required.
We
look
it
up
on
a
registry
similar
to
what's
already
done
so.
Basically
we're
just
taking.
What's
at
the
top
of
every
web
pack,
bundle
making
our
own
slightly
tweaked
version
that
takes
into
account
cember
and
Bob's
your
uncle.
So
that's
that's
the
direction
we're
going
to
try
to
try
to
head
right
now.
D
C
D
D
D
With
everything
BTW
dude
we're
not
we
no
longer
had
this
problem
where
you
had
this
unknown
thing
that
may
break.
How
do
you
had
my
diagnosis?
It
was.
It
was
a
pain
to
figure
out
the
HTML
to
partial
was
a
problem
so
how
you
diagnosed,
how
do
we
unable
the
users
to
find
it
now?
It's
the
documentation
or
talking
to
one
of
us,
and
so
then
that
you've
loaded
this
and
the
require
JS
notes
say
that
about
ninety-five
percent
can
be
wrapped.
D
D
Off,
whereas
this
is
actually
a
lot
easier,
the
I'm
do
I'm
having
to
do
a
lot
less
manipulation
of
the
web
pack
bundle.
All
I'm
doing
is
replacing
the
the
function,
definitions
with
their
own
defined
statements
and
then
they're
required
by
number
to
require
with
december
mangled
thing,
and
then
we
write
our
own
header.
It's
it's
a
lot
simpler,
conceptually
and
to
implement,
and
we
don't
have
to
have
two
different
technologies.
We
have
we're,
not
we're
not
forcing
web
pack
and
require
jazz
its
web
pack
using
our
own
loader
semantics.
D
E
D
C
This
will
also
enable
us
to
do,
though,
is
have
plugins
loaded
dynamically,
so
you
could
put
one
of
these
bundles
on
the
page
later
and
it
would
buy
into
that
same
loader
that
we
already
have
on
the
page,
and
you
still
would
like
you
would
still
get
the
D
duping
effects.
So
this
could
this
would
allow
plugins
to
be
loaded.
E
D
The
number
within
within
the
web
pack
plug-in
it
gives
me
a
number
I'm
replacing
that
with
the
full
module
mangled
cember
passion.
So
everything
everything
within
the
bundle
is
opting
in
to
this
system.
So
you
you're
always
ensure
that
you're
getting
this
behavior,
whereas
we
wouldn't
get
that
from
the
dll
plugin.
D
D
D
E
C
Steve,
what
you
might
consider
doing
as
well
on
your
knit
stage
to
make
it
easier
for
the
server
to
dee
doop
on
the
server
side,
as
you
can
add,
header
and
footer
tags
like
it's
using
particular
format.
So
you
know
where
the
limits
of
this
particular
module
is
with
whatever
its
version
is
to
you.
You
can
eliminate
having
to
have
a
departure.
E
D
Author
they're,
just
using
a
web
pack
plugin
that
we
provide
and
they
write
their
web
pack
bundle.
We
give
them
an
example.
Web
pack
bundle
with
with
some
loaders
that
make
sense,
but
that's
it
from
their
perspective.
They're
producing
a
web
pack
bundle
as
far
as
they're
concerned.
It
just
has
a
different
style
loader.
So.
E
E
D
What,
instead
of
instead
of
the
public
path
being
being
global,
it'll,
be
private
to
each
module,
so
I,
don't
know
where
to
fetch
that.
So
that's
that's
the
only
change
necessary.
It's
really
going
to
be
straightforward
and
then
plug
in
then,
and
where
is
right
now
it's
a
direct
look
up
by
module
number
or
we're
just
swapping
in
this
December.
Look
up
that
we've
already
got
rid,
so
it's
rich
really
close
like
gumbo,
nice,
okay,
so.
E
D
D
C
E
D
Do
we
just
had
this
conversation,
so,
what's
in
my
PR
works
in
that
it
had
isolated,
that
HTML
to
parser
and
and
and
it
loads
everything
on
the
page
it
was.
It
was
producing
that
that
black
box
and
consuming
it
and
it
worked,
but
it
was
brutal
and
not
what
we
wanted
and
we
were
fighting
against
webpack.
Now
we're
going
to
work
with
wet
pack
and
just
tweak
it
a
little
bit.
So
it's
a
lot
cleaner
and
a
lot
saner
yeah
thanks.
A
Please,
that's
all
you
wanted
to
cover
Steve,
yep,
okay,
so
I've
mostly
been
working
on
CSS,
but
wanted
to
talk
a
little
bit
more
about
context
menus
one
question
I
had
is
it
we
talked
previously
and
the
context
menu
event
does
have
a
keyboard
state,
along
with
it
am
I
to
understand
correctly
that
we
could
look
at
that
keyboard
state
and
either
a
lot
of
default
or
prevent
default.
So
we
could,
we
can
have
keyboard
state,
modify
whether
the
user
sees
the
browser
default
context,
menu
or
custom.
One
that
we
provide.
B
The
state
that
you
can
have
is
whether
things
like
shift
key
or
Alt
key
or
Medicare
or
ctrl
key
down.
You
can't
have
arbitrary
other
stuff
and.
C
A
E
A
A
D
A
C
E
C
A
It
a
part
of
what
we're
we're
seeing
is
we're
seeing
other
contexts
where
we
want
to
put
context
menus
and
implementing
those
by
hand
each
time,
especially
now
that
the
the
way,
the
the
way
you
do
that
now.
So
if
a
given
widget
wants
a
context
menu,
it
has
to
create
its
own
command
registry,
private
command
registry,
to
use
with
the
menus
which
are
command
driven
now,
and
it
I
mean
we
can
do
that.
A
C
Mean
there's
two
parts
to
that:
one
is
making
it
easy
to
build
context,
menus
based
off
the
global
command
registry.
That's
one
issue
and
then
there's
another
issue
of
making
it
easy
for
widgets
to
make
their
own
context
menu
thing
and
maybe
a
context.
Menu
manager
is
the
easy
way
to
do
that.
Easiest.
C
But
if
it's
a
question
is
about
its
proposed
to
declare,
because
you
got
to
build
up
the
context
menu
and
also
put
commands
in
the
command
registry
that
can
all
be
extracted
by
writing
yourself,
a
little
function
that
does
it
for
you
and
just
take
some
array
of
objects
and
does
the
right
thing.
I
mean
I
mean
I.
C
Can't
I
can't
simultaneously
have
super
easy,
api's
everywhere
in
phosphor
and
have
the
api's
that
give
us
the
flexibility
that
we
need
to
do
the
custom
things
that
we
need
and
so
having
an
easy
function
to
generate
a
one-off
context
menu.
I
would
probably
put
in
the
realm
of
a
function
that
you
live
in
Jupiter
left
by
for
something
where
we
want
a
context.
Menu
manager
that
does
this
kind
of
CSS
selection
to
dynamically
build
the
menu
and
pop
it
up.
A
A
C
Yeah
I
would
I
mean
I.
Think
that
you
know
I
would
just
make
it
as
another
thing.
That's
added
on
the
application
object
and
maybe
there's
a
boolean
thing
that
says
only
show
the
context
menu
have
control
is
held
down
or
something
like
that.
C
We
can
decide
what
that
is,
but
I
would
I
would
put
it
on
the
app
object
just
like
we
have
commands
and
key
map
on
the
app
object,
so
they
all
go
through
the
same
command
registry
and
just
make
sure
like
there's
really
as
soon
as
you
enter
in
our
selectors
into
the
mix.
There's
really
no
need
to
have
multiple
contacts,
men,
don't
managers
or
make
your
own,
because
you
can
just
have
a
more
specific
selector.
One
thing
we'll
need
to
decide
on
this,
though,
is
in
the
context
of
selector
driven
menu
items.
C
Some
kind
of
notion
of
rank
to
order
things
within
the
menu
or
if
we
should
only
order
them
based
on
selector
specificity,
and
you
know
maybe
everything
that
matches
that
a
given
node
gets
its
own
separator
separation.
Kind
of
thing
like
those
are.
Those
are
some
questions
to
answer
like
how
do
we?
How
do
we
go
from
okay?
These
are
the
commands
I
want
included
to
the
menu
in
the
menu.
How
do
I
order
them
within
that,
and
where
do
I
add
separators
and
secondarily,
how
do
I,
what
do
we
handle?
C
What
do
we
do
about
submenus,
because
some
menus
are
not
commands,
so
you
have
command
menu
items
and
you
have
some
menu
menu
items
and
we'll
need
to
address
that
as
well.
So
there's
some
outstanding
questions
there
about
how
we
want
to
do
this,
but
I
don't
think
it's
it's
not
certainly
not
unsolvable
I.
A
A
And
then
the
other
of
CSS,
so
it
be
I've,
been
playing
a
lot
with
the
CSS
variables
and
overall
there
a
lot
of
fun.
Actually
they
seem
to
work
really
well,
I've
tested
them
on
firefox
and
chrome,
and
both
seem
to
work
well,
there's
Chris!
Are
you
aware
of
any
bugs
or
oddities
and
firefox
in
terms
of
how
foster
it?
How
phosphor
manages
things
like
min
height
I
found
a
few
cases
in
Firefox
where
our
existing
CSS
had
a
min
height,
but
that
wasn't
enough.
Firefox
seemed
to
also
need
a
max
hype.
C
Can
you
give
you,
can
you
open
an
issue
with
what
you
were
saying,
yeah
I'll
start
to
think
about
aware
of
any
issues,
but
I
can
certainly
take
a
look.
So
if
you
didn't
bring
reduces
open
issue
with.
A
C
E
A
C
So
let
me
let
me
state
what
I
think
your
question
is,
and
the
question
is
foxford
uses
certain
pulls
out
certain
information
from
CSS,
such
as
men
with
the
min
height
or
men's
sizes,
and
uses
that
in
order
to
compute
its
layouts
or
the
boundaries
for
its
layouts,
and
if
these
things
are
defined
by
a
CSS
variables
and
at
some
point
at
runtime.
The
values
of
these
were
change
when
this
can
win
and
if
so,
can
phosphor
update
itself.
Based
on
the
changes
to
these
guys.
So
I
understand
that
I'm
not
directly.
C
A
C
Ok,
so
the
question
is
okay,
so
this
so
they're
this
there's
some
subtlety
here
was
the
computed
value
in
the
Dom
due
to
some
inline
style,
minimum
size
that
was
written
like
directly
into
the
node,
because
I
I
don't
go
to
mention
because
pet.
If
this
was
on
a
panel
like
was
it
like.
On
a
panel,
you
were
looking
at
the
bin
size.
C
So
when
a
child
is
added
or
removed,
or
when
it's
attached
to
detached
the
panel
will
recompute
its
minimum
size
and
update
itself
on
its
inline
style,
so
that
its
ancestors
can
know
what
the
minimum
size
of
this
thing
should
be
because
that
informs
their
potentially
and
so,
if
you're,
trying
to
set
through
CSS
the
minimum
size
of
a
panel
like
a
box
pamelor
panel
or
something
like
that
that
won't
work.
That's
not
fostered
model
box
panels
and
split
panels
and
things
that
use
absolute
layout,
automatically
compute
their
minimum
and
maximum
sizes.
C
A
C
So
in
as
far
as
I'm
aware
anytime,
if
you
look
through
the
timeline
and
you
look
through
what
the
browser's
doing
any
time,
there's
a
style
recalculation,
those
variables
will
be
evaluated
if
necessary,
if
it's
somewhere
in
the
chain
of
that.
So
this
could
be
due
to
anything
like
you
call
get
computed
style
and
JavaScript,
and
if
there,
if
it
the
browser,
says
that
the
style
is
dirty,
you
know
recalculate
everything
so,
basically
anytime
a
style
calculation
needs
to
be
done.
The
question
about
windows,
phosphor,
pull
on
these
variables
and
cash
them
the
answer.
C
That
is,
it's
going
to
depend
on
the
widget,
but
most
things
right
now
in
phosphor
that
are
going
to
be
reading.
These
minimum
sizes
are
going
to
be
panels
that
are
doing
absolutely
up
and
they're
going
to
read
that
information
and
cash
it
anytime
fit.
It's
called
so
anytime.
You
get
a
fit
request.
Message
is
processed
by
panel.
C
It's
going
to
pull
on
the
the
box
sizing
information
which
includes
minimum
with
them
to
my
and
that
kind
of
stuff
for
all
of
its
children
and
compute,
what
it
aids
from
that,
and
so,
if
you
make
a
change
to
some
CSS
property
that
would
cause
the
minimum
or
maximum,
let's
just
call
it
the
size
limits
that
would
cause
the
size
them
it's
of
some
widget
to
change.
Then
you
should
call
fit
on
its
parent
so
that
it
can
take
that
into
account
and
update
itself.
Okay,.
A
A
I
also
sat
down
with
some
of
the
designers
and
we
spent
time
sort
of
looking
at
color
schemes
in
different
IDs
and
tried
to
come
up
with,
but
like
what
are
the
patterns
in
colors
that
are
used
in
IV
es
from
a
semantic
perspective,
and
one
thing
we
noticed
is
that
in
a
in
a
light
theme,
there's
certain
sequences
of
colors
that
go
from
light
to
dark.
For
example
like
in
a
light
beam,
your
main
layout
color
would
go
from
like
white
to
grey
to
a
darker
grey
to
a
darker
grey.
A
Your
typography
goes
in
reverse,
like
the
most
prominent
typography
color
font.
Color
would
be
almost
a
black,
then
you've
got
like
a
disabled
color,
that's
slightly
lighter
grey,
and
it's
you
end
up
with
sort
of
sequences
of
semantic
colors
that
that
relate
to
each
other
in
an
important
way,
and
so
the
way
that
we're
expressing
that
and
the
other
thing
is
it
typically
there's
more
than
just
primary
and
secondary
in
these
sequences.
You
can
have
as
many
as
like
four
and
and
so
we
we've
started
to
name
things.
A
The
the
main
color
may
not
be
the
most
prominent.
A
great
example
of
that
is
Visual
Studio
code,
they're,
they're,
sort
of
main
body
font
color
is
not
pure
white.
They
actually
use
pure
white
for
like
selected
tab
next
and
so
the
way
we've
already
written
these
numbers
is
it
the
first
one
would
be
the
main
one.
So,
like
you
know,
in
a
font
color,
the
first
would
be
your
main
font
color.
The
zeroth
one
is
designed
for
sort
of
even
more
emphasis.
A
A
That's
sort
of
the
pattern
that
we're
noticing
in
in
its
brief,
like
Visual
Studio
code,
has
this
type
of
layering
other
IDEs
have
similar
layering,
and
so
what
we've
done
is
defined
sequences
of
colors
for
borders,
font,
colors,
layout,
color
and
then
a
brand
color
and
an
accent
color
so
like
for
us
right
now.
The
brand
color
would
be
the
this
material
design
blue
that
we're
using.
A
So
it
would
be
weird
if
you
had
a
layout
color
sequence.
That
was
not
just
one
color
like
you'd,
probably
pick
like
gray
or
blue
gray,
or
something
like
that.
We've
we
tried
to
avoid
words
like
light
and
dark,
because
we
want
these
sequences
also
to
work
for
inverted
themes,
dark
themes
as
well.
Oh
fought.
C
I'm
kind
of
with
Brian
on
this
there's
really
hard
to
be
semantic
for
everything,
I
mean
we
have
h1
h2,
h3
h4,
all
the
way
through
86
tags
like
as
part
of
the
HTML,
spec
and
I
think
they're.
The
most
semantically
minded
of
everyone.
So
I
think
at
some
point,
when
you
have
a
lot
of
things,
just
literally
represent
some
water
of
specificity.
That
numbers
work
so.
A
B
I
think
that
we
in
this
conversation
know
what
that
means
right
now,
but
others
will
just
think
of
them
as
all
right.
These
are
the
six
colors
they
chose,
but
not
know
that
there's
six
and
order
of
priority
you
might
want
to
call
it
like
either
Eleanor
h1,
something
that
says
this
is
a
level
this
is.
This
is
actually
an
order
of
precedence.
Well,.
C
A
A
I
mean
what
I
didn't
so.
What
one
thing
that
that
the
designers
brought
up
is
obviously
the
way
that
material
design
got
around.
That
exact
problem
is
that
they
didn't
use
0
1,
2
3.
They
used
100
200
300
400,
but
we
really
did
not
want
like
we
may
not
use
material
design
colors,
and
so
we
didn't
want
to
use
like
100,
200
or
something
that
was
reminiscent
of
material
design
when,
in
fact,
that's
also
how
HTML
font.
A
And
they're
not
they're
not,
and
they
may
not
even
be
yeah
they're
like
in
principle,
someone
could
define
a
sequence
that
wasn't
quite
the
same
hue,
but
it
was
like
a
curve
that
was
almost
the
same
hue
and
annoyed
I,
probably
I,
think
that
border
color,
0,
1,
2,
etc.
Up
to
me
probably
make
the
most
sense
at
this
point.
A
Right
now,
I'm
tend
to
be
defining
zero
through
three.
There
may
be
a
few
cases
like
with
font
color,
where
or
full
three
is
probably
not
needed
right
now.
A
The
only
other
is
that
there's
some
situations
where
you
need
a
inverse
sequence
so
like,
for
example,
you
need
a
you
know.
If
you
have
a
light
theme,
you
need
a
dark,
a
dark,
mane
font
color.
You
need
a
slightly
light,
lighter
color
for
inactive
things,
parts
of
you,
you
I,
though,
even
in
light
fee
may
be
inverted,
and
so
you
need
like
a
white
font,
that's
the
inverse
of
the
dark
font,
and
so
the
way
I'm
doing
that
is
just
doing
casa
de
p.
Inverse
that
thing.
E
E
A
Think
there
are
some
color
functions
that
you
can
use
with
CSS
variables
to
do
lighten
dark
and
opacity
type
operations,
I've
not
played
with
those
yet
but
I.
Eventually,
we
probably
will
need
to
play
with
those.
The
only
other
thing
to
mention
quickly,
so
I've
got
these
basic
color
sequences
for
borders,
fonts
layout
brand
accent,
colors
be
the
naming
of
variables
for
individual
plugins
is
a
lot
more
difficult
I'm.
A
A
E
A
A
I'm
not
sure
like
in
Python
people,
I
think,
understand
what
underscore
means.
I'm
not
sure
that
any
CSS
variables
are
brand
new
and
so
no
one's
gonna
have
any
sort
of
conventions.
They're,
probably
going
to
look
at
it
say.
Oh
weird,
so
what's
this
dash
dash
thing,
they'll
discover
to
CSS
variable
I,
don't
know
I'm
a
little
hesitant
to
put
underscores
like
I'm,
not
sure
people
will
understand
the
context
and
our
intention
they're.
B
B
Private,
so
let's
use
private,
though
oh
no
yeah,
no
I
I
would
vote
against
dollar
son
personally.
But
that's
just
me.
E
B
C
E
Else
has
a
form
we
had
one
more
quick
question:
I
just
upgraded
the
I
put
in
a
PR
to
upgrade
the
typescript
two
point:
oh
no
type
talk
is
liking,
so
we
can't
actually
make
changes,
but
it
did
expose
at
least
one
buck
and
and
some
other
places
where
we
had
some
interesting
things
going
on
so
tight
grip.
Two
point:
O
has
has
much
better
type
inference.
E
Dry
I
would
hope.
Y'all
I
have
to
pee
ours
boys.
Yet,
okay,
one
is
just
upgrading
the
2
point.
0
RC,
they
said
it
was.
They
felt
that
it
was
good
for
general
use
and
they're
trying
to
stabilize
it.
You
know
clean
up
any
remaining
bugs
the
code
actually
I
put
in
another
PR
that
actually
makes
code
changes
that
have
been
done
to
point.
Oh
so
so
that
shouldn't
be
merged.
C
Mean
this
does
the
the
so
2
point.
0
does
open
the
door
for
a
new
discussion,
because
one
of
the
big
features
in
two
point-
oh-
and
I
would
like
to
start
using-
is
non
nullable
types
yep,
which
is
like
a
big
huge
thing
for
that
and
so
I
think
we
should
have
the
conversation
about
what
our
policy
is
going
to
be
going
for
global
types
and
whether
that's
an
option
we
want
to
turn
on
by
default.
C
I'm,
definitely
of
the
opinion
that
more
guarantees
or
better
guarantees
legs
better
and
so
like.
There
are
certainly
some
things
in
Infante
there
lots
of
places
in
phosphor
where
I
could
make
use
of
that
and
be
more
explicit.
So
anyway,
that's
what
I'm
going
to
solve
that
in
this
discussion,
but
that's
something
that
we
should
make
a
conscious
choice
and
back
before
we
move
over
to
2
point
0,
because
that
could
be
a
reason
to
hey
we're
doing
20
and
we're
going
to
do
this.
Well
anyway.