feat: Add Air Traffic Control for automatic link routing to workspaces, b=no-bug, c=workspaces#9042
feat: Add Air Traffic Control for automatic link routing to workspaces, b=no-bug, c=workspaces#9042meenie wants to merge 0 commit intozen-browser:devfrom
Conversation
ff9e5de to
b8ca114
Compare
There was a problem hiding this comment.
It all looks pretty awesome!
Only thing im requesting is; please move all the settings into dialogs on the top window as we are trying to move away from it.
So, for example, create a dialog to manage all the rules and once done just remove it from the DOM, that should be enough.
And please run npm run pretty for format the project
Looks really cool, cant wait to use it myself!
| content/browser/preferences/widgets/setting-group.css (widgets/setting-group/setting-group.css) | ||
| + | ||
| + content/browser/preferences/zen-settings.js | ||
| + content/browser/preferences/zen-air-traffic-control.js |
There was a problem hiding this comment.
Could we please have all these settings in the parent window as a dialog? Trying to avoid the preferences page as much as possible.
There was a problem hiding this comment.
I think a need a little bit more clarity. Where should I put the affordance that would open up the dialog? Do you have an example where you've already done this in Zen?
There was a problem hiding this comment.
@meenie unfortunately, I can't think of an example where we are currently doing this on zen.
But it would ideally just be the same XHTML contents but instead of being in the settings, it's opened via https://searchfox.org/mozilla-central/source/browser/base/content/browser.js#5250.
One example of this modal is when pressing CMD+Q on mac
There was a problem hiding this comment.
153b5f8 to
4a1216d
Compare
|
BTW, @mauro-balades, there's a bug with the tests where I'm getting |
|
Should be just a warning, no? |
|
@meenie in that case, if you are going to make a PR for l10n packs, also add this one 🙏🏽 |
|
@meenie how is it going? Need help with anything? |
|
@mr-cheffy, sorry, work has been busy :). I'll try and finish this up to today. I see you pinged another person asking about adding the affordance to open up the ATC model in the context menu but haven't heard back yet. I'll go ahead and make the change as it's pretty easy to change again. |
|
Oh.. I misread the names 😅 Thanks a lot for such incredible amounts of patience and a great feature being introduced |
|
Just a quick question, are there any plans to implement synchronization (as with workspaces) in this PR? Or will it be done in another PR? |
|
In a separate pr imo would be better. Also, @meenie could we please call it 'Control Flow'? You know.. in order to not have the same names |
|
Nice, that this is coming as a native feature, I specifically developed an extension for this found here. Good work! |
|
@Propheticus, that is a very good question... I don't normally use Firefox so I wasn't aware of this. I will look into it! Sorry all for the delay. My regular work has been rather all-consuming. I plan on finishing this up this weekend! |
|
@meenie I just wanted to come check on this PR. How is it coming along locally? |
|
I worked on it this weekend and almost finished. It took me a long time to figure out how to get the dialog stuff working. I need to fix the e2e tests and an issue with the dialog box opening up with a random width that for the life of me I can't figure out how to change lol. Again, sorry for the delay but it's coming very soon! Here's a sneak preview: |
|
Looking great! Is the control flow thing an actual window or just created to look like one? |
|
@Anoms12, it's an actual window. Using |
|
@meenie okay cool! Last question, the text says external applications, so are tabs opened with the URL bar not affected? |
|
@Anoms12, that's correct. |
|
This is coming together nicely! A functional question:
|
|
@Propheticus, great questions :).
|
Agree. I can't imagine a lot of rules would conflict. Better make sure I create that catch all regex last then ;) |
@mr-cheffy oh I apologize. Thank you for being willing to tell me I am overstepping. |
|
Don't worry, I'm just saying it's better to get it right than to get it fast |
@mr-cheffy I get that. Do you know if we will be able to make changes to the UI to make it fit themes? As it is in a new window |
|
Not sure about that, sorry. But I think so yes |
|
This is an amazing feature, looking forward to be able to use it! Do you have plans to manage a default value? |
|
@sebazelonka They discussed this earlier- you can just create a catch-all rule |
|
Guys, is there anything missing from this PR that needs to be merged into the dev branch? Does anyone have any information on this? If I can help with anything, please let me know what's missing so it can be merged. By the way, @mr-cheffy , if you could put up a to-do list of the things that are still missing and have already been done, and what you think should be added to this specific feature because it might be different from what works in Arc since it's Chrome, I would be very grateful. This would greatly help people who want to contribute to see what's missing according to the to-do list and help develop this feature more quickly. |
|
Right now I'm full on folders, sorry. This pr is almost complete, last thing needed is the settings page to be converted into a settings popup |
|
@mr-cheffy I'll make a to do list for the PR in an hour or so. Just add it to the description when you have time |
|
Is there an estimated on when this will be merged? |
|
hey @meenie , whenever you get time, can you rebase/resolve conflicts so that this can be tested on Twilight? |
Anyone on this github can resolve the conflicts of this PR, it doesn't have to be meenie, he must be busy, it would just be a matter of taking and cloning the specific PR on the machine......if no one does it, I will do it when my new computer arrives, for now I can't. |
|
excited for this |
|
Is this still waiting on merge conflicts being resolved? I can see that after MiraiDevv's request, mr-cheffy resolved the conflicts. After that there wasn't an update on if there's anything else holding this from merge (apart from the more recent merge conflicts since dev has been updated)? |
|
Just need to finish the settings page, i've been focusing on getting firefox up to date and improving the omnibox actions lately, sorry. |
|
@mr-cheffy, omnibox actions and settings page(if I get it right) are almost done. Do you plan to add this feature soon? |
|
Any pending work for this? I want to start to use it. If I can help please let me know. |
|
What about existing tabs, can Traffic Controller move those or a sequence of tabs to a workspace in one go ? |
55f45c1 to
f240fab
Compare
|
Whoops, sorry. I was trying to rebase this PR and ended up removing the tree 😅 Doesn't seem to let me push again to this branch |
|
I'll move over to #12323 and try to cherry-pick the commits. |
|
Are we to expect this coming to Zen soon, what happened to the original developer or has zen taken it over ? |
|
Does this mean it's not being implemented!? |
|
@23426356587 you should properly go over on #12323. I don't see any indication that it's not coming |
It's coming. |







Air Traffic Control – Automatic External-Link Routing
I’ve been itching to move from Arc Browser to Zen for daily work, but I couldn’t live without Arc’s Air Traffic Control feature, so I decided to add it to Zen.
This is my very first contribution to the project, so please excuse any mistakes.
What’s inside ?
src/zen/modules/ZenAirTrafficControl.mjssrc/zen/modules/ZenAirTrafficControlIntegration.mjsBrowserDOMWindow.openURI, asks the engine, then opens/relocates the tab in the right workspace.browser/components/preferences/zen-air-traffic-control.{xhtml,js,css}How it works
Users will create patterns (e.g.
*.github.com,*/jira/*) in the Preferences UI.ZenAirTrafficControl.routeURL()returns{ workspaceId }when a rule matches.The integration layer intercepts the external open, creates the tab, and moves it to the workspace – all in the same window, so no flash-of-new-window.
Screenshots
Main interface. I added it to the Tab Management section of Preferences

When importing, you can map routes from one workspace to another.

Missing Things
Localization (l10n)
Localized strings are not yet wired up; I'm actually not sure how that process works.
Documentation
I'll create a PR in https://github.com/zen-browser/docs if/when this PR is merged.