cleaning my house
This commit is contained in:
parent
485c24839f
commit
ccbf592724
360
LICENCE.md
360
LICENCE.md
@ -1,360 +0,0 @@
|
||||
# GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 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 licenses for most software are designed to take away your freedom
|
||||
to share and change it. By contrast, the GNU General Public License is
|
||||
intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
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
|
||||
this service 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.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on,
|
||||
we want its recipients to know that what they have is not the
|
||||
original, so that any problems introduced by others will not reflect
|
||||
on the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at
|
||||
all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
## TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
**0.** This License applies to any program or other work which
|
||||
contains a notice placed by the copyright holder saying it may be
|
||||
distributed under the terms of this General Public License. The
|
||||
"Program", below, refers to any such program or work, and a "work
|
||||
based on the Program" means either the Program or any derivative work
|
||||
under copyright law: that is to say, a work containing the Program or
|
||||
a portion of it, either verbatim or with modifications and/or
|
||||
translated into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".) Each licensee
|
||||
is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the Program
|
||||
(independent of having been made by running the Program). Whether that
|
||||
is true depends on what the Program does.
|
||||
|
||||
**1.** You may copy and distribute 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 and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
**2.** You may modify your copy or copies of the Program or any
|
||||
portion of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
|
||||
**a)** You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
|
||||
**b)** You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any part
|
||||
thereof, to be licensed as a whole at no charge to all third parties
|
||||
under the terms of this License.
|
||||
|
||||
|
||||
**c)** If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such interactive
|
||||
use in the most ordinary way, to print or display an announcement
|
||||
including an appropriate copyright notice and a notice that there is
|
||||
no warranty (or else, saying that you provide a warranty) and that
|
||||
users may redistribute the program under these conditions, and telling
|
||||
the user how to view a copy of this License. (Exception: if the
|
||||
Program itself is interactive but does not normally print such an
|
||||
announcement, your work based on the Program is not required to print
|
||||
an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
**3.** You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
|
||||
**a)** Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections 1
|
||||
and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
|
||||
**b)** Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your cost of
|
||||
physically performing source distribution, a complete machine-readable
|
||||
copy of the corresponding source code, to be distributed under the
|
||||
terms of Sections 1 and 2 above on a medium customarily used for
|
||||
software interchange; or,
|
||||
|
||||
|
||||
**c)** Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is allowed
|
||||
only for noncommercial distribution and only if you received the
|
||||
program in object code or executable form with such an offer, in
|
||||
accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
**4.** You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt otherwise
|
||||
to copy, modify, sublicense or distribute the Program is void, and
|
||||
will automatically terminate your rights under this License. However,
|
||||
parties who have received copies, or rights, from you under this
|
||||
License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
**5.** You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
**6.** Each time you redistribute the Program (or any work based on
|
||||
the Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
**7.** If, as a consequence of a court judgment or allegation of
|
||||
patent infringement or for any other reason (not limited to patent
|
||||
issues), 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 distribute so as to satisfy simultaneously your
|
||||
obligations under this License and any other pertinent obligations,
|
||||
then as a consequence you may not distribute the Program at all. For
|
||||
example, if a patent license would not permit royalty-free
|
||||
redistribution of the Program by all those who receive copies directly
|
||||
or indirectly through you, then the only way you could satisfy both it
|
||||
and this License would be to refrain entirely from distribution of the
|
||||
Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
**8.** If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
**9.** The Free Software Foundation may publish revised and/or new
|
||||
versions of the 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 a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Program does not specify a
|
||||
version number of this License, you may choose any version ever
|
||||
published by the Free Software Foundation.
|
||||
|
||||
**10.** If you wish to incorporate parts of the Program into other
|
||||
free programs whose distribution conditions are different, write to
|
||||
the author to ask for permission. For software which is copyrighted by
|
||||
the Free Software Foundation, write to the Free Software Foundation;
|
||||
we sometimes make exceptions for this. Our decision will be guided by
|
||||
the two goals of preserving the free status of all derivatives of our
|
||||
free software and of promoting the sharing and reuse of software
|
||||
generally.
|
||||
|
||||
**NO WARRANTY**
|
||||
|
||||
**11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
|
||||
|
||||
**12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE 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.
|
||||
|
||||
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
|
||||
convey 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 an idea of what it does.
|
||||
Copyright (C) yyyy name of author
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU 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 the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
|
||||
type `show w'. This is free software, and you are welcome
|
||||
to redistribute it under certain conditions; type `show c'
|
||||
for details.
|
||||
|
||||
The hypothetical commands \`show w' and \`show c' should show the
|
||||
appropriate parts of the General Public License. Of course, the
|
||||
commands you use may be called something other than \`show w' and
|
||||
\`show c'; they could even be mouse-clicks or menu items--whatever
|
||||
suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or
|
||||
your school, if any, to sign a "copyright disclaimer" for the program,
|
||||
if necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright
|
||||
interest in the program `Gnomovision'
|
||||
(which makes passes at compilers) written
|
||||
by James Hacker.
|
||||
|
||||
signature of Moe Ghoul, 1 April 1989
|
||||
Moe Ghoul, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library,
|
||||
you may consider it more useful to permit linking proprietary
|
||||
applications with the library. If this is what you want to do, use the
|
||||
[GNU Lesser General Public
|
||||
License](https://www.gnu.org/licenses/lgpl.html) instead of this
|
||||
License.
|
||||
3
Makefile
3
Makefile
@ -5,6 +5,9 @@ VPS_PATH = /var/www/website
|
||||
|
||||
.PHONY: deploy
|
||||
|
||||
server:
|
||||
go run server.go | cat &
|
||||
|
||||
deploy:
|
||||
@echo "⚙️ Switching to production..."
|
||||
git checkout production
|
||||
|
||||
@ -1,8 +1,4 @@
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
int main(void) {
|
||||
#ifdef _WIN32
|
||||
|
||||
@ -7,7 +7,9 @@ import (
|
||||
|
||||
func main() {
|
||||
fs := http.FileServer(http.Dir("./sterling"))
|
||||
http.Handle("/", fs)
|
||||
source := http.FileServer(http.Dir("./sleepeesoftware.fr"))
|
||||
http.Handle("/sterling/", fs)
|
||||
http.Handle("/", source)
|
||||
|
||||
log.Println("Serving at http://localhost:8080")
|
||||
err := http.ListenAndServe(":8080", nil)
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@ -1,23 +0,0 @@
|
||||
.grid-bg {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: repeating-linear-gradient(
|
||||
to right,
|
||||
rgba(0, 255, 255, 0.1) 0px,
|
||||
rgba(0, 255, 255, 0.1) 1px,
|
||||
transparent 1px,
|
||||
transparent 40px
|
||||
),
|
||||
repeating-linear-gradient(
|
||||
to bottom,
|
||||
rgba(0, 255, 255, 0.1) 0px,
|
||||
rgba(0, 255, 255, 0.1) 1px,
|
||||
transparent 1px,
|
||||
transparent 40px
|
||||
);
|
||||
background-color: var(--background-color);
|
||||
z-index: -4;
|
||||
}
|
||||
@ -27,8 +27,7 @@ body::after {
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
pointer-events: none;
|
||||
background:
|
||||
repeating-linear-gradient(
|
||||
background: repeating-linear-gradient(
|
||||
0deg,
|
||||
--scanline-color 0px,
|
||||
--scanline-color 1px,
|
||||
@ -45,6 +44,77 @@ main section h2 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
h3 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.foreground-container {
|
||||
max-width: 960px;
|
||||
margin: 0 auto;
|
||||
background-color: rgba(0, 0, 0, 0.85);
|
||||
box-shadow: 0 0 20px var(--secondary-color);
|
||||
padding: 2rem;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: 2% / 1.5%;
|
||||
box-shadow: 0 0 40px var(--glow-color), inset 0 0 20px rgba(0, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 1rem 2rem;
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
border-bottom: 2px solid var(--secondary-color);
|
||||
}
|
||||
|
||||
header h1 {
|
||||
font-size: 2rem;
|
||||
color: var(--secondary-color);
|
||||
text-shadow: 0 0 5px var(--secondary-color);
|
||||
}
|
||||
|
||||
nav ul {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 1rem;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
nav ul li a {
|
||||
text-decoration: none;
|
||||
color: var(--primary-color);
|
||||
padding: 0.5rem 1rem;
|
||||
border: 1px solid var(--primary-color);
|
||||
border-radius: 4px;
|
||||
text-shadow: 0 0 3px var(--primary-color);
|
||||
}
|
||||
|
||||
nav ul li a:hover {
|
||||
background: var(--primary-color);
|
||||
color: var(--background-color);
|
||||
}
|
||||
|
||||
footer {
|
||||
max-width: 960px;
|
||||
margin: 0 auto;
|
||||
background-color: rgba(0, 0, 0, 0.85);
|
||||
box-shadow: 0 0 20px var(--secondary-color);
|
||||
padding: 2rem;
|
||||
bottom: 0;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: 2% / 1.5%;
|
||||
box-shadow: 0 0 40px var(--glow-color), inset 0 0 20px rgba(0, 255, 255, 0.1);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
footer a {
|
||||
text-decoration: none;
|
||||
color: var(--primary-color);
|
||||
/*padding: 0.5rem 1rem;*/
|
||||
/*border: 1px solid var(--primary-color);
|
||||
border-radius: 4px;*/
|
||||
text-shadow: 0 0 3px var(--primary-color);
|
||||
}
|
||||
|
||||
@ -1,54 +0,0 @@
|
||||
.crt-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
mix-blend-mode: screen;
|
||||
animation: flicker 0.5s infinite;
|
||||
border-radius: var(--border-radius);
|
||||
box-shadow: inset 0 0 40px var(--glow-color);
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.fade-in {
|
||||
animation: fadeIn 0.5s ease-out forwards;
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes scanlines {
|
||||
0% { transform: translateY(0); }
|
||||
50% { transform: translateY(-2px); }
|
||||
100% { transform: translateY(0); }
|
||||
}
|
||||
|
||||
@keyframes vhs-static {
|
||||
0% { transform: translate(0, 0); }
|
||||
25% { transform: translate(-1px, 1px); }
|
||||
50% { transform: translate(1px, -0.5px); }
|
||||
75% { transform: translate(-0.5px, 0.5px); }
|
||||
100% { transform: translate(0.5px, -1px); }
|
||||
}
|
||||
|
||||
@keyframes flicker {
|
||||
0%, 100% { opacity: 0.8; }
|
||||
50% { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes rgb-split {
|
||||
0%, 100% {
|
||||
transform: translate(0px, 0px);
|
||||
}
|
||||
50% {
|
||||
transform: translate(-0.5px, 0.5px);
|
||||
}
|
||||
}
|
||||
103
sleepeesoftware.fr/css/global.css
Normal file
103
sleepeesoftware.fr/css/global.css
Normal file
@ -0,0 +1,103 @@
|
||||
:root {
|
||||
--primary-color: #00ffff;
|
||||
--secondary-color: #ff00ff;
|
||||
--background-color: #0d0d0d;
|
||||
--text-color: #f0f0f0;
|
||||
--overlay-background: rgba(0, 0, 0, 0.85);
|
||||
--button-background: #ff00ff;
|
||||
--button-hover-background: #00ffff;
|
||||
--scanline-color: rgba(255, 255, 255, 0.05);
|
||||
--glow-color: rgba(0, 255, 255, 0.3);
|
||||
--terminal-background: rgba(0, 0, 0, 0.9);
|
||||
--terminal-border: #ff00ff;
|
||||
--border-radius: 1.5%;
|
||||
}
|
||||
|
||||
/*
|
||||
effect
|
||||
*/
|
||||
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes scanlines {
|
||||
0% { transform: translateY(0); }
|
||||
50% { transform: translateY(-2px); }
|
||||
100% { transform: translateY(0); }
|
||||
}
|
||||
|
||||
@keyframes vhs-static {
|
||||
0% { transform: translate(0, 0); }
|
||||
25% { transform: translate(-1px, 1px); }
|
||||
50% { transform: translate(1px, -0.5px); }
|
||||
75% { transform: translate(-0.5px, 0.5px); }
|
||||
100% { transform: translate(0.5px, -1px); }
|
||||
}
|
||||
|
||||
@keyframes flicker {
|
||||
0%, 100% { opacity: 0.8; }
|
||||
50% { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes pulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.75; }
|
||||
}
|
||||
|
||||
|
||||
@keyframes rgb-split {
|
||||
0%, 100% {
|
||||
transform: translate(0px, 0px);
|
||||
}
|
||||
50% {
|
||||
transform: translate(-0.5px, 0.5px);
|
||||
}
|
||||
}
|
||||
|
||||
.fade-in {
|
||||
animation: fadeIn 0.5s ease-out forwards;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.crt-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
mix-blend-mode: screen;
|
||||
animation: flicker 0.5s infinite;
|
||||
border-radius: var(--border-radius);
|
||||
box-shadow: inset 0 0 40px var(--glow-color);
|
||||
}
|
||||
|
||||
.grid-bg {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: repeating-linear-gradient(
|
||||
to right,
|
||||
rgba(0, 255, 255, 0.1) 0px,
|
||||
rgba(0, 255, 255, 0.1) 1px,
|
||||
transparent 1px,
|
||||
transparent 40px
|
||||
), repeating-linear-gradient(
|
||||
to bottom,
|
||||
rgba(0, 255, 255, 0.1) 0px,
|
||||
rgba(0, 255, 255, 0.1) 1px,
|
||||
transparent 1px,
|
||||
transparent 40px
|
||||
);
|
||||
background-color: var(--background-color);
|
||||
z-index: -4;
|
||||
}
|
||||
|
||||
@ -58,13 +58,3 @@
|
||||
z-index: 10000;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@keyframes flicker {
|
||||
0%, 100% { opacity: 0.9; }
|
||||
50% { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes pulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.75; }
|
||||
}
|
||||
|
||||
@ -1,15 +0,0 @@
|
||||
:root {
|
||||
--primary-color: #00ffff;
|
||||
--secondary-color: #ff00ff;
|
||||
--background-color: #0d0d0d;
|
||||
--text-color: #f0f0f0;
|
||||
--overlay-background: rgba(0, 0, 0, 0.85);
|
||||
--button-background: #ff00ff;
|
||||
--button-hover-background: #00ffff;
|
||||
--scanline-color: rgba(255, 255, 255, 0.05);
|
||||
--glow-color: rgba(0, 255, 255, 0.3);
|
||||
--terminal-background: rgba(0, 0, 0, 0.9);
|
||||
--terminal-border: #ff00ff;
|
||||
--border-radius: 1.5%;
|
||||
}
|
||||
|
||||
@ -1,16 +1,9 @@
|
||||
:root {
|
||||
--bg-color: #0f1117;
|
||||
--fg-color: #f4f4f4;
|
||||
--accent-color: #00ffe0;
|
||||
--code-bg: #1a1c22;
|
||||
--section-gap: 4rem;
|
||||
}
|
||||
|
||||
body {
|
||||
--section-gap: 4rem;
|
||||
margin: 0;
|
||||
font-family: 'Iosevka SS14', monospace;
|
||||
background-color: var(--bg-color);
|
||||
color: var(--fg-color);
|
||||
background-color: var(--background-color);
|
||||
color: var(--text-color);
|
||||
transition: background 0.3s, color 0.3s;
|
||||
display: flex;
|
||||
}
|
||||
@ -18,7 +11,7 @@ body {
|
||||
header {
|
||||
background: #000;
|
||||
padding: 1rem;
|
||||
color: var(--fg-color);
|
||||
color: var(--text-color);
|
||||
text-align: center;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
@ -31,13 +24,13 @@ header {
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
color: var(--accent-color);
|
||||
color: var(--secondary-color);
|
||||
}
|
||||
|
||||
header h1 {
|
||||
margin: 0;
|
||||
font-size: 1.5rem;
|
||||
color: var(--accent-color);
|
||||
color: var(--secondary-color);
|
||||
}
|
||||
|
||||
#searchInput {
|
||||
@ -46,11 +39,11 @@ header h1 {
|
||||
top: 100%;
|
||||
right: 1rem;
|
||||
padding: 0.5rem;
|
||||
border: 1px solid var(--fg-color);
|
||||
border: 1px solid var(--text-color);
|
||||
z-index: 5;
|
||||
width: 200px;
|
||||
background: none;
|
||||
color: var(--fg-color);
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
.controls {
|
||||
@ -64,8 +57,8 @@ header h1 {
|
||||
|
||||
.controls button {
|
||||
background: none;
|
||||
border: 1px solid var(--fg-color);
|
||||
color: var(--fg-color);
|
||||
border: 1px solid var(--text-color);
|
||||
color: var(--text-color);
|
||||
padding: 0.5rem 1rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
@ -80,7 +73,7 @@ main {
|
||||
}
|
||||
|
||||
.section h2 {
|
||||
color: var(--accent-color);
|
||||
color: var(--secondary-color);
|
||||
font-size: 1.25rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
@ -95,30 +88,27 @@ main {
|
||||
}
|
||||
|
||||
pre {
|
||||
background: var(--code-bg);
|
||||
background: var(--overlay-background);
|
||||
padding: 1rem;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
code {
|
||||
/*display: block;*/
|
||||
background: var(--code-bg);
|
||||
/*padding: 1rem;*/
|
||||
background: var(--overlay-background);
|
||||
margin: 1rem 0;
|
||||
white-space: pre-wrap;
|
||||
color: #aaffaa;
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
a {
|
||||
color: #00ffe0;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
footer {
|
||||
display: flex;
|
||||
/*flex-flow: column;*/
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
background: var(--code-bg);
|
||||
background: var(--overlay-background);
|
||||
}
|
||||
|
||||
footer section{
|
||||
28
sleepeesoftware.fr/css/terminal.css
Normal file
28
sleepeesoftware.fr/css/terminal.css
Normal file
@ -0,0 +1,28 @@
|
||||
.terminal {
|
||||
background: var(--terminal-background);
|
||||
border: 2px solid var(--terminal-border);
|
||||
padding: 2rem;
|
||||
width: 300px;
|
||||
margin: 2rem auto;
|
||||
box-shadow: 0 0 10px var(--terminal-border);
|
||||
}
|
||||
|
||||
.terminal input {
|
||||
background: #1a1a1a;
|
||||
border: 1px solid var(--primary-color);
|
||||
color: var(--primary-color);
|
||||
width: 100%;
|
||||
padding: 0.5rem;
|
||||
margin-bottom: 1rem;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.terminal button {
|
||||
background: var(--secondary-color);
|
||||
border: none;
|
||||
color: var(--background-color);
|
||||
padding: 0.5rem 1rem;
|
||||
cursor: pointer;
|
||||
font-family: monospace;
|
||||
text-shadow: 0 0 3px var(--secondary-color);
|
||||
}
|
||||
@ -1,141 +0,0 @@
|
||||
.foreground-container {
|
||||
max-width: 960px;
|
||||
aspect-ratio: 4 / 3;
|
||||
margin: 0 auto;
|
||||
background-color: rgba(0, 0, 0, 0.85);
|
||||
box-shadow: 0 0 20px var(--secondary-color);
|
||||
padding: 2rem;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: 2% / 1.5%;
|
||||
box-shadow: 0 0 40px var(--glow-color), inset 0 0 20px rgba(0, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 1rem 2rem;
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
border-bottom: 2px solid var(--secondary-color);
|
||||
}
|
||||
|
||||
header h1 {
|
||||
font-size: 2rem;
|
||||
color: var(--secondary-color);
|
||||
text-shadow: 0 0 5px var(--secondary-color);
|
||||
}
|
||||
|
||||
nav ul {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
nav ul li a {
|
||||
text-decoration: none;
|
||||
color: var(--primary-color);
|
||||
padding: 0.5rem 1rem;
|
||||
border: 1px solid var(--primary-color);
|
||||
border-radius: 4px;
|
||||
text-shadow: 0 0 3px var(--primary-color);
|
||||
}
|
||||
|
||||
nav ul li a:hover {
|
||||
background: var(--primary-color);
|
||||
color: var(--background-color);
|
||||
}
|
||||
|
||||
.terminal {
|
||||
background: var(--terminal-background);
|
||||
border: 2px solid var(--terminal-border);
|
||||
padding: 2rem;
|
||||
width: 300px;
|
||||
margin: 2rem auto;
|
||||
box-shadow: 0 0 10px var(--terminal-border);
|
||||
}
|
||||
|
||||
.terminal input {
|
||||
background: #1a1a1a;
|
||||
border: 1px solid var(--primary-color);
|
||||
color: var(--primary-color);
|
||||
width: 100%;
|
||||
padding: 0.5rem;
|
||||
margin-bottom: 1rem;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.terminal button {
|
||||
background: var(--secondary-color);
|
||||
border: none;
|
||||
color: var(--background-color);
|
||||
padding: 0.5rem 1rem;
|
||||
cursor: pointer;
|
||||
font-family: monospace;
|
||||
text-shadow: 0 0 3px var(--secondary-color);
|
||||
}
|
||||
|
||||
#music-player {
|
||||
text-align: center;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
#now-playing {
|
||||
font-family: monospace;
|
||||
color: var(--primary-color);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.controls {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.5rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.controls button {
|
||||
background: var(--background-color);
|
||||
border: 1px solid var(--primary-color);
|
||||
color: var(--primary-color);
|
||||
padding: 0.3rem 0.6rem;
|
||||
font-size: 1rem;
|
||||
cursor: pointer;
|
||||
font-family: 'Orbitron', sans-serif;
|
||||
text-shadow: 0 0 2px var(--primary-color);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.controls button:hover {
|
||||
background: var(--primary-color);
|
||||
color: var(--background-color);
|
||||
}
|
||||
|
||||
.music-button {
|
||||
background-color: rgba(0, 0, 0, 0.6);
|
||||
border: 1px solid var(--color-accent-cyan);
|
||||
padding: 0.3rem 0.5rem;
|
||||
margin: 0 0.2rem;
|
||||
font-size: 1.1rem;
|
||||
color: var(--color-accent-cyan);
|
||||
font-family: 'Orbitron', sans-serif;
|
||||
cursor: pointer;
|
||||
text-shadow: 0 0 2px var(--color-accent-cyan);
|
||||
box-shadow: 0 0 4px var(--color-accent-cyan),
|
||||
0 0 8px var(--color-accent-cyan);
|
||||
border-radius: 4px;
|
||||
transition: box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
.music-button:hover {
|
||||
animation: btnflicker 0.5s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes btnflicker {
|
||||
0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% {
|
||||
opacity: 1;
|
||||
}
|
||||
20%, 22%, 24%, 55% {
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
@ -3,10 +3,11 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="/assets/IosevkaSS15-Regular.ttf" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<title>Language Documentation</title>
|
||||
<script src="./js/base.js"></script>
|
||||
<link href="../assets/IosevkaSS15-Regular.ttf" rel="stylesheet">
|
||||
<link rel="stylesheet" href="../css/sterling.css">
|
||||
<link rel="stylesheet" href="../css/global.css">
|
||||
<title>Sterling Documentation</title>
|
||||
<script src="../js/sterling.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="width:100%">
|
||||
@ -14,7 +15,7 @@
|
||||
<h1>Sterling Documentation</h1>
|
||||
<input type="text" id="searchInput" placeholder="Search..." oninput="filterContent()">
|
||||
<div class="controls">
|
||||
<button onclick="toggleTheme()">Toggle Theme</button>
|
||||
<!--<button onclick="toggleTheme()">Toggle Theme</button>-->
|
||||
<button onclick="window.print()">Export to PDF</button>
|
||||
<button onclick="downloadOfflineVersion()">Download Offline</button>
|
||||
</div>
|
||||
@ -437,15 +438,16 @@ fn fiber_spawn_stack(void fn(), void* stack_ptr, u64 size);
|
||||
|
||||
<footer>
|
||||
<section>
|
||||
<h4>email</h4>
|
||||
<p>dev@sleepeesoftware.fr</p>
|
||||
|
||||
<a href="mailto:dev@sleepeesoftware.fr"><h4>email</h4></a>
|
||||
</section>
|
||||
<section>
|
||||
<h4>website</h4>
|
||||
<p>sleepeesoftware.fr</p>
|
||||
|
||||
<a href="https://sleepeesoftware.fr"><h4>website</h4></a>
|
||||
</section>
|
||||
</footer>
|
||||
<p style="text-align: center;">Copyright @ 2025 Carle-Margueritte Alexandre<br>Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.<br>
|
||||
Verbatim copying and redistribution of any of the photos in the photos subdirectory is permitted under the <a href="https://opensource.org/license/mit">MIT License</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
169
sleepeesoftware.fr/html/SterlingOsDesign.html
Normal file
169
sleepeesoftware.fr/html/SterlingOsDesign.html
Normal file
@ -0,0 +1,169 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="../assets/IosevkaSS15-Regular.ttf" rel="stylesheet">
|
||||
<link rel="stylesheet" href="../css/sterling.css">
|
||||
<link rel="stylesheet" href="../css/global.css">
|
||||
<script src="../js/sterling.js"></script>
|
||||
<title>Sterling OS Design Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="width:100%">
|
||||
<header>
|
||||
<h1>Sterling OS Design Document</h1>
|
||||
<input type="text" id="searchInput" placeholder="Search..." oninput="filterContent()">
|
||||
<div class="controls">
|
||||
<!--<button onclick="toggleTheme()">Toggle Theme</button>-->
|
||||
<button onclick="window.print()">Export to PDF</button>
|
||||
<button onclick="downloadOfflineVersion()">Download Offline</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="doc-content">
|
||||
|
||||
<h1>Minimal Capability-Based Operating System</h1>
|
||||
|
||||
<h2>Design Principles</h2>
|
||||
<ul>
|
||||
<li>No global filesystem, no path resolution</li>
|
||||
<li>No drivers in kernel, only sandboxed userspace driver processes</li>
|
||||
<li>No GPU acceleration, all rendering is deterministic software-based</li>
|
||||
<li>All resources accessed via capability tokens</li>
|
||||
<li>Processes are strictly sandboxed</li>
|
||||
<li>Programs operate on memory buffers, not raw file handles</li>
|
||||
<li>Desktop environment is a sandboxed coordinator, not a privileged process</li>
|
||||
</ul>
|
||||
|
||||
<h2>Authorization Token Model</h2>
|
||||
<p>Programs delegate access via opaque, kernel-managed tokens.</p>
|
||||
<pre><code>grant_token(target_pid, resource_id, flags) -> token_id
|
||||
accept_token(token_id) -> resource_handle
|
||||
revoke_token(token_id)</code></pre>
|
||||
|
||||
<h2>File Editing Flow</h2>
|
||||
<ol>
|
||||
<li>DE requests file via storage service</li>
|
||||
<li>Storage service provides a memory buffer</li>
|
||||
<li>Editor process receives buffer handle, edits</li>
|
||||
<li>Changes submitted back to storage via DE</li>
|
||||
</ol>
|
||||
|
||||
<h2>Driver Model</h2>
|
||||
<ul>
|
||||
<li>All drivers run as fully unprivileged user processes</li>
|
||||
<li>No driver registration or kernel mediation required</li>
|
||||
<li>Drivers communicate with hardware via explicit kernel-exposed capability channels</li>
|
||||
<li>No dynamic linking or privileged probing allowed</li>
|
||||
<li>Users can run or replace any driver without OS permission</li>
|
||||
</ul>
|
||||
|
||||
<h2>Graphics System</h2>
|
||||
<ul>
|
||||
<li>No GPU support, no shaders</li>
|
||||
<li>Software renderer processes draw via shared memory</li>
|
||||
<li>DE composites framebuffers deterministically</li>
|
||||
</ul>
|
||||
|
||||
<h2>Programming Language Requirements</h2>
|
||||
<ul>
|
||||
<li>Manual memory management</li>
|
||||
<li>Low-level data layout control</li>
|
||||
<li>Inline assembly support</li>
|
||||
<li>Pattern matching and compile-time macros</li>
|
||||
<li>No runtime, no global init, no dynamic linking</li>
|
||||
</ul>
|
||||
|
||||
<h2>Execution Model</h2>
|
||||
<ul>
|
||||
<li>Programs are spawned with exact buffer and token permissions</li>
|
||||
<li>No shared global state</li>
|
||||
<li>All IO is mediated via explicit capability-based services</li>
|
||||
<li>Everything is inspectable and reproducible</li>
|
||||
</ul>
|
||||
|
||||
<h2>Sandboxing Model</h2>
|
||||
<p>All processes are isolated via strict memory boundaries and capability-scoped access. No process can access global state, shared memory, or system calls without explicit capability grants.</p>
|
||||
|
||||
<h3>Memory Layout</h3>
|
||||
<pre class="diagram">
|
||||
+-----------------------+
|
||||
| Code (RX) |
|
||||
+-----------------------+
|
||||
| Data (RW) |
|
||||
+-----------------------+
|
||||
| Shared Buffers (RWX?) | ← only if explicitly mapped by kernel
|
||||
+-----------------------+
|
||||
| Stack (RW) |
|
||||
+-----------------------+
|
||||
</pre>
|
||||
|
||||
<h3>Process Launch</h3>
|
||||
<ul>
|
||||
<li>Preallocated memory map (no heap growth)</li>
|
||||
<li>Passed a syscall pointer table, token list, and init buffer</li>
|
||||
<li>Cannot request global system resources directly</li>
|
||||
</ul>
|
||||
|
||||
<h3>Capability Enforcement</h3>
|
||||
<p>All access is mediated via capability tokens, handed off securely:</p>
|
||||
<pre><code>
|
||||
token_id = request_token(pid, SERVICE_IO, READ_WRITE);
|
||||
handle = accept_token(token_id);
|
||||
</code></pre>
|
||||
<ul>
|
||||
<li>Token scope, rights, and duration enforced by kernel</li>
|
||||
<li>No access without explicit grant</li>
|
||||
<li>All capability use is auditable and revocable</li>
|
||||
</ul>
|
||||
|
||||
<h3>Filesystem Abstraction</h3>
|
||||
<ul>
|
||||
<li>No global file system</li>
|
||||
<li>Programs receive only memory buffers with scoped access</li>
|
||||
<li>Read/write must go through kernel-mapped tokens</li>
|
||||
</ul>
|
||||
|
||||
<h3>Driver Isolation</h3>
|
||||
<ul>
|
||||
<li>Drivers are userland processes only</li>
|
||||
<li>No direct port I/O or DMA access</li>
|
||||
<li>Hardware is accessed via kernel-exposed capability channels</li>
|
||||
</ul>
|
||||
|
||||
<h3>IPC</h3>
|
||||
<ul>
|
||||
<li>All inter-process communication is routed via the kernel</li>
|
||||
<li>Uses named ports and token-authenticated message queues</li>
|
||||
<li>No shared memory by default</li>
|
||||
</ul>
|
||||
|
||||
<h3>Future Additions</h3>
|
||||
<ul>
|
||||
<li>Deterministic scheduler</li>
|
||||
<li>Audit trail of all token activity</li>
|
||||
<li>Formal capability typing system</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Philosophy</h2>
|
||||
<p>This OS is not a POSIX clone. It is a deterministic, capability-secure, user-controlled computing environment built to reject legacy complexity and embrace verifiable simplicity.</p>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<section>
|
||||
|
||||
<a href="mailto:dev@sleepeesoftware.fr"><h4>email</h4></a>
|
||||
</section>
|
||||
<section>
|
||||
|
||||
<a href="https://sleepeesoftware.fr"><h4>website</h4></a>
|
||||
</section>
|
||||
</footer>
|
||||
<p style="text-align: center;">Copyright @ 2025 Carle-Margueritte Alexandre<br>Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.<br>
|
||||
Verbatim copying and redistribution of any of the photos in the photos subdirectory is permitted under the <a href="https://opensource.org/license/mit">MIT License</a></p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@ -8,18 +8,14 @@
|
||||
<!-- Google Font -->
|
||||
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&display=swap" rel="stylesheet">
|
||||
<!-- style --->
|
||||
<link rel="stylesheet" href="css/palette.css">
|
||||
<link rel="stylesheet" href="css/global.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="stylesheet" href="css/background.css">
|
||||
<link rel="stylesheet" href="css/effects.css">
|
||||
<link rel="stylesheet" href="css/loading_screen.css">
|
||||
<link rel="stylesheet" href="css/ui.css">
|
||||
<!-- icon -->
|
||||
<link rel="icon" type="image/png" href="/icon/favicon-96x96.png" sizes="96x96" />
|
||||
<link rel="icon" type="image/svg+xml" href="/icon/favicon.svg" />
|
||||
<link rel="shortcut icon" href="/icon/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/icon/apple-touch-icon.png" />
|
||||
<link rel="manifest" href="/icon/site.webmanifest" />
|
||||
<!--<link rel="icon" type="image/png" href="/assets/favicon-96x96.png" sizes="96x96" />-->
|
||||
<link rel="icon" type="image/svg+xml" href="/assets/favicon.svg" />
|
||||
<link rel="shortcut icon" href="/assets/favicon.ico" />
|
||||
<link rel="manifest" href="/assets/site.webmanifest" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="loading-screen">
|
||||
@ -28,64 +24,76 @@
|
||||
<div class="grid-bg"></div>
|
||||
<div class="crt-overlay"></div>
|
||||
<div class="foreground-container hidden">
|
||||
|
||||
<header>
|
||||
<h1>Sleepee Software</h1>
|
||||
<h1 class="page">Sleepee Software</h1>
|
||||
<nav><ul>
|
||||
<li><a href="#" id="nav-landing">Home</a></li>
|
||||
<li><a href="#" id="nav-login">Login</a></li>
|
||||
<li><a href="#" id="nav-project">Project</a></li>
|
||||
<li><a href="#" id="nav-blog">Blog</a></li>
|
||||
<li><a href="#" id="nav-chat">Chat</a></li>
|
||||
<li><a href="#" id="nav-news">News</a></li>
|
||||
<!--<li><a href="/gitea-repos/" id="nav-git">Git</a></li>-->
|
||||
<li><a href="#" id="nav-login">Login</a></li>
|
||||
</ul></nav>
|
||||
</header>
|
||||
<div id="music-player" class="terminal">
|
||||
<div id="now-playing"></div>
|
||||
<div class="controls">
|
||||
<button id="prev-btn" class="music-button">⏮</button>
|
||||
<button id="play-pause-btn" class="music-button">⏯</button>
|
||||
<button id="next-btn" class="music-button">⏭</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<main id="main-content">
|
||||
<section id="landing-section">
|
||||
<h2>Welcome to Sleepee Software</h2>
|
||||
<p>Experience my games and software in neon-lit glory !</p>
|
||||
<h2>My Public Repositories</h2>
|
||||
<ul id="repo-list">
|
||||
<li>Loading...</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="login-section" class="hidden">
|
||||
<div class="terminal">
|
||||
<h2>Login</h2>
|
||||
<form id="login-form">
|
||||
<input type="text" placeholder="Username" id="username" required>
|
||||
<input type="password" placeholder="Password" id="password" required>
|
||||
<button type="submit">Enter</button>
|
||||
</form>
|
||||
<h3>Experience software in neon-lit glory !</h3>
|
||||
<br>
|
||||
<h2>Newsfeed</h2>
|
||||
<div id="news-ticker">
|
||||
<p>Nothing...</p>
|
||||
<!-- TODO: fetch api for news -->
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="project-section" class="hidden">
|
||||
<h2>My Project</h2>
|
||||
<ul>
|
||||
<li><a href="html/SterlingLang.html">Sterling Lang</a></li>
|
||||
<li><a href="html/SterlingOsDesign.html">Sterling OS</a></li>
|
||||
</ul>
|
||||
<h2>My Public Repositories</h2>
|
||||
<div id="repo-list">
|
||||
<p>Loading...</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- TODO: make login a popop that allow to use irc and blog -->
|
||||
<section id="blog-section" class="hidden">
|
||||
<h2>Studio Blog</h2>
|
||||
<div id="posts">
|
||||
<p>Coming soon...</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="chat-section" class="hidden">
|
||||
<h2>Community Chat</h2>
|
||||
<div id="chat-window" class="terminal">
|
||||
<p><em>IRC interface coming soon...</em></p>
|
||||
</div>
|
||||
</section>
|
||||
<section id="news-section" class="hidden">
|
||||
<h2>Newsfeed</h2>
|
||||
<div id="news-ticker">
|
||||
<p><em>Latest studio news will appear here...</em></p>
|
||||
|
||||
<section id="login-section" class="hidden">
|
||||
<div class="terminal">
|
||||
<h2>Login</h2>
|
||||
<form id="login-form">
|
||||
<input type="text" placeholder="name" id="username" required>
|
||||
<input type="password" placeholder="pwd" id="password" required>
|
||||
<button type="submit">Enter</button>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
<footer>
|
||||
<section>
|
||||
<a href="mailto:dev@sleepeesoftware.fr"><h4>email</h4></a>
|
||||
</section>
|
||||
<p>Copyright @ 2025 Carle-Margueritte Alexandre<br>Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.<br>
|
||||
Verbatim copying and redistribution of any of the photos in the photos subdirectory is permitted under the <a href="https://opensource.org/license/mit">MIT License</a></p>
|
||||
</footer>
|
||||
<script src="js/index.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -8,7 +8,7 @@ document.querySelectorAll('nav ul li a').forEach(link => {
|
||||
});
|
||||
});
|
||||
|
||||
document.getElementById('login-form')?.addEventListener('submit', e => {
|
||||
document.getElementById('login-form')?.addEventListener('submit', function(e) {
|
||||
e.preventDefault();
|
||||
const username = document.getElementById('username').value;
|
||||
alert(`Logging in as ${username}...`);
|
||||
@ -20,7 +20,7 @@ fetch("/gitea-repos/")
|
||||
.then(repos => {
|
||||
const list = document.getElementById("repo-list");
|
||||
list.innerHTML = ""; // Clear "Loading..."
|
||||
repos.forEach(repo => {
|
||||
repos.forEach(function(repo) {
|
||||
const item = document.createElement("li");
|
||||
item.innerHTML = `
|
||||
<strong><a href="${repo.html_url}" target="_blank">${repo.name}</a></strong>
|
||||
@ -30,68 +30,17 @@ fetch("/gitea-repos/")
|
||||
})
|
||||
.catch(err => console.error("Error fetching repos: ", err));
|
||||
|
||||
const playlist = [
|
||||
{
|
||||
title: 'Project_2 fatmeat',
|
||||
src: 'assets/Project_2.ogg'
|
||||
}
|
||||
];
|
||||
|
||||
let currentTrack = 0;
|
||||
const audio = new Audio();
|
||||
audio.loop = false;
|
||||
audio.volume = 0.04;
|
||||
/*
|
||||
onload
|
||||
*/
|
||||
|
||||
const nowPlaying = document.getElementById('now-playing');
|
||||
const playPauseBtn = document.getElementById('play-pause-btn');
|
||||
const nextBtn = document.getElementById('next-btn');
|
||||
const prevBtn = document.getElementById('prev-btn');
|
||||
|
||||
function loadTrack(index) {
|
||||
currentTrack = index;
|
||||
audio.src = playlist[currentTrack].src;
|
||||
nowPlaying.textContent = `♫ Now Playing: ${playlist[currentTrack].title}`;
|
||||
audio.play();
|
||||
playPauseBtn.textContent = '⏸';
|
||||
}
|
||||
|
||||
playPauseBtn.addEventListener('click', () => {
|
||||
if (audio.paused) {
|
||||
audio.play();
|
||||
playPauseBtn.textContent = '⏸';
|
||||
} else {
|
||||
audio.pause();
|
||||
playPauseBtn.textContent = '▶';
|
||||
}
|
||||
});
|
||||
|
||||
nextBtn.addEventListener('click', () => {
|
||||
loadTrack((currentTrack + 1) % playlist.length);
|
||||
});
|
||||
|
||||
prevBtn.addEventListener('click', () => {
|
||||
loadTrack((currentTrack - 1 + playlist.length) % playlist.length);
|
||||
});
|
||||
|
||||
audio.addEventListener('ended', () => {
|
||||
loadTrack((currentTrack + 1) % playlist.length);
|
||||
});
|
||||
|
||||
// From previous step: start music only after "Press to Start"
|
||||
document.getElementById('loading-screen')?.addEventListener('click', () => {
|
||||
loadTrack(0);
|
||||
});
|
||||
|
||||
document.getElementById('now-playing').textContent = '🎵 Now Playing: Song Title';
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
const loadingScreen = document.getElementById('loading-screen');
|
||||
const music = new Audio(); // your audio logic might be handled elsewhere now
|
||||
|
||||
if (loadingScreen) {
|
||||
loadingScreen.addEventListener('click', () => {
|
||||
loadingScreen.addEventListener('click', function() {
|
||||
loadingScreen.style.display = 'none'; // hides the full screen
|
||||
loadTrack(0); // start the music playlist
|
||||
});
|
||||
}
|
||||
});
|
||||
@ -106,7 +55,7 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||
});
|
||||
});
|
||||
|
||||
document.getElementById("loading-screen").addEventListener("click", () => {
|
||||
document.getElementById("loading-screen").addEventListener("click", function() {
|
||||
document.getElementById("loading-screen").style.display = "none";
|
||||
const container = document.querySelector(".foreground-container");
|
||||
container.classList.remove("hidden");
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
function toggleTheme() {
|
||||
const root = document.documentElement;
|
||||
const dark = root.style.getPropertyValue('--bg-color') === '#0f1117';
|
||||
root.style.setProperty('--bg-color', dark ? '#ffffff' : '#0f1117');
|
||||
root.style.setProperty('--fg-color', dark ? '#000000' : '#f4f4f4');
|
||||
root.style.setProperty('--code-bg', dark ? '#f0f0f0' : '#1a1c22');
|
||||
//const root = document.documentElement;
|
||||
//const dark = root.style.getPropertyValue('--bg-color') === '#0f1117';
|
||||
//root.style.setProperty('--bg-color', dark ? '#ffffff' : '#0f1117');
|
||||
//root.style.setProperty('--fg-color', dark ? '#000000' : '#f4f4f4');
|
||||
//root.style.setProperty('--code-bg', dark ? '#f0f0f0' : '#1a1c22');
|
||||
}
|
||||
|
||||
function filterContent() {
|
||||
Loading…
x
Reference in New Issue
Block a user