lego issueshttps://gitlab.torproject.org/tpo/web/lego/-/issues2021-11-03T15:54:03Zhttps://gitlab.torproject.org/tpo/web/lego/-/issues/29create default gitlabCI.yaml file for lektor websites2021-11-03T15:54:03Zemmapeelcreate default gitlabCI.yaml file for lektor websitesAs we are moving out of jenkins to gitlabCI, we need to create a default gitlabCI file for our lektor websites.
The integration with gitlabCI will also help us to review merge requests, as merge requests should get results and appear un...As we are moving out of jenkins to gitlabCI, we need to create a default gitlabCI file for our lektor websites.
The integration with gitlabCI will also help us to review merge requests, as merge requests should get results and appear under users gitlab 'pages'.
First version was made by Gus at https://gitlab.torproject.org/tpo/web/support/-/snippets/89
I have made some changes and they are at https://gitlab.torproject.org/tpo/manual/-/blob/translations/.gitlab-ci.yml
Currently there are working gitlabCI files in community, tb-manual, support and tpo.
There are still some unresolved issues:
- [x] The translations are not complete
- [x] The packages are not the same we use on production, especially lektor and lektor-i18n package
- [ ] reduce the traffic w/docker, maybe have local images ready
- [ ] test before build
- [x] stop spamming tor-bots (it is sending a minimum of 3 messages per event)
- [x] the gitlabCI.yaml file should be configured in a way that allows contributors without commit rights on the repo to push a branch to their own fork and be able to see the build on their own 'pages'. This will allow them to preview their changes before submitting the merge request, without the need to install lektor and build it in local.
- [ ] we should do some more QA.Retire Jenkinshttps://gitlab.torproject.org/tpo/web/lego/-/issues/59Remove YEC banner from website(s)2023-01-06T20:27:51Zal smithRemove YEC banner from website(s)Hi! We can now remove the year-end campaign banner from torproject.org / donate.tpo / community.tpo / support.tpo (and anywhere else it might be living)Hi! We can now remove the year-end campaign banner from torproject.org / donate.tpo / community.tpo / support.tpo (and anywhere else it might be living)Year End Campaign 2022https://gitlab.torproject.org/tpo/web/lego/-/issues/52Header banner for YEC '222022-10-19T18:53:39ZnicobHeader banner for YEC '22Hey @hackerncoder! This year we're aiming to launch the Year End Campaign by October 13th (with some wiggle room to the following week if necessary). We position this banner above the site header on torproject.org, donate.torproject.org...Hey @hackerncoder! This year we're aiming to launch the Year End Campaign by October 13th (with some wiggle room to the following week if necessary). We position this banner above the site header on torproject.org, donate.torproject.org, community.torproject.org and support.torproject.org (you can see last year's [on the wayback machine here](https://web.archive.org/web/20211108011121/https://www.torproject.org/)).
Here's a mockup of this year's banner for mobile pending any edits from @duncan:
![torproject-banner-mobile](/uploads/4e36cc05b506aca508088b65f5a8e7e8/torproject-banner-mobile.png)
Desktop:
![torproject-banner-desktop](/uploads/7e1e26cbb680fef06aac60ab2b0e81a1/torproject-banner-desktop.png)
You can inspect files here: [Figma](https://www.figma.com/file/B2ON9c7tewUb7FDjtUS5FZ/Process%3A-YEC-'22-Creative?node-id=270%3A2407#274080983)
Mobile background image:
- [yec-bg-mobile-2x](/uploads/b08774dd428d26e8ab00dca5b70597f6/yec-bg-mobile-2x.png)
- [yec-bg-mobile-3x](/uploads/d207ed15f0d42f642ac3c4c05e402dc1/yec-bg-mobile-3x.png)
Mobile foreground image:
- [yec-foreground-mobile-2x](/uploads/c4b28c1f58b4ef88d711a346f5b1ff8d/yec-foreground-mobile-2x.png)
- [yec-foreground-mobile-3x](/uploads/2da60f67a1b1011d5c66f1b9b9083b45/yec-foreground-mobile-3x.png)
Desktop background image:
* [yec-bg-desktop-banner-2x](https://gitlab.torproject.org/tpo/web/lego/uploads/004814f546b68f1c81d8b155e9f0b2ec/yec-bg-desktop-banner-2x.png)
* [yec-bg-desktop-banner-3x](https://gitlab.torproject.org/tpo/web/lego/uploads/e2e40df7ec6d37426ae761d76084f586/yec-bg-desktop-banner-3x.png)
Desktop foreground image:
- [yec-foreground-2x](/uploads/42d6b826c7bdf3396fef91d196b0e3f8/yec-foreground-2x_12x.png)
- [yec-foreground-3x](/uploads/eb064c9fa064c1568072de4538206502/yec-foreground-2x_13x.png)
Fonts:
* [Space Mono](https://fonts.google.com/specimen/Space+Mono?vfquery=mono&query=space)
* [Space Grotesk](https://fonts.google.com/specimen/Space+Grotesk?vfquery=mono&query=space)
* I don't have the best understanding of what the devs have been doing so far to make these fonts work best for localization, but I think everything you might need to reference is here: https://gitlab.torproject.org/tpo/applications/torbutton/-/merge_requests/92#note_2837686
Buttons:
- Most of the button states are in the figma file
- Focus is not in the file but should follow what's being implemented in about:tor, which I believe is a 2px `outline-offset`, 2px width, and `#C0FF00` for `outline-color`
Other notes:
- Minimum banner height should be 360px but will need to expand with localization
- Last year, there was this note from Duncan "I think it would work best if the button anchor links down to the main content area of donate.torproject.org" - not sure if that is the case again this year, tagging @smith here to weigh in
Let me know if you have any questions or if there's anything here that I should change. Thank you!!Year End Campaign 2022https://gitlab.torproject.org/tpo/web/lego/-/issues/63upstream lektor-i18n patches2024-02-20T20:04:13Zanarcatupstream lektor-i18n patchesour lektor-i18n-plugin package has diverged from upstream. submit the patches back upstream in the form of a nice PR and offer collaboration.our lektor-i18n-plugin package has diverged from upstream. submit the patches back upstream in the form of a nice PR and offer collaboration.Jérôme Charaouilavamind@torproject.orgJérôme Charaouilavamind@torproject.orghttps://gitlab.torproject.org/tpo/web/lego/-/issues/62Titles have hardcoded capitalization in https://www.torproject.org/is/releases/2023-11-09T18:58:07ZemmapeelTitles have hardcoded capitalization in https://www.torproject.org/is/releases/https://www.torproject.org/is/releases/ Title has a hardcoded capitaliation rule, so that the string that in weblate looks like: `Hvað er nýtt í Tor-vafranum` is shown as:
![capitalized-title](/uploads/7b7875af17b81da9639a737f48a13dea/c...https://www.torproject.org/is/releases/ Title has a hardcoded capitaliation rule, so that the string that in weblate looks like: `Hvað er nýtt í Tor-vafranum` is shown as:
![capitalized-title](/uploads/7b7875af17b81da9639a737f48a13dea/capitalized-title.png)
This is a no-no in Icelandic and Greek, at least. In many languages, it does not even make sense because there are no capital letters.
Please do not use this css rules, as it is not i18n-friendly. See https://gitlab.torproject.org/tpo/community/l10n/-/wikis/Localization-for-developers#3-no-hardcoded-uppercases-or-capitalization for more information
Thanks @sveinki for spotting it.Jérôme Charaouilavamind@torproject.orgJérôme Charaouilavamind@torproject.orghttps://gitlab.torproject.org/tpo/web/lego/-/issues/61Styling of banner does not work in RTL2023-10-31T13:46:34ZemmapeelStyling of banner does not work in RTLThe banner's styling does not work in the /ar/ or /fa/ locales, needs to get the alignment to the other direction
![Screenshot_from_2023-10-16_21-25-30](/uploads/6d1b682d7cdf9e8395247e4e1c77d8ff/Screenshot_from_2023-10-16_21-25-30.png)The banner's styling does not work in the /ar/ or /fa/ locales, needs to get the alignment to the other direction
![Screenshot_from_2023-10-16_21-25-30](/uploads/6d1b682d7cdf9e8395247e4e1c77d8ff/Screenshot_from_2023-10-16_21-25-30.png)Jérôme Charaouilavamind@torproject.orgJérôme Charaouilavamind@torproject.orghttps://gitlab.torproject.org/tpo/web/lego/-/issues/58fallback.js is causing scrolling issues on page load2023-10-31T13:46:34ZKezfallback.js is causing scrolling issues on page loadlego has a "fallback.js" script that uses javascript to fallback to PNGs if SVG is not supported. i'm not sure it's useful since SVG support is [99%+ supported](https://caniuse.com/?search=svg), and a user without SVG likely also has no ...lego has a "fallback.js" script that uses javascript to fallback to PNGs if SVG is not supported. i'm not sure it's useful since SVG support is [99%+ supported](https://caniuse.com/?search=svg), and a user without SVG likely also has no javascript.
but the main issue is that [at the end of the script](https://gitlab.torproject.org/tpo/web/lego/-/blob/3d8002591b1a6df64e27624bd08d7a91d8e4c763/assets/static/js/fallback.js#L41-50) there's code specific to support.tpo. When used on sites other than support.tpo, this snippet causes the viewport to scroll directly to the top of the page. this script is included in the default footer template, which is used in most of the sites. this means that most of our sites are loading, and then flinging users back to the very top of the page.
the end of this script needs to be moved to its own script in support, and we may want to consider removing the rest of the script (the actual fallback) altogetherhttps://gitlab.torproject.org/tpo/web/lego/-/issues/57libsass is deprecated, lektor-scss is broken2023-01-05T20:52:33ZKezlibsass is deprecated, lektor-scss is broken<https://sass-lang.com/blog/libsass-is-deprecated>
in !63 i added the lektor-scss plugin (which is based on libsass) so that sites could compile their own scss, with the goal being to lower the barrier-of-entry to newer contributors. in...<https://sass-lang.com/blog/libsass-is-deprecated>
in !63 i added the lektor-scss plugin (which is based on libsass) so that sites could compile their own scss, with the goal being to lower the barrier-of-entry to newer contributors. in !74 i fixed a deprecation warning in dart sass about using the `/` operator for division by replacing it with the new `math.div` function. libsass doesn't have this function, meaning that lektor-scss couldn't compile our scss
fortunately, we can easily replace the libsass api in the lektor-scss plugin with a new api that just `Popen`s the dart sass binary
- [x] partially rewrite lektor-scss to use dart sass: small (1 day), low (x1.1) (<https://gitlab.torproject.org/kez/lektor-scss>)
- [x] have the lektor ci builds pull in the dart sass binary (if needed): medium (3 days), moderate (x1.5) (in progress: <tpo/tpa/ci-templates!36>)
- [x] document the new plugin behavior, & the new ci behavior: small (1 day), low (x1.1)
- [x] write docs/scripts to help new contributors get the dart sass binary without issue: medium (3 days), low (x1.1)
time estimate: 10 dayshttps://gitlab.torproject.org/tpo/web/lego/-/issues/56creating an install procedure for lektor_markdown_image_attrs2023-10-31T13:46:34ZKezcreating an install procedure for lektor_markdown_image_attrslavamind has been trying to get lektor_markdown_image_attrs to actually play nicely with our `packages` directory !73. because the plugin uses the hatch build system, it doesn't have a setup.py file and pip won't install it. the solution...lavamind has been trying to get lektor_markdown_image_attrs to actually play nicely with our `packages` directory !73. because the plugin uses the hatch build system, it doesn't have a setup.py file and pip won't install it. the solution is to build a source distribution and to have pip install that.
the problem is that `lektor plugins reinstall` doesn't install the source distribution by default. running `pip install package/*` works great, but it's not currently part of our CI flow, or our documentation.
which brings us to the point of this ticket: agreeing on a way to install this new package since our current method doesn't work
---
we've decided on using a requirements.txt file in each repository to manage dependencies. the next steps are:
1. [x] move lektor-requirements.txt from tpo/tpa/ci-templates to tpo/web/lego
2. [x] update lego everywhere
4. [x] set ci builds to install `lego/lektor-requirements.txt` and `requirements.txt` (if it exists)
3. [x] add a requirements.txt file to any lektor repo that uses additional packages
5. [x] add lektor_markdown_image_attrs as a dependency in `lego/lektor-requirements.txt`https://gitlab.torproject.org/tpo/web/lego/-/issues/55Compile SCSS in CI, stop tracking CSS files in git2024-02-14T20:42:10ZKezCompile SCSS in CI, stop tracking CSS files in gitbuilding off of #27
problem 1: building SCSS is hard for many newcomers, and can even be a source of frustrations for people with more experience with our workflow ("oops, i forgot to run `sass` when i changed the scss!").
problem 2: t...building off of #27
problem 1: building SCSS is hard for many newcomers, and can even be a source of frustrations for people with more experience with our workflow ("oops, i forgot to run `sass` when i changed the scss!").
problem 2: tracking the built CSS in git is a bad idea. every rebuild creates *enormous* diffs which make the git history almost unreadable, and also inflates the size of the lego repo, which affects the build and development time for *every* website. we could also find ourselves in a situation where the SCSS is changed and committed, but the CSS isn't.
both of these problems can be solved by making lektor build the SCSS instead of having developers do it manually. #27 was a poorly thought-out implementation and its related RFC has been rejected. this ticket is an attempt to do things the right way.
the lektor-scss package is already in lego, so here are the next steps:
1. add lektor-scss config files to the different website repos
1. have CI build the SCSS
1. stop tracking the built CSS in legohttps://gitlab.torproject.org/tpo/web/lego/-/issues/54Decide on log settings for the new tor-launcher2022-10-24T15:50:53ZPier Angelo VendrameDecide on log settings for the new tor-launcher!348 introduced a few loggers.
They are different objects, which is okay for me, since they can have their own tags that are styled differently in Firefox, in this way.
However, I wasn't consistent with the level to enable, beside writ...!348 introduced a few loggers.
They are different objects, which is okay for me, since they can have their own tags that are styled differently in Firefox, in this way.
However, I wasn't consistent with the level to enable, beside writing that I should have added a preference for them.
Should we add this preference/these preferences? And only one to rule them all, or do we want to allow fine-grained control?https://gitlab.torproject.org/tpo/web/lego/-/issues/53Decide how to display multi-locale Alphas on /download/alpha2022-10-27T16:54:39ZdonutsDecide how to display multi-locale Alphas on /download/alphaI think the simplest solution would be to retain the current table with a single row for the multi-locale build for Alpha.
We can also add a line/paragraph of copy to the page explaining the change. As a result of removing the individua...I think the simplest solution would be to retain the current table with a single row for the multi-locale build for Alpha.
We can also add a line/paragraph of copy to the page explaining the change. As a result of removing the individual builds, the exact languages Tor Browser Alpha is available in will no longer be obvious – so we should include a list of supported locales somewhere as well.
This will need to get elevated to a support article eventually, but that can wait until this feature reaches stable in Tor Browser 12.0.
Due date is a guesstimate – we'll need to have a plan in place ahead of 12.0a4's launch by the end of the month. See https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/40627 for details.2022-10-28https://gitlab.torproject.org/tpo/web/lego/-/issues/51web IDE crashes browser / takes too long to load for tpo/content/blog (TPA-RF...2023-03-06T19:35:54Zal smithweb IDE crashes browser / takes too long to load for tpo/content/blog (TPA-RFC-48)I follow [these instructions to post on the blog](https://gitlab.torproject.org/tpo/tpa/team/-/wikis/service/blog#how-to-write-a-new-blog-post-in-gitlab). When I get to [step 4](https://gitlab.torproject.org/tpo/tpa/team/-/wikis/service/...I follow [these instructions to post on the blog](https://gitlab.torproject.org/tpo/tpa/team/-/wikis/service/blog#how-to-write-a-new-blog-post-in-gitlab). When I get to [step 4](https://gitlab.torproject.org/tpo/tpa/team/-/wikis/service/blog#4-click-the-web-ide-button-just-above-the-file-listing) and click on content > blog, the fun begins.
I almost always get this message: "This page is slowing down your browser. To speed up your browser, stop this page." Usually this disrupts the /blog folder from loading and I have to click /blog again.
In some cases, about 15% of total blog post folders load, and then the page freezes, and it reverts back to the root /contents folder, and I have to click /blog again.
In writing this ticket, I tried to open tpo/web/blog with the web IDE:
- in Tor Browser, it took me 9 minutes to successfully load tpo/web/blog with the web IDE (this is with roughly 4 complete stops, returns to contents, clicking on /blog again, and attempting to reload)
- in Firefox, it took me 4 minutes to successfully load tpo/web/blog web IDE
In a world where all I ever need to do is load the web IDE one time, upload the contents and lead, and everything is perfect, and then I can ask someone to merge my post, this might be tolerable. But I have to use the web IDE to make any edits... and I am not a markdown, html, or git expert, so I definitely need to edit things multiple times. This adds up extremely fast if it takes 10 minutes to build a preview.
I know @duncan has also had this issue, maybe he can comment here to validate me, heh.Jérôme Charaouilavamind@torproject.orgJérôme Charaouilavamind@torproject.orghttps://gitlab.torproject.org/tpo/web/lego/-/issues/50Use `mailto:gettor@...?body=...` links wherever the gettor email is mentioned2024-02-22T15:39:24ZWofWcawofwca@protonmail.comUse `mailto:gettor@...?body=...` links wherever the gettor email is mentionedExample link:
<mailto:gettor@torproject.org?body=windows%20en_US>
If you click this link, this will tell the handler to prefill the body with `windows en_US`. Maybe could also add something else, like a comment about "replace `windows`...Example link:
<mailto:gettor@torproject.org?body=windows%20en_US>
If you click this link, this will tell the handler to prefill the body with `windows en_US`. Maybe could also add something else, like a comment about "replace `windows` with `linux` if you need to, and `en_US` with the name of your locale <a link to locales list>".
For example, on gettor.torproject.org we could generate such a link, instead of just giving verbal instructions. Also we could add "OS" and "locale" `<select>`s and change the link based on that, and try to detect the locale and OS for default values.
Also there needs to be a "copy" button as currently in Chromium and Gecko it appears that if you right-click and copy the link, it only copies the email address.
This should allow to share such a link more easily as you don't have to add instructions along with email address.
We could also add such links to the response emails as well (e.g. if the user did not specify the OS) - maybe make a table with OS as columns, language as rows and links as cells.
But I shall warn that removing the instructions and only relying on such links is probably not good because they don't always do what I described. For example, if you set Chromium as the `mailto` link handler, and do not set up any handler websites inside the browser, clicking such link will do nothing.
I don't know where else this email is mentioned, maybe this can help https://gitlab.torproject.org/tpo/anti-censorship/gettor-project/gettor/-/issues/87
And I'm not sure if this is the right place for this issue, maybe https://gitlab.torproject.org/tpo/anti-censorship/gettor-project is more appropriate, feel free to move it.
Related: https://gitlab.torproject.org/tpo/anti-censorship/gettor-project/gettor/-/issues/64Jérôme Charaouilavamind@torproject.orgJérôme Charaouilavamind@torproject.org2024-03-31https://gitlab.torproject.org/tpo/web/lego/-/issues/49We need a purple telegram icon2022-07-22T00:39:44ZKezWe need a purple telegram iconOn <https://www.torproject.org/contact/> we're missing a purple telegram icon for our telegram link. lego/assets/static/fonts/fontawesome/png/primary/brands doesn't have a telegram icon. I found [the icon on fontawesome](https://fontawes...On <https://www.torproject.org/contact/> we're missing a purple telegram icon for our telegram link. lego/assets/static/fonts/fontawesome/png/primary/brands doesn't have a telegram icon. I found [the icon on fontawesome](https://fontawesome.com/v6/icons/telegram?s=brands) but we'll need to make it purple.
@nicob would you be able to make that icon purple for us, or point me to one we already have that I don't know about? Thanks!https://gitlab.torproject.org/tpo/web/lego/-/issues/48Add the lektor-markdown-highlighter plugin2022-08-02T22:28:57ZKezAdd the lektor-markdown-highlighter pluginOn IRC @gus suggested adding highlighting to markdown code blocks. Lektor has the [lektor-markdown-highlighter](https://github.com/lektor/lektor-markdown-highlighter) plugin that enables syntax highlighting in markdown code blocks, and p...On IRC @gus suggested adding highlighting to markdown code blocks. Lektor has the [lektor-markdown-highlighter](https://github.com/lektor/lektor-markdown-highlighter) plugin that enables syntax highlighting in markdown code blocks, and provides a `get_pygments_stylesheet()` macro for generating a pygments CSS file.
We haven't stopped symlinking the entire `lego/packages` directory (per TPA RFC 30), but enabling this plugin on every site won't have any effects unless the `get_pygments_stylesheet()` macro is used.
- [x] build a source distribution from the 0.3.2 tag (commit b4425dc)
- [x] verify the code in the source distribution is safe
- [x] add to legohttps://gitlab.torproject.org/tpo/web/lego/-/issues/47Write a script to partially automate updating lego2022-07-27T18:45:48ZKezWrite a script to partially automate updating legoWhenever something in lego gets updated, all of the sites need to update the submodule, commit, and push. This has eaten a lot of time in the past. It isn't hard, just slow.
I'll be writing a script to automate updating lego for all the...Whenever something in lego gets updated, all of the sites need to update the submodule, commit, and push. This has eaten a lot of time in the past. It isn't hard, just slow.
I'll be writing a script to automate updating lego for all the sites. The flow will look something like this:
for each web repo:
1. checkout a new branch named `update-lego-{lego_hash}` that tracks `origin/main`
2. cd into the lego directory
3. `git pull origin main ; cd ..`
4. add the lego directory, commit, and push to a new branch on the remote
5. print merge request URLs and errorshttps://gitlab.torproject.org/tpo/web/lego/-/issues/46Tor logo should link to homepage2022-05-04T22:43:16ZbashirkTor logo should link to homepageThe Tor logo should link back to the main [Tor homepage](https://torproject.org). This would provide for a consistent style guide and a better user experience. The _yellow_ donate button always leads to the donate page, similarly, the To...The Tor logo should link back to the main [Tor homepage](https://torproject.org). This would provide for a consistent style guide and a better user experience. The _yellow_ donate button always leads to the donate page, similarly, the Tor logo should lead to the Tor project homepage.
The current method to switch to the main homepage is by removing the subdomain or retyping the homepage URL in the browser's current address bar.https://gitlab.torproject.org/tpo/web/lego/-/issues/45Duplicate bootstrap CSS files2022-02-23T22:26:52ZJérôme Charaouilavamind@torproject.orgDuplicate bootstrap CSS filesIt looks like there's stale copies of `bootstrap.css` and friends in [assets/static](https://gitlab.torproject.org/tpo/web/lego/-/tree/main/assets/static). The real files seem to be in [assets/static/css](https://gitlab.torproject.org/tp...It looks like there's stale copies of `bootstrap.css` and friends in [assets/static](https://gitlab.torproject.org/tpo/web/lego/-/tree/main/assets/static). The real files seem to be in [assets/static/css](https://gitlab.torproject.org/tpo/web/lego/-/tree/main/assets/static/css)
We should consider cleaning that up.https://gitlab.torproject.org/tpo/web/lego/-/issues/44investigate the possibility of styling markdown images2022-12-12T14:55:53Zemmapeelinvestigate the possibility of styling markdown imagesOur lektor-based webpages have their canonical address (for example: https://support.torproject.org/ ) but they can be redeployed on other addresses.
This is an interesting feature when we think about censorship circumvention. For examp...Our lektor-based webpages have their canonical address (for example: https://support.torproject.org/ ) but they can be redeployed on other addresses.
This is an interesting feature when we think about censorship circumvention. For example, maybe our website is blocked, but if our documentation is built in gitlab pages as well, the censor will also have to block gitlab.
We also use this feature to deploy our websites on the https://review.torproject.net/tpo/web/ service, where we can review merge requests and see if the break the website, before merging.
But if we add images, for example, as /static/images/whatever.png, and link to them with an absolute link, i.e. '/static/images/whatever.png', this alternative versions of our website will not work anymore.
That is why we should always add a relative link when writing content.
But what about images?
How can we add images and be sure that they are relative in the code?
# Adding with markdown
This is the preferred way.
If we add images in lektor with `![alt text](/static/image/whatever.png)`, lektor will convert that link into a relative link, and it will also adapt it when needed for localization (the translations from the main page, /, are in subdomains like /es/ or /fr/).
The problem with this solution is that **it does not allow for styling of the images**.
So, to allow contributors to use markdown while adding style to the images (a most prominent style was width=100%), we can use a technique like the one expressed on this website:
https://web.archive.org/web/20220313053237/https://www.xaprb.com/blog/how-to-style-images-with-markdown/
With this system, you could add an image for example with:
`![alt](/static/image/whatever.png#fullwidth)`
and have fullwidth to be a class on our CSS style sheet.
The trick is to define a style in the CSS using the selector `*=`, and the src attribute that standard Markdown supports:
```
img[src*="#fullwidth"] {
width:150px;
height:100px;
}
```Jérôme Charaouilavamind@torproject.orgJérôme Charaouilavamind@torproject.org