diff options
| author | sophie <sophies@disroot.org> | 2026-08-31 10:42:13 +0200 |
|---|---|---|
| committer | sophie <sophies@disroot.org> | 2026-08-31 10:42:13 +0200 |
| commit | fe437f882228b58bf16c2994470f80a2dbc134de (patch) | |
| tree | 11ad203b624a80b92dad9aaddac3ef50f4e526d6 | |
git commit
96 files changed, 4267 insertions, 0 deletions
diff --git a/ got send b/ got send new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/ got send diff --git a/404.html b/404.html new file mode 100644 index 0000000..16439dc --- /dev/null +++ b/404.html @@ -0,0 +1,46 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>sophies website or something</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> + <link rel="preconnect" href="https://libre.fm" /> + <link rel="stylesheet" href="/style.css" /> + </head> + <body> + <br /> + <h1>404</h1> + <p>uh-oh! looks like you tried to open a file that isn't there!</p> + <p> + what can you do? uhh, i dont know DIPSHIT maybe dont try to open files + that dont exist?! + </p> + <p> + this might be my fault though so heres a link to the + <a href="/fakeindex.html">home page</a>, WHICH WILL ALWAYS WORK!! + </p> + </body> +</html> diff --git a/AGPL-SOURCE-LINK.html b/AGPL-SOURCE-LINK.html new file mode 100644 index 0000000..33c259a --- /dev/null +++ b/AGPL-SOURCE-LINK.html @@ -0,0 +1,15 @@ +<!-- + Copyright (C) 2026 Zofia Szweda + + This website is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + There is NO WARRANTY, to the extent permitted by law. +--> +<p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> +</p> @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +<https://www.gnu.org/licenses/>. @@ -0,0 +1 @@ +COPYING
\ No newline at end of file @@ -0,0 +1,22 @@ +sophii.xyz +Copyright (C) 2026 Zofia Szweda + +This project is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published +by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This project is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +The complete GNU Affero General Public License v3 is available in +the file COPYING and at: + +https://www.gnu.org/licenses/agpl-3.0.txt + +Corresponding Source: +https://tangled.org/sophii.xyz/sophii.xyz + +Third-party components may be distributed under their own licenses. +Their original copyright and license notices must be preserved. @@ -0,0 +1,12 @@ +sophii.xyz — Corresponding Source +================================ + +The corresponding source code for the version of this software running +on the server is available at: + +https://tangled.org/sophii.xyz/sophii.xyz + +License: +GNU Affero General Public License, version 3 or later. + +See COPYING for the complete license text. diff --git a/about.html b/about.html new file mode 100644 index 0000000..cce7560 --- /dev/null +++ b/about.html @@ -0,0 +1,244 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>/about</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> + <link rel="stylesheet" href="/style.css" /> + </head> + + <body> + <nav> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> +</nav> + <h1>/about</h1> + <p>Hi, I'm Sophie (she/they), I am a transfemme furry programmer</p> + <p> + I somehow ended up running this website on my Raspberry Pi Zero 2 W. A + tiny Pi. + </p> + <p>Fursona: Cottonball (deer)</p> + <section class="terminology"> + <h2>Terminology</h2> + + <p class="terminology-intro"> + These aren't requirements, just the terms and pronouns I generally + prefer. Don't worry if you get something wrong! + </p> + + <div class="terminology-grid"> + <div> + <h3>Names</h3> + <ul> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Sophie + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />puss puss + </li> + <li class="rating-like">Cottonball</li> + <li class="rating-like">Madeline</li> + <li class="rating-never"> + <img + class="icon" + src="/assets/images/icons/cross.png" + />(Deadname) + </li> + </ul> + </div> + + <div> + <h3>Pronouns</h3> + <ul> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />she/her + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />they/them + </li> + <li class="rating-never"> + <img class="icon" src="/assets/images/icons/cross.png" />he/him + </li> + <li class="rating-maybe">neopronouns</li> + <li class="rating-maybe">it/its</li> + </ul> + </div> + + <div> + <h3>Honorifics</h3> + <ul> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />(None) + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Ms + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Ma'am + </li> + <li class="rating-like">Mrs</li> + <li class="rating-like">Madam</li> + <li class="rating-okay">Mx</li> + <li class="rating-okay">Master</li> + <li class="rating-never"> + <img class="icon" src="/assets/images/icons/cross.png" />Mr + </li> + <li class="rating-never"> + <img class="icon" src="/assets/images/icons/cross.png" />Sir + </li> + </ul> + </div> + + <div> + <h3>Terms</h3> + <ul> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Girl + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Girlie + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Cutie + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Deer + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Deergirl + </li> + <li class="rating-like">Person</li> + <li class="rating-like">Sister</li> + <li class="rating-okay">Daughter</li> + <li class="rating-okay">Sibling</li> + <li class="rating-maybe">Bro</li> + <li class="rating-never"> + <img class="icon" src="/assets/images/icons/cross.png" />Boy + </li> + <li class="rating-never"> + <img class="icon" src="/assets/images/icons/cross.png" />Man + </li> + </ul> + </div> + + <div> + <h3>Compliments</h3> + <ul> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Pretty + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Cute + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />Good girl + </li> + <li class="rating-love"> + <img class="icon" src="/assets/images/icons/heart.png" />X11 Slut + </li> + <li class="rating-okay">Handsome</li> + <li class="rating-okay">Fine</li> + <li class="rating-never"> + <img class="icon" src="/assets/images/icons/cross.png" />Wayland + Enjoyer + </li> + </ul> + </div> + </div> + </section> + <h2>My interests</h2> + <ul> + <li>NixOS</li> + <li>Computers</li> + <li>Space</li> + <li>Coding</li> + <li>Reading</li> + </ul> + + <h2>Likes:</h2> + <ul> + <li>space</li> + <li>furries</li> + <li>learning new things.</li> + <li>Books! Books! Books!</li> + <li>*nix</li> + <li>*BSD</li> + </ul> + <h2>Dislikes/DNI:</h2> + <ul> + <li>lolicons</li> + <li>noncons (non consensual :/ )</li> + <li>proshippers</li> + <li> + people that use AI for basic tasks (coding, looking things up, etc.) + </li> + <li>Russians</li> + <li>Norwegians(except Emy)</li> + <li>MAGA</li> + <li>t-phobes</li> + <li>femboys</li> + </ul> + + <p>I also like music, don't ask me what genre i like,</p> + <p>it ranges from indie to pop to death metal to incelcore</p> + <h2>as an example:</h2> + <ul> + <li>Tally Hall (by far my fav)</li> + <li>Jack Stauber</li> + <li>Elio Mei</li> + <li>Queen</li> + <li>Fried By Fluoride</li> + <li>many more...</li> + </ul> + <p> + I am currently learning Guile Scheme, but i have a background of + languages, e.g: + </p> + <ul> + <li>Golang</li> + <li>Haskell</li> + <li>Nix</li> + <li>Python</li> + <li>Bash</li> + <li>C</li> + <li>Java</li> + </ul> + <p>all of these gave up on except nixos.</p> + <p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> + </p> + </body> +</html> @@ -0,0 +1,3 @@ +User-Agent: * +Disallow: / +Disallow: * diff --git a/assets/_.ico b/assets/_.ico Binary files differnew file mode 100644 index 0000000..7ee5d3d --- /dev/null +++ b/assets/_.ico diff --git a/assets/_.jpeg b/assets/_.jpeg Binary files differnew file mode 100644 index 0000000..e6bbc8c --- /dev/null +++ b/assets/_.jpeg diff --git a/assets/agpl.png b/assets/agpl.png Binary files differnew file mode 100644 index 0000000..f0e7106 --- /dev/null +++ b/assets/agpl.png diff --git a/assets/animatroninci.webp b/assets/animatroninci.webp Binary files differnew file mode 100644 index 0000000..b36718f --- /dev/null +++ b/assets/animatroninci.webp diff --git a/assets/bluesky.png b/assets/bluesky.png Binary files differnew file mode 100644 index 0000000..14f71a3 --- /dev/null +++ b/assets/bluesky.png diff --git a/assets/caddy.png b/assets/caddy.png Binary files differnew file mode 100644 index 0000000..be3dfb3 --- /dev/null +++ b/assets/caddy.png diff --git a/assets/eightyeight.png b/assets/eightyeight.png Binary files differnew file mode 100644 index 0000000..95bbdd5 --- /dev/null +++ b/assets/eightyeight.png diff --git a/assets/gnu.webp b/assets/gnu.webp Binary files differnew file mode 100644 index 0000000..784142c --- /dev/null +++ b/assets/gnu.webp diff --git a/assets/helix.webp b/assets/helix.webp Binary files differnew file mode 100644 index 0000000..f2dca60 --- /dev/null +++ b/assets/helix.webp diff --git a/assets/humanstxt.gif b/assets/humanstxt.gif Binary files differnew file mode 100644 index 0000000..8a0445b --- /dev/null +++ b/assets/humanstxt.gif diff --git a/assets/images/icons/cross.png b/assets/images/icons/cross.png Binary files differnew file mode 100644 index 0000000..1514d51 --- /dev/null +++ b/assets/images/icons/cross.png diff --git a/assets/images/icons/heart.png b/assets/images/icons/heart.png Binary files differnew file mode 100644 index 0000000..d9ee53e --- /dev/null +++ b/assets/images/icons/heart.png diff --git a/assets/librefm.png b/assets/librefm.png Binary files differnew file mode 100644 index 0000000..a7abe10 --- /dev/null +++ b/assets/librefm.png diff --git a/assets/lunaisafox.gif.crdownload b/assets/lunaisafox.gif.crdownload Binary files differnew file mode 100644 index 0000000..bd507f7 --- /dev/null +++ b/assets/lunaisafox.gif.crdownload diff --git a/assets/made-on-gnu-linux.png b/assets/made-on-gnu-linux.png Binary files differnew file mode 100644 index 0000000..6afe660 --- /dev/null +++ b/assets/made-on-gnu-linux.png diff --git a/assets/marque.png b/assets/marque.png Binary files differnew file mode 100644 index 0000000..89526ef --- /dev/null +++ b/assets/marque.png diff --git a/assets/nix_dark.webp b/assets/nix_dark.webp Binary files differnew file mode 100644 index 0000000..b5a03b6 --- /dev/null +++ b/assets/nix_dark.webp diff --git a/assets/oli.gif b/assets/oli.gif Binary files differnew file mode 100644 index 0000000..78f4766 --- /dev/null +++ b/assets/oli.gif diff --git a/assets/oli.webp b/assets/oli.webp Binary files differnew file mode 100644 index 0000000..c142d70 --- /dev/null +++ b/assets/oli.webp diff --git a/assets/orange-team.svg b/assets/orange-team.svg new file mode 100644 index 0000000..348f51e --- /dev/null +++ b/assets/orange-team.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="247.767" height="30.002" viewBox="0 0 65.555 7.938"><path fill="#fff176" d="M0 0h31.006v7.938H0z"/><path fill="#fbc02d" d="M31.006 0h34.55v7.938h-34.55z"/><g fill="#1a1a1a"><path d="M5.2 2.8H4.117v.917q.215-.128.45-.128.353 0 .568.257t.215.7q0 .307-.124.545-.12.238-.34.37-.22.133-.513.133-.26 0-.463-.1-.197-.1-.376-.298l.243-.22q.133.142.27.215.137.07.316.07.266 0 .412-.183.147-.188.147-.536 0-.655-.495-.655-.1 0-.202.032-.092.027-.206.092H3.72V2.48h1.52zm1.806-.32v3.066h-.408V2.9l-.637.43-.188-.275.87-.587zm1.7-.05q.26 0 .45.1.192.105.293.293.1.183.1.417 0 .28-.1.532-.105.247-.344.555-.238.307-.733.87h1.256l-.05.34H7.9v-.32q.532-.614.774-.93.247-.316.344-.54.096-.23.096-.48 0-.243-.124-.376-.12-.133-.325-.133-.174 0-.302.078t-.266.247l-.257-.197q.335-.463.857-.463zm2.247-.038v3.153h-.426V2.392zm1.55 0-1.068 1.44 1.14 1.714h-.5L10.97 3.86l1.077-1.466z"/><use xlink:href="#a"/><path d="M18.6 2.333q.247 0 .43.078.183.073.362.234l-.22.257q-.133-.115-.266-.17-.128-.055-.284-.055-.357 0-.568.307-.2.302-.2.98 0 .66.2.976.2.312.568.312.18 0 .307-.064.128-.064.28-.188l.215.252q-.344.353-.825.353-.353 0-.628-.183-.27-.183-.426-.55-.15-.37-.15-.907 0-.532.156-.898.16-.367.43-.55.275-.183.62-.183zm2.05.06v2.8h1.15l-.046.362h-1.53V2.392zm3.8 2.228q0 .435-.26.7-.26.275-.747.275-.5 0-.747-.27-.257-.275-.257-.715V2.392h.426v2.2q0 .664.577.664t.577-.664v-2.2h.43z"/><use xlink:href="#a" x="12.236"/><path d="M34.658 2.303q.628 0 .967.426.34.422.34 1.237 0 .807-.344 1.237-.34.43-.962.43-.623 0-.967-.426-.34-.426-.34-1.242 0-.802.34-1.233.344-.43.967-.43zm0 .536q-.28 0-.412.26-.128.26-.128.866 0 .614.133.875.133.257.408.257.28 0 .408-.257.133-.26.133-.875 0-.605-.133-.866-.128-.26-.408-.26zm3.007 1.5h-.238v1.22h-.733V2.38h.93q.623 0 .93.243.307.238.307.72 0 .6-.536.857l.72 1.356h-.802zm-.238-.5h.225q.238 0 .348-.115.1-.12.1-.37 0-.23-.12-.335-.12-.1-.376-.1h-.188z"/><use xlink:href="#b"/><path d="M44.68 5.557h-.917l-.78-2.493q.01.055.01.092.04.33.064.6.023.266.023.62v1.182h-.642V2.38h.907l.793 2.498q-.1-.596-.1-1.187V2.38h.642zm2.126-3.254q.56 0 .972.4l-.357.376q-.156-.124-.3-.18-.128-.055-.293-.055-.32 0-.495.266-.174.26-.174.866 0 .435.06.683.06.243.18.344t.316.1q.206 0 .367-.1V4.25h-.353l-.07-.518h1.118v1.572q-.225.156-.5.243t-.55.087q-.674 0-1.004-.412-.325-.417-.325-1.256 0-.54.183-.917.183-.376.5-.56.316-.188.715-.188zm3.557.077-.078.522H49.3v.784h.862V4.2H49.3v.825h1.054v.532h-1.787V2.38zm4.007 0-.078.56H53.6v2.617h-.733V2.94h-.724v-.56zm2.385 0-.078.522h-.985v.784h.862V4.2h-.862v.825h1.054v.532H54.96V2.38z"/><use xlink:href="#b" x="17.86"/><path d="M63.21 5.557h-.7l-.04-1.256q-.018-.55-.018-.81 0-.32.01-.472l-.417 2.204h-.687l-.44-2.204q.018.348.018.738 0 .174-.01.56l-.04 1.242h-.697l.21-3.176h.917l.4 2.163.367-2.163h.92z"/></g><defs><path id="a" d="M14.547 3.877q.687.12.687.78 0 .45-.302.67t-.834.22h-.807V2.392h.683q.545 0 .84.202.293.202.293.59 0 .28-.156.458-.15.174-.403.234zm-.83-1.16v1.017h.394q.266 0 .412-.133.15-.137.15-.38 0-.266-.165-.385-.16-.12-.495-.12zm.385 2.493q.335 0 .513-.128.18-.133.18-.435 0-.596-.646-.596h-.43v1.16z"/><path id="b" d="m41.14 5.557-.142-.692h-.807l-.142.692h-.742l.857-3.176h.88l.852 3.176zm-.84-1.22h.587l-.293-1.42z"/></defs></svg>
\ No newline at end of file diff --git a/assets/php.webp b/assets/php.webp Binary files differnew file mode 100644 index 0000000..b07cca9 --- /dev/null +++ b/assets/php.webp diff --git a/assets/pulp_fiction.ico b/assets/pulp_fiction.ico Binary files differnew file mode 100644 index 0000000..b033dd8 --- /dev/null +++ b/assets/pulp_fiction.ico diff --git a/assets/sarascafe.gif b/assets/sarascafe.gif Binary files differnew file mode 100644 index 0000000..6695b95 --- /dev/null +++ b/assets/sarascafe.gif diff --git a/assets/site-button.png b/assets/site-button.png Binary files differnew file mode 100644 index 0000000..b6cd151 --- /dev/null +++ b/assets/site-button.png diff --git a/assets/site-button.webp b/assets/site-button.webp Binary files differnew file mode 100644 index 0000000..7fff003 --- /dev/null +++ b/assets/site-button.webp diff --git a/assets/stuff.gif b/assets/stuff.gif Binary files differnew file mode 100644 index 0000000..bd507f7 --- /dev/null +++ b/assets/stuff.gif diff --git a/assets/stuff.webp b/assets/stuff.webp Binary files differnew file mode 100644 index 0000000..d7cdbdb --- /dev/null +++ b/assets/stuff.webp diff --git a/assets/tallyhall.gif b/assets/tallyhall.gif Binary files differnew file mode 100644 index 0000000..828f60f --- /dev/null +++ b/assets/tallyhall.gif diff --git a/assets/tangled.png b/assets/tangled.png Binary files differnew file mode 100644 index 0000000..4bda7da --- /dev/null +++ b/assets/tangled.png diff --git a/assets/warning-page-contains-javascript.gif b/assets/warning-page-contains-javascript.gif Binary files differnew file mode 100644 index 0000000..dc66678 --- /dev/null +++ b/assets/warning-page-contains-javascript.gif diff --git a/assets/warning-page-contains-javascript.webp b/assets/warning-page-contains-javascript.webp Binary files differnew file mode 100644 index 0000000..cfeae74 --- /dev/null +++ b/assets/warning-page-contains-javascript.webp diff --git a/atproto/index.html b/atproto/index.html new file mode 100644 index 0000000..91092f2 --- /dev/null +++ b/atproto/index.html @@ -0,0 +1,50 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>ATProto webring</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> + <link rel="preconnect" href="https://libre.fm" /> + <link rel="stylesheet" href="/style.css" /> + </head> + <body> + <br /> + <nav> + <p></p> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> + </nav> + <h1>The ATProtocol webring</h1> + <p>This is a webring dedicated to members of the ATProtocol</p> + </body> +</html> diff --git a/blank.html b/blank.html new file mode 100644 index 0000000..c9b471a --- /dev/null +++ b/blank.html @@ -0,0 +1,38 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <title>/blank</title> + <link rel="icon" type="image/png" href="/assets/_.ico"/> +<link rel="stylesheet" href="/style.css" /> +</head> +<body> +<p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> +</p> +</body> +</html> diff --git a/contact.html b/contact.html new file mode 100644 index 0000000..798bfeb --- /dev/null +++ b/contact.html @@ -0,0 +1,103 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>/contact</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> + <link rel="stylesheet" href="/style.css" /> + </head> + + <body> + <nav> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> + </nav> + <h1>/contact</h1> + <p>Where can you find me?</p> + <p> + my handle in the ATmosphere is sophies.rocks, but heres a full list of + links. + </p> + <ul> + <li><a href="https://tangled.org/sophies.rocks">tangled.org</a></li> + <li><a href="https://go.bsky.app/profile/sophies.rocks">bluesky</a></li> + <li> + <a href="https://blog.sophies.rocks">leaflet</a>, also in the navbar. + </li> + <li> + IRC: sophies@libera.chat (i rarely talk on here, please message me on + xmpp if needed) + </li> + <li>XMPP: sophies@yax.im</li> + <li><a href="https://lobste.rs/~zelda">lobste.rs</a></li> + </ul> + <h2>email</h2> + <p> + My primary email is + <a href="mailto:sophies@disroot.org">sophies@disroot.org</a> + </p> + <p>My secondary email is<a href="mailto:sophie@qwq.sh">sophie@qwq.sh</a></p> + <p>My gpg key is:</p> + <pre class="pgp-key"> +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEao6haBYJKwYBBAHaRw8BAQdAHduoS7AzzvVrVUxH2HtlCJBkxB/K70xPJD+X +vOr7S4+0IlpvZmlhIFN6d2VkYSA8c29waGllc0BkaXNyb290Lm9yZz6IkAQTFgoA +OBYhBDJYsowSSrCJHWyekptykJ7vAMvQBQJqjqFoAhsBBQsJCAcCBhUKCQgLAgQW +AgMBAh4BAheAAAoJEJtykJ7vAMvQRw8BAIaaxpzUWNwA7zb7d9sCAjGL0GLBlsWL +QxMcE6BxJEdyAP0UfohhRt4rP6BM9jDqyBpuZ+ypIwABPIzs6usYODRuCbg4BGqO +oYoSCisGAQQBl1UBBQEBB0DQt1EZabjLldglY/I+vx+RSJmth2hWd1LpFfg78+Cx +BgMBCAeIeAQYFgoAIBYhBDJYsowSSrCJHWyekptykJ7vAMvQBQJqjqGKAhsMAAoJ +EJtykJ7vAMvQ0V4BAOGc4/8fm/58NVgCQAgvA8+FnOFt+sVrNM2/fAb1QtePAQCx +E3Yi87YfNOrJ12MWuy0/ZB7eTXM5l7IjKGnSXtKoArgzBGqOpLIWCSsGAQQB2kcP +AQEHQA9P4PQrSoIMkzD83+wm2UWVKJXNS6eafIy+PjXWUSO3iO8EGBYKACAWIQQy +WLKMEkqwiR1snpKbcpCe7wDL0AUCao6ksgIbAgCBCRCbcpCe7wDL0HYgBBkWCgAd +FiEEGlwtrqDKgG589MwsQ7ExqaH7TasFAmqOpLIACgkQQ7ExqaH7TatVMwEA947/ +KME2uHuQRV4epPbn+MgfTKtVDzol41RQHv2GUH8A/jNoD9WUnbiX7nIG2zFWiIVB +xkvmj5eMTCznyN091QAKTw8BAMP97VQOduWrLROga6oU6TPw1xrPIWzkM3TSr+pY +i7cXAP0buK+/cs1h+uocQKzojIvuF7joZD/h+P7n5+7V93+0Ag== +=Oo4W +-----END PGP PUBLIC KEY BLOCK----- +</pre> + <p><a href="/gpg-key.asc" download="/gpg-key.asc">gpg-key.asc</a></p> + <span> + <br /> + <hr /> + <br /> + </span> + <p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> + </p> + </body> +</html> diff --git a/counter.php b/counter.php new file mode 100644 index 0000000..0ec74d2 --- /dev/null +++ b/counter.php @@ -0,0 +1,69 @@ +<?php +// sophies.rocks +// Copyright (C) 2026 Zofia Szweda +// This file is part of sophies.rocks. +// sophies.rocks is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of +// the License, or (at your option) any later version. +// sophies.rocks is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// You should have received a copy of the GNU Affero General Public License +// along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +$dbPath = '/var/lib/sophii-counter/counter.db'; +$robotsPath = '/var/www/html/robots.txt'; + +function isKnownBot(string $userAgent, string $robotsPath): bool { + if ($userAgent === '') { + return true; + } + + if (!is_readable($robotsPath)) { + return false; + } + + static $botNames = null; + if ($botNames === null) { + $botNames = []; + foreach (file($robotsPath, FILE_IGNORE_NEW_LINES) as $line) { + if (preg_match('/^User-agent:\s*(.+)$/i', trim($line), $m)) { + $name = trim($m[1]); + if (preg_match('/^[A-Za-z0-9 _\-\.]+$/', $name) && strlen($name) > 2) { + $botNames[] = $name; + } + } + } + } + + foreach ($botNames as $bot) { + if (stripos($userAgent, $bot) !== false) { + return true; + } + } + + $genericPatterns = '/curl|wget|python-requests|go-http-client|scrapy|headless/i'; + if (preg_match($genericPatterns, $userAgent)) { + return true; + } + return false; +} + +$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? ''; +$isBot = isKnownBot($userAgent, $robotsPath); + +$db = new SQLite3($dbPath); +$db->busyTimeout(2000); +$db->exec('CREATE TABLE IF NOT EXISTS hits (id INTEGER PRIMARY KEY, count INTEGER)'); +$db->exec('INSERT OR IGNORE INTO hits (id, count) VALUES (1, 0)'); + +if (!$isBot) { + $stmt = $db->prepare('UPDATE hits SET count = count + 1 WHERE id = 1'); + $stmt->execute(); +} + +$result = $db->querySingle('SELECT count FROM hits WHERE id = 1'); + +header('Content-Type: text/plain'); +echo $result; diff --git a/fakeindex.html b/fakeindex.html new file mode 100644 index 0000000..7264f5f --- /dev/null +++ b/fakeindex.html @@ -0,0 +1,70 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>sophies website or something</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> + <link rel="preconnect" href="https://libre.fm" /> + <link rel="stylesheet" href="/style.css" /> + </head> + <body> + <style> + #page { + visibility: hidden; + } + </style> + <div id="page"> + <h1>404, again</h1> + <p> + did you actually think that that link would lead you to the actual home + page after you just tried to open a non-existent file? + </p> + <p> + are you so entitled to a link back to the home page that you can't type + the url yourself? + </p> + <p> + you realize that you just thought a 404 page with THAT wording would + bring you back home? + </p> + + <p> + well guess what, fucko, it won't, now move your fat fucking fingers on + your stupid dumb moron idiot body and type the sweet url of + "https://sophies.rocks" in the url bar of your shitty little browser + </p> + <p>fuck you</p> + </div> + + <script> + //<![CDATA[ + setTimeout(() => { + document.getElementById("page").style.visibility = "visible"; + }, 4000); + //]]> + </script> + </body> +</html> diff --git a/fonts/APACHE-IBMPlex.txt b/fonts/APACHE-IBMPlex.txt new file mode 100644 index 0000000..1becba2 --- /dev/null +++ b/fonts/APACHE-IBMPlex.txt @@ -0,0 +1 @@ +404: Not Found
\ No newline at end of file diff --git a/fonts/AtkinsonHyperlegible-Bold.woff2 b/fonts/AtkinsonHyperlegible-Bold.woff2 Binary files differnew file mode 100644 index 0000000..bc31903 --- /dev/null +++ b/fonts/AtkinsonHyperlegible-Bold.woff2 diff --git a/fonts/AtkinsonHyperlegible-Regular.woff2 b/fonts/AtkinsonHyperlegible-Regular.woff2 Binary files differnew file mode 100644 index 0000000..2e43c90 --- /dev/null +++ b/fonts/AtkinsonHyperlegible-Regular.woff2 diff --git a/fonts/Atkinson_Hyperlegible_Next/AtkinsonHyperlegibleNext-Italic-VariableFont_wght.ttf b/fonts/Atkinson_Hyperlegible_Next/AtkinsonHyperlegibleNext-Italic-VariableFont_wght.ttf Binary files differnew file mode 100644 index 0000000..3d4593a --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/AtkinsonHyperlegibleNext-Italic-VariableFont_wght.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/AtkinsonHyperlegibleNext-VariableFont_wght.ttf b/fonts/Atkinson_Hyperlegible_Next/AtkinsonHyperlegibleNext-VariableFont_wght.ttf Binary files differnew file mode 100644 index 0000000..b35873a --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/AtkinsonHyperlegibleNext-VariableFont_wght.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/README.txt b/fonts/Atkinson_Hyperlegible_Next/README.txt new file mode 100644 index 0000000..f62ffba --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/README.txt @@ -0,0 +1,77 @@ +Atkinson Hyperlegible Next Variable Font +======================================== + +This download contains Atkinson Hyperlegible Next as both variable fonts and static fonts. + +Atkinson Hyperlegible Next is a variable font with this axis: + wght + +This means all the styles are contained in these files: + AtkinsonHyperlegibleNext-VariableFont_wght.ttf + AtkinsonHyperlegibleNext-Italic-VariableFont_wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Atkinson Hyperlegible Next: + static/AtkinsonHyperlegibleNext-ExtraLight.ttf + static/AtkinsonHyperlegibleNext-Light.ttf + static/AtkinsonHyperlegibleNext-Regular.ttf + static/AtkinsonHyperlegibleNext-Medium.ttf + static/AtkinsonHyperlegibleNext-SemiBold.ttf + static/AtkinsonHyperlegibleNext-Bold.ttf + static/AtkinsonHyperlegibleNext-ExtraBold.ttf + static/AtkinsonHyperlegibleNext-ExtraLightItalic.ttf + static/AtkinsonHyperlegibleNext-LightItalic.ttf + static/AtkinsonHyperlegibleNext-Italic.ttf + static/AtkinsonHyperlegibleNext-MediumItalic.ttf + static/AtkinsonHyperlegibleNext-SemiBoldItalic.ttf + static/AtkinsonHyperlegibleNext-BoldItalic.ttf + static/AtkinsonHyperlegibleNext-ExtraBoldItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Bold.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Bold.ttf Binary files differnew file mode 100644 index 0000000..a23aed3 --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Bold.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-BoldItalic.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-BoldItalic.ttf Binary files differnew file mode 100644 index 0000000..a7f6ca2 --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-BoldItalic.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraBold.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraBold.ttf Binary files differnew file mode 100644 index 0000000..5f9382e --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraBold.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraBoldItalic.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraBoldItalic.ttf Binary files differnew file mode 100644 index 0000000..57d1dc9 --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraBoldItalic.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraLight.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraLight.ttf Binary files differnew file mode 100644 index 0000000..4e98123 --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraLight.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraLightItalic.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraLightItalic.ttf Binary files differnew file mode 100644 index 0000000..a29b82a --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-ExtraLightItalic.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Italic.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Italic.ttf Binary files differnew file mode 100644 index 0000000..720c6dd --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Italic.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Light.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Light.ttf Binary files differnew file mode 100644 index 0000000..d40671d --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Light.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-LightItalic.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-LightItalic.ttf Binary files differnew file mode 100644 index 0000000..326a70d --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-LightItalic.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Medium.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Medium.ttf Binary files differnew file mode 100644 index 0000000..613b600 --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Medium.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-MediumItalic.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-MediumItalic.ttf Binary files differnew file mode 100644 index 0000000..0814f5f --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-MediumItalic.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Regular.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Regular.ttf Binary files differnew file mode 100644 index 0000000..3fa771f --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-Regular.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-SemiBold.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-SemiBold.ttf Binary files differnew file mode 100644 index 0000000..1764f33 --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-SemiBold.ttf diff --git a/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-SemiBoldItalic.ttf b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-SemiBoldItalic.ttf Binary files differnew file mode 100644 index 0000000..4371c62 --- /dev/null +++ b/fonts/Atkinson_Hyperlegible_Next/static/AtkinsonHyperlegibleNext-SemiBoldItalic.ttf diff --git a/fonts/IBMPlexMono-Regular.woff2 b/fonts/IBMPlexMono-Regular.woff2 Binary files differnew file mode 100644 index 0000000..0804aaf --- /dev/null +++ b/fonts/IBMPlexMono-Regular.woff2 diff --git a/fonts/IBMPlexSerif-Bold.woff2 b/fonts/IBMPlexSerif-Bold.woff2 Binary files differnew file mode 100644 index 0000000..a0037df --- /dev/null +++ b/fonts/IBMPlexSerif-Bold.woff2 diff --git a/fonts/IBMPlexSerif-Regular.woff2 b/fonts/IBMPlexSerif-Regular.woff2 Binary files differnew file mode 100644 index 0000000..dfe0ebe --- /dev/null +++ b/fonts/IBMPlexSerif-Regular.woff2 diff --git a/fonts/NOTICE b/fonts/NOTICE new file mode 100644 index 0000000..589c55c --- /dev/null +++ b/fonts/NOTICE @@ -0,0 +1,11 @@ +Third-party fonts bundled in this repository: + +Atkinson Hyperlegible + Copyright 2020 Braille Institute of America, Inc. + Licensed under the SIL Open Font License, v1.1 + See OFL-AtkinsonHyperlegible.txt + +IBM Plex Serif / IBM Plex Mono + Copyright 2017 IBM Corp. + Licensed under SIL OFL v1.1 and Apache License 2.0 (dual) + See OFL-IBMPlex.txt and APACHE-IBMPlex.txt diff --git a/fonts/OFL-AtkinsonHyperlegible.txt b/fonts/OFL-AtkinsonHyperlegible.txt new file mode 100644 index 0000000..2befc89 --- /dev/null +++ b/fonts/OFL-AtkinsonHyperlegible.txt @@ -0,0 +1,92 @@ +Copyright 2020 Braille Institute of America, Inc. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/fonts/OFL-AtkinsonHyperlegibleNext.txt b/fonts/OFL-AtkinsonHyperlegibleNext.txt new file mode 100644 index 0000000..e71810b --- /dev/null +++ b/fonts/OFL-AtkinsonHyperlegibleNext.txt @@ -0,0 +1,93 @@ +Copyright 2020-2024 The Atkinson Hyperlegible Next Project Authors (https://github.com/googlefonts/atkinson-hyperlegible-next)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/fonts/OFL-IBMPlex.txt b/fonts/OFL-IBMPlex.txt new file mode 100644 index 0000000..c35c4c6 --- /dev/null +++ b/fonts/OFL-IBMPlex.txt @@ -0,0 +1,93 @@ +Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/fonts/PF.woff2 b/fonts/PF.woff2 Binary files differnew file mode 100644 index 0000000..e6fae25 --- /dev/null +++ b/fonts/PF.woff2 diff --git a/fonts/aachen-bold/Aachen Bold/Aachen Bold.otf b/fonts/aachen-bold/Aachen Bold/Aachen Bold.otf Binary files differnew file mode 100644 index 0000000..ffe2f2a --- /dev/null +++ b/fonts/aachen-bold/Aachen Bold/Aachen Bold.otf diff --git a/fonts/aachen-bold/Aachen Bold/readme.html b/fonts/aachen-bold/Aachen Bold/readme.html new file mode 100644 index 0000000..7e0e3c2 --- /dev/null +++ b/fonts/aachen-bold/Aachen Bold/readme.html @@ -0,0 +1,190 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="theme-color" content="#f8efdf" /> + <meta name="viewport" content="width=device-width" /> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + + <meta http-equiv="refresh" content="5;url=?ref=readme"> + <title></title> + <style> +/* ------------------------------------- + GLOBAL + ------------------------------------- */ + * { + margin:0; + padding:0; + font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; + font-size: 100%; + line-height: 1.6; + } + + img { + max-width: 100%; + } + + body { + -webkit-font-smoothing:antialiased; + -webkit-text-size-adjust:none; + width: 100%!important; + height: 100%; + background:#DDD; + } + + + /* ------------------------------------- + ELEMENTS + ------------------------------------- */ + a { + color: #348eda; + } + + .btn-primary, .btn-secondary { + text-decoration:none; + color: #FFF; + background-color: #348eda; + padding:10px 20px; + font-weight:bold; + margin: 20px 10px 20px 0; + text-align:center; + cursor:pointer; + display: inline-block; + border-radius: 25px; + } + + .btn-secondary{ + background: #aaa; + } + + .last { + margin-bottom: 0; + } + + .first{ + margin-top: 0; + } + + + /* ------------------------------------- + BODY + ------------------------------------- */ + table.body-wrap { + width: 100%; + padding: 20px; + } + + table.body-wrap .container{ + border: 1px solid #f0f0f0; + } + + + /* ------------------------------------- + FOOTER + ------------------------------------- */ + table.footer-wrap { + width: 100%; + clear:both!important; + } + + .footer-wrap .container p { + font-size:12px; + color:#666; + + } + + table.footer-wrap a{ + color: #999; + } + + + /* ------------------------------------- + TYPOGRAPHY + ------------------------------------- */ + h1,h2,h3{ + font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; line-height: 1.1; margin-bottom:15px; color:#000; + margin: 40px 0 10px; + line-height: 1.2; + font-weight:200; + } + + h1 { + font-size: 36px; + } + h2 { + font-size: 28px; + } + h3 { + font-size: 22px; + } + + p, ul { + margin-bottom: 10px; + font-weight: normal; + font-size:14px; + } + + ul li { + margin-left:5px; + list-style-position: inside; + } + + /* --------------------------------------------------- + RESPONSIVENESS + Nuke it from orbit. It's the only way to be sure. + ------------------------------------------------------ */ + + /* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */ + .container { + display:block!important; + max-width:600px!important; + margin:0 auto!important; /* makes it centered */ + clear:both!important; + } + + /* This should also be a block element, so that it will fill 100% of the .container */ + .content { + padding:20px; + max-width:600px; + margin:0 auto; + display:block; + } + + /* Let's make sure tables in the content area are 100% wide */ + .content table { + width: 100%; + } + + </style> + </head> + + <body bgcolor="#f6f6f6"> + + <!-- body --> + <table class="body-wrap"> + <tr> + <td></td> + <td class="container" bgcolor="#FFFFFF"> + + <!-- content --> + <div class="content"> + <table> + <tr> + <td> + <h1></h1> + <p>This font was downloaded from <a href="?ref=readme"></a> . You can visit <a href="?ref=readme"></a> for hundreds of free fonts.</p> + <p><a href="?ref=readme" class="btn-primary">View Charmap and other information</a> <a href="?ref=readme" class="btn-primary">Browse other free fonts</a></p> + <p>You will be shortly redirected to </p> + </td> + </tr> + </table> + </div> + <!-- /content --> + + </td> + <td></td> + </tr> + </table> + <!-- /body --> + + </body> +</html> diff --git a/girl.html b/girl.html new file mode 100644 index 0000000..3730d93 --- /dev/null +++ b/girl.html @@ -0,0 +1,66 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + +<head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>/girl</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> +<link rel="stylesheet" href="/style.css" /> +</head> + +<body> + <nav> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> +</nav> + <h1>/girl</h1> + <p>I am a...</p> + <ul> + <li>trans girl</li> + <li>book girl</li> + <li>deer girl</li> + <li>coding girl</li> + <li>ATmospheric girl</li> + <li>space girl</li> + <li>cute girl</li> + <li>racket girl</li> + <li>lispy girl (like the language!)</li> + </ul> +<p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> +</p> +</body> + +</html> diff --git a/gpg-key.asc b/gpg-key.asc new file mode 100644 index 0000000..ea1e06e --- /dev/null +++ b/gpg-key.asc @@ -0,0 +1,19 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEao6haBYJKwYBBAHaRw8BAQdAHduoS7AzzvVrVUxH2HtlCJBkxB/K70xPJD+X +vOr7S4+0IlpvZmlhIFN6d2VkYSA8c29waGllc0BkaXNyb290Lm9yZz6IkAQTFgoA +OBYhBDJYsowSSrCJHWyekptykJ7vAMvQBQJqjqFoAhsBBQsJCAcCBhUKCQgLAgQW +AgMBAh4BAheAAAoJEJtykJ7vAMvQRw8BAIaaxpzUWNwA7zb7d9sCAjGL0GLBlsWL +QxMcE6BxJEdyAP0UfohhRt4rP6BM9jDqyBpuZ+ypIwABPIzs6usYODRuCbg4BGqO +oYoSCisGAQQBl1UBBQEBB0DQt1EZabjLldglY/I+vx+RSJmth2hWd1LpFfg78+Cx +BgMBCAeIeAQYFgoAIBYhBDJYsowSSrCJHWyekptykJ7vAMvQBQJqjqGKAhsMAAoJ +EJtykJ7vAMvQ0V4BAOGc4/8fm/58NVgCQAgvA8+FnOFt+sVrNM2/fAb1QtePAQCx +E3Yi87YfNOrJ12MWuy0/ZB7eTXM5l7IjKGnSXtKoArgzBGqOpLIWCSsGAQQB2kcP +AQEHQA9P4PQrSoIMkzD83+wm2UWVKJXNS6eafIy+PjXWUSO3iO8EGBYKACAWIQQy +WLKMEkqwiR1snpKbcpCe7wDL0AUCao6ksgIbAgCBCRCbcpCe7wDL0HYgBBkWCgAd +FiEEGlwtrqDKgG589MwsQ7ExqaH7TasFAmqOpLIACgkQQ7ExqaH7TatVMwEA947/ +KME2uHuQRV4epPbn+MgfTKtVDzol41RQHv2GUH8A/jNoD9WUnbiX7nIG2zFWiIVB +xkvmj5eMTCznyN091QAKTw8BAMP97VQOduWrLROga6oU6TPw1xrPIWzkM3TSr+pY +i7cXAP0buK+/cs1h+uocQKzojIvuF7joZD/h+P7n5+7V93+0Ag== +=Oo4W +-----END PGP PUBLIC KEY BLOCK----- diff --git a/hello.html b/hello.html new file mode 100644 index 0000000..deb869b --- /dev/null +++ b/hello.html @@ -0,0 +1,60 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + +<head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>/hello</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> +<link rel="stylesheet" href="/style.css" /> +</head> + +<body> + <nav> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> +</nav> + <h1>/hello</h1> + <p>(how i prefer to keep in touch)</p> + <br /> + <p>The main way i'd like for anyone interested to contact me is via email, my inbox is at <a + href="mailto:sophie@qwq.sh">sophie@qwq.sh</a>, hosted on mail.qwq.sh by my friend <a + href="https://qwq.sh">hazel!</a></p> + <p>If this is unavailable, you can /msg <code>sophies</code> on libera.chat.</p> +<p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> +</p> +</body> + +</html> diff --git a/humans.txt b/humans.txt new file mode 100644 index 0000000..893bd14 --- /dev/null +++ b/humans.txt @@ -0,0 +1,9 @@ +Webmaster: Zofia Szweda + Contact: sophie@qwq.sh + Bluesky: sophii.xyz + From: Pomerania, Poland + +PR, Help with Javascript: Mad_Mage + Twitter: Mad_Mage_Dev + From: U.S + diff --git a/index.html b/index.html new file mode 100644 index 0000000..50c75e3 --- /dev/null +++ b/index.html @@ -0,0 +1,305 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>sophies website or something</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> + <link rel="preconnect" href="https://libre.fm" /> + <link rel="stylesheet" href="/style.css" /> + </head> + <body> + <script src="https://keepandroidopen.org/banner.js?size=minimal&animation=off"></script> + <br /> + <nav> + <p></p> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> + </nav> + <h1>sophies.rocks</h1> + <p id="visitor-count">you are visitor: ...</p> + <section id="recent"> + <h2>Recent</h2> + <div class="recent-grid"> + <div class="recent-column"> + <div id="recent-publications" class="recent-box"> + <h3>Publications</h3> + <ul> + <li>Loading...</li> + </ul> + </div> + <div id="recent-now" class="recent-box"> + <h3>Changelog</h3> + <ul> + <li> + <time datetime="2026-08-29">2026-08-29</time> + <p> + Swapped the IRC section in + <a href="/uses.html">uses.html</a> + for XMPP + </p> + </li> + <li> + <time datetime="2026-08-29">2026-08-29</time> + <p> + Add a section for ATproto in <a href="/uses.html">/uses</a> + </p> + </li> + <li> + <time datetime="2026-08-27">2026-08-27</time> + <p>Added this beatiful changelog you're reading right now,</p> + <p> + also swap out Atkinson Hyperlegible for Atkinson Hyperlegible + Next + </p> + </li> + </ul> + </div> + </div> + <div id="recent-scrobbles" class="recent-box"> + <h3>Listening</h3> + <ul> + <li>Loading...</li> + </ul> + </div> + </div> + </section> + <h2>where the <code>/bin/fsck</code> am I?!</h2> + <p> + you're in my website! a personal one, of a polish furry transfemme + programmer + </p> + <p>i like writing, and linux, and space, i like alot of things!</p> + <p>i hope you like it in here! :D</p> + <p>fun fact: every single page* here is compatible with XHTML.</p> + <p> + in this websites Caddyfile, the content-type is set to xhtml, and every + html tag has <code>xmlns="http://www.w3.org/1999/xhtml"</code> inside. + </p> + <p> + (the reason theres an asterisks is because i cant control the scripts + inside webrings.html) + </p> + <p> + (which also means that i would have to download every script and fix it + myself) + </p> + <p>(which i dont really wanna do)</p> + <hr /> + <!-- this for some reason HAS to be on the front page --> + <div style="text-align: center"> + <a href="https://nixwebr.ing/prev/sophie" target="_top"> prev |</a> + <a href="https://nixwebr.ing"> nix webring </a> + <a style="font-size: 60%" href="https://nixwebr.ing/rand" target="_top" + >(random)</a + > + <a href="https://nixwebr.ing/next/sophie" target="_top"> | next</a> + </div> + <footer class="buttons"> + <a href="https://sophies.rocks"> + <img + src="/assets/eightyeight.png" + alt="my 88x31 button!" + title="hey its me!" + /> + </a> + <a href="https://swimming.cat"> + <img + src="/assets/site-button.webp" + alt="swimming.cat" + title="ashley website!!" + /> + </a> + <a href="https://oli.xenia.gay"> + <img src="/assets/oli.gif" alt="oli.xenia.gay" /> + </a> + <a href="http://lunaisafox.xyz"> + <img src="/assets/stuff.gif" alt="lunaisafox.xyz" /> + </a> + <a href="https://8bitosc.net"> + <img + src="https://8bitosc.net/img/88x31/jay.gif" + width="88" + height="31" + alt="https://8bitosc.net" + /> + </a> + <a + href="https://devhumor.com/content/uploads/images/June2018/thanks_javascript.png" + > + <img + class="_88x31" + src="/assets/warning-page-contains-javascript.gif" + alt="Warning: Page contains JavaScript!" + title="I HATE JAVASCRIPT!!!!!" + /> + </a> + <img + src="/assets/made-on-gnu-linux.png" + width="88" + height="31" + alt="made on gnu/linux" + title="this is fact-checked by true sophies." + /> + <a href="https://nixos.org"> + <img + src="/assets/nix_dark.webp" + alt="i use nix btw" + title="hnngh nix hhgnnghghn" + width="88" + height="31" + /> + </a> + <a href="https://gnu.org" + ><img + src="/assets/gnu.webp" + alt="gnu.org" + title="gnu's not unlikely" + width="88" + height="31" + /></a> + <a href="https://gnu.org" + ><img + src="/assets/agpl.png" + alt="agpl free software, made with freedom" + title="there is a license header in each file. i love gnu and gpl!" + /></a> + <a href="https://helix-editor.com" + ><img + src="/assets/helix.webp" + alt="made with helix" + title="i believe in helix supremacy" + width="88" + height="31" + /></a> + <a href="https://caddy.com"> + <img + src="/assets/caddy.png" + alt="caddy.com" + title="this website runs on caddy!" + width="88" + height="31" + /> + </a> + <a href="https://512kb.club"> + <img + src="/assets/orange-team.svg" + alt="512kb.club" + title="my website is under 250 kb!" + width="88" + height="31" + /> + </a> + <a href="/humans.txt"> + <img + src="/assets/humanstxt.gif" + alt="humans.txt of this website" + title="the web is made for humans" + /> + </a> + <a href="https://go.bsky.app/profile/sophies.rocks" + ><img + src="/assets/bluesky.png" + alt="bsky.app/sophies.rocks - my bluesky profile" + title="follow me on bluesky!" + /></a> + <a href="https://php.net" + ><img src="/assets/php.webp" alt="https://php.net" title="i hate php" + /></a> + <a href="https://libre.fm" + ><img + src="/assets/librefm.png" + alt="https://libre.fm" + title="libre.fm > last.fm" + /></a> + <a href="https://tangled.org" + ><img + src="/assets/tangled.png" + alt="https://tangled.org" + title="tangled.org rules (i made this button!)" + /></a> + <a href="https://tallyhall.com" + ><img + src="/assets/tallyhall.gif" + alt="https://tallyhall.com" + title="tally hall is the best band" + /></a> + + <a href="https://petrapixel.neocities.org/" target="_blank" + ><img + src="https://cdn.jsdelivr.net/gh/petracoding/petrapixel.neocities.org@latest/public/assets/img/linkback.gif" + alt="petrapixel" + title="tarantino webring is on petrapixel's webring list" + /></a> + <a href="https://marque.at/" + ><img + src="/assets/marque.png" + alt="https://marque.at" + title="marque bought me sophies.rocks domain i love them" + /></a> + <a href="sarascafe.lenowo.org" + ><img + src="/assets/sarascafe.gif" + alt="sarascafe" + title="cool and smart people on this website" + /></a> + </footer> + <p class="button-code-label"> + if you want to link back, PLEASE DONT HOTLINK! it hurts my little pi, + instead save the image and do: + </p> + <pre><code><a href="https://sophies.rocks"><img src="/path/to/badge.png" width="88" height="31" + alt="sophies.rocks"></a></code></pre> + <script> + //<![CDATA[ + fetch("/counter.php") + .then((r) => r.text()) + .then((n) => { + document.getElementById("visitor-count").textContent = + `you are visitor: ${n}`; + }) + .catch(() => { + document.getElementById("visitor-count").textContent = + "you are visitor: ???"; + }); + //]]> + </script> + <script src="/scrobbles.js" defer="defer"></script> + <script src="/publications.js" defer="defer"></script> + + <p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> + </p> + </body> +</html> diff --git a/jsonifyleaflet.sh b/jsonifyleaflet.sh new file mode 100644 index 0000000..8aba7a5 --- /dev/null +++ b/jsonifyleaflet.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# +# sophii.xyz +# +# Copyright (C) 2026 Zofia Szweda +# +# This file is part of sophii.xyz. +# +# sophii.xyz is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# sophii.xyz is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with sophii.xyz. If not, see <https://www.gnu.org/licenses/>. +# +set -euo pipefail + + +SOURCE_URL="https://tranquil.farm/xrpc/com.atproto.repo.listRecords?repo=did:plc:mkuwwd3sphy6gs3teatnr7eh&collection=site.standard.document&limit=5" +BLOG_BASE="https://blog.sophii.xyz" +OUT_FILE="publications.json" + + +curl -sf "$SOURCE_URL" | jq --arg base "$BLOG_BASE" ' + [.records[].value | { + title: .title, + date: .publishedAt, + url: ($base + .path) + }] +' > "$OUT_FILE" +chmod a+r "$OUT_FILE" +echo "Wrote $(jq length "$OUT_FILE") publications to $OUT_FILE" diff --git a/now.html b/now.html new file mode 100644 index 0000000..862efeb --- /dev/null +++ b/now.html @@ -0,0 +1,62 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + +<head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>/now</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> +<link rel="stylesheet" href="/style.css" /> +</head> + +<body> + <nav> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> +</nav> + <h1>/now</h1> + <p>I am currently trying to learn GNU Guile Scheme, the official extension language of GNU!</p> + <p>I'm also developing this website, trying to finish all the slashpages.</p> + <p>If you want a more up-to-date "now" page, read my finger!</p> + <p>Simply install the finger client on your computer, and run: + <pre><code>finger sophie@sophies.rocks</code></pre> + </p> + + +<p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> +</p> +</body> + +</html> diff --git a/publications.js b/publications.js new file mode 100644 index 0000000..98867f8 --- /dev/null +++ b/publications.js @@ -0,0 +1,50 @@ +/* + * sophies.rocks + * + * Copyright (C) 2026 Zofia Szweda + * + * This file is part of sophies.rocks. + * + * sophies.rocks is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * sophies.rocks is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. + */ +function escapeXml(str) { + return String(str) + .replace(/&/g, '&') + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +async function renderPublications() { + const list = document.querySelector('#recent-publications ul'); + try { + const res = await fetch('/publications.json'); + const posts = await res.json(); + if (posts.length === 0) { + list.innerHTML = '<li>No publications yet.</li>'; + return; + } + list.innerHTML = posts.map(p => ` + <li> + <a href="${escapeXml(p.url)}">${escapeXml(p.title.trim())}</a> + ${p.date ? `<div>${escapeXml(new Date(p.date).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' }))}</div>` : ''} + </li> + `).join(''); + } catch (err) { + console.error('Failed to load publications:', err); + list.innerHTML = "<li>Couldn't load publications right now.</li>"; + } +} +renderPublications(); diff --git a/publications.json b/publications.json new file mode 100644 index 0000000..c5fc6d0 --- /dev/null +++ b/publications.json @@ -0,0 +1,27 @@ +[ + { + "title": "Rings & Clubs on the web", + "date": "2026-08-21T07:13:32.017Z", + "url": "https://blog.sophii.xyz/3mtl7jxuebc2p" + }, + { + "title": "The Mog Electric", + "date": "2026-08-18T20:24:50.808Z", + "url": "https://blog.sophii.xyz/3mtf2e7qdo22m" + }, + { + "title": "misery*\nby pupsies**", + "date": "2026-08-15T15:58:08.191Z", + "url": "https://blog.sophii.xyz/3mt522j4t5s2i" + }, + { + "title": "finger", + "date": "2026-08-14T15:06:50.786Z", + "url": "https://blog.sophii.xyz/3mt2gpvfmn22b" + }, + { + "title": "fossilized\n", + "date": "2026-08-10T11:15:05.714Z", + "url": "https://blog.sophii.xyz/3mspxvqy3rk2c" + } +] diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..f75f316 --- /dev/null +++ b/readme.txt @@ -0,0 +1,5 @@ +this is my website, hosted at https://sophii.xyz +yay! + +License: GNU Affero General Public License v3.0 or later +See COPYING for the full text, or https://www.gnu.org/licenses/ diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..f270503 --- /dev/null +++ b/robots.txt @@ -0,0 +1,316 @@ + +User-agent: 2^32$ +User-agent: AddSearchBot +User-agent: AdsBot-Google +User-agent: Agentic +User-agent: AhrefsBot +User-agent: .ai +User-agent: AI21 Labs +User-agent: AI2Bot +User-agent: Ai2Bot-Dolma +User-agent: AI2Bot-Dolma +User-agent: AI Article Writer +User-agent: AIBot +User-agent: AI Content Detector +User-agent: AI Dungeon +User-agent: aiHitBot +User-agent: AIMatrix +User-agent: AISearchBot +User-agent: AI Search Engine +User-agent: AI SEO Crawler +User-agent: AI Training +User-agent: AITraining +User-agent: AI Writer +User-agent: Alexa +User-agent: Alpha AI +User-agent: AlphaAI +User-agent: a[mazing]{42}(robot) +User-agent: Amazon Bedrock +User-agent: Amazonbot +User-agent: AmazonBot +User-agent: Amazon Comprehend +User-agent: Amazon-Kendra +User-agent: Amazon Lex +User-agent: Amazon Sagemaker +User-agent: Amazon Silk +User-agent: Amazon Textract +User-agent: Amelia +User-agent: AndersPinkBot +User-agent: Andibot +User-agent: Anthropic +User-agent: anthropic-ai +User-agent: AnyPicker +User-agent: Anyword +User-agent: Applebot +User-agent: Applebot-Extended +User-agent: Aria Browse +User-agent: Articoolo +User-agent: Automated Writer +User-agent: Awario +User-agent: AwarioBot +User-agent: AwarioRssBot +User-agent: AwarioSmartBot +User-agent: Azure +User-agent: BardBot +User-agent: bedrockbot +User-agent: bigsur.ai +User-agent: BLEXBot +User-agent: Brave Leo +User-agent: Brightbot 1.0 +User-agent: ByteDance +User-agent: Bytespider +User-agent: CatBoost +User-agent: CCBot +User-agent: CC-Crawler +User-agent: ChatGLM +User-agent: ChatGPT Agent +User-agent: ChatGPT-User +User-agent: ChatGPT-User/2.0 +User-agent: Chinchilla +User-agent: Claude +User-agent: ClaudeBot +User-agent: Claude-SearchBot +User-agent: Claude-User +User-agent: claude-web +User-agent: Claude-Web +User-agent: ClearScope +User-agent: CloudVertexBot +User-agent: Cohere +User-agent: cohere-ai +User-agent: cohere-training-data-crawler +User-agent: Common Crawl +User-agent: CommonCrawl +User-agent: ContentAtScale +User-agent: ContentBot +User-agent: Contentedge +User-agent: Content Harmony +User-agent: Content King +User-agent: Content Optimizer +User-agent: Content Samurai +User-agent: Conversion AI +User-agent: Copilot +User-agent: CopyAI +User-agent: Copymatic +User-agent: Copyscape +User-agent: Cotoyogi +User-agent: crawler.with.dots +User-agent: CrawlQ AI +User-agent: Crawlspace +User-agent: Crew AI +User-agent: CrewAI +User-agent: curl|sudo bash +User-agent: DALL-E +User-agent: DataForSeoBot +User-agent: DataProvider +User-agent: Datenbank Crawler +User-agent: DeepAI +User-agent: DeepL +User-agent: DeepMind +User-agent: DeepSeek +User-agent: Devin +User-agent: diffbot +User-agent: Diffbot +User-agent: Doubao AI +User-agent: DuckAssistBot +User-agent: Echobot Bot +User-agent: EchoboxBot +User-agent: Facebookbot +User-agent: FacebookBot +User-agent: facebookexternalhit +User-agent: FacebookExternalHit +User-agent: Factset_spyderbot +User-agent: Falcon +User-agent: Firecrawl +User-agent: FirecrawlAgent +User-agent: Flyriver +User-agent: Frase AI +User-agent: FriendlyCrawler +User-agent: Fuzz Faster U Fool +User-agent: Fuzz Faster U Fool v2.0.0 +User-agent: Gemini +User-agent: Gemini-Deep-Research +User-agent: Gemma +User-agent: GenAI +User-agent: Genspark +User-agent: Gigabot +User-agent: GLM +User-agent: GoogleAgent-Mariner +User-agent: Google-CloudVertexBot +User-agent: Google-Extended +User-agent: Google-Firebase +User-agent: GoogleOther +User-agent: GoogleOther-Image +User-agent: GoogleOther-Video +User-agent: Goose +User-agent: GPT +User-agent: GPTBot +User-agent: Grammarly +User-agent: Grendizer +User-agent: Grok +User-agent: GT Bot +User-agent: GTBot +User-agent: Hemingway Editor +User-agent: Hugging Face +User-agent: Hypotenuse AI +User-agent: iaskspider +User-agent: iaskspider/2.0 +User-agent: ICC-Crawler +User-agent: ImageGen +User-agent: ImagesiftBot +User-agent: img2dataset +User-agent: imgproxy +User-agent: Inferkit +User-agent: INK Editor +User-agent: INKforall +User-agent: IntelliSeek +User-agent: ISSCyberRiskCrawler +User-agent: Is this a crawler? +User-agent: JasperAI +User-agent: Kafkai +User-agent: Kangaroo +User-agent: Kangaroo Bot +User-agent: Keyword Density AI +User-agent: Knowledge +User-agent: KomoBot +User-agent: LinerBot +User-agent: LinkedInBot +User-agent: LLaMA +User-agent: LLMs +User-agent: magpie-crawler +User-agent: MarketMuse +User-agent: Meltwater +User-agent: Meta AI +User-agent: Meta-AI +User-agent: MetaAI +User-agent: Meta-External +User-agent: meta-externalagent +User-agent: Meta-ExternalAgent +User-agent: meta-externalfetcher +User-agent: Meta-ExternalFetcher +User-agent: MetaTagBot +User-agent: meta-webindexer +User-agent: Mistral +User-agent: MistralAI-User +User-agent: MistralAI-User/1.0 +User-agent: MJ12bot +User-agent: MyCentralAIScraperBot +User-agent: Narrative +User-agent: NeevaBot +User-agent: netEstate Imprint Crawler +User-agent: NeuralSEO +User-agent: Neural Text +User-agent: Nova Act +User-agent: NovaAct +User-agent: Nutch +User-agent: OAI-SearchBot +User-agent: omgili +User-agent: Omgili +User-agent: omgilibot +User-agent: Omgilibot +User-agent: OmniExplorer_Bot +User-agent: Open AI +User-agent: OpenAI +User-agent: OpenBot +User-agent: OpenText AI +User-agent: Operator +User-agent: Outwrite +User-agent: Page Analyzer AI +User-agent: PanguBot +User-agent: Panscient +User-agent: panscient.com +User-agent: Paperlibot +User-agent: Paraphraser.io +User-agent: peer39_crawler +User-agent: Perplexity +User-agent: PerplexityBot +User-agent: Perplexity-User +User-agent: Petalbot +User-agent: PetalBot +User-agent: Phindbot +User-agent: PhindBot +User-agent: PiplBot +User-agent: Poseidon Research Crawler +User-agent: prefetch-proxy +User-agent: ProWritingAid +User-agent: psbot +User-agent: python-requests +User-agent: QualifiedBot +User-agent: QuillBot +User-agent: quillbot.com +User-agent: RobotSpider +User-agent: Robozilla +User-agent: Rytr +User-agent: SaplingAI +User-agent: SBIntuitionsBot +User-agent: Scalenut +User-agent: Scraper +User-agent: Scrapy +User-agent: ScriptBook +User-agent: Seekr +User-agent: SemrushBot-OCOB +User-agent: SemrushBot-SWA +User-agent: sentibot +User-agent: Sentibot +User-agent: SentiBot +User-agent: SEO Content Machine +User-agent: SEO Robot +User-agent: ShapBot +User-agent: Sidetrade +User-agent: Sidetrade indexer bot +User-agent: Simplified AI +User-agent: Sitefinity +User-agent: Skydancer +User-agent: SlickWrite +User-agent: Sonic +User-agent: Spinbot +User-agent: Spin Rewriter +User-agent: Stability +User-agent: StableDiffusionBot +User-agent: star***crawler +User-agent: Sudowrite +User-agent: SummalyBot +User-agent: Super Agent +User-agent: Surfer AI +User-agent: Teoma +User-agent: TerraCotta +User-agent: Text Blaze +User-agent: TextCortex +User-agent: The Knowledge AI +User-agent: Thinkbot +User-agent: ThinkChaos +User-agent: TikTokSpider +User-agent: Timpibot +User-agent: TimpiBot +User-agent: TurnitinBot +User-agent: VelenPublicWebCrawler +User-agent: Vidnami AI +User-agent: WARDBot +User-agent: Webzio +User-agent: webzio-extended +User-agent: Webzio-Extended +User-agent: Whisper +User-agent: WordAI +User-agent: Wordtune +User-agent: WormsGTP +User-agent: wpbot +User-agent: WPBot +User-agent: Writecream +User-agent: WriterZen +User-agent: Writescope +User-agent: Writesonic +User-agent: xAI +User-agent: xBot +User-agent: YaK +User-agent: YandexAdditional +User-agent: YandexAdditionalBot +User-agent: Youbot +User-agent: YouBot +User-agent: Zerochat +User-agent: Zero GTP +User-agent: Zhipu +User-agent: Zimm +Disallow: / +Disallow: * +DisallowAITraining: / + +Content-Usage: ai=n diff --git a/scrobbles.js b/scrobbles.js new file mode 100644 index 0000000..a05cd82 --- /dev/null +++ b/scrobbles.js @@ -0,0 +1,69 @@ +/* + * sophies.rocks + * + * Copyright (C) 2026 Zofia Szweda + * + * This file is part of sophies.rocks. + * + * sophies.rocks is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * sophies.rocks is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. + */ + +const LIBREFM_USER = 'sophii.xyz'; +const LIBREFM_API_KEY = '00000000000000000000000000000000'; +const LIBREFM_CACHE_KEY = 'scrobbles-cache'; +const LIBREFM_CACHE_TTL_MS = 60_000; + +async function loadScrobbles(limit = 7) { + const cached = localStorage.getItem(LIBREFM_CACHE_KEY); + if (cached) { + const { data, ts } = JSON.parse(cached); + if (Date.now() - ts < LIBREFM_CACHE_TTL_MS) return data; + } + + const url = `https://libre.fm/2.0/?method=user.getrecenttracks&user=${LIBREFM_USER}&api_key=${LIBREFM_API_KEY}&format=json&limit=${limit}`; + const res = await fetch(url); + if (!res.ok) throw new Error('Could not fetch scrobbles'); + const data = await res.json(); + const tracks = data.recenttracks?.track ?? []; + + localStorage.setItem(LIBREFM_CACHE_KEY, JSON.stringify({ data: tracks, ts: Date.now() })); + return tracks; +} + +async function renderScrobbles() { + const list = document.querySelector('#recent-scrobbles ul'); + try { + const tracks = await loadScrobbles(); + if (tracks.length === 0) { + list.innerHTML = '<li>No scrobbles yet.</li>'; + return; + } + list.innerHTML = ''; + tracks.forEach(track => { + const li = document.createElement('li'); + const artist = track.artist?.['#text'] ?? ''; + const nowPlaying = track['@attr']?.nowplaying === 'true'; + li.innerHTML = ` + <a href="${track.url}">${track.name}</a> + <div>${artist}${nowPlaying ? ' - listening now' : ''}</div> + `; + list.appendChild(li); + }); + } catch (err) { + console.error('Failed to load libre.fm scrobbles:', err); + list.innerHTML = "<li>Couldn't load scrobbles right now.</li>"; + } +} + +renderScrobbles(); diff --git a/slashes.html b/slashes.html new file mode 100644 index 0000000..5b37417 --- /dev/null +++ b/slashes.html @@ -0,0 +1,237 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + +<head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>/slashes</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> +<link rel="stylesheet" href="/style.css" /> +</head> + +<body> + <nav> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> +</nav> + <h1>/slashes</h1> + <p>All the slashpages on the website</p> + <p>(this isn't yet accurate, i am migrating it over from my gopherhole, most of the links dont work)</p> + <p>Goal: add every page from <a href="https://slashpages.net">slashpages.net</a> to this website</p> + + <h2>status</h2> + <p><strong>total pages:</strong> 55   <strong>done:</strong> 13</p> + + <h2>list</h2> + <dl class="slashlist"> + + <dt><a href="/about.html">/about</a> <span class="tag done">done</span></dt> + <dd>/about.html</dd> + + <dt><a href="/ai.html">/ai</a> <span class="tag done">done</span></dt> + <dd>/ai.html</dd> + + <dt><a href="/blank.html">/blank</a> <span class="tag done">done</span></dt> + <dd>/blank.html</dd> + + <dt>/blogroll <span class="tag todo">todo</span></dt> + <dd>a list of other sites i read and reccomend</dd> + + <dt>/calendar <span class="tag todo">todo</span></dt> + <dd>a list of dates from movies, tv shows, etc.</dd> + + <dt>/canon <span class="tag todo">todo</span></dt> + <dd>annotated bibliography of references, the things that shaped me</dd> + + <dt>/carry <span class="tag todo">todo</span></dt> + <dd>items i carry daily</dd> + + <dt>/caw <span class="tag todo">todo</span></dt> + <dd>crows.</dd> + + <dt><a href="/phlog.html">/log</a> <span class="tag done">done</span></dt> + <dd>/phlog.html <span class="tag todo">todo: rename</span></dd> + + <dt><a href="/maccas.html">/mcdonalds</a> <span class="tag done">done</span></dt> + <dd>/maccas.html</dd> + + <dt>/colophon <span class="tag todo">todo</span></dt> + <dd>a page that describes how the site is made, tools n stuff</dd> + + <dt>/community <span class="tag todo">todo</span></dt> + <dd>a page outlining what a community is about and its values</dd> + + <dt>/concerts <span class="tag todo">todo</span></dt> + <dd>a list of the concerts i've been to</dd> + + <dt><a href="/contact.html">/contact</a> <span class="tag done">done</span></dt> + <dd>/contact.html</dd> + + <dt>/daylists <span class="tag kill">kill</span></dt> + <dd>i dont use spotify</dd> + + <dt><a href="/death.html">/death</a> <span class="tag done">done</span></dt> + <dd>/death.html</dd> + + <dt>/disability <span class="tag todo">todo</span></dt> + <dd>have to get diagnosed first</dd> + + <dt>/elsewhere <span class="tag todo">todo</span></dt> + <dd>a list of output or writings on sites other than this</dd> + + <dt>/feeds <span class="tag todo">todo</span></dt> + <dd>page listing RSS/Atom/JSON and other feeds.</dd> + + <dt>/for <span class="tag todo">todo</span></dt> + <dd>a page where i honor my loved ones or thank others</dd> + + <dt>/glossary <span class="tag todo">todo</span></dt> + <dd>a list of words i often use and their meanings</dd> + + <dt>/green <span class="tag todo">todo</span></dt> + <dd>a page that describes how i contribute to the environment</dd> + + <dt><a href="/girl.html">/girl</a> <span class="tag done">done</span></dt> + <dd>/girl.html</dd> + + <dt>/hats <span class="tag todo">todo</span></dt> + <dd>my hats</dd> + + <dt><a href="/hello.html">/hello</a> <span class="tag done">done</span></dt> + <dd>a list of the ways i prefer to keep in touch</dd> + + <dt>/hills <span class="tag todo">todo</span></dt> + <dd>a list of the hills im willing to die on</dd> + + <dt>/ideas <span class="tag todo">todo</span></dt> + <dd>things i want to make</dd> + + <dt>/interests <span class="tag todo">todo</span></dt> + <dd>a list of things im passionate about</dd> + + <dt>/sale <span class="tag todo">todo</span></dt> + <dd>yard sale!!</dd> + + <dt>/links <span class="tag todo">todo</span></dt> + <dd>a list of links to sites i like or want to bookmark</dd> + + <dt>/next <span class="tag todo">todo</span></dt> + <dd>what i'm gonna do next</dd> + + <dt>/nope <span class="tag todo">todo</span></dt> + <dd>a list of things i dont like/dont wanna do</dd> + + <dt><a href="/now.html">/now</a> <span class="tag done">done</span></dt> + <dd>/now.html</dd> + + <dt>/pfp <span class="tag todo">todo</span></dt> + <dd>a timeline of all my pfp pictures</dd> + + <dt>/podroll <span class="tag maybe">todo?</span></dt> + <dd>a list of podcasts i reccomend, if i get into podcasts</dd> + + <dt>/posse <span class="tag todo">todo</span></dt> + <dd>a page outlining my strategy for POSSE/cross-posting</dd> + + <dt>/postroll <span class="tag todo">todo</span></dt> + <dd>a list of interesting blog posts i read</dd> + + <dt>/pricing <span class="tag maybe">todo?</span></dt> + <dd>a page for those that want to buy my products</dd> + + <dt>/questions <span class="tag todo">todo</span></dt> + <dd>questions i wanna ask or im thinking about</dd> + + <dt>/save <span class="tag todo">todo</span></dt> + <dd>a list of referral links and discount codes for things i like</dd> + + <dt>/hosted <span class="tag todo">todo</span></dt> + <dd>a page listing the services im hosting or managing myself</dd> + + <dt>/shoebox <span class="tag todo">todo</span></dt> + <dd>a bit of website where for the odds-and-ends</dd> + + <dt>/since <span class="tag todo">todo</span></dt> + <dd>habit tracker showing time since i started/stopped doing x</dd> + + <dt>/sitemap <span class="tag todo">todo</span></dt> + <dd>a list of pages on here</dd> + + <dt><a href="/slashes.html">/slashes</a> <span class="tag done">done</span></dt> + <dd>this!</dd> + + <dt>/someday <span class="tag todo">todo</span></dt> + <dd>things i someday want to achieve/accomplish/learn/etc.</dd> + + <dt>/style <span class="tag todo">todo</span></dt> + <dd>personal style/design style guide</dd> + + <dt><a href="/ways.html">/ways</a> <span class="tag done">done</span></dt> + <dd>/ways.html</dd> + + <dt>/coffee <span class="tag todo">todo</span></dt> + <dd>donations</dd> + + <dt>/top4 <span class="tag todo">todo</span></dt> + <dd>top 4 of any topic! (top 3 + honor mention)</dd> + + <dt><a href="/uses.html">/uses</a> <span class="tag done">done</span></dt> + <dd>/uses.html</dd> + + <dt>/verify <span class="tag todo">todo</span></dt> + <dd>a page to list and prove online identities</dd> + + <dt>/where <span class="tag todo">todo</span></dt> + <dd>let others know my current location!</dd> + + <dt>/why <span class="tag todo">todo</span></dt> + <dd>what i care about, where im heading and how i hope to exist</dd> + + <dt><a href="/wish.html">/wish</a> <span class="tag done">done</span></dt> + <dd>/wish.html</dd> + + <dt>/yep <span class="tag todo">todo</span></dt> + <dd>list of things i agree with or will do</dd> + + </dl> + + <p>I took time out of my day to write this out by hand.</p> + <p>Love!<br />Sophie</p> + +<p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> +</p> +</body> + +</html> diff --git a/style.css b/style.css new file mode 100644 index 0000000..e88b7a4 --- /dev/null +++ b/style.css @@ -0,0 +1,366 @@ +/* + * sophies.rocks + * + * Copyright (C) 2026 Zofia Szweda + * + * This file is part of sophies.rocks. + * + * sophies.rocks is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * sophies.rocks is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. + */ + +:root { + --bg: #f8efdf; + --text: #33281c; + --accent: #b8783e; + --border: #e4e0d8; + --muted: #7a6a54 +} + +* { + box-sizing: border-box; +} + +p { + margin: 0.4rem 0; +} + +body { + font-family: "Atkinson Hyperlegible Next", -apple-system, "Segoe UI", sans-serif; + background: var(--bg); + color: var(--text); + max-width: 680px; + margin: 0 auto; + padding: 4rem 1.5rem; + line-height: 1.65; + font-size: 1.05rem; +} + +h1, +h2, +h3 { + font-family: "IBM Plex Serif", Georgia, serif; + font-weight: 600; + line-height: 1.25; + margin-top: 3rem; +} + + +h1 { + font-size: 2.1rem; + margin-top: 0; + letter-spacing: -0.02em; +} + +h2 { + font-size: 1.4rem; +} + +a { + color: var(--accent); + text-decoration: underline; + text-decoration-color: rgba(181, 83, 60, 0.3); + text-underline-offset: 3px; +} + +nav { + display: flex; + flex-wrap: nowrap; + justify-content: flex-end; + gap: 1.5rem; + margin-bottom: 3rem; + padding-bottom: 1rem; + border-bottom: 1px solid var(--border); + font-size: 1rem; + color: var(--muted); +} + +code, +pre { + font-family: "IBM Plex Mono", "Courier New", monospace; + margin: 0.4rem 0; +} + +code { + background: #f0ede6; + padding: 0.15em 0.4em; + border-radius: 4px; + font-size: 0.9em; +} + +.buttons { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-top: 3rem; +} + +#recent { + margin-top: 3rem; +} + +#recent h2 { + margin-top: 0; +} + +#recent-now p { + margin: 0; +} + +.recent-grid { + display: grid; + grid-template-columns: 2fr 1fr; + gap: 1.5rem; + margin-top: 1.5rem; + align-items: stretch; +} + +.recent-column { + display: flex; + flex-direction: column; + gap: 1.5rem; + min-height: 0; +} + +.recent-box { + border: 1px solid #ddd; + padding: 1.25rem 1.5rem; +} + +.recent-box h3 { + margin-top: 0; + font-size: 1.1rem; +} + +.recent-box ul { + list-style: none; + padding-left: 0; + margin: 1rem 0 0; +} + + +.recent-box li+li { + margin-top: 1.2rem; +} + +.recent-box li a { + font-weight: 600; +} + + +#recent-now { + flex: 1; + min-height: 0; + max-height: 180px; + overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: var(--accent) var(--bg); +} + +#recent-now::-webkit-scrollbar { + width: 8px; +} + +#recent-now::-webkit-scrollbar-track { + background: var(--bg); +} + +#recent-now::-webkit-scrollbar-thumb { + background: var(--accent); + border-radius: 4px; +} + +#recent-now::-webkit-scrollbar-thumb:hover { + background: var(--text); +} + +#recent-now ul { + list-style: none; + padding-left: 0; + margin: 1rem 0 0; +} + +#recent-now li { + margin: 0 0 1rem; +} + +#recent-now li:last-child { + margin-bottom: 0; +} + +#recent-now time { + display: block; + font-size: 0.8em; + color: var(--muted); + font-family: "IBM Plex Mono", monospace; +} + +@media (max-width: 550px) { + + .recent-grid, + .terminology-grid { + grid-template-columns: 1fr; + } +} + +@font-face { + font-family: "IBM Plex Serif"; + src: url("fonts/IBMPlexSerif-Regular.woff2") format("woff2"); + font-weight: 400; + font-display: swap; +} + +@font-face { + font-family: "IBM Plex Serif"; + src: url("fonts/IBMPlexSerif-Bold.woff2") format("woff2"); + font-weight: 700; + font-display: swap; +} + +@font-face { + font-family: "IBM Plex Mono"; + src: url("fonts/IBMPlexMono-Regular.woff2") format("woff2"); + font-weight: 400; + font-display: swap; +} + + +@font-face { + font-family: "Atkinson Hyperlegible Next"; + src: url("fonts/Atkinson_Hyperlegible_Next/AtkinsonHyperlegibleNext-VariableFont_wght.ttf") format("truetype-variations"); + font-weight: 400 700; + font-display: swap; +} + +.pgp-label { + margin: 0; + margin-bottom: 0; +} + +.pgp-key { + all: revert; + white-space: pre-wrap; + font-family: "Atkinson Hyperlegible Next"; + margin: 0; +} + + +.tag { + font-size: 0.7em; + padding: 0.1em 0.5em; + border-radius: 4px; + font-family: "IBM Plex Mono", monospace; + text-transform: uppercase; + margin-left: 0.4em; +} + +.tag.done { + background: #dcead9; + color: #2e5c31; +} + +.tag.todo { + background: #f0ede6; + color: var(--muted); +} + +.tag.kill { + background: #f2dcd8; + color: #8a3b32; +} + +.tag.maybe { + background: #f3e6c8; + color: #7a5a1c; +} + +dl.slashlist dt { + font-weight: 600; + margin-top: 1.2em; +} + +dl.slashlist dd { + margin-left: 0; + color: var(--muted); + font-size: 0.95em; +} + +.terminology { + margin-top: 3rem; +} + +.terminology-intro { + color: var(--muted); +} + +.terminology-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1.5rem; + margin-top: 2rem; +} + +.terminology-grid>div { + border: 1px solid var(--border); + padding: 1rem 1.25rem; + border-radius: 6px; +} + +.terminology-grid h3 { + margin-top: 0; + margin-bottom: 0.75rem; +} + +.terminology-grid ul { + list-style: none; + padding-left: 0; + margin: 0; +} + +.terminology-grid li { + margin: 0.35rem 0; +} + +.terminology-grid .icon { + width: 16px; + height: 16px; + object-fit: contain; + vertical-align: -3px; + margin-right: 0.35rem; +} + +.rating-love { + color: var(--accent); + font-weight: 700; +} + +.rating-like { + color: var(--text); +} + +.rating-okay { + color: #628c58; +} + +.rating-maybe { + color: #a66b3d; +} + +.rating-no { + color: #a34f45; +} + +.rating-never { + color: #a34f45; + font-weight: 700; +}
\ No newline at end of file diff --git a/tarantino/index.html b/tarantino/index.html new file mode 100644 index 0000000..c005933 --- /dev/null +++ b/tarantino/index.html @@ -0,0 +1,121 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="theme-color" content="#000000" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Tarantino webring</title> + <link rel="icon" type="image/png" href="/assets/pulp_fiction.ico" /> + <link rel="stylesheet" href="/style.css" /> + <link rel="stylesheet" href="/tarantino/tarantino-style.css" /> + </head> + <body> + <span><img src="/assets/pulp_fiction.ico" /></span> + <h1> + The <span style="font-size: 140%">Quentin Tarantino</span> + webring + </h1> + <p>This is a webring dedicated to fans of Quentin Tarantino.</p> + + <h2>Members</h2> + <table id="members-table"> + <thead> + <tr> + <th>Name</th> + <th>Site</th> + </tr> + </thead> + <tbody id="members-tbody"></tbody> + </table> + <h2>Rules</h2> + <ul> + <li>No bigotry allowed on your website</li> + <li> + Your website has to be made with your own 2 hands, this means that it + cannot be something like your leaflet, strawpage, etc. + </li> + <li> + your application must contain the word "zucchini" in it, because you're + a good person and read these rules. + </li> + <li> + If your website contains NSFW content, it must be properly marked, same + goes with flashing lights and gore. + </li> + <li> + Your website has to already have the webring's widget visible somewhere + on it before application + </li> + <li> + your site does NOT have to be oriented around Quentin Tarantino (any + website will do, aslong as you are a fan of his) + </li> + <li> + your website has to be something on it, it cannot be just a blank page + or 3 lines of text. + </li> + <li>i reserve the right to reject any applications under my own terms</li> + </ul> + <h2>Join</h2> + <p> + If you would like to join this webring, please + <a href="mailto:sophies@disroot.org">email me</a> (sophies@disroot.org) + with the subject: "Webring application" + </p> + <p> + Please put your name and the URL of the homepage of your website in the + body text, as well as listing if there are any content warnings (gore, + nsfw, flashing) + </p> + <h2>Widget</h2> + <p>Paste this snippet anywhere on your site:</p> + <code> + <pre> + <nav style="display: flex; align-items: center; justify-content: center;"> + <a id="ring-prev" href="#">prev</a> + <span>|</span> + <a href="https://sophies.rocks/tarantino/">TARANTINO</a> + <a id="ring-random" href="#" style="font-size: 60%;">(random)</a> + <span>|</span> + <a id="ring-next" href="#">next</a> + </nav> + <script src="https://sophies.rocks/webring.js" defer></script> + </pre + > + </code> + <p>keep in mind that widget-less sites will be removed.</p> + <p>Below is an example of a correctly added widget (colors may vary):</p> + <nav + id="ring-nav" + style="display: flex; align-items: center; justify-content: center" + > + <a id="ring-prev" href="#">prev</a> + <span>|</span> + <a href="/tarantino/">TARANTINO</a> + <a id="ring-random" href="#" style="font-size: 60%">(random)</a> + <span>|</span> + <a id="ring-next" href="#">next</a> + </nav> + <script src="/webring.js" defer></script> + </body> +</html> diff --git a/tarantino/ring.json b/tarantino/ring.json new file mode 100644 index 0000000..0b59186 --- /dev/null +++ b/tarantino/ring.json @@ -0,0 +1,9 @@ +{ + "members": [ + { + "name": "sophie", + "url": "https://sophies.rocks", + "content_warnings": [] + } + ] +}
\ No newline at end of file diff --git a/tarantino/tarantino-style.css b/tarantino/tarantino-style.css new file mode 100644 index 0000000..4b084b0 --- /dev/null +++ b/tarantino/tarantino-style.css @@ -0,0 +1,30 @@ +@font-face { + font-family: 'Pulp Fiction'; + src: url('/fonts/PF.woff2') format('woff2'); +} + +body { + background: #000; + color: #f5f0e6; +} + +h1, +h2 { + font-family: 'Pulp Fiction', 'Impact', sans-serif; + color: #f5da1e +} + + +a { + color: #f5da1e; + text-decoration-color: rgba(245, 218, 30, 0.4); +} + +a:hover { + color: #cc0000; +} + +code { + background: #1a1a1a; + color: #f5f0e6; +}
\ No newline at end of file diff --git a/theme.js b/theme.js new file mode 100644 index 0000000..1a3a574 --- /dev/null +++ b/theme.js @@ -0,0 +1,93 @@ +/* + * sophies.rocks + * + * Copyright (C) 2026 Zofia Szweda + * + * This file is part of sophies.rocks. + * + * sophies.rocks is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * sophies.rocks is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. + */ + +(function () { + const THEMES = ['style', 'style-lightluster', 'style-tsoding', 'style-ashen']; + const DEFAULT_THEME = 'style'; + const STORAGE_KEY = 'theme'; + + const saved = localStorage.getItem(STORAGE_KEY); + const theme = THEMES.includes(saved) ? saved : DEFAULT_THEME; + + const link = document.createElement('link'); + link.rel = 'stylesheet'; + link.id = 'theme-link'; + link.href = `${theme}.css`; + document.head.appendChild(link); + const style = document.createElement('style'); + style.textContent = ` + #menu-toggle { + position: fixed; + top: 1rem; + left: 1rem; + z-index: 100; + font-size: 1.3rem; + background: none; + border: none; + cursor: pointer; + } + #menu-panel { + position: fixed; + top: 3rem; + left: 1rem; + z-index: 100; + background: var(--bg, #fff); + border: 1px solid var(--border, #ccc); + padding: 0.75rem; + border-radius: 4px; + } + #menu-panel[hidden] { display: none; } + `; + document.head.appendChild(style); + + window.addEventListener('DOMContentLoaded', () => { + const toggle = document.getElementById('menu-toggle'); + if (!toggle) return; // page doesn't have the button, skip menu setup + + const panel = document.createElement('div'); + panel.id = 'menu-panel'; + panel.hidden = true; + panel.innerHTML = ` + <label for="theme-picker">theme:</label> + <select id="theme-picker"> + <option value="style">default</option> + <option value="style-lightluster">lightluster</option> + <option value="style-tsoding">tsoding</option> + <option value="style-ashen">ashen</option> + </select> + `; + toggle.insertAdjacentElement('afterend', panel); + + toggle.addEventListener('click', () => { + const isHidden = panel.hidden; + panel.hidden = !isHidden; + toggle.setAttribute('aria-expanded', String(isHidden)); + }); + + const picker = document.getElementById('theme-picker'); + picker.value = theme; + picker.addEventListener('change', () => { + const chosen = picker.value; + document.getElementById('theme-link').href = `${chosen}.css`; + localStorage.setItem(STORAGE_KEY, chosen); + }); + }); +})(); diff --git a/uses.html b/uses.html new file mode 100644 index 0000000..2efd856 --- /dev/null +++ b/uses.html @@ -0,0 +1,160 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>/uses</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> + <link rel="stylesheet" href="/style.css" /> + </head> + + <body> + <nav> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> + </nav> + <h1>/uses</h1> + <h2>Hardware</h2> + <p>Laptop: Lenovo V15 G3</p> + <p>Specs: Intel Core i3-1215U + iGPU + 8gb ram + ditto, but with zram</p> + <p>Peripherals:</p> + <ul> + <li> + <a + href="https://www.logitechg.com/en-us/shop/p/g203-lightsync-rgb-gaming-mouse" + >Logitech G203 Lightsync (mouse, wired)</a + > + </li> + <li> + <a + href="https://brandclub.com/JBL-Tune-570BT-OnEar-Wireless-Bluetooth/p/G820245QV/product" + >JBL Tune 570 BT</a + > + </li> + <li> + <a href="https://www.casio.com/us/watches/casio/product.F-91W-1/" + >Casio F91-W</a + > + </li> + <li>SW35 (cheap aliexpress split keyboard)</li> + </ul> + <p> + "homelab": + <a href="https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/" + >Raspberry Pi Zero 2 W</a + > + </p> + <h2>Software</h2> + <p>Kernel: Linux 6.12.107</p> + <p>OS: <a href="https://debian.org">Debian</a> 13 GNU/Linux</p> + <p> + I am considering switching to + <a href="https://www.freebsd.org">FreeBSD</a> or + <a href="https://www.openbsd.org">OpenBSD</a> + </p> + <p>WM: <a href="https://dwm.suckless.org">dwm</a></p> + <p>(also considering StumpWM)</p> + <p>(honorable mention: <a href="https://xmonad.org">xmonad</a>)</p> + <h2>terminal</h2> + <p> + Emulator: <a href="https://github.com/alacritty/alacritty/">alacritty</a> + </p> + <p>Shell: <a href="https://fishshell.com/">fish</a></p> + <p> + Editor: <a href="https://helix-editor.com">helix</a>, i'm a huge fan of + Emacs and VIm, though. + </p> + <p> + Font: Currently hopping between + <a href="https://commitmono.com">Commit Mono</a> and + <a href="https://usgraphics.com/products/berkeley-mono">Berkeley Mono</a> + </p> + <p> + (berkeley mono is definitely not pirated and i am definitely using + <a + href="https://tangled.org/strings/did:plc:mkuwwd3sphy6gs3teatnr7eh/3mu3elu2voq22" + >this nix expression</a + > + to install it) + </p> + <h2>VCS</h2> + <p>VCS: <a href="https://gameoftrees.org">Game Of Trees</a>(got)</p> + <p>Forge: <a href="https://tangled.org">tangled.org</a></p> + <h2>Music</h2> + <p>Download: <a href="https://nicotine-plus.org">Nicotine+</a></p> + <p>Daemon: <a href="https://musicpd.org">mpd</a></p> + <p> + Scrobbler: + <a href="https://github.com/MusicPlayerDaemon/mpdscribble">mpdscribble</a> + to <a href="https://libre.fm">libre.fm</a> + </p> + <p> + RPC: + <a href="https://github.com/JakeStanger/mpd-discord-rpc" + >mpd-discord-rpc</a + > + </p> + <p> + Player: <a href="https://wiki.archlinux.org/title/Ncmpcpp">ncmpcpp</a> + </p> + <h2>Chat</h2> + <p> + <a href="https://github.com/4evy/nixcord">NixCord</a> (discord, + declaratively! with nix!!) + </p> + <h3>XMPP</h3> + <p>Client: <a href="https://gajim.org">Gajim</a></p> + <p>JID: sophies@yax.im</p> + <h2>Web & Friends</h2> + <p>Browser: <a href="https://vivaldi.com">Vivaldi</a></p> + <p style="font-size: 80%"> + (psst, i also reccomend the + <a href="https://helium.computer">helium</a> browser) + </p> + <p>Extensions:</p> + <ul> + <li>Ublock Origin</li> + <li>Bitwarden</li> + </ul> + <h2>ATProto</h2> + <p> + <a href="https://bsky.app">bsky</a> client: + <a href="https://mu.social/">mu.social</a>, however i also reccomend + <a href="//blacksky.community/">blacksky</a> + </p> + <p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> + </p> + </body> +</html> diff --git a/webring.js b/webring.js new file mode 100644 index 0000000..5e53ec5 --- /dev/null +++ b/webring.js @@ -0,0 +1,151 @@ +const RING_CACHE_KEY = 'tarantino-ring-cache'; +const RING_CACHE_TTL_MS = 5 * 60_000; + +async function fetchRingMembers() { + const cached = localStorage.getItem(RING_CACHE_KEY); + if (cached) { + const { data, ts } = JSON.parse(cached); + if (Date.now() - ts < RING_CACHE_TTL_MS) return data; + } + + const res = await fetch('https://sophies.rocks/tarantino/ring.json'); + if (!res.ok) throw new Error(`tarantino webring fetch failed: ${res.status}`); + const { members } = await res.json(); + + localStorage.setItem(RING_CACHE_KEY, JSON.stringify({ data: members, ts: Date.now() })); + return members; +} + +function originOf(member) { + try { + return new URL(member.url).origin; + } catch (err) { + console.error('tarantino webring: bad url on member', member, err); + return null; + } +} + +function warningLabel(m) { + return m.content_warnings?.length ? ` (cw: ${m.content_warnings.join(', ')})` : ''; +} + +function ensureWarningDialog() { + let dialog = document.getElementById('ring-warning-dialog'); + if (dialog) return dialog; + + dialog = document.createElement('dialog'); + dialog.id = 'ring-warning-dialog'; + dialog.innerHTML = ` + <p id="ring-warning-text"></p> + <menu style="display: flex; gap: 0.5rem; justify-content: flex-end; padding: 0; margin: 0.75rem 0 0;"> + <button type="button" value="cancel">cancel</button> + <button type="button" value="continue" autofocus>continue</button> + </menu> + `; + dialog.style.cssText = ` + background: var(--bg, #fff); + color: var(--text, #000); + border: 1px solid var(--border, #ccc); + border-radius: 6px; + max-width: 28rem; + padding: 1rem; + `; + document.body.appendChild(dialog); + + dialog.querySelector('button[value="cancel"]').addEventListener('click', () => dialog.close('cancel')); + dialog.querySelector('button[value="continue"]').addEventListener('click', () => dialog.close('continue')); + + return dialog; +} + +function confirmIfFlagged(e, member) { + if (!member.content_warnings?.length) return; + e.preventDefault(); + + const dialog = ensureWarningDialog(); + dialog.querySelector('#ring-warning-text').textContent = + `Heads up: this site is flagged for ${member.content_warnings.join(', ')}. Continue?`; + + dialog.addEventListener( + 'close', + () => { + if (dialog.returnValue === 'continue') location.href = member.url; + }, + { once: true } + ); + + dialog.showModal(); +} + +function wireNavLink(id, member) { + const el = document.getElementById(id); + if (!el || !member) return; + el.href = member.url; + el.addEventListener('click', e => confirmIfFlagged(e, member)); +} + +function disableNavLink(id) { + const el = document.getElementById(id); + if (!el) return; + el.removeAttribute('href'); + el.setAttribute('aria-disabled', 'true'); +} + +function renderMembersTable(members) { + const tbody = document.getElementById('members-tbody'); + if (!tbody) return; + + const frag = document.createDocumentFragment(); + for (const m of members) { + const tr = document.createElement('tr'); + + const nameTd = document.createElement('td'); + nameTd.textContent = m.name; + + const linkTd = document.createElement('td'); + const a = document.createElement('a'); + a.href = m.url; + a.textContent = m.url + warningLabel(m); + a.addEventListener('click', e => confirmIfFlagged(e, m)); + linkTd.appendChild(a); + + tr.append(nameTd, linkTd); + frag.appendChild(tr); + } + tbody.appendChild(frag); +} + +async function initRing() { + try { + const members = await fetchRingMembers(); + const me = members.findIndex(m => originOf(m) === location.origin); + + if (me === -1) { + console.error('this site is not in the tarantino webring'); + } else if (members.length <= 1) { + disableNavLink('ring-prev'); + disableNavLink('ring-next'); + disableNavLink('ring-random'); + } else { + const next = members[(me + 1) % members.length]; + const prev = members[(me - 1 + members.length) % members.length]; + const others = members.filter((_, i) => i !== me); + + wireNavLink('ring-prev', prev); + wireNavLink('ring-next', next); + + if (others.length > 0) { + const random = others[Math.floor(Math.random() * others.length)]; + wireNavLink('ring-random', random); + } else { + disableNavLink('ring-random'); + } + } + + renderMembersTable(members); + } catch (err) { + console.error('tarantino webring failed:', err); + } +} + +initRing(); diff --git a/webrings.html b/webrings.html new file mode 100644 index 0000000..beeec8a --- /dev/null +++ b/webrings.html @@ -0,0 +1,182 @@ +<!-- + sophies.rocks + + Copyright (C) 2026 Zofia Szweda + + This file is part of sophies.rocks. + + sophies.rocks is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + sophies.rocks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>. +--> + +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta name="theme-color" content="#f8efdf" /> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>/webrings</title> + <link rel="icon" type="image/png" href="/assets/_.ico" /> + <link rel="stylesheet" href="https://jack-dawlia.neocities.org/page/shrines/ultrakill/ULTRARING/onionring.css"> + <link rel="stylesheet" href="/style.css" /> +</head> + +<body> + <nav> + <a href="/">index</a> + <a href="/about.html">/about</a> + <a href="/contact.html">/contact</a> + <a href="/slashes.html">/slashes</a> + <a href="/uses.html">/uses</a> + <a href="/webrings.html">/webrings</a> + <a href="https://blog.sophies.rocks">/blog</a> + <a href="https://1kb.sophies.rocks">/1kb</a> + <a href="/tarantino/">/tarantino</a> +</nav> + <h1>Webrings</h1> + <!-- no ai webring --> + <div style="text-align:center"> + <a href="https://baccyflap.com/noai/?prv&s=ale" target="_top">« prev</a> | + <a href="https://baccyflap.com/noai" target="_blank">no ai webring</a> + <a style="font-size:60%" href="https://baccyflap.com/noai/?rnd" target="_top">(random)</a> | + <a href="https://baccyflap.com/noai/?nxt&s=ale" target="_top">next »</a> + </div> + <hr> + </hr> + <!-- yuri webring --> + <div style="text-align-last: center;"> + <a href="https://lunamilk.neocities.org/webring/yuriwebring"> + <img src="https://file.garden/Zuy95U5nUSPb-gio/website/webring/yuriwebring1.png" height="26px"></a><br /> + <a href="https://lunamilk.neocities.org/webring/yuriwebring/webring?action=previous"> + <img src="https://file.garden/Zuy95U5nUSPb-gio/website/webring/arrow%20left.png"></a> + <a href="https://lunamilk.neocities.org/webring/yuriwebring/webring?action=random"> + random</a> + <a href="https://lunamilk.neocities.org/webring/yuriwebring/webring?action=next"> + <img src="https://file.garden/Zuy95U5nUSPb-gio/website/webring/arrow%20right.png"></a> + </div> + <hr> + </hr> + <!-- hollowknight webring --> + <center> + <div id='Hallownest-bugs'> + <script type="text/javascript" + src="https://samsolarsystem.neocities.org/onionring-variables-Hallownest-bugs.js"></script> + <script type="text/javascript" + src="https://samsolarsystem.neocities.org/onionring-widget-Hallownest-bugs-knight.js"></script> + </div> + </center> + <hr> + </hr> + <!-- *nix (unix webring) --> + <center> + <div id="nixring" style="display: inline-flex; gap: 8px; align-items: center; justify-content: center;"> + <style type="text/css" scoped> + #nixring { + text-align: center; + color: black; + } + + #nixring a { + color: black; + text-decoration: none; + } + </style> + <a href="https://softmachine.dev/webring/linuxring/redirect?url=https%3A%2F{sophies.rocks}%2F&go=prev">←</a> + <a href="https://softmachine.dev/webring/linuxring"> + <div>*nixRing<br><img style="height: 25px;" src="https://softmachine.dev/webring/linuxring/icon/tux.png"></div> + </a> + <a href="https://softmachine.dev/webring/linuxring/redirect?url=https%3A%2F{sophies.rocks}%2F&go=next">→</a> + </div> + </center> + <hr> + </hr> + <!-- transfem webring --> + <center> + <script defer src="https://fem.nz/ring/transfemring.js" data-widget="transgender"></script> + <hr> + </hr> + <!-- pony webring --> + + <div> + <center> + <a href="https://silversneasel.neocities.org/ponyring/main"><b>PonyRing!<br><img + src="https://silversneasel.neocities.org/pictures/ponyring/widget/g4-1.png" height="90"></b></a><br /> + <a href="https://silversneasel.neocities.org/ponyring/main?action=previous"><- + </a> + <a href="https://silversneasel.neocities.org/ponyring/main?action=random">random</a> + <a href="https://silversneasel.neocities.org/ponyring/main?action=next">-></a><br> + </center> + </div> + <hr> + </hr> + <!-- nix/os ring --> + <div style="text-align:center"> + <a href="https://nixwebr.ing/prev/sophie" target="_top"> prev</a> + <a href="https://nixwebr.ing" target="_blank">nix webring</a> + <a style="font-size:60%" href="https://nixwebr.ing/rand" target="_top">(random)</a> + <a href="https://nixwebr.ing/next/sophie" target="_top">next</a> + </div> + <hr> + </hr> + <!-- the ULTRARing --> + <div id='ultraring'> + <script type="text/javascript" + src="https://jack-dawlia.neocities.org/page/shrines/ultrakill/ULTRARING/onionring-variables.js"></script> + <script type="text/javascript" + src="https://jack-dawlia.neocities.org/page/shrines/ultrakill/ULTRARING/onionring-widget-4.js"></script> + <noscript> + This site is part of <a href="https://jack-dawlia.neocities.org/page/shrines/ultrakill/ULTRARING">ULTRARING</a>! + </noscript> + </div> + <hr></hr> + <!-- astronomy ring --> + <div style="text-align:center"> + <script type="text/javascript" src="https://astroring.auroradynia.com/ring.js"></script> + </div> + <hr></hr> +<!-- roboring --> +<div style="text-align:center"> + <a href="https://stellophiliac.github.io/roboring/xmlisbetter/previous">←</a> + <a href="https://stellophiliac.github.io/roboring">roboring</a> + <a href="https://stellophiliac.github.io/roboring/xmlisbetter/next">→</a> +</div> +<hr></hr> +<div style="text-align:center"> + <a href="https://webring.bucketfish.me/redirect.html?to=prev&name=sophie">prev</a> | + <a href="https://webring.bucketfish.me/"> bucketfish webring</a> + <a style="font-size:60%" href="https://webring.bucketfish.me/redirect.html?to=random&name=sophie" target="_top">(random)</a> | + <a href="https://webring.bucketfish.me/redirect.html?to=next&name=sophie"> next</a> +</div> +<hr></hr> + <nav + id="ring-nav" + style="display: flex; align-items: center; justify-content: center" + > + <a id="ring-prev" href="#">prev</a> + <span>|</span> + <a href="/tarantino/">TARANTINO</a> + <a id="ring-random" href="#" style="font-size: 60%">(random)</a> + <span>|</span> + <a id="ring-next" href="#">next</a> +</nav> + <script src="/webring.js" defer></script> +<hr></hr> + <p class="license"> + <a href="https://sophies.rocks">Source code</a> + — + <a href="COPYING">GNU AGPLv3</a> + </p> +</body> + +</html> |
