[{"data":1,"prerenderedAt":351},["ShallowReactive",2],{"project-43438797":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":43,"post_text":45,"what":46,"said":78,"maker_in_thread":152,"shape":162,"grid":166,"attempts":313,"same_week":314,"maker_shows":269,"maker_hidden":343,"reader_version":344,"card":345},"43438797","Solo Screen","A terminal emulator in pure PHP","title","Show HN: A terminal emulator in pure PHP","https:\u002F\u002Fgithub.com\u002Fsoloterm\u002Fscreen","github.com","aarondf",1742579005,2025,196,85,337,3837,9,"notable","dev_tools","terminal rendering library","library",[24,25,26,27,28],"php","ansi renderer","vt100","terminal","virtual screen","curious",-0.207,{"positive":32,"neutral":33,"mixed":34,"critical":35},2,10,0,8,20,{"idea":38,"design":41,"docs":42},{"positive":39,"critical":40},1,3,{"positive":34,"critical":39},{"positive":34,"critical":34},[34,44,34,39,39,34,40,39,40,40,34,40,34,34,39,34,34,34,34,34,34,34,34,34,34,34,44,34,39,40,40,34,39,40,39,34,40,34,34,39],5,null,{"problem":47,"audience":57,"pricing":45,"motivation":66,"time_to_build":45,"stack":72,"openness":77,"stage":77,"team_size":77},{"value":48,"source":49,"evidence":50},"Lets PHP applications render ANSI terminal output into a virtual screen buffer","maker",[51,54],{"id":52,"by":11,"text":53},"43439716","Nope. Not interactive. It's a library you can use inside of PHP to implement a virtual screen. The readme has some pretty thorough details!",{"id":55,"by":11,"text":56},"43439312","> Question: can you call GNU screen from within screen? No. It's literally just an in memory buffer that you interact with from PHP. In Solo (https:\u002F\u002Fgithub.com\u002Fsoloterm\u002Fsolo) we…",{"value":58,"source":59,"evidence":60},"PHP developers building terminal-style tools","inferred",[61,62],{"id":52,"by":11,"text":53},{"id":63,"by":64,"text":65},"43445197","donatj","Oh, interesting! I started a very similar project probably ten years ago and just never got it to a very usable state. My idea at the time was based in wanting to be able to…",{"value":67,"source":49,"evidence":68},"Extracted from another library to make maintenance easier",[69],{"id":70,"by":11,"text":71},"43445702","Sure I can explain it a bit. I named it screen because the main class is called screen. It was extracted from another library to make maintenance easier. It's not a tool that can…",[73],{"value":74,"source":49,"evidence":75},"PHP",[76],{"id":70,"by":11,"text":71},"unknown",{"praise":79,"objections":88,"requests":126,"questions":134,"alternatives":142},[80],{"value":81,"source":82,"evidence":83},"Useful for testing terminal script output visually","commenter",[84,85],{"id":63,"by":64,"text":65},{"id":86,"by":11,"text":87},"43445713","Check out the ComparesVisually trait! (It's described in the readme too) It takes some text, outputs it to iTerm and takes a screenshot. Then it takes the same output, runs it…",[89,104,118],{"value":90,"source":82,"evidence":91},"Name collides with GNU screen terminal multiplexer",[92,96,100],{"id":93,"by":94,"text":95},"43439077","cf100clunk","Nice, but your terminal app has a name collision with the long lived ''screen'' terminal multiplexer utility: https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fscreen\u002Fmanual\u002Fscreen.html",{"id":97,"by":98,"text":99},"43440190","whalesalad","script kiddies are now going to have high-fidelity shells with 256 colors for when they pwn you and get root on your godaddy drupal install sidenote: screen is a terrible name…",{"id":101,"by":102,"text":103},"43447140","jmholla","> Most commenters didn't understand any of that nuance and got hung up on a surface level thing that didn't really matter. It was clear to me that the suggestion didn't apply in…",{"value":105,"source":82,"evidence":106},"Not really a terminal emulator but a renderer",[107,111,114],{"id":108,"by":109,"text":110},"43440280","throwaway150","Commendable work but note that this is not a terminal emulator. This is a terminal renderer.",{"id":112,"by":102,"text":113},"43439785","I don't think you can call this a terminal emulator then.",{"id":115,"by":116,"text":117},"43439858","electroly","Perhaps something along the lines of an \"ANSI terminal renderer library\"? I think \"render\" helps suggest that it's handling the display but that the library consumer still has to…",{"value":119,"source":82,"evidence":120},"Maker's dismissive replies to critics",[121,125],{"id":122,"by":123,"text":124},"43445258","adminm","I'm curious how you came to the conclusion that naming it 'screen' was the best thing for your project? It's unusual to see so many negative comments on a new project…",{"id":101,"by":102,"text":103},[127],{"value":128,"source":82,"evidence":129},"Add a screenshot or video to the README",[130],{"id":131,"by":132,"text":133},"43446383","goshx","Kudos to you for taking all the heat and handling it gracefully. Perhaps adding a screenshot or video to the README.md showing what it does could help people understand it better.",[135],{"value":136,"source":82,"evidence":137},"Does it render to plain text or styled HTML?",[138],{"id":139,"by":140,"text":141},"43445414","MrBuddyCasino","Does it render to plain text or styled HTML? Not quite clear from the readme.",[143,148],{"value":144,"source":82,"evidence":145},"GNU Screen",[146,147],{"id":97,"by":98,"text":99},{"id":93,"by":94,"text":95},{"value":149,"source":82,"evidence":150},"tmux",[151],{"id":101,"by":102,"text":103},{"comments":36,"answered":153,"key":154},7,[155,156,159],{"id":70,"text":71},{"id":157,"text":158},"43446463","Thanks! I know it's probably bizarre behavior to not debate at all in the comments, but man, life is short. Good note on the screenshot. There are some code samples but I'll…",{"id":160,"text":161},"43447326","I'm sorry you feel that way.",{"commenters":163,"max_depth":33,"maker_replies":36,"first_comment_mins":164,"lifespan_hours":165},30,22,57,[167,169,171,173,174,176,177,180,181,183,186,187,189,191,192,194,197,199,203,205,207,211,213,216,219,222,224,226,228,231,233,236,239,242,245,248,251,253,256,259,262,265,268,271,272,274,275,277,280,283,285,287,288,290,293,296,298,300,302,304,305,307,309,311],[122,34,34,168,123,34],"commenter\u002Fneutral\u002Fnone",[70,34,34,170,11,39],"maker\u002Fneutral\u002Fnone",[131,34,44,172,132,34],"maker\u002Fpositive\u002Fnone",[157,34,34,170,11,39],[101,34,39,175,102,34],"project\u002Fcritical\u002Fnone",[160,34,34,170,11,39],[178,39,34,179,11,39],"43440683","maker\u002Fneutral\u002Fdocs",[97,32,39,175,98,34],[182,32,34,168,11,39],"43440219",[184,40,40,185,116,34],"43439688","project\u002Fneutral\u002Fidea",[52,40,34,185,11,39],[112,40,39,188,102,34],"project\u002Fcritical\u002Fidea",[190,40,34,185,11,39],"43439802",[115,40,40,185,116,34],[193,40,34,172,11,39],"43439951",[195,40,40,185,196,34],"43439913","anthk",[198,40,34,172,11,39],"43439953",[200,201,40,185,202,34],"43439580",4,"atarian",[204,201,34,168,11,39],"43439585",[206,201,34,168,11,39],"43439753",[208,201,34,209,210,34],"43440497","other\u002Fneutral\u002Fnone","endofreach",[212,201,34,209,11,39],"43440505",[214,201,34,209,215,34],"43444230","noduerme",[217,201,39,218,215,34],"43444247","project\u002Fcritical\u002Fdesign",[220,201,34,168,221,34],"43444386","9dev",[223,201,34,168,215,34],"43444577",[225,201,34,168,221,34],"43444603",[227,201,34,168,215,34],"43444830",[229,201,34,209,230,34],"43450949","duskwuff",[232,201,34,209,215,34],"43451156",[234,201,34,209,235,34],"43440522","pocketarc",[237,201,34,209,238,34],"43441726","jorvi",[240,201,34,209,241,34],"43444554","djfivyvusn",[243,201,34,209,244,34],"43441921","zerr",[246,201,34,168,247,34],"43442475","felbane",[249,44,34,209,250,34],"43440396","mrweasel",[252,44,34,209,11,39],"43440415",[254,44,34,209,255,34],"43440868","codetrotter",[257,44,34,209,258,34],"43441040","johnisgood",[260,44,34,209,261,34],"43442524","jamal-kumar",[263,44,34,209,264,34],"43443577","cship2",[266,44,34,209,267,34],"43457438","bshacklett",[63,269,44,270,64,34],6,"project\u002Fpositive\u002Fidea",[86,269,34,185,11,39],[139,153,40,273,140,34],"project\u002Fneutral\u002Fdocs",[108,35,39,188,109,34],[276,35,34,172,11,39],"43440364",[278,35,40,185,279,34],"43444988","blueflow",[281,35,40,185,282,34],"43445479","doubled112",[284,35,34,209,279,34],"43451860",[286,35,34,209,282,34],"43452610",[93,18,39,175,94,34],[289,18,34,170,11,39],"43439112",[291,18,40,292,94,34],"43439150","project\u002Fneutral\u002Fnone",[294,18,39,175,295,34],"43439188","jeffhuys",[297,18,34,292,11,39],"43439267",[299,18,34,168,295,34],"43439432",[301,18,34,292,11,39],"43439229",[303,18,40,185,94,34],"43439280",[55,18,34,185,11,39],[306,18,34,168,94,34],"43439371",[308,18,34,209,11,39],"43439449",[310,18,39,188,102,34],"43439748",[312,18,40,185,230,34],"43439429",[],[315,320,325,330,335,339],{"id":316,"name":317,"points":318,"category":319},"43452629","Drum Patterns",495,"creative",{"id":321,"name":322,"points":323,"category":324},"43454915","OpenSpot",470,"productivity",{"id":326,"name":327,"points":328,"category":329},"43456030","Notes - Sight Reading Trainer",313,"learning_science",{"id":331,"name":332,"points":333,"category":334},"43451141","SlideHero",260,"languages",{"id":336,"name":337,"points":338,"category":334},"43435438","Torch Lens Maker",179,{"id":340,"name":341,"points":342,"category":20},"43445720","FastOpenAPI",153,false,"v2",{"id":346,"name":5,"line":6,"ai":343,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":347,"top":18,"kw":348,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":349,"url":9,"mix":350,"praise":81,"objection":90,"sub":21},43438797,-0.21,[24,25,26,27,28],"0501103133030010000000000050133013103001",[32,33,34,35],1793991115615]