Code Monkey home page Code Monkey logo

terminal7's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

terminal7's Issues

Handle tab names overflow

When opening many tabs the tab bar is running out of space and tab names are displayed on the the navbar. Instead we should have a burger button, that holds the window names that don't fit the screen, like Tab 6 and Tab 7 below :

image

Add a chaos monkey test

Write a test that splits a few times and than close the panes in random. Assert the last pane takes the entire screen and that document is clean.

Store & restore the windows layout

Windows layout should be saved to local storage and read when re-connecting to the server. The layout is removed from storage only when the user asks to close the host.

Support The Clipbboard

This issue is waiting for tuzig/webexec#29 

webexec's API will add get_clipboard and
set_clipboard commands. This should allow the user
off a properly configured nvim to yank a line vim
and get it in the iPad's clipboard.

Add the "new window" button

We're missing a button - a + - displayed at the right of the #tabbar . Clicking on the button will create a new window with a single, focused pane. For now, use numbers for the window name. Renaming windows is another issue.

Loosing gestures after zoom-in-out

To recreate start with a |- layout and choose the bottom left pane. zoom in, zoom out. Swipe on one of the other panes and you get... nothing. I suspect zooming in confuses hammerjs and we need to either find a better way to zoom or reset hammerjs on all the other panes after zoom out.

Add re-sizing notification

To keep things transparent and to make sure our resize works (which probably doesn't...) we need to add an indication of size change. When we get an Ack on a resize request we will display, roughly at the center of the pane the new dimensions as in "24x80" for a second and fade it away.

Serialize layouts to/from tmux format

For easier debugging and tmux compatibility we need text serialization. Here's what it looks like in tmux:

0c36,173x44,0,0{80x44,0,0,4,92x44,81,0[92x21,81,0,5,92x22,81,22,29]}]

The first number is a checksum, followed by size of offsets of every cell with {} to donate a vertical split groups of cells and [] for horizontal one.

Add a server command to the welcome message

Here' the message:


To start a connection run this command on your server and enter its IP addres:

$ webexec <offer>

dev host address: __________


The is the same offer we use in the body of a post to /connect. When the user enters the address, t7 will try to connect to the server.

Handle window.onresize

When I flip my tablet, the layout stay the same but the size in rows and cols changes. When this happens we need to call fit() on all panes and send the new sizes. This requires API changes - adding support for an array as the value of resize_pty.

Add index.html to the test

Today the tests runs with an empty index.html as a result all the code that adds elements to the screen is enclosed in an if (elem != null) . It's not only an eye sore, but it also means that there's quite a bit of code that is not covered by the tests.

Support pinch

Pinch will let the user change a pane's font size. When the gesture ends, fit() should be called on all the cells so that terminals will grow to fill their containing element.

Make CSS meaningful and responsive

We need to support both iPad screen sizes in portrait & landscape orientation. In the future we'll have more screen sizes so it's better to make it responsive.

To recommended process is:

  • learn the design
  • come up with a sensible hierarchy
  • ensure meaningful names
  • code it all in src/css/terminal7.css
  • open a PR

Add a leader key

Today, all the commands are just CTRL key combination. For example CTRL-z is used to zoom in. The problem with that is that CTRL-z is important for the shell and we should be smarter and imitate tmux that have a leader key used as prefix to all command keys. The default leader is CTRL-b but most people change it to CTRL-a which should be out default leader.

Make the Looking glass work

Clicking the looking glass should turn the nav bar into an input field and let me key for a search string. After each letter I key, matched strings are scrolled to and highlighted in the active pane.

Clicking enter looks for the previous match in the terminal buffer.

Use two fingers to scroll

Using a single finger to scroll makes terminal7 split vertically occasionally. By switching to two fingers scrolling we avoid the confusion and making sure scrolling won't split the pane.

When zoomed in disconnect modal doesn't show

to recreate: zoom in on a pane, disconnect the wifi. wait 5 seconds and press and zoom out. The disconnect dialog is there, it's probably with a lower z-index than the zoomed pane.

Fix zoom

Zoom-in-zoom-out works only once.

Support key repeat

Today, when you hold a key down you get the key you pressed only once.

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.