►
From YouTube: JupyterLab Weekly Dev Meeting, May 5, 2017
Description
Meeting of the JupyterLab development team, May 5, 2017
Meeting Notes: https://paper.dropbox.com/doc/JupyterLabNotebook-Weekly-Meetings-rIhXeFWYRgCiCFKiz2gv4
A
C
Our
this
week,
I've
been
continuing
to
work
on
the
extension
mechanism
and
how
to
rectify
all
the
different
ways
you
could
launch
a
Jupiter
lab
set
of
assets
include
spins
nick
has
get
some
proof
of
concept
for
how
to
handle
the
merging
of
installed
assets,
including
an
online
offline
situation.
So
let
them
talk
to
that
actor
and
the
biggest
change
from
my
standpoint
to
accommodate
that
is
to
base
instead
of
having
a
JSON
file
that
you
write
to
to
an
install
an
extension.
C
You
simply
put
that
at
the
tarball
into
that
folder,
and
so
so
that
upon
install
your
app
on
installing
the
package,
it's
just
moving
a
data
file,
so
that
can
be
accomplished
through
either
a
wheel
or
a
kind
of
package,
so
better,
better
accommodating
that
worked
well
and
also
worked
on
some
open
beta
issues.
Try
to
get
that
number
down,
I!
D
Ahead,
they're
cool,
so
the
that
was
pyaare
Merson
this
week.
That
has
been
in
the
works
for
a
couple
weeks
now
and
that's
a
refactor
of
file.
Browser
and
document
manager,
I
link
to
it
in
the
document,
because
the
pr
has
basically
describes
all
the
things
that
are
in
there
and
some
of
them
might
be
relevant
to
people
who
are
writing
their
own
extensions.
There's.
A
bunch
of
file
file
operations
commands
that
are
now
just
globally
accessible
they're
registered
by
the
document
manager
and
the
creation
of
new
file
browsers,
doesn't
necessitate
creating
new
commands
anymore.
D
So
there's
no
anonymous
commands
in
there
and
there's
two
types
of
file
browser
commands
that
are
accessible,
that
one
one
is
a
namespace
file
browser
I
can
mane
and
that's
just
for
the
one
in
the
sidebar
things
like
goggling
it
or
activating
it,
hiding
it
that
sort
of
thing.
Those
are
those
belong
to
just
that
one
file
browser,
but
then
there's
others
that
are
namespace
file,
browser,
:
and
therefore
all
file
browsers
and
there's
an
instance
tracker
that
will
pick
basically
which
file
browser
to
apply
that
command
to
just
like
any
other
instance
tracker.
D
So
it's
the
same
pattern
that
we
used
for,
say
notebooks
or
consoles
or
whatever,
so
that's
in
now,
and
it
should
make
not
much
of
a
difference
to
anyone
who
wasn't
wasn't
building
directly
on
top
of
document
manager.
But
if,
but
if
you
were
there's
some
new
API
is
basically
some
new
file
manipulation
things
that
weren't
there
before
and
now
I'm
I've
been
thinking
about
the
design
of
a
setting
system,
which
is
next
big
feature.
We
want
to
work
on
and.
D
You
change
the
settings
for
all
extensions,
for
example,
and
in
addition
to
each
extension,
maybe
having
its
own
method
of
saving
settings
you
might
want
to
global
and
that
that
would
still
hit
that
and
then
another
concept
is
the
setting
setting
database,
which
will
have
a
pretty
simple
API,
basically
something
like
fetch
all
my
settings,
if
I'm
an
extension
or
fetching
individual
setting
on
an
extension
and
save
an
individual
setting
or
delete
them,
something
like
that.
D
Don't
be
pretty
straight
forward
and
hopefully
built
on
the
same
interface
as
a
state
database,
so
that
we
can
use
the
same
data
saving
abstractions.
Basically,
yeah
I
mean
this
is
in
the
early
thinking,
stages
still,
but
I'll
be
putting
down
some
code
and
I'd
really
welcome
feedback
once
I
have
some
more
to
go
on,
but
that's
what
that's
a
basic
idea
where
it's
headed.
E
D
Yeah,
so
there
is
a
deprecated
attribute
on
the
document
manager
called
CWD
and
that
is
being
set
that
is
being
set
by
the
same
mechanism
as
before
by
the
main
sidebar
file
browser,
and
it's
meant
for
use
for
the
way
we
before
until
we
have
a
better
solution.
Yeah,
okay
and
it's
clearly
marked
in
the
documentation
that
it's
deprecated
I
discourage
anyone
who
isn't
specifically
working
on
the
military
or
landing
from
using
it,
because
we
don't
want
to
create
new
dependencies
on
it.
D
F
A
A
Great
that
well
I
have
a
question
for
Steve
about
extensions.
This
last
week,
I've
been
doing
a
lot
of
updating
of
widgets,
so
basically
making
a
lot
of
extensions
for
Jupiter
rabbit
and
one
common
case
that
I
see
is
I,
have
a
JavaScript
library
that
I
want
to
expose
somehow
in
Jupiter
lab.
So
I
I
can't
put
the
lab
extension
inside
the
JavaScript
library,
because
the
extension
mechanism
expects
the
default
and
export
to
be
the
extension.
A
The
extension
properties
and
so
I
have
to
make
a
new
JavaScript
package
in
order
to
expose
the
extension
to
Jupiter
lab.
That
means
that
any
change
I
make
to
the
JavaScript
library
that
I'm
wrapping
I
have
to
somehow
release
or
install
with
a
file
path
and
then
reinstall.
The
extension
I
haven't
tried
leaking
the
extension,
but
it's
kind
of
an
awkward
workflow.
If
I'm
making
a
convention.
A
That,
essentially,
is
a
very
basic
light
wrapper
around
JavaScript
library,
because
either
I
have
to
hard
code
a
dependency
with
a
path
which
means
that
git
diff
is
always
showing
a
difference
with
what
I
should
be
pushing
up
to
the
Ricoh
or
I
have
to
keep
publishing
versions
of
my
JavaScript
library
as
I
as
I'm
wrapping
it
with
the
extension.
And
so
this.
G
G
So
I
was
saying
that
this
isn't
really
a
issue.
That's
unique
to
coopered
a
lot
of
extension,
you'll
run
into
this
anytime
you're,
trying
to
simultaneously
develop
two
Indian
packages
that
depend
on
one
another:
okay,
and
the
way
that
we've
told
this
was
by
using
lerna
and
pull
everything
into
the
same
repo
right
now,
because
I
was
basically
the
issue
we're
having
with
phosphorus
is
actually
having
them
in
separate
packages,
it's
almost
impossible
to
develop
them
the
independent
packages
simultaneously.
So
this
is
just
basically
a
repeat
of
that
problem.
G
A
Asking
for
is
suggestions
for
workflow
or
I
had
a
suggestion,
but
I
doubt
it's
yeah
I'd
like
to
hear
suggestions.
How
well.
I
A
Sure
I'm
happy
to
hear
any
suggestions
it
did
sound
like
Chris
had
it
was
a
middle
of
a
suggestion.
Yeah.
G
A
H
H
G
H
G
A
So
the
nice
thing,
the
nice
thing
about
specifying
a
files
import
that
an
import
file
and
then
just
using
the
default
exports
to
that
I
guess
the
workflow
there
would
be
the
file
is
not
imported
into
index
j
s,
but
the
file
does
import
index
reyes.
So
it
does
export
the
entire
package
and
the
wrapper
and
that's
what
you're
exporting
and
that's
what
you're
you're
importing
in
and
use
for
trip
your
lab.
A
So
you
can
make
that
work
just
by
making
sure
that
your
the
file
that
you're
exporting
the
jupiter-like
plugin
sits
above
the
actual
module
exports,
but
that's
a
convention
and
and
again
it's
still
a
little
bit
unclean.
I
it's
convenient,
but
it's
unclean
because
it
means
now
you're
Jupiter
now
you're.
Now
your
JavaScript
library
depends
on
the
various
Jupiter
lab
exports.
So
so
that's
what
bothers
me
about
the
workflow,
but
it
does
make
things
a
lot
more
convenient.
G
A
G
H
So
yeah
Jason
I'm
not
sure
if
what
I
have
been
working
on
handles
the
case,
what
you're
talking
about,
but
maybe
it's
worth
taking
a
look
like
if
we
can
potentially
here
while
we're
doing
this,
create
a
case
of
s
that
might
be
interested
in
a
tool
that
but
I
haven't
tried
that
specification.
Yet
I've
just
been
concentrating
on
the
extensions
themselves.
H
You
know
my
thinking
towards
that
is
that
you
might,
you
know,
have
any
like
that
is
the
import
mechanism
that
you
use.
You
use
the
Jupiter
lab
plugin
as
the
thing
that
we'll
have
you
know
the
token
that
it
gives
back
has
an
expected
API
on
top
of
it,
but
that's
not
very
clean
either.
So
you
know
but
yeah.
Alright.
Let.
A
Me
fire,
let's
see
if
this
works
again,
I
think
that
the
most
convenient
workflow
that
I
see
right
now
is
to
npm
install
from
my
file
path
into
my
jupiter
lab
and
npm
safe
from
a
file
path
into
my
trooper
lab
extension
and
then
every
time
I
install
the
extension
internally
on
my
computer
it'll
just
reference
the
file
path
on
my
computer,
which
is
fine.
I
just
have
to
remember
to
not
get
commit
that
instead
actual
version
number
when
I
actually
or
something
out
from
the
rats
module
yeah.
H
Yeah,
so
so
I
guess
I'm
going
to
I'm
going
to
come
at
it
from
a
slightly
different
angle.
So
basically
what
we
go,
we
decide
work.
A
proposal
has
been
put
forward
that
if
we
move
the
runtime
reproducibility
of
a
jupiter
lab
a
specific
to
patrol
ab
build
whether
it's
the
the
main
one
that's
distributed,
along
with
the
python
package
of
the
Conda
package
or
system
manager,
package
or
one
that
is
created
as
a
result
of
user
interaction
by
adding
extensions
or
as
a
custom,
dist
drill,
so
I'll
jump
right,
real
quick
to
it.
H
H
H
This
is
going
to
force
the
copy
of
the
assets
that
are
in
the
Jupiter
lab
directory
in
the
repo
into
share.
So
now
I've
got
a
fresh,
pristine
environment
there.
It's
doing
some
additional
yarn
stuff
like
putting
a
yarn
RCD
that
does
the
offline
mirroring
and
all
that
stuff
and
we'll
get
to
that
too.
A
sec
okay.
So
forty
seconds
later,
I
have
a
brand
new
offline
reproducible,
build
environment
for
everything
in
Jupiter
lab.
H
So
it's
really
hard
for
me
to
demonstrate
that,
because
I
can't
turn
my
network
off
and
things
need
to
talk
to
you,
lovely
people,
but
I
can
turn
off
my
network
now
and
successfully
do
a
jupiter,
lubbock
jupiter
lab
build
because
I
just
opted
into
hey.
You
want
runtime
built
by
adding
an
extension,
so
that
was
39
seconds
and,
if
I
reload,
my
page
now
there
it
is,
is
the
example
that
I
just
made
that
was
linked
at
runtime,
that's
very
exciting.
H
So
now
the
joke
is
that
if
I
open
up
a
terminal,
oh
yeah
got
to
be
nice.
Some
range
action
all
right.
So
if
I
start
this
up,
this
is
now
going
to
start
watching
with
all
you
know,
end
user
time
installed
packages,
my
thing
and
when
I've
got
it
in
watch,
it
doesn't
do
any
capturing.
Sometimes
we
have
to
capture
the
output
of
various
commands,
but,
okay,
so
it's
watching
the
build
is
still
going
to
take.
You
know
30
seconds
or
whatever
the
first
time
out.
The
network
stuff
is
basically
nil.
H
It
didn't
really
do
anything
to
the
network
in
trying
to
do
this
and
there's
my
first
field.
So
if
we
restart,
we
should
see
exactly
the
same
thing
still
here.
Okay,
so
now,
if
we
go
back
into
here,
we
say
you
know:
that's
not
enough!
Celebration.
I
need
much
more
celebration.
I
rerun
that
see
over
here
that
it
did
which
I
was
not
fast
enough.
It
just
rebuilt
the
entire
application
in
two
millisecond
or
two
seconds
and
if
I
reload,
the
page,
there's
my
first
celebration
but
there's
my
much
larger
celebration.
H
So
now,
if
I
wanted
to
unlink,
this
I
can
take
that
right
off
and
since
I
have
a
watch
going.
I
can
also
ask
for
things
to
not
start
their
own
bills
and
maybe
there's
some
way
to
do
a
semaphore
or
mutex
or
something
that
doesn't
do
that.
But
this
is
going
to
go
in
remove
that
from
the
local,
the
local
build
file
removed
from
metadata
and
regenerate
the
template.
Folder
and
regenerate
the
temple
I'd
be
relinked
it
that
doesn't
do
anything.
Unlink.
H
H
It's
I
forgot
to
turn
the
build
off,
so
that's
what
it
would
have
done
inside
of
there
okay,
so
that
is
with
a
very
simple
one.
If
I
was
one
of
the
key
things
that
we
had
to
overcome
was
the
deduplication
process
and
so
right
now,
I
think
if
I
unranked
it
with
no
build
I
got
a
little
function.
That
will
count
how
many
times.
H
How
many
times
that
I
have
a
declared
widgets
so
phosphor
widgets?
That
is
the
actual
line
inside
a
bundle
that
is
where
would
you
was
defined
with
a
lot
of
the
approaches
that
I
tried
if
I
was
to
change
my
example
here,
let's
aren't
our
widget
equals
require
a
cross
for
widgets
widget
and
just
do
something
that
fits
a
car.
W
equals
new
widgets
and.
I
I
H
Just
make
sure
I
didn't
leave
it
in
unlink
state.
The
way
this
worked
before
this
would
have
generated
to
do
copies
of
phosphor,
which
it's
inside
of
my
application,
which
is
obviously
not
very
good.
It
also
does
tell
me
that
I
did
just
add
this
new
one
right
here.
So,
if
I
pop
back
into
my
thing
that
will
list
we're
going
to
put
that
this
guy
right
here,
I
still
have
exactly
one
copy
of
widget
inside
of
there,
so
it
has
done
the
DVD
duplication
at
the
webpack
level.
H
H
I
H
Jupiter
lab
we
see
that
there's
this
mirror
in
it,
and
this
is
a
super
compacted
offline,
mirror
of
all
of
the
crap
that
was
needed
off
of
off
of
NPM
in
order
to
reproduce
that
build
and
that
information
it's
it's
not
nothing,
but
it
turns
out
being
11
megabytes
because
it
strips
out
all
your
PDFs
and
all
your
non-essential
images
and
everything
like
that
and
the
actual
extension
that
I've
been
building.
There's
none
in
here
because
of
it
installed
my
link
them
and
it's
ended
under
the
hood.
H
It
actually
did
an
NPM
or
yarn
link
to
do
all
of
that
that
linking
kind
of
stuff
so
end
of
the
day.
You
end
up
with
something
that
they
show
the
cake
loaded,
and
there
is
my
new
thing
that
I
did
the
page.
So
if
we
didn't
like
what
that
was
called
my
file,
let's
call
it
something.
This
is
a
nice
extension
and
I
run
that
and
I
saved
and
I.
Don't
have
to
wait
for
it
to
finish
loading
and.
H
This
is
a
nice
extension,
so
we
got
that
down
to
about
you
know
from
30
or
40
seconds
it's
down
to
about
two
seconds
and
will,
if
you
do
a
link
it'll
take
advantage
of
your
local
files.
If
you
do
install
it
work
yeah,
so
that's
what
I
got
done
in
the
last
two
days.
I
have
not
yet
actually
built
the
kind
of
packages
or
anything
like
that
or
you
know
and
package
that
would
actually
encapsulate
that
activity,
but
I
think
I'm,
pretty
close
to
it
as
well.
I'm,
sorry,
if
that
was
kind.
A
Of
a
heavy
thing
make
I
think
yeah,
so
I
think
my
ideal
workflow
would
be
to
use
something
like
that
or
something
like.
Essentially
what
Learn
is
doing
so
Jupiter
lab
extension
link,
my
library
that
I'm
wrapping,
as
well
as
the
extension
and
you're
right.
There
is
a
way
to
do
a
link
of
the
wrapper
library,
as
well
as
the
extension
then
essentially
Jupiter
labs,
building
from
my
version
of
the
library
that
I'm
wrapping,
as
well
as
the
dead
version
of
the
extension.
H
A
A
C
A
Link
item
right:
okay,
I
didn't
realize
there
was
more
than
yeah
okay,
so
you
need
to
put
it
in
the
manifest
if
it's
an
extension,
if
it's
not
an
extent
and
then
for
anything
linking
just
put
it
into
the
dependencies.
The
node
modules
directory
that
might
completely
solve
my
work
law.
For
my
issues,
yeah.
H
H
A
E
But
what
sorry
one
broad
question
I
have
about
this,
and
that
is
we
I
think
our
intention
is
to
enhance
Silva
networks
on
this
was
to
split
out
the
server
component
of
the
notebook
into
something
separate
and
when
we
do
that
to
refactor
its
own.
E
But
but
there's
still
the
question
of
being
able
to
enable/disable
configure
things
without
editing
files
but
being
able
to
drop
drop
data
files
into
a
directory,
and
that's
that
we
can't
do
that
without
breaking
ap
is
breaking
our
configuration.
Ap
is
so
it's
less
less
has
to
do
with
with
the
context
the
different
context
of
configuration,
but
with
changing
how
configuration
works
in
general.
So.
E
But
I
guess
when
I
I
want
to
make
sure
of
is
eventually
we're
going
to
fix
that
with
the
server
extensions
and
I
don't
want
to
send
up
with
two
essentially
similar
things
that
aren't
exactly
the
same.
Like
I,
okay
now,
who
knows?
Maybe
the
the
new
server
extension
approach
can
follow
what
we're
doing
here
or
or
be
consistent
with
it,
but
I.
Don't
we
I,
don't
want
I,
don't
want
us
to
complicate
things
even
further
in
what
we're
doing
now.
E
I'd
like
to
you,
know
two
years
from
my
house:
I'd
love
it
if
we
could
have
a
single
consistent
configuration
story
or
our
front-end
and
the
server
rather
than
saying
oh
well
for
historical
reasons.
The
server
does
this
now
and
you
can
a
lot
does
this,
except
for
when
it's
like
it,
it's
already
horrifically
complicated
and
I.
Don't
want
it
to
become
more
so
I.
E
A
E
But
this
I
mean
it's
really
encouraging
to
see
these
things
moving
forward
and
one
thing
that
that
I
think
what
you're
working
on
gets.
As
close
to
is
more
of
the
experience
like
Visual
Studio
code
offers,
where,
if
you
install
an
extension,
it
doesn't
get
enabled
immediately,
it
basically
kicks
off
a
bill
and
when
it's
ready
to
install
it
notifies
you
in
the
UI,
you
click
reload,
it
reloads
the
window,
and
you
never
like
that.
The
latency
is
completely
hidden.
It's
it
works
fairly.
Well,
so
it
it
looks
great.
H
Right
with
the
you
know,
with
the
fallback
position
of
implicit
in
the
way
that
we
are
thinking
about
how
the
build
stuff
would
work,
it
would
make
a
trivial
for
an
extension
remixer
someone
that
just
is
picking
stuff
off
the
shelf
to
make
that
publish
it
as
a
dumb
bunch
of
static
files,
and
someone
else
would
be
able
to
use
that
right.
So
you
know
we
don't
like.
H
If
this
configuration
system
is
so
flexible
that
it
still
needs
a
you
know,
cold
front
and
build
chain
all
the
time,
then
that's
not
great
for
users,
but
if
we
can,
you
know,
have
some
training
wheels
to
get
you
on
there
like
it's,
also
bad.
If
you
can't,
you
can't
try
this
stuff
out
without
actually
having
a
real
package
right.
So
it's
got
to
somehow
play
correctly
with
the
existing.
You
know
just
utils
environment,
so
yeah
I'm
excited
to
see
how
we
make
that
work.
Python
side
as
well.
F
C
F
F
H
F
Sure
so
I
mean
the
so
the
stuff
that's
going
into
Jupiter
lab
master
is
in
no
way
dependent
on
Google
Drive.
You
know:
we've
been
working
hard
to
try
to
abstract
away
all
that
stuff,
so
I've
been
doing
some
playing
with
having
a
sort
of
derby
racer
backend,
but
that
is
very
much
in
the
playing
stages.
Right
now.
I
know
you've
mentioned
that
you've
used
that
before.
H
F
H
E
Great
I
guess
I've
got
some
anything
else
from
your
side,
Ian.
No,
that
should
be
it.
Okay,
I'm
next
on
the
agenda,
so
we've
just
completed
a
major
refactor
of
the
output
area
cells
and
notebook
packages
in
Jupiter
lab,
in
particular
the
parts
of
the
codebase
relating
to
content
factories
for
widgets
in
a
couple
couple
of
things
that
are
worth
mentioning:
we're
moving
away
from
having
widgets
suffixes
on
class
names
that
saw
across
from
widgets
so
rather
than
who
widget
we're
using
foo.
E
E
So
at
the
end
of
the
day
you
end
up
with
a
single
content
factory
that
has
all
the
message
that
you
would
need
for
building
any
of
those
entities
within
a
certain
part
of
the
code
base.
So
the
notebook
has
that
and
then
also
the
content
I
should
mention.
We
also
did
this
on
the
console
and
it
relied
on
all
the
refactored
output
area
in
cell
and
the
just
a
few
other
things
so
were
there's
been
questions
about
when
we
have
a
Content
factory.
E
Probably
the
other
big
thing
related
to
this
is
CSS
class
naming
and
I
tried
to
update
the
CSS
markdown
document
in
our
in
our
tutorial
directory,
with
some
notes
on
that.
The
the
big
and
there's
still
some
questions.
Some
of
the
big
questions
are
so,
for
example,
I'll
just
use
a
concrete
example.
If
you
have
an
output
area
class
in
typescript,
our
rules
would
specify
that
you
have
a
CSS
class
on
that
dom
node
JP
output
area,
and
the
question
is
when
that
output
area
gets
added
to
a
cell.
E
A
remaining
question
is
adding
the
a
class
like
GCF
sale
output
allows
you
to
style
that
output
in
a
ways
it
doesn't
depend
on
the
implementation
of
the
output
and
I
understand
that
that
model.
The
question
I'd
like
to
ask
is
this:
would
we
want
to
move
to
a
model
where
we
consider
the
CSS
class
on
the
widgets
that
have
a
corresponding
interface
to
be
part
of
that
interface?
G
I'd
be
-1
on
that,
because
everybody's
going
to
create
a
different
implementation
of
that
thing
and
put
the
class
name
on
it
and
you're
going
to
be
looking
through
the
DOM
and
being
like.
Okay,
where
is
this
class
defined
and
you're
going
to
start
prepping
for
that
class
and
you're
not
going
to
find
it
because
this
person's
implementation,
which
may
be
something
completely
different,
I,
don't
I,
don't
think
having
redundancy
in
class
names
is
necessarily
a
bad
thing.
G
The
way
that
we
have
is
sort
of
set
up
now
and
allows
you
to
do
everything
you
want
to
do,
and
it's
a
very
consistent
rule
to
remember
when
you're
defining
your
own
classes
like
if
you
have
a
name,
type
script
class,
you
have
that
named
class.
The
last
name
of
the
widget
and
that's
just
the
rule
of
a
teeny
to
remember
and
like
having
having
extra
redundancy
in
the
CSS
class
names,
doesn't
hurt
us
and
I
think
what
you're
proposing
is
actually
more
difficult
with
the
model
too.
E
That
the
one
place
where
we're
running
into
problems,
though,
is
where
Horst
I
mean
so,
for
example,
an
output
area
should
be
useful
outside
of
the
cell
and
having
both
a
GPS
output
area
and
a
jpg
cell.
That's
output
area
selector.
When
we're
writing
CSS,
it's
often
not
clear
to
the
person
writing
CSS,
which
of
those
two
selectors
the
target,
and
so
we
end
up
putting
core
styling
on
output
area
on
the
wrong
selector
on
the
cell
selector.
And
so
when
you
use
output
area
alone,
it
doesn't
work
like
if
the
Styles
aren't
all
there.
G
If
the
problem
is,
you
want
some
style
to
apply
to
all
implementations
of
an
object,
irrespective
of
where
those
implementations
are
used
like,
irrespective
of
the
context
context
in
which
they
are
used,
then
add
the
interface
name
that
you're
implementing
to
your
class,
like
when
you
in
stage
like
when
you
create
this
widget.
You
know
add
your
own
dedicated
class
name
for
your
actual
types
for
class
name,
but
also
as
the
interface
names
of
your
opponents
to
the
class
and
then
style
based
off
those
air
physics,
rather
than
the
classrooms.
E
A
A
E
This
is
more
question
for
ownselves
like
when
we
when
we
need
to
use
a
cell
in
different
contexts,
or
we
need
to
use
an
output
area
in
different
contexts,
and-
and
this
is
also
something
to
keep
in
mind
that
we
we
ourselves
are
not
likely
going
to
ever
have
another
implementation
of
an
output
area,
and
so
the
other
part
of
this
is
it
feels
like
we're
we're
over
designing
this
for
a
case
that
we
would
explicitly
not
allow
right
now,
because
we
tell
people
look,
our
CSS
is
not
public
and
I
agree
with
Jason
like
putting
on
you
know.
G
So
I
felt,
like
yeah
I
mean
I,
guess
I'm
still
like
so
my
point
is:
is
that
if
you
want,
if
you
want
styles,
to
apply
to
all
implementations
with
the
irrespective
their
context,
then
I
still
think
that's
for
thing
to
do
in
terms
of
advocate
race
name,
but
it
doesn't
sound
like
actually
what
it
sounds
like.
What
you
want
is
styles
to
apply,
and
all
this
is
a
pure
output
area,
which
is
our
output
area,
which
is
the
concrete
thing,
irrespective
of
context,
and
what
we
did
is
use
another
case
just
use
it
like.
A
E
A
That's
where
it
with
CSS
gets
tricky
when
you
start
nesting
selectors,
because
then
you
run
into
possible
precedence
issues
and
things
like
that
and
there's
there's
conventions
for
labeling
things
with
CSS
without
nesting
anything.
So
it's
a
completely
flat
namespace
and
essentially
your
nesting
becomes
your
names,
your
actual
string
name
with
some
limiters,
and
we
start
to
do
that.
But
we
also
starting
to
nest
collectors
and
and
that's
where
it's
getting
really
confusing
yeah.
E
A
So
I've
been
in
San
Francisco
talking
to
lots
of
people
about
widgets
and
stuff,
but
we've
sensory
release
alpha.
We
really
turned
attention
to
the
docs
and
testing
and
one
the
testing
I
got
up
to
speed
with
I
think
we're
getting
the
framework
in
place
for
testing
we've
made
some
good
progress
on
that
and
I
questioned
our
Doc's
apparently
have
it
could
be
updated.
Dowson
flight
back
is
updated.
Is
that
right,
I
saw
the
TRS
see
the
flight
back
works
perfectly
with
two
point:
three.
C
I
C
Had
to
do
the
concession
we
had
to
make
in
phosphor
was
that
we
create
a
separate
TD
options
file
that
adds
more
that
forces
typescript
to
only
look
at
node
modules,
surface
level
for
phosphorus
packages.
So
it's
not
getting
mixed
up
in
that
symlinks
anymore,
but
other
than
that
yeah
everything
worked
so
yeah.
We
just
we
just
had
to
help
them
out
because
it
they're
the
type
doc
is
actually
modifying
the
typescript
compiler.
So
we
don't
know
exactly
what
they
did.
C
That
would
cause
type
dot
to
fail,
the
typescript
to
work
with
the
same
version
of
typescript.
So
it's
not
a
different
version,
but
we
were
able
to
at
least
hack
around
it,
and
it's
confined
to
when
you
run
the
docs,
so
it
doesn't
affect
the
courtiers
config.
So
that
was
a
accessible
compromise
for
now.
Okay,.
A
C
A
E
A
Did
you
try
the
new
Jupiter
alabaster
theme?
No
I
haven't
looked
at
all
as
the
building
the
docks
yeah,
so
I
was
thinking
just
API
level.
Documentation
I
haven't
even
got
into
the
sinks
documentation
bit
right
now.
That's
still
a
black
box
to
me,
Sylvan
was
the
one
that
was
working
on
it
a
while
ago.
So
then.
A
Yes,
so
we
haven't
done
any
refactoring
as
of
yet
other
than
the
refactoring.
We
already
have
a
hat
in
place,
so
we
haven't
refactored,
reproduce
widgets,
yet
we'd
like
to
refactor
and
split
the
manager's
out.
So
we
have
the
embed
manager
and
the
base
widget
manager
away
from
the
implementation,
and
there
were
thoughts,
maybe
even
putting
the
core
widget
classes,
either
by
themselves
or
maybe
with
manager
as
part
of
sort
of
the
spec
and
and
then
have
the
slider
and
the
textbox
etcetera
in
their
own
package.
A
H
I'll,
take
one
thing
in
there,
so
chrome
headless
is
now
generally
available
inside
of
the
canary
stuff.
Oh
I
saw
some
fingers
go
up
and
they
weren't
the
bad
ones,
and
so
I
have
started
working
on
my
little
gimmicky
niobium,
which
is
the
parallel.
It's
just
one
over
from
from
chromium
right
there
and
it's
it's
signal
is
enbe
and
it's
41.
So
it's
almost
the
answer
and
yeah
I
know
it
just
keeps
coming
and
it's
egg
falls
like
crazy,
but
it
works.
E
A
H
What,
with
the
the
the
ultra
with
the
ultraviolent
form
of
that
being
takes
all
this
offline,
build
machinery
fills
you
a
Jupiter,
lab
and
stuffs
it
into
the
HTML
so
that
you've
got
a
single
standalone
HTML.
That
includes
not
only
data
but
also
its
runtime,
because
why
not?
You
can
do
it
so
anyhow,
but
I
want
to
get
those
PDFs
first
right
like
just
the
way
that
they
should
be
so
that
it
works
offline,
and
we
can
start
think
because
you
know,
then
we
could
actually
think
about
it
on
any
viewer
right.
H
A
H
Can't
unless
you
are
working
in
a
very
robust
mode,
you
can't
get
access
to
that
rendering
layer,
okay,
so
that
was
typically
reserved
for
like
the
QT
layer
of
the
QT
web
frame.
So
I'm
not
sure
if
you
can
a
priori
do
that,
just
because
you
got
some
chrome,
you
might
need
more
programmatic
access
to
it,
got
it
but
I
think
that's!
What's
going
to
land
right,
I
think
everybody
that
has
chrome
and
chromium
is
going
to
be
able
to
command
it.
A
B
H
B
H
And
I'm
and
I'm
always
going
to
and
I'll
keep
plugging
along
like
I'd.
You
know,
I
still
want
to
be
able
to
do
that
again.
The
PD,
the
QT
that
you
get
from
anakata
is
you
know,
like
that's
the
long
game,
because
I,
don't
trust
chrome
as
a
long-term
solution,
but
once
it's
you
know
something
that
in
a
package
manager
that
we
can
rely
on,
it's
got
a
big
thumb
from
dairy
and
you
showed
up
just
to
say
hi
so
anyhow,
but
that's
a
whole
other
story.