thedjpetersen / subway Goto Github PK
View Code? Open in Web Editor NEWABANDONED - A web based IRC client
ABANDONED - A web based IRC client
There should be a way to provide a friend a link with a server/channel/username and them to follow it directly and it will connect to the server, join the channel, and apply the closest possible match for that username.
When user types in '/topic' the client should be able to change the topic and emit a message.
When any user changes their nick, the userlist should update, and a nick change message should show in the channel.
Had support for this in web-irc; see lines 561-572 of app.js
. Can't remember if it really worked though...
Hook up basic interaction with node-irc library. This should happen in a seperate file that gets require
d by the subway.js file.
The convention is that /query
opens a chat window immediately, whereas /privmsg
and /msg
don't open a window. In our case, we'll make all three synonyms... but all three should work.
User statuses should be shown and /me should work as needed.
When you close the tab it should prompt you if you are sure you want to disconnect from IRC.
If not by default, should be a setting.
github master branch has my fix for failed connections. It's still not on npm. We need it!
Upgrade from bootstrap 1.4 to 2.0 without destroying custom styles.
The nodester deploy crashed already. There are a number of modules that will monitor and auto-restart node instances; this is very important to have in place before we advertise a public link heavily.
When I send a /me message, though the recipient gets it, it doesn't show in Subway.
We should assign nick after we connect to the server even if it is taken.
Start work on frontend model, view, templates for the application. There should be a basic overall chat window and other elements derived from that.
/nick
is not supported yet. That should work, and should update the nick shown in the new user box.
There appears to have been quiet a few regressions in some of the refactoring done in 1/misc/improvements. At this time I would say the branch is unsafe for merging until all the regressions have been cleared.
Channel Tabs should show unread messages and unread mentions.
Not sure if there is an extra step yet required to get the side pane with list to show, but it didn't show by default for my in development
mode.
Think it's about time to get this thing up on nodester. It's easy & free.
Plan to do it on Monday when people are paying more attention to the internet.
We need a front-end for mobile devices, we could go about this probably with a UA detection and use a different
{ layout: 'mobile' }
or something in Jade. I might be able to help integrate this.
When someone posts an image or youtube link they should be embedded into the chat.
So all of the major containers in the current layout are expressed with percentage sizing. The fluid layout you get with that is great, but it creates problems. See What happens to the User List / channel headers as you shrink vertically for example.
I think the only good solution here is JS-based resizing, with elements like the input container, title bars etc. getting fixed vertical sizing, and other elements getting fixed minimums as appropriate.
Input focus is lost on channel join. That's annoying.
This happened today, in production:
debug - websocket writing 5:::{"name":"motd","args":[{"motd":"- asimov.freenode.net Message of the Day - \n- Welcome to asimov.freenode.net in TX, USA! Thanks to\n- Rackspace (www.rackspace.com) for sponsoring\n- this server!\n- \n- ASIMOV, ISAAC [1920-1992]. One of the brightest stars of the\n- science fiction universe. Author of \u001fI Robot\u001f, the\n- \u001fFoundation\u001f series (which \"grew like Topsy\"), \u001fPebble in the\u001f\n- \u001fSky\u001f and hundreds of works of science fact and science\n- fiction.\n- \n- You're using freenode, a service of Peer-Directed Projects\n- Center Ltd (http://freenode.net/pdpc.shtml).\n- \n- By connecting to freenode you indicate that you have read\n- and agree to adhere to our policies and procedures as per\n- the website (http://freenode.net). We would like to remind\n- you that unauthorized public logging of channels on the\n- network is prohibited. Public channel logging should only\n- take place where the channel owner(s) has requested this\n- and users of the channel are all made aware (if you are\n- publically logging your channel, you may wish to keep a\n- notice in topic and perhaps as a on-join message).\n- \n- freenode runs an open proxy scanner. Your use of the network\n- indicates your acceptance of this policy. For details on\n- freenode network policy, please take a look at our policy\n- page (http://freenode.net/policy.shtml). Thank you for using\n- the network!\n- \n- Don't forget to check out these other Peer-Directed Projects:\n- FOSSCON [http://www.fosscon.org] and fossevents \n- [http://www.fossevents.org], and soon we'll repeat last years \n- success with Picnics for Geeks across the globe, more info at \n- [http://geeknic.org]\n- \n- freenode is a service of Peer-Directed Projects Center Ltd,\n- a not for profit organisation registered in England and Wales.\n- \n- If you support the work we do and wish to donate to the PDPC, \n- you may do so over at http://freenode.net/pdpc_donations.shtml\n- \n- Thank you for using freenode!\n- \n- ***************************************************************\n- Please read http://blog.freenode.net/2010/11/be-safe-out-there/\n- ***************************************************************\nEnd of /MOTD command.\n"}]}
9 Feb 18:32:07 - MODE:mattk sets mode: +i
Event notice sent
{ nick: 'NickServ',
to: 'mattk',
text: 'This nickname is registered. Please choose a different nickname, or identify via \u0002/msg NickServ identify <password>\u0002.',
message: undefined }
debug - websocket writing 5:::{"name":"notice","args":[{"nick":"NickServ","to":"mattk","text":"This nickname is registered. Please choose a different nickname, or identify via \u0002/msg NickServ identify <password>\u0002."}]}
9 Feb 18:32:07 - GOT NOTICE from "NickServ": "This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify <password>."
debug - websocket writing 5:::{"name":"getNick","args":[{"nick":"mattk"}]}
Starting IRC client; wiring up socket events.
events.js:45
throw arguments[1]; // Unhandled 'error' event
^
Error: ENOTFOUND, Domain name not found
at IOWatcher.callback (dns.js:74:15)
Error: Restarted too many times, bailing.
This is to conserve CPU and Memory.
The current message formatting isn't a bad concept, but I think we can do better. It adds a bit too much vertical space to each message IMO, and draws too much attention to the date line.
My taste exceeds my talent here... there are a lot of ideas we could play with, from more conventional IRC formatting to iChat / Adium style messages with colored bubbles surrounding each.
Some additional signals would be helpful to indicate new mentions and privmsgs:
Have a default set of IRC servers that starts autocompleting when you start typing in IRC server address.
Some style differences updating the userlist. Changing how the time is displayed and how delays are tracked.
The titlebar needs the name of the channel and the current topic.
There should be a box on above the channels that shows the users name where they can click and change their name
There should be a mode where joins/parts are not shown in the channel only the actual message content. In big channels this will be especially useful.
There are no min-widths on containers -- if you size the browser down horizontally, the logo overruns the left sidebar and the "New Connection" / "Settings" logos are stacked vertically.
The current loading gif has a sligh unattractive border, its time to find a new loading gif...
After switching node-irc dependency, we'll be able to show the user that connection has failed.
Icons should be placed with the CSS not as embedded images.
The server should not die when the user enters an incorrect channel.
On channel join, it seems that the channel is being set as active 3 times. At least, the console.log()
statement in collections.js
line 38 is tripping 3 times.
First time is caused by the irc.chatWindows.add()
statement in client.js
, the next two are caused by lines 13 & 14 of channel_list.js
.
Sort things out so we're not retreading the same steps several times.
There needs to be a userlist that displays users and updates on users joining and leaving.
Unread notifications should only be for messages, joins/parts should not increase the count.
Add support for quits.
There should be a backbone model which represents the settings for the app.
In stream init, we have this:
this.bind('add', irc.appView.addMessage);
addMessage
should be brought into ChatView
; some of that code could probably be simplified in the process.
Status takes a while to start scrolling. Then it starts the animated scroll, one message at a time (with each line of the motd being a separate message), really slowly. A few issues here:
I have some code in web-irc for conditional auto-scroll based on whether the view is already scrolled to the bottom, and for saving scroll position when changing focused windows.
When the user hits the 'tab' key the input should start to autocomplete the field from the userlist.
We really sure ensure we're supporting HTML5 tags in all browsers, in order to get the most involvement from the community.
H5BP/Modernizr/Respond.js can help out a lot here.
I've already ported H5BP to Jade, but we need only really need a stripped down version.
I can help with this.
Messages from notice should show up in the status window.
More contributors the better -- need a dot com and twitter.
Maybe subway.io or something?
...and hope nothing breaks. It was just released yesterday.
Looks like it has a handful of useful new features.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.