Apr. 4th, 2017

github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github
Branch: refs/heads/develop
Home: https://github.com/dreamwidth/dw-free
Commit: 76b4b6a0fb26ab23bedb6fbe067120cad4921b80
https://github.com/dreamwidth/dw-free/commit/76b4b6a0fb26ab23bedb6fbe067120cad4921b80
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-04 (Tue, 04 Apr 2017)

Changed paths:
M bin/build-static.sh

Log Message:
-----------
[#2046] print warning and skip compass step if using old version

My development laptop has a version string starting with 0.12,
so I arbitrarily chose that as the minimum viable version.

I ran into a problem, however, when checking to see what version
of Compass was installed on the admin box; I got an error message
saying that VERSION.yml was missing, so this change will likely
break the script in production until that situation is remedied.

Fixes #2046.


Commit: 8c983240b08577570c938cb4a086b3cb9181c6f4
https://github.com/dreamwidth/dw-free/commit/8c983240b08577570c938cb4a086b3cb9181c6f4
Author: Mark Smith <mark@qq.is>
Date: 2017-04-04 (Tue, 04 Apr 2017)

Changed paths:
M bin/build-static.sh

Log Message:
-----------
Merge pull request #2068 from kareila/2046-compass

[#2046] print warning and skip compass step if using old version


Compare: https://github.com/dreamwidth/dw-free/compare/f3b52d37d01f...8c983240b085
github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github
Branch: refs/heads/develop
Home: https://github.com/dreamwidth/dw-free
Commit: 171677c4c28f54af5d963846e9ac8bd4a56ed8d1
https://github.com/dreamwidth/dw-free/commit/171677c4c28f54af5d963846e9ac8bd4a56ed8d1
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-03 (Mon, 03 Apr 2017)

Changed paths:
M htdocs/mobile/post.bml

Log Message:
-----------
fix incorrect indentation levels in /mobile/post.bml


Commit: 5a9e202003bf7c2931378c0a51fb0b8d0b4f27c5
https://github.com/dreamwidth/dw-free/commit/5a9e202003bf7c2931378c0a51fb0b8d0b4f27c5
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-03 (Mon, 03 Apr 2017)

Changed paths:
M htdocs/mobile/post.bml

Log Message:
-----------
remove dependency on LJ::Util::blogger_deserialize

This function, defined in Apache::LiveJournal::Interface::Blogger,
is simple enough to reproduce in a locally scoped version, minus
the clause for parsing the subject out of HTML title tags, which
is irrelevant here.


Commit: b8c3572d838921857831ce5461d4a8934b8c9ba1
https://github.com/dreamwidth/dw-free/commit/b8c3572d838921857831ce5461d4a8934b8c9ba1
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-03 (Mon, 03 Apr 2017)

Changed paths:
M cgi-bin/Apache/LiveJournal.pm

Log Message:
-----------
remove special-case interface handlers from Apache/LiveJournal.pm

There were two: one that checked any request starting
with /interface for interface_handler hooks (we don't
have any) and one that looked for /interface/blogger,
which we no longer care to support. All of our actively
supported interfaces are defined as DW::Controller modules.


Commit: 1fdb59a7da704085c95b40c48900a404ad399fd7
https://github.com/dreamwidth/dw-free/commit/1fdb59a7da704085c95b40c48900a404ad399fd7
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-03 (Mon, 03 Apr 2017)

Changed paths:
R cgi-bin/Apache/LiveJournal/Interface/Blogger.pm

Log Message:
-----------
remove cgi-bin/Apache/LiveJournal/Interface/Blogger.pm

The code machete claims another trophy.


Commit: 5cf4374a143b3d2f3232682ab5bb985d32266a38
https://github.com/dreamwidth/dw-free/commit/5cf4374a143b3d2f3232682ab5bb985d32266a38
Author: Mark Smith <mark@qq.is>
Date: 2017-04-04 (Tue, 04 Apr 2017)

Changed paths:
M cgi-bin/Apache/LiveJournal.pm
R cgi-bin/Apache/LiveJournal/Interface/Blogger.pm
M htdocs/mobile/post.bml

Log Message:
-----------
Merge pull request #2067 from kareila/2062-blogger

[#2062] remove /interface/blogger


Compare: https://github.com/dreamwidth/dw-free/compare/8c983240b085...5cf4374a143b
github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github
Branch: refs/heads/develop
Home: https://github.com/dreamwidth/dw-free
Commit: 0c604c116ad7a3a6484c425e20845b5a728107fe
https://github.com/dreamwidth/dw-free/commit/0c604c116ad7a3a6484c425e20845b5a728107fe
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-03 (Mon, 03 Apr 2017)

Changed paths:
M htdocs/shop/entercc.bml

Log Message:
-----------
[#2065] only show UK/GB once in shop CC country selector

Fixes #2065.


Commit: a7b7cde968f25f08131241ab4d08d817328eead7
https://github.com/dreamwidth/dw-free/commit/a7b7cde968f25f08131241ab4d08d817328eead7
Author: Mark Smith <mark@qq.is>
Date: 2017-04-04 (Tue, 04 Apr 2017)

Changed paths:
M htdocs/shop/entercc.bml

Log Message:
-----------
Merge pull request #2066 from kareila/2065-ukdupe

[#2065] only show UK/GB once in shop CC country selector


Compare: https://github.com/dreamwidth/dw-free/compare/5cf4374a143b...a7b7cde968f2
github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github
Branch: refs/heads/develop
Home: https://github.com/dreamwidth/dw-free
Commit: 0f5b72c0de87b2d30996664f69e022589b3b5cd7
https://github.com/dreamwidth/dw-free/commit/0f5b72c0de87b2d30996664f69e022589b3b5cd7
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M cgi-bin/Apache/BML.pm
M cgi-bin/DW/Controller/EditIcons.pm
M htdocs/editicons.bml

Log Message:
-----------
remove BML::parse_multipart_interactive

Only used in editicons.bml, so let's make it a locally
scoped page subroutine.

We can remove the BML dependency by changing the request
object to use DW::Request and modifying the related methods
for accessing the request headers, allowing us to move both
parse_multipart_interactive and parse_large_upload into
DW::Controller::EditIcons.

Also removes the optional size hook since it was unused.


Commit: 3b44dd822e0b7ed3158982fef2bfede1f4501a9b
https://github.com/dreamwidth/dw-free/commit/3b44dd822e0b7ed3158982fef2bfede1f4501a9b
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M bin/upgrading/deadphrases.dat
M bin/upgrading/en.dat
M cgi-bin/Apache/BML.pm
M htdocs/admin/vgifts/index.bml
M htdocs/editicons.bml

Log Message:
-----------
remove BML::parse_multipart

Use the 'uploads' method from DW::Request to achieve the same result.


Commit: 160f5424fad5e6fc02ba961d6e5d96de0ba191b1
https://github.com/dreamwidth/dw-free/commit/160f5424fad5e6fc02ba961d6e5d96de0ba191b1
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M cgi-bin/DW/Controller/EditIcons.pm

Log Message:
-----------
new helper subroutine: mogkey


Commit: 677a955c43a67c3388a2ec94c37b2b3eadd7d7a9
https://github.com/dreamwidth/dw-free/commit/677a955c43a67c3388a2ec94c37b2b3eadd7d7a9
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M cgi-bin/DW/Controller/EditIcons.pm
R htdocs/misc/index.html
R htdocs/misc/mogupic.bml
R htdocs/misc/mogupic.bml.text

Log Message:
-----------
convert /misc/mogupic to DW::Controller

Since this isn't a "page" this doesn't add a template, and
the error methods are changed to return HTTP status codes.


Commit: a540ccf21f44a074777392c1cc501ead01d02f93
https://github.com/dreamwidth/dw-free/commit/a540ccf21f44a074777392c1cc501ead01d02f93
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M htdocs/tools/userpicfactory.bml

Log Message:
-----------
userpicfactory: fix loading page with no arguments

If $GET{index} is null/undef, the ensure_key_is_valid subroutine
in DW::BlobStore will fail hard, because the new code checks its
inputs more rigorously than the old code did.


Commit: bb6c7fc824306ee6699fe8f673118cd2c4e22e3b
https://github.com/dreamwidth/dw-free/commit/bb6c7fc824306ee6699fe8f673118cd2c4e22e3b
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M htdocs/tools/userpicfactory.bml

Log Message:
-----------
userpicfactory: remove layout table

Used for side panel (border box, keep square, icon preview)


Commit: e0c242ef5dfb5a1b0459e8d8f2d36dc9532ef9d6
https://github.com/dreamwidth/dw-free/commit/e0c242ef5dfb5a1b0459e8d8f2d36dc9532ef9d6
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
A htdocs/js/userpicfactory.js
M htdocs/tools/userpicfactory.bml

Log Message:
-----------
userpicfactory: move inline JS to js/userpicfactory.js


Commit: fd2b2ac4d38b1248a3e191bc0bc31c7de0572e1e
https://github.com/dreamwidth/dw-free/commit/fd2b2ac4d38b1248a3e191bc0bc31c7de0572e1e
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M cgi-bin/DW/Controller/EditIcons.pm
R htdocs/tools/userpicfactory.bml
A views/tools/userpicfactory.tt
A views/tools/userpicfactory.tt.text

Log Message:
-----------
convert /tools/userpicfactory to DW::Controller

Also English-strips the page text and removes the vestigial
upload form when visiting the page directly, instead suggesting
that the user visit /editicons instead.


Commit: e344579efd0dc51493fe6e9d442adf8ace82512e
https://github.com/dreamwidth/dw-free/commit/e344579efd0dc51493fe6e9d442adf8ace82512e
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M bin/upgrading/deadphrases.dat
M bin/upgrading/en.dat
M cgi-bin/DW/Controller/EditIcons.pm
M cgi-bin/LJ/Userpic.pm
M htdocs/editicons.bml
M htdocs/editicons.bml.text
R htdocs/uploadpic.bml.text

Log Message:
-----------
editicons: translation string cleanup

This removes unused translation strings and moves
the error messages that are printed outside of
page context to en.dat.


Commit: 1b3cf6abb5c1ee64b0ff4a12e941c9f9d76ea1b4
https://github.com/dreamwidth/dw-free/commit/1b3cf6abb5c1ee64b0ff4a12e941c9f9d76ea1b4
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M cgi-bin/DW/Controller/EditIcons.pm
M htdocs/editicons.bml

Log Message:
-----------
editicons: move check_form_auth back into page context

The failure message should return from page context, not
subroutine context. This lets us eliminate the error
printing subroutine as an argument to the update_userpics
function, and eliminates a hidden BML dependency by
explicitly passing the lj_form_auth value to be checked.

This also removes a source of uninitialized value warnings
when using 'eq' to compare undefined variables.


Commit: 8e3a6502d36160711ac5a9ee6feea0b3dd2bd057
https://github.com/dreamwidth/dw-free/commit/8e3a6502d36160711ac5a9ee6feea0b3dd2bd057
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M bin/upgrading/en.dat
M cgi-bin/DW/Controller/EditIcons.pm
M htdocs/editicons.bml

Log Message:
-----------
editicons: use LJ::text_in on multipart form data

Since the multipart form arguments aren't in POST when
the form is first checked, we should run another check
in parse_post_uploads. Also English-strips the error.


Commit: d73f575ec11b557b942850803091a5349f3f7dd1
https://github.com/dreamwidth/dw-free/commit/d73f575ec11b557b942850803091a5349f3f7dd1
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M bin/upgrading/en.dat
M cgi-bin/DW/Controller/EditIcons.pm

Log Message:
-----------
editicons: optimize parse_post_uploads logic flow

Adds a 'next' statement after the size check to avoid
a needless else clause and excessive indentation. Also
makes sure all error messages in the subroutine are
English-stripped.


Commit: 88dd121ea20fbb8f3fb7e6f105f5fe6141f82733
https://github.com/dreamwidth/dw-free/commit/88dd121ea20fbb8f3fb7e6f105f5fe6141f82733
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M cgi-bin/DW/Controller/EditIcons.pm
M htdocs/editicons.bml

Log Message:
-----------
editicons: fix set_fullurl to use correct form value

When submitting an icon via URL, the system was designed
to save the URL of the original source in the database,
but it wasn't setting the value correctly.


Commit: b2648383fb5f6defdfd2cb0705cc4ba076acf831
https://github.com/dreamwidth/dw-free/commit/b2648383fb5f6defdfd2cb0705cc4ba076acf831
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M bin/upgrading/deadphrases.dat
M bin/upgrading/en.dat
M cgi-bin/DW/Controller/EditIcons.pm
M htdocs/editicons.bml.text

Log Message:
-----------
editicons: English-strip errors in parse_large_upload

Also removes some obsolete code from when parse_large_upload
and parse_multipart_interactive weren't tightly coupled. The
hook argument format stays, because I don't want to introduce
new bugs trying to untangle things further.


Commit: 0b545495559ca875694253bfaf2b5d4386bd0d59
https://github.com/dreamwidth/dw-free/commit/0b545495559ca875694253bfaf2b5d4386bd0d59
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M htdocs/editicons.bml

Log Message:
-----------
editicons: remove remaining support for beta page suffix

Used to respond to /editicons-beta as well as /editicons.


Commit: 5f33c85637fd6d1a7744ece6edf9482047e78d81
https://github.com/dreamwidth/dw-free/commit/5f33c85637fd6d1a7744ece6edf9482047e78d81
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M htdocs/editicons.bml

Log Message:
-----------
editicons: don't prepopulate form with previous upload's metadata

This can only happen after a successful upload, which is
unlikely to ever be the desired behavior.


Commit: 4b358a070751922475951ef3bbd00766e54d6fe3
https://github.com/dreamwidth/dw-free/commit/4b358a070751922475951ef3bbd00766e54d6fe3
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M htdocs/editicons.bml

Log Message:
-----------
editicons: remove more unused form processing

The $picurl variable was unused, and I can't find any evidence
of $POST{ret} being passed in anywhere, so $returl can also go.


Commit: e7fdb1c665c81a25507e76e24e4ff11afac67f6e
https://github.com/dreamwidth/dw-free/commit/e7fdb1c665c81a25507e76e24e4ff11afac67f6e
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M bin/upgrading/en.dat
M cgi-bin/DW/Controller/EditIcons.pm
M cgi-bin/LJ/Protocol.pm
R htdocs/editicons.bml
R htdocs/editicons.bml.text
A views/edit/icons.tt
A views/edit/icons.tt.text

Log Message:
-----------
convert /editicons to DW::Controller

Apart from translation string updates, any functional
changes in this diff are unintentional.


Commit: 289038480af58d518dd3beacbf8a4e8e4afb488a
https://github.com/dreamwidth/dw-free/commit/289038480af58d518dd3beacbf8a4e8e4afb488a
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M cgi-bin/DW/Controller/EditIcons.pm
M views/edit/icons.tt

Log Message:
-----------
add fixed support for reusing submitted form data

This only prefills the form with the previously submitted data
if there were errors during processing. It also makes sure
the radio button for URL upload is pre-selected if the associated
form field contains text.


Commit: d15e04400da72416800f94a64cfbea3debb129a8
https://github.com/dreamwidth/dw-free/commit/d15e04400da72416800f94a64cfbea3debb129a8
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M htdocs/js/editicons.js
M htdocs/stc/editicons.css

Log Message:
-----------
editicons.js: no upload_desc_photo

Remove resources targeting nonexistent element.


Commit: 74c667b950ef03e1239741f0f6eb9015b100b048
https://github.com/dreamwidth/dw-free/commit/74c667b950ef03e1239741f0f6eb9015b100b048
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M htdocs/js/editicons.js
M views/edit/icons.tt

Log Message:
-----------
editicons.js: remove unused JS (upload tracker, progress bar)

The submitForm and onUploadComplete functions aren't used
anywhere, so all the scripting elements relevant only to
the execution of these functions can be safely removed.


Commit: f555e5d04a20993f36a03ffd95ef16886b474637
https://github.com/dreamwidth/dw-free/commit/f555e5d04a20993f36a03ffd95ef16886b474637
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
R htdocs/img/progress/active.gif
R htdocs/img/progress/barber.gif
R htdocs/img/progress/inactive.gif
R htdocs/js/6alib/perlbal-uploadtrack.js
R htdocs/js/6alib/progressbar.js
R htdocs/js/ljprogressbar.js
M htdocs/stc/lj_base.css
M views/dev/tests/libfunctions.js
M views/edit/icons.tt

Log Message:
-----------
remove unused JS libraries

- js/6alib/perlbal-uploadtrack.js
- js/6alib/progressbar.js
- js/ljprogressbar.js


Commit: c765ca618a518e6226a20860e5e3683b67cb59ba
https://github.com/dreamwidth/dw-free/commit/c765ca618a518e6226a20860e5e3683b67cb59ba
Author: Kareila <kareila@dreamwidth.org>
Date: 2017-04-01 (Sat, 01 Apr 2017)

Changed paths:
M views/edit/icons.tt

Log Message:
-----------
editicons: truncate overlong input file names

I noticed in testing that excessively long image filenames
would overflow the form width, making the text to the right
of the form element unreadable. This encloses the element
in a div with "overflow: hidden" styling.

In theory the additional file selection elements generated
in JS would benefit from the same alteration, but since we
have an issue open to change the form to support multiple
file input selection, I'm less inclined to spend more
time on this.


Commit: 2cc27da226e6e3991a3c66a4c87111685e4c386c
https://github.com/dreamwidth/dw-free/commit/2cc27da226e6e3991a3c66a4c87111685e4c386c
Author: Mark Smith <mark@qq.is>
Date: 2017-04-04 (Tue, 04 Apr 2017)

Changed paths:
M bin/upgrading/deadphrases.dat
M bin/upgrading/en.dat
M cgi-bin/Apache/BML.pm
M cgi-bin/DW/Controller/EditIcons.pm
M cgi-bin/LJ/Protocol.pm
M cgi-bin/LJ/Userpic.pm
M htdocs/admin/vgifts/index.bml
R htdocs/editicons.bml
R htdocs/editicons.bml.text
R htdocs/img/progress/active.gif
R htdocs/img/progress/barber.gif
R htdocs/img/progress/inactive.gif
R htdocs/js/6alib/perlbal-uploadtrack.js
R htdocs/js/6alib/progressbar.js
M htdocs/js/editicons.js
R htdocs/js/ljprogressbar.js
A htdocs/js/userpicfactory.js
R htdocs/misc/index.html
R htdocs/misc/mogupic.bml
R htdocs/misc/mogupic.bml.text
M htdocs/stc/editicons.css
M htdocs/stc/lj_base.css
R htdocs/tools/userpicfactory.bml
R htdocs/uploadpic.bml.text
M views/dev/tests/libfunctions.js
A views/edit/icons.tt
A views/edit/icons.tt.text
A views/tools/userpicfactory.tt
A views/tools/userpicfactory.tt.text

Log Message:
-----------
Merge pull request #2064 from kareila/1966-editicons

Convert /editicons and related tools to DW::Controller & TT


Compare: https://github.com/dreamwidth/dw-free/compare/a7b7cde968f2...2cc27da226e6
github: shadowy octopus with the head of a robot, emblazoned with the Dreamwidth swirl (Default)
[personal profile] github
Branch: refs/heads/develop
Home: https://github.com/dreamwidth/dw-free
Commit: 40a6f6dd8631de47873f49283ba91ef76004a0d8
https://github.com/dreamwidth/dw-free/commit/40a6f6dd8631de47873f49283ba91ef76004a0d8
Author: Denise Paolucci <denise@dreamwidth.org>
Date: 2017-03-31 (Fri, 31 Mar 2017)

Changed paths:
M cgi-bin/Apache/LiveJournal.pm

Log Message:
-----------
Fixes #2061.

Alters cgi-bin/Apache/LiveJournal.pm to change the Apache-default bare-unstyled 403 in the event of a non-public or non-existant reading page filter to a still-bare-unstyled page that at least has a link to the login page so people don't get stranded.

This has specifically been checked for enumeration attacks in the following situations:

* Specified filter does exist but logged-in user isn't authorized to see it;
* Specified filter does not exist, user is logged in;
* Specified filter does exist but is not public/remote not logged in;
* Specified filter does not exist user is not logged in

The error message is the same in all four scenarios, so people won't be able to use this to fish for filters that do exist but that they don't have access to.


Commit: f22d8416562f0f0fc003c804b5e5e602d58b4737
https://github.com/dreamwidth/dw-free/commit/f22d8416562f0f0fc003c804b5e5e602d58b4737
Author: Mark Smith <mark@qq.is>
Date: 2017-04-04 (Tue, 04 Apr 2017)

Changed paths:
M cgi-bin/Apache/LiveJournal.pm

Log Message:
-----------
Merge pull request #2063 from rahaeli/issue2016-readfilter

better/more helpful text on "not authorized for this filter" 403 error


Compare: https://github.com/dreamwidth/dw-free/compare/2cc27da226e6...f22d8416562f

Profile

Dreamwidth Changelog

October 2017

S M T W T F S
1234 567
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 24th, 2017 07:55 am
Powered by Dreamwidth Studios