Skip to content

Copper Linux v0.2.0

Pre-release
Pre-release

Choose a tag to compare

@12hrformat 12hrformat released this 01 Oct 16:32
· 108 commits to main since this release
c3eba42

What's Changed

Full Changelog: v0.1.0...v0.2.0

🔋 Copper Linux v0.2.0

v0.1.0 was a proof of life. This is the release where it stopped being
one.

Eighteen commits, one theme: stop shipping things that were obviously
broken and calling them done.
Every single fix in here came from
actually sitting at the terminal and using it.


🖥️ The terminal

The headline. Our shell had no line editor — you typed, you backspaced,
and one wrong character in the middle meant retyping the whole line.

Now:

  • ← → move through the line
  • Home / End jump to either end
  • Backspace / Delete real editing
  • ↑ ↓ walk command history
  • Prompt redraws in place

From scratch in src/main.c. Raw termios, no readline, no ncurses. Just
our shell being a shell.

edit_move_left()  edit_move_right()  edit_move_home()  edit_move_end()
edit_insert()     edit_backspace()   edit_delete()
edit_hist_prev()  edit_hist_next()   refresh_line()
🔋 Hotfixes
Fix Copper without a reinstall. No new ISO, no reboot, no lost session.
copper charge                  # apply
copper rollback                # list backups
copper rollback <name>         # put one back
A maintainer writes the fix into hotfixes.json, you run one command.
{
  "id": "demo-banner",
  "file": "etc/copper/demo.txt",
  "fail_code": "THIS LINE IS BROKEN",
  "new_code": "THIS LINE HAS BEEN FIXED BY COPPER CHARGE",
  "description": "Demo"
}
The good part: if fail_code isn't in the file, it's already fixed,
so it skips. No version tracking, no state file. Safe to run twice, ten
times, on a machine that's already patched.
Ships in the ISO, with config in /etc/copper/config and a local
database so you can test it with the network unplugged. 🔌

🐛 What was actually broken

First run, four fatal bugs:
- called curl, which we don't ship. We ship busybox wget.
- rollback could not restore anything. Backup names turn / into _;
the undo looked for a double underscore tr never emits.
- the only hotfix pointed at src/main.c — a repo path, not a live one
- there was no copper binary at all. The command you'd type
returned not found

Plus, from real screenshots: wizard prompts only appeared after you
pressed Enter, passwords echoed in plain text, the banner printed twice,
garbled typing from two shells fighting over one tty, Couldn't create
user, and a hardcoded copper@copper.

The copper charge feature looked finished. It was completely
non-functional. Fixing that is the actual story of this release.
✨ Smaller things

- Prompt is now you@copper instead of hardcoded
- CI fails the build on things it used to ship silently
- Serial log and screen say the same thing

⚠️ Not proven yet

Being straight about it, because "it compiles" isn't "it works":
- A full clean first-boot run — banner to shell, in one pass. Every
bug is fixed and individually verified; the whole path isn't.
- copper charge on a booted system. Verified off-ISO against a
fake root. Next thing I'm testing.
- Real internet traffic. ping/nslookup/wget still unrun.
- WiFi. Wired only. No wireless driver, no wpa_supplicant, and a
VM has no wireless NIC anyway.

That's why this is a pre-release off untested. Boot it, break it, tell
me. 🔋