GithubHelp home page GithubHelp logo

workspacemechanic's People

Contributors

alblue avatar kberg avatar steveash avatar zorzella avatar

workspacemechanic's Issues

One needs to click OK and then Cancel

What steps will reproduce the problem?
1. Change anything, e.g. remove line numbering.
2. Doubleclick on the Icon on the lower right side.
3. The Workspacemechanic-Window is shown. Click OK.

What is the expected output? What do you see instead?

I would expect that the window closes. The changes are applied in the
background but the window is only closed if I click the cancel-Button
afterwards.

What version of the product are you using? On what operating system?

Compiled version 0.1 from the update site on Mac OS X with Spring STS 2.3.2
(Eclipse 3.5.1).

Please provide any additional information below.


Original issue reported on code.google.com by sendorian on 14 May 2010 at 8:56

Loses some state info when Eclipse dies

- Start Eclipse with at least one failing task.
- Open the dialog, block the task.
- Eclipse exits unexpectedly, after having blocked a particular task.
- After restarting Eclipse that Task will still be failing.

We rely on the preferences system to handle editing and saving of prefs, so 
this may not be an easy fix.

Original issue reported on code.google.com by [email protected] on 12 May 2010 at 4:59

Backlash escaping with preference tasks.

As reported by richboss

I encountered a problem with how Workspace Mechanic handles escaping
backslashes, illustrated by the following example.

The *.epf-File for Workspace Mechanic contains a line like this:

/instance/org.eclipse.jdt.ui/
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0"
encoding\="UTF-8" standalone\="no"?><templates> ............ </
templates>

When applied, this leads to a line like this in the Eclipse settings
(org.eclipse.jdt.ui.prefs):

org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\\\="1.0"
encoding\\\="UTF-8" standalone\\\="no"?><templates> ............ </
templates>

The problem is, each single (escaping) backslash ist transformed to
triple backslashes. Double backslashes would be transformed to five
backslashes, and so on. This doesn't work.

Original issue reported on code.google.com by [email protected] on 18 Aug 2010 at 3:39

Preference recorder should save file with .epf extension by default

What steps will reproduce the problem?
1. Record new preference, enter "filename" as filename

What is the expected output? What do you see instead?
Mechanic is unable to find the preference, because "filename" doesn't end with 
.epf extension.

What version of the product are you using? On what operating system?
Mechanic 0.0.9, Eclipse 3.6.2

Please provide any additional information below.
Default mask in save dialog is *.*

Original issue reported on code.google.com by [email protected] on 23 Mar 2011 at 6:15

Schema is not included in the download jar

What steps will reproduce the problem?
1. download the jar
2. attempt to build a plugin that extends the "task" extension point


What is the expected output? What do you see instead?
2. the task schema is included in the jar, but it is not. as a result I 
cannot refernece it in my plugin

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 19 May 2010 at 7:50

Cannot block URL tasks

URL tasks contain : which is the path separator on linux. Solution is to use 
the same gson data model used for task sources.

!ENTRY org.eclipse.ui 4 0 2011-03-12 10:39:37.404
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.IllegalStateException: ids cannot contain ':'
    at com.google.eclipse.mechanic.plugin.core.MechanicPreferences.setBlockedTaskIds(MechanicPreferences.java:204)
    at com.google.eclipse.mechanic.plugin.core.MechanicPreferences.blockItem(MechanicPreferences.java:221)
    at com.google.eclipse.mechanic.RepairManager.run(RepairManager.java:74)
    at com.google.eclipse.mechanic.plugin.ui.MechanicStatusControlContribution$InvokeRepairManagerAction.invokeRepairManager(MechanicStatusControlContribution.java:356)
    at com.google.eclipse.mechanic.plugin.ui.MechanicStatusControlContribution$InvokeRepairManagerAction.run(MechanicStatusControlContribution.java:345)
    at com.google.eclipse.mechanic.plugin.ui.MechanicStatusControlContribution$2.mouseUp(MechanicStatusControlContribution.java:186)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:213)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3783)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1398)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1383)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1195)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3629)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1384)

Original issue reported on code.google.com by [email protected] on 12 Mar 2011 at 3:41

Consider proxy settings for URL-based task scanner

When implementing code for issue 21, please consider the proxy setting of 
Eclipse in General > Network Connections. You find information about how to 
implement this in 
http://torkildr.blogspot.com/2008/10/connecting-through-proxy.html. It 
shouldn't be too hard to achieve, because you are already relying on 
HttpUrlConnection, which allows to give explicit proxy settings.

Original issue reported on code.google.com by [email protected] on 8 Mar 2011 at 11:10

User home directory not resolved on Windows

What steps will reproduce the problem?
1. Install Workspace Mechanic in Eclipse on Windows.
2. Restart Eclipse
3a. Open the plugin's Preferences page; it contains an entry /.eclipse/mechanic
3b. Look at Eclipse logging; it has an entry !MESSAGE Directory 
'\.eclipse\mechanic' does not exist.

What is the expected output? What do you see instead?
I'd expect to see my home directory resolved, now it resolves to an empty 
string creating an non-existant path.

What version of the product are you using? On what operating system?
Eclipse 3.6, WSM 0.0.3, Windows 7

Please provide any additional information below.

IMHO the easiest way to fix this is by changing the UserHomeVariableInitializer 
class. Just change the initialize method to contain this:
    variable.setValue(System.getProperty("user.home"));

This should be platform-independent and also allow the user to override the 
setting from his eclipse.ini.

Original issue reported on code.google.com by [email protected] on 1 Mar 2011 at 12:54

Doesn't seems to work for 3.6.1

I'm using PDT. I've recorded project setting to use 4 spaces instead of tabs as 
reconcile, added rules dir to Mechanic preferences, and still it can't detect 
when the project properties are changed back.

Need more transparency into what WM is doing.

Original issue reported on code.google.com by [email protected] on 21 Jan 2011 at 12:14

  • Merged into: #40

Code formatter changes generate huge changes

What steps will reproduce the problem?
1. Start the preference recorder
2. Update just one preference
3. Stop the preference recorder

What is the expected output? What do you see instead?

Only one preference change is recorded. Instead, the complete XML format of 
the preferences is saved.

What version of the product are you using? On what operating system?

Workspace Mechanic 3.2 , Eclipse 3.5.2 .

Original issue reported on code.google.com by robert.munteanu on 26 May 2010 at 2:14

Preference Recorder does not catch changes to Team>SVN>Comment Template

What steps will reproduce the problem?
1. Right-click on Workspace Mechanic and select Preference Recorder > Start 
Recording.
2. Open the Preferences editor and navigate to Team > SVN > Comment Templates
3. Click on New... to create a new Comment Template.
4. Enter a comment template of your choice.
5. Click OK to accept your new comment. 
6. Click OK to exit the Preferences dialog.
7. Right-click on Workspace Mechanic and select Preference Recorder > Stop 
Recording...

When you click Stop Recording... the save dialog should open and show one or 
more configuration changes to Comment Templates. Instead, the dialog is shown 
but is empty. Nothing has been recorded.

This was tested using version 0.03 on Windows XP.

Original issue reported on code.google.com by [email protected] on 18 Mar 2011 at 6:23

Drop dependency on Mylyn

What steps will reproduce the problem?
1. Try to install workspacemechanic into a plain Eclipse SDK install.

What is the expected output? What do you see instead?
I would like to see only workspacemechanic being added.
Instead, it also needs the Mylyn Bridge stuff.

What version of the product are you using? On what operating system?
Eclipse SDK
Version: 3.6.0
Build id: I20100429-1549

Original issue reported on code.google.com by peter.arrenbrecht on 14 May 2010 at 9:39

Update site can't be viewed in IE.

Per user report: The HTML of the update site contains a bug:

   <head><title>Revision 8fcb3fc42a: /mechanic</title</head>

The problem is, that the closing title tag is broken. It misses the
right side angled bracket. Which leads to a completely blank page if
viewed with Internet Explorer.

Please fix.

Regards,
Richard

Original issue reported on code.google.com by [email protected] on 18 Aug 2010 at 3:42

Need a preferences category

We need a top level preferences category so that fragments can contribute 
prefs pages in a common location.

Original issue reported on code.google.com by [email protected] on 12 May 2010 at 5:03

A Warning should appear if a ClassTask is compiled with Java 6 or above

What steps will reproduce the problem?
1. Compile a ClassTask with Java 6
2. Copy it to a task directory as mentioned in the Wiki.
3. (Restart Eclipse)

What is the expected output? What do you see instead?

The new task should be enabled now. But it's not recognized by workspace
mechanic. There is no warning that the class could not be read.

What version of the product are you using? On what operating system?

0.1 with Mac OS X and Eclipse 3.5.1 (Spring STS).

Please provide any additional information below.

This is because Workspace Mechanic is compiled with Java 5 and cannot read
class files compiled with Java 6 or above. A Warning-PopUp or something
should tell the user to compile with Java 5.

Original issue reported on code.google.com by sendorian on 17 May 2010 at 12:09

Cannot enter relative path for task source directories (Windows)

What steps will reproduce the problem?
1. Open the Workspace Mechanic preferences page
2. Click New...
3. Try to add a path like the default "\.eclipse\mechanic"

What is the expected output? What do you see instead?
I removed the default path (silly me) and then tried to add it back, but
the "New..." button only provides a directory browser dialog, so a path
like the default (relative to user.home) cannot be added to list of task
sources.  

What version of the product are you using? On what operating system?
Version 0.0.2 on Windows XP SP2

Please provide any additional information below.
It would be preferable to have a dialog with an edit box and an optional
"Directory..." button, like you get when adding a JRE.

Original issue reported on code.google.com by [email protected] on 27 May 2010 at 8:48

Icons could be prettier (patch included)

http://code.google.com/a/eclipselabs.org/r/mschrag-workspacemechanic/source/deta
il?r=2b3fe8d6290382bac9ca8d7d5821bf6745ad06ad

Original issue reported on code.google.com by mschrag on 2 Oct 2010 at 9:49

Can't block any tasks, resutls in "Unhandled event loop exception"

Blocking a single task results in no other task repairs.

java.lang.UnsupportedOperationException
at java.util.AbstractCollection.add(AbstractCollection.java:221)
at 
com.google.eclipse.mechanic.plugin.core.MechanicPreferences.blockItem(MechanicPr
eferences.java:221)
at com.google.eclipse.mechanic.RepairManager.run(RepairManager.java:74)
at 
com.google.eclipse.mechanic.plugin.ui.MechanicStatusControlContribution$InvokeRe
pairManagerAction.invokeRepairManager(MechanicStatusControlContribution.java:356
)
at 
com.google.eclipse.mechanic.plugin.ui.MechanicStatusControlContribution$InvokeRe
pairManagerAction.run(MechanicStatusControlContribution.java:345)
at 
com.google.eclipse.mechanic.plugin.ui.MechanicStatusControlContribution$2.mouseU
p(MechanicStatusControlContribution.java:186)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:213)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3783)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1398)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1383)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1195)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3629)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at 
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java
:115)
at 
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at 
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(Ecli
pseAppLauncher.java:110)
at 
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLau
ncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav
a:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)

Original issue reported on code.google.com by [email protected] on 12 Mar 2011 at 3:32

The update site has an invalid site.xml

The update site at 
http://workspacemechanic.eclipselabs.org.codespot.com/hg.update/mechanic 
has a site.xml that refers to features/com.google.eclipse.mechanic_0.0.0.jar, 
but only 
features/com.google.eclipse.mechanic_0.0.2.jar exists (and its corresponding 
plugin)

Original issue reported on code.google.com by [email protected] on 26 May 2010 at 8:03

Suppress ListFiles warning when the mechanic/ext directory does not exist

The Mechanic is seeing part of a path it wants but not the full path.  We 
should fix that.  The path it is naming is an optional path for any 
personalized setting you want to set up, so it shouldn't be complaining if it 
doesn't find it.

The workarounds you can try are
1) Remove the tasks directory completely: rmdir ~/.eclipse/tasks
2) Create the full tasks directory: mkdir -p 
~/.eclipse/tasks/com/google/eclipse/mechanic/ext

Original issue reported on code.google.com by [email protected] on 28 Sep 2010 at 10:29

Unable to extend DirectoryIteratingTaskScanner

It is currently impossible to create a new Scanner extension based on the 
DirectoryIteratingTaskScanner because its abstract method uses private class 
ResourceTaskProvider:

protected void scan(ResourceTaskProvider source, TaskCollector collector) { }

Either ResourceTaskProvider and ResourceTaskReference need to be moved to an 
exported package or part of their methods need to be extracted to an interface 
in an exported package.


What version of the product are you using? On what operating system?
Linking against latest stable release, v0.0.3, still present in latest 

Original issue reported on code.google.com by [email protected] on 4 Mar 2011 at 12:48

Use com.google.common.collect in stead of Util class.

The util class is messy and redundant. Let's take a dependency on 
com.google.common.collect. We can include a private copy with our download.

Once either I get the Guava update site up and running, or when I can take the 
time to review 
license issues, this will be a welcome change.

Original issue reported on code.google.com by [email protected] on 12 May 2010 at 5:04

Workspace Mechanic update site doesn't have a proper name

According to reporter:

Window > Preferences > Install/Update > Available Software Sites contains:
Name                      Location
${p2.metadata.repo.name}  
http://workspacemechanic.eclipselabs.org.codespot.com/hg.update/mechanic/

${p2.metadata.repo.name} indicates a missing property that has to be fixed.

Original issue reported on code.google.com by [email protected] on 28 Feb 2011 at 6:06

Remove dependency to mylyn

What steps will reproduce the problem?
1. Install Eclipse (without Mylyn)
2. Add update site to Workspace Mechanic
3. When trying to install the plugin a dependency problem occur.


What is the expected output? What do you see instead?
Cannot complete the install because one or more required items could not be 
found.
  Software being installed: Workspace Mechanic 0.0.2 (com.google.eclipse.mechanic.feature.group 0.0.2)
  Missing requirement: Workspace Mechanic Plug-in 0.0.2 (com.google.eclipse.mechanic 0.0.2) requires 'bundle org.eclipse.mylyn.commons.ui [3.2.0,4.0.0)' but it could not be found
  Cannot satisfy dependency:
    From: Workspace Mechanic 0.0.2 (com.google.eclipse.mechanic.feature.group 0.0.2)
    To: com.google.eclipse.mechanic [0.0.2]


What version of the product are you using? On what operating system?
Workspace Mechanic 0.0.2
Eclipse 3.5.2 Build id: M20100211-1343


Please provide any additional information below.
This seems to be a product aimed at handling preferences in general and 
therefore i don't get why i need Mylyn to install and get it working.

Original issue reported on code.google.com by [email protected] on 23 Aug 2010 at 2:36

  • Merged into: #14

Disable user input on trim widget when tasks being applied

Clicks are accepted when tasks are being applied.

How to reproduce:

-- Get a bunch of failing tasks.
-- Fix them all.
-- Why they are being fixed, click on the trim icon.
-- When the fixes are complete the fix dialog will open again.

Expected. Don't accept user input while fixing tasks.

Original issue reported on code.google.com by [email protected] on 12 May 2010 at 4:59

Add error reporting infrastructure

When a task throws an exception during scan or update, we should store those 
for the sake of reporting them separately. Almost no exception coming from task 
scanning should be propogated all the way up.

Original issue reported on code.google.com by [email protected] on 10 Feb 2011 at 7:34

  • Merged into: #8

Workspace Mechanic complains about missing ~/.eclipse/audits directory

What steps will reproduce the problem?
1. No action needed.

What is the expected output? What do you see instead?

Workspace Mechanic repeatedly spams Eclipse error log with a message "Directory 
'/home/sprigogin/.eclipse/audits' does not exist." Workspace mechanic should 
either create the directory it needs or shut up.

What version of the product are you using? On what operating system?

Workspace Mechanic 0.0.2 on Lunux Lucid Lynx

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 13 Dec 2010 at 9:37

Show me the tasks I've configured

What steps will reproduce the problem?
1. add a task via preference recorder (or whatever)
2. try to find the list of tasks in the GUI.

What is the expected output? What do you see instead?
2. a list of configured tasks is shown somewhere in the GUI.

What version of the product are you using? On what operating system?
0.0.2, Ubuntu-ish Hardy-ish

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 19 May 2010 at 3:16

Yet another Windows Compatibility bug

Via Alex Blewitt:

One bug: on Windows it creates an initial path c:\Documents and Settings\... 
(since that's the value of user.home) and then fails to parse upon startup 
since it's treating the c:\ as the protocol.

Basically new URI("c:\\Doc") will fail, called from getTaskProviders() in 
MechanicPreferences.java:143.

---

via Konigsberg:

Yeah, I see it. OK. I do need a Windows machine to test on.

Original issue reported on code.google.com by [email protected] on 14 Mar 2011 at 3:00

Workspace Mechanic writes extra messages to the error log

What steps will reproduce the problem?
1. Apply any audit

What is the expected output? What do you see instead?

The messages, if any, written to the error log should be human readable. 
Instead the mechanic writes "Repairing item: 
com.google.eclipse.mechanic.ext.SetupSpellChecking@97b1ac0d"

A toString method seems to be missing somewhere.


What version of the product are you using? On what operating system?

Workspace Mechanic 0.0.2 on Linux Lucid Lynx

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 13 Dec 2010 at 9:34

Complete Keyboard task handler

The keyboard task handler is incomplete. Let's get that done, and possibly, 
let's get rid of our 
dependency on jetty just for JSON parsing.

Original issue reported on code.google.com by [email protected] on 12 May 2010 at 9:14

Provide feature for failed tasks

If a task just cannot run (e.g. the description is null, or evaluation throws 
an exception) we can 
start by logging any of those failures to the error log and continuing. But 
also we could consider 
adding UI features. Or classify those tasks as "failed to run".

Original issue reported on code.google.com by [email protected] on 12 May 2010 at 9:10

"Just do it" mode

Instead of clicking every time there's a new task to apply, there should be  a 
mode where it just applies the changes.

Original issue reported on code.google.com by [email protected] on 15 Jan 2011 at 3:49

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.